diff --git a/.github/ISSUE_TEMPLATE/BUG_REPORT.md b/.github/ISSUE_TEMPLATE/BUG_REPORT.md
index 9c8363f..d557252 100644
--- a/.github/ISSUE_TEMPLATE/BUG_REPORT.md
+++ b/.github/ISSUE_TEMPLATE/BUG_REPORT.md
@@ -34,6 +34,8 @@ assignees: 'mayurankv'
- Obsidian Version:
- Platform:
- OS:
+- Theme:
+- CSS Snippets:
### Screenshots
diff --git a/.github/TODO.md b/.github/TODO.md
index 6c7f677..4063e1f 100644
--- a/.github/TODO.md
+++ b/.github/TODO.md
@@ -27,8 +27,7 @@
3. Add syntax highlighting for inline code to source view editing mode?
4. Add command to select all text inside current codeblock
5. Debug really long codeblocks not working
-6. Debug live preview callouts not working
-7. Add or update icons for:
+6. Add or update icons for:
- `regex`
- `maxima`
- `zsh`
@@ -38,9 +37,11 @@
- `ts`
- `julia`
- `java`
-8. Changing line wrap options can be flaky
-9. Make reset buttons only appear when value is not default value (in settings)
-10. Implement Live preview re-rendering for relevant settings (search '//TODO (@mayurankv) Re-render' in `settingsTab.ts`)
+7. Changing line wrap options can be flaky
+8. Make reset buttons only appear when value is not default value (in settings)
+9. Implement Live preview re-rendering for relevant settings (search '//TODO (@mayurankv) Re-render' in `settingsTab.ts`)
+10. Reduce cognitive complexity (and other issues)`
+11. Clean up reading view `remakeCodeblock`
See below:
diff --git a/main.js b/main.js
index c12574e..476918e 100644
--- a/main.js
+++ b/main.js
@@ -2692,7 +2692,7 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab {
});
this.disableableComponents["lineNumbers"].push(this.pickrs["line_number"].resetButton);
new import_obsidian.Setting(containerEl).setName("Highlight Line Numbers").setDesc("If enabled, highlights will also highlight the line numbers.").addToggle((toggle) => {
- let highlightLineNumbersToggle = toggle.setValue(this.plugin.settings.currentTheme.settings.gutter.highlight).setDisabled(!this.plugin.settings.currentTheme.settings.codeblock.lineNumbers).onChange((value) => {
+ const highlightLineNumbersToggle = toggle.setValue(this.plugin.settings.currentTheme.settings.gutter.highlight).setDisabled(!this.plugin.settings.currentTheme.settings.codeblock.lineNumbers).onChange((value) => {
this.plugin.settings.currentTheme.settings.gutter.highlight = value;
(async () => {
await this.plugin.saveSettings();
@@ -2701,7 +2701,7 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab {
this.disableableComponents["lineNumbers"].push(highlightLineNumbersToggle);
});
new import_obsidian.Setting(containerEl).setName("Indicate Current Line Number").setDesc("If enabled, the current line number in codeblocks will be indicated with a separate colour.").setClass("code-styler-spaced").addToggle((toggle) => {
- let indicateCurrentLineNumberToggle = toggle.setValue(this.plugin.settings.currentTheme.settings.gutter.activeLine).setDisabled(!this.plugin.settings.currentTheme.settings.codeblock.lineNumbers).onChange((value) => {
+ const indicateCurrentLineNumberToggle = toggle.setValue(this.plugin.settings.currentTheme.settings.gutter.activeLine).setDisabled(!this.plugin.settings.currentTheme.settings.codeblock.lineNumbers).onChange((value) => {
this.plugin.settings.currentTheme.settings.gutter.activeLine = value;
(async () => {
await this.plugin.saveSettings();
@@ -3298,13 +3298,7 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab {
} else {
try {
this.plugin.settings.redirectLanguages = JSON.parse(value);
- Object.entries(this.plugin.settings.redirectLanguages).forEach(([languageName, languageSettings]) => {
- if ("icon" in languageSettings) {
- if (LANGUAGE_NAMES[languageName] in this.plugin.languageIcons)
- URL.revokeObjectURL(this.plugin.languageIcons[LANGUAGE_NAMES[languageName]]);
- this.plugin.languageIcons[LANGUAGE_NAMES[languageName]] = URL.createObjectURL(new Blob([``], { type: "image/svg+xml" }));
- }
- });
+ this.redirectLanguages();
(async () => {
await this.plugin.saveSettings();
})();
@@ -3320,9 +3314,19 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab {
donationButton.innerHTML = `
`;
donationDiv.appendChild(donationButton);
}
+ // Setting Parsing
+ redirectLanguages() {
+ Object.entries(this.plugin.settings.redirectLanguages).forEach(([languageName, languageSettings]) => {
+ if ("icon" in languageSettings) {
+ if (LANGUAGE_NAMES[languageName] in this.plugin.languageIcons)
+ URL.revokeObjectURL(this.plugin.languageIcons[LANGUAGE_NAMES[languageName]]);
+ this.plugin.languageIcons[LANGUAGE_NAMES[languageName]] = URL.createObjectURL(new Blob([``], { type: "image/svg+xml" }));
+ }
+ });
+ }
// Setting Creation
createPickr(plugin, containerEl, setting, id, getRelevantThemeColour, saveRelevantThemeColour, disabled) {
- let pickr = new PickrResettable(plugin, containerEl, setting, getRelevantThemeColour, saveRelevantThemeColour);
+ const pickr = new PickrResettable(plugin, containerEl, setting, getRelevantThemeColour, saveRelevantThemeColour);
pickr.on("show", (colour, instance) => {
if (typeof disabled !== "undefined" && disabled())
instance.hide();
@@ -3341,7 +3345,7 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab {
});
this.pickrs[id] = pickr;
}
- // Setting Updates
+ // Setting Tab Updates
updateDropdown(dropdown, settings) {
dropdown.selectEl.empty();
Object.keys(settings.themes).forEach((theme_name) => {
@@ -3446,7 +3450,7 @@ function calc(calcString) {
return calcString;
}
function getCssVariable(cssVariable) {
- let variableValue = window.getComputedStyle(document.body).getPropertyValue(cssVariable).trim();
+ const variableValue = window.getComputedStyle(document.body).getPropertyValue(cssVariable).trim();
if (typeof variableValue === "string" && variableValue.trim().startsWith("#"))
return `#${variableValue.trim().substring(1)}`;
else if (variableValue.startsWith("rgb"))
@@ -3459,7 +3463,6 @@ function getCssVariable(cssVariable) {
}
function getColour(themeColour) {
return isCss(themeColour) ? getCssVariable(themeColour) : themeColour;
- ;
}
function getCurrentMode() {
const body = document.querySelector("body");
@@ -3497,7 +3500,7 @@ var THEME_STYLES = {
}
};
function updateStyling(settings, app) {
- let currentTheme = getCurrentTheme(app);
+ const currentTheme = getCurrentTheme(app);
let styleTag = document.getElementById(STYLE_ID);
if (!styleTag) {
styleTag = document.createElement("style");
@@ -3615,18 +3618,9 @@ function styleLanguageColours(themeSettings, redirectLanguages, currentTheme) {
}, "");
}
function addThemeSettingsClasses(themeSettings) {
- if (themeSettings.codeblock.lineNumbers)
- document.body.classList.add("code-styler-show-line-numbers");
- else
- document.body.classList.remove("code-styler-show-line-numbers");
- if (themeSettings.gutter.highlight)
- document.body.classList.add("code-styler-gutter-highlight");
- else
- document.body.classList.remove("code-styler-gutter-highlight");
- if (themeSettings.gutter.activeLine)
- document.body.classList.add("code-styler-gutter-active-line");
- else
- document.body.classList.remove("code-styler-gutter-active-line");
+ themeSettings.codeblock.lineNumbers ? document.body.classList.add("code-styler-show-line-numbers") : document.body.classList.remove("code-styler-show-line-numbers");
+ themeSettings.gutter.highlight ? document.body.classList.add("code-styler-gutter-highlight") : document.body.classList.remove("code-styler-gutter-highlight");
+ themeSettings.gutter.activeLine ? document.body.classList.add("code-styler-gutter-active-line") : document.body.classList.remove("code-styler-gutter-active-line");
document.body.classList.remove("code-styler-active-line-highlight", "code-styler-active-line-highlight-codeblock", "code-styler-active-line-highlight-editor");
if (themeSettings.highlights.activeEditorLine && themeSettings.highlights.activeCodeblockLine)
document.body.classList.add("code-styler-active-line-highlight");
@@ -3668,26 +3662,25 @@ var import_obsidian2 = require("obsidian");
var import_view = require("@codemirror/view");
var import_state = require("@codemirror/state");
var import_language = require("@codemirror/language");
-var import_highlight = require("@lezer/highlight");
// src/CodeblockParsing.ts
async function parseCodeblockSource(codeSection, sourcePath, plugin) {
const plugins = plugin.app.plugins.plugins;
const admonitions = "obsidian-admonition" in plugins;
- let codeblocks = [];
- let codeblocksParameters = [];
+ const codeblocks = [];
+ const codeblocksParameters = [];
function parseCodeblockSection(codeSection2) {
var _a;
if (codeSection2.length === 0)
return;
- let openingCodeblockLine = getOpeningLine(codeSection2);
+ const openingCodeblockLine = getOpeningLine(codeSection2);
if (!openingCodeblockLine)
return;
- let openDelimiter = (_a = /^\s*(?:>\s*)*((?:```+|~~~+)).*$/.exec(openingCodeblockLine)) == null ? void 0 : _a[1];
+ const openDelimiter = (_a = /^\s*(?:>\s*)*((?:```+|~~~+)).*$/.exec(openingCodeblockLine)) == null ? void 0 : _a[1];
if (!openDelimiter)
return;
- let openDelimiterIndex = codeSection2.indexOf(openingCodeblockLine);
- let closeDelimiterIndex = codeSection2.slice(openDelimiterIndex + 1).findIndex((line) => line.indexOf(openDelimiter) !== -1);
+ const openDelimiterIndex = codeSection2.indexOf(openingCodeblockLine);
+ const closeDelimiterIndex = codeSection2.slice(openDelimiterIndex + 1).findIndex((line) => line.indexOf(openDelimiter) !== -1);
if (!admonitions || !/^\s*(?:>\s*)*(?:```+|~~~+) *ad-.*$/.test(openingCodeblockLine))
codeblocks.push(codeSection2.slice(0, openDelimiterIndex + 2 + closeDelimiterIndex));
else
@@ -3695,8 +3688,8 @@ async function parseCodeblockSource(codeSection, sourcePath, plugin) {
parseCodeblockSection(codeSection2.slice(openDelimiterIndex + 1 + closeDelimiterIndex + 1));
}
parseCodeblockSection(codeSection);
- for (let codeblockLines of codeblocks) {
- let parameterLine = getParameterLine(codeblockLines);
+ for (const codeblockLines of codeblocks) {
+ const parameterLine = getParameterLine(codeblockLines);
if (!parameterLine)
continue;
let codeblockParameters = parseCodeblockParameters(parameterLine, plugin.settings.currentTheme);
@@ -3708,7 +3701,7 @@ async function parseCodeblockSource(codeSection, sourcePath, plugin) {
return { codeblocksParameters, nested: codeblocks[0] ? !arraysEqual(codeSection, codeblocks[0]) : true };
}
function parseInlineCode(codeText2) {
- let match = /^({} ?)?{([^}]*)} ?(.*)$/.exec(codeText2);
+ const match = /^({} ?)?{([^}]*)} ?(.*)$/.exec(codeText2);
if (!(match == null ? void 0 : match[1]) && !((match == null ? void 0 : match[2]) && (match == null ? void 0 : match[3])))
return { parameters: null, text: "" };
else if (match == null ? void 0 : match[1])
@@ -3717,7 +3710,7 @@ function parseInlineCode(codeText2) {
return { parameters: parseInlineCodeParameters(match[2]), text: match[3] };
}
function parseCodeblockParameters(parameterLine, theme) {
- let codeblockParameters = {
+ const codeblockParameters = {
language: "",
title: "",
fold: {
@@ -3751,7 +3744,7 @@ function parseCodeblockParameters(parameterLine, theme) {
} else {
return codeblockParameters;
}
- let languageBreak = parameterLine.indexOf(" ");
+ const languageBreak = parameterLine.indexOf(" ");
codeblockParameters.language = parameterLine.slice(0, languageBreak !== -1 ? languageBreak : parameterLine.length).toLowerCase();
if (languageBreak === -1)
return codeblockParameters;
@@ -3765,7 +3758,7 @@ async function pluginAdjustParameters(codeblockParameters, plugins, codeblockLin
var _a, _b;
if (codeblockParameters.language === "preview") {
if ("obsidian-code-preview" in plugins) {
- let codePreviewParams = await plugins["obsidian-code-preview"].code(codeblockLines.slice(1, -1).join("\n"), sourcePath);
+ const codePreviewParams = await plugins["obsidian-code-preview"].code(codeblockLines.slice(1, -1).join("\n"), sourcePath);
if (!codeblockParameters.lineNumbers.alwaysDisabled && !codeblockParameters.lineNumbers.alwaysEnabled) {
if (typeof codePreviewParams.start === "number")
codeblockParameters.lineNumbers.offset = codePreviewParams.start - 1;
@@ -3786,12 +3779,12 @@ async function pluginAdjustParameters(codeblockParameters, plugins, codeblockLin
return codeblockParameters;
}
function parseInlineCodeParameters(parameterLine) {
- let inlineCodeParameters = {
+ const inlineCodeParameters = {
language: "",
title: "",
icon: false
};
- let languageBreak = parameterLine.indexOf(" ");
+ const languageBreak = parameterLine.indexOf(" ");
inlineCodeParameters.language = parameterLine.slice(0, languageBreak !== -1 ? languageBreak : parameterLine.length).toLowerCase();
if (languageBreak === -1)
return inlineCodeParameters;
@@ -3803,11 +3796,11 @@ function parseInlineCodeParameters(parameterLine) {
}
function parseCodeblockParameterString(parameterString, codeblockParameters, theme) {
if (parameterString.startsWith("title:")) {
- let titleMatch = /(["']?)([^\1]+)\1/.exec(parameterString.slice("title:".length));
+ const titleMatch = /(["']?)([^\1]+)\1/.exec(parameterString.slice("title:".length));
if (titleMatch)
codeblockParameters.title = titleMatch[2].trim();
} else if (parameterString.startsWith("fold:")) {
- let foldPlaceholderMatch = /(["']?)([^\1]+)\1/.exec(parameterString.slice("fold:".length));
+ const foldPlaceholderMatch = /(["']?)([^\1]+)\1/.exec(parameterString.slice("fold:".length));
if (foldPlaceholderMatch) {
codeblockParameters.fold = {
enabled: true,
@@ -3876,9 +3869,9 @@ function parseCodeblockParameterString(parameterString, codeblockParameters, the
};
}
} else {
- let highlightMatch = /^(\w+):(.+)$/.exec(parameterString);
+ const highlightMatch = /^(\w+):(.+)$/.exec(parameterString);
if (highlightMatch) {
- let highlights = parseHighlightedLines(highlightMatch[2]);
+ const highlights = parseHighlightedLines(highlightMatch[2]);
if (highlightMatch[1] === "hl")
codeblockParameters.highlights.default = highlights;
else if (highlightMatch[1] in theme.colours.light.highlights.alternativeHighlights)
@@ -3888,9 +3881,9 @@ function parseCodeblockParameterString(parameterString, codeblockParameters, the
}
function parseHighlightedLines(highlightedLinesString) {
const highlightRules = highlightedLinesString.split(",");
- let lineNumbers = /* @__PURE__ */ new Set();
- let plainText = /* @__PURE__ */ new Set();
- let regularExpressions = /* @__PURE__ */ new Set();
+ const lineNumbers = /* @__PURE__ */ new Set();
+ const plainText = /* @__PURE__ */ new Set();
+ const regularExpressions = /* @__PURE__ */ new Set();
highlightRules.forEach((highlightRule) => {
if (/\d+-\d+/.test(highlightRule)) {
const [start, end] = highlightRule.split("-").map((num) => parseInt(num));
@@ -3928,7 +3921,7 @@ function parseRegexExcludedLanguages(excludedLanguagesString) {
}
function parseInlineCodeParameterString(parameterString, inlineCodeParameters) {
if (parameterString.startsWith("title:")) {
- let titleMatch = /(["']?)([^\1]+)\1/.exec(parameterString.slice("title:".length));
+ const titleMatch = /(["']?)([^\1]+)\1/.exec(parameterString.slice("title:".length));
if (titleMatch)
inlineCodeParameters.title = titleMatch[2].trim();
} else if (parameterString === "icon" || parameterString.startsWith("icon:") && parameterString.toLowerCase() === "icon:true") {
@@ -3937,7 +3930,7 @@ function parseInlineCodeParameterString(parameterString, inlineCodeParameters) {
}
function getParameterLine(codeblockLines) {
let openingCodeblockLine = getOpeningLine(codeblockLines);
- if (openingCodeblockLine && (openingCodeblockLine !== codeblockLines[0] || />\s*(?:`|~)/.test(openingCodeblockLine)))
+ if (openingCodeblockLine && (openingCodeblockLine !== codeblockLines[0] || />\s*(?:[`~])/.test(openingCodeblockLine)))
openingCodeblockLine = cleanParameterLine(openingCodeblockLine);
return openingCodeblockLine;
}
@@ -3945,7 +3938,7 @@ function getOpeningLine(codeblockLines) {
return codeblockLines.find((line) => Boolean(testOpeningLine(line)));
}
function testOpeningLine(codeblockLine) {
- let lineMatch = /^(\s*(?:>\s*)*)(```+|~~~+)/.exec(codeblockLine);
+ const lineMatch = /^(\s*(?:>\s*)*)(```+|~~~+)/.exec(codeblockLine);
if (!lineMatch)
return "";
if (codeblockLine.indexOf(lineMatch[2], lineMatch[1].length + lineMatch[2].length + 1) === -1)
@@ -4039,6 +4032,14 @@ function getLineClass(codeblockParameters, lineNumber, line) {
classList = ["code-styler-line"];
return classList;
}
+function getLineNumberDisplay(codeblockParameters) {
+ let lineNumberDisplay = "";
+ if (!codeblockParameters.lineNumbers.alwaysEnabled && codeblockParameters.lineNumbers.alwaysDisabled)
+ lineNumberDisplay = "-hide";
+ else if (codeblockParameters.lineNumbers.alwaysEnabled && !codeblockParameters.lineNumbers.alwaysDisabled)
+ lineNumberDisplay = "-specific";
+ return lineNumberDisplay;
+}
// src/EditingView.ts
function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
@@ -4119,7 +4120,7 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
excludedCodeblock = isExcluded(codeblockParameters.language, [this.settings.excludedCodeblocks, this.settings.excludedLanguages].join(",")) || codeblockParameters.ignore;
lineNumber = 0;
let lineNumberCount = line.number + 1;
- let startDelimiter = testOpeningLine(lineText);
+ const startDelimiter = testOpeningLine(lineText);
while (startDelimiter !== testOpeningLine(view.state.doc.line(lineNumberCount).text)) {
lineNumberCount += 1;
}
@@ -4165,7 +4166,7 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
for (let i2 = 1; i2 < transaction.state.doc.lines; i2++) {
const line = transaction.state.doc.line(i2);
const lineText = line.text.toString();
- let currentDelimiter = testOpeningLine(lineText);
+ const currentDelimiter = testOpeningLine(lineText);
if (currentDelimiter) {
if (startLine) {
startLine = false;
@@ -4201,7 +4202,7 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
for (let i2 = 1; i2 < state.doc.lines; i2++) {
const line = state.doc.line(i2);
const lineText = line.text.toString();
- let currentDelimiter = testOpeningLine(lineText);
+ const currentDelimiter = testOpeningLine(lineText);
if (currentDelimiter) {
if (startLine) {
startLine = false;
@@ -4260,6 +4261,7 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
});
const inlineCodeDecorator = import_view.ViewPlugin.fromClass(
class InlineCodeDecoration {
+ //NOSONAR
// loadedLanguages: Record; //NOTE: For future CM6 Compatibility
constructor(view) {
this.decorations = import_view.Decoration.none;
@@ -4269,8 +4271,6 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
}
update(update) {
if (update.docChanged || update.viewportChanged || update.selectionSet || update.state.field(import_obsidian2.editorLivePreviewField) !== update.startState.field(import_obsidian2.editorLivePreviewField) || this.settings.currentTheme.settings.inline.syntaxHighlight !== this.syntaxHighlight) {
- if (this.settings.currentTheme.settings.inline.syntaxHighlight !== this.syntaxHighlight)
- console.log(this.syntaxHighlight);
this.syntaxHighlight = this.settings.currentTheme.settings.inline.syntaxHighlight;
if (update.docChanged)
this.decorations = this.decorations.map(update.changes);
@@ -4292,13 +4292,13 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
const properties = new Set((_a2 = syntaxNode.node.type.prop(import_language.tokenClassNodeProp)) == null ? void 0 : _a2.split(" "));
if (!(properties.has("inline-code") && !properties.has("formatting")))
return;
- let previousSibling = syntaxNode.node.prevSibling;
+ const previousSibling = syntaxNode.node.prevSibling;
if (!previousSibling)
return;
- let delimiterSize = previousSibling.to - previousSibling.from;
- let inlineCodeText = view.state.doc.sliceString(syntaxNode.from, syntaxNode.to);
- let { parameters, text: text3 } = parseInlineCode(inlineCodeText);
- let endOfParameters = inlineCodeText.lastIndexOf(text3);
+ const delimiterSize = previousSibling.to - previousSibling.from;
+ const inlineCodeText = view.state.doc.sliceString(syntaxNode.from, syntaxNode.to);
+ const { parameters, text: text3 } = parseInlineCode(inlineCodeText);
+ const endOfParameters = inlineCodeText.lastIndexOf(text3);
if (!parameters) {
if (text3) {
if (view.state.selection.ranges.some((range) => range.to >= syntaxNode.from - delimiterSize && range.from <= syntaxNode.to + delimiterSize))
@@ -4333,7 +4333,6 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
}
});
}
- ;
}
},
{
@@ -4343,9 +4342,9 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
function cursorIntoCollapsedTransactionFilter() {
return import_state.EditorState.transactionFilter.of((transaction) => {
var _a, _b, _c, _d;
- let extraTransactions = [];
- let collapsedRangeSet = (_b = (_a = transaction.startState.field(codeblockCollapse, false)) == null ? void 0 : _a.map(transaction.changes)) != null ? _b : import_view.Decoration.none;
- let temporarilyUncollapsedRangeSet = (_d = (_c = transaction.startState.field(temporarilyUncollapsed, false)) == null ? void 0 : _c.map(transaction.changes)) != null ? _d : import_view.Decoration.none;
+ const extraTransactions = [];
+ const collapsedRangeSet = (_b = (_a = transaction.startState.field(codeblockCollapse, false)) == null ? void 0 : _a.map(transaction.changes)) != null ? _b : import_view.Decoration.none;
+ const temporarilyUncollapsedRangeSet = (_d = (_c = transaction.startState.field(temporarilyUncollapsed, false)) == null ? void 0 : _c.map(transaction.changes)) != null ? _d : import_view.Decoration.none;
transaction.newSelection.ranges.forEach((range) => {
collapsedRangeSet.between(range.from, range.to, (collapseStartFrom, collapseEndTo, decorationValue) => {
if (collapseStartFrom <= range.head && range.head <= collapseEndTo)
@@ -4361,29 +4360,6 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
return transaction;
});
}
- function manageCollapsedTransactionFilter() {
- return import_state.EditorState.transactionFilter.of((transaction) => {
- var _a, _b;
- let extraTransactions = [];
- let collapsedRangeSet = (_a = transaction.startState.field(codeblockCollapse, false)) != null ? _a : import_view.Decoration.none;
- let temporarilyUncollapsedRangeSet = (_b = transaction.startState.field(temporarilyUncollapsed, false)) != null ? _b : import_view.Decoration.none;
- transaction.changes.iterChanges((fromA, toA, fromB, toB, inserted) => {
- if (fromB === toB && inserted.toString() === "") {
- console.log(fromA, toA, fromB, toB, inserted);
- collapsedRangeSet.between(fromA - 100, toA + 100, (collapseStartFrom, collapseEndTo, decorationValue) => {
- console.log(fromA, toA, collapseStartFrom, collapseEndTo);
- if (fromA <= collapseStartFrom && collapseStartFrom <= toA || fromA <= collapseEndTo && collapseEndTo <= toA)
- extraTransactions.push({ effects: uncollapse.of({ filter: (from, to) => to <= collapseStartFrom || from >= collapseEndTo, filterFrom: collapseStartFrom, filterTo: collapseEndTo }), annotations: temporaryUncollapseAnnotation.of({ decorationRange: { from: collapseStartFrom, to: collapseEndTo, value: decorationValue }, uncollapse: true }) });
- });
- }
- });
- if (extraTransactions.length !== 0)
- console.log("foo", extraTransactions);
- if (extraTransactions.length !== 0)
- return [transaction, ...extraTransactions];
- return transaction;
- });
- }
class LineNumberWidget extends import_view.WidgetType {
constructor(lineNumber, codeblockParameters, maxLineNum, empty2) {
super();
@@ -4396,12 +4372,7 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
return this.lineNumber === other.lineNumber && this.codeblockParameters.lineNumbers.alwaysEnabled === other.codeblockParameters.lineNumbers.alwaysEnabled && this.codeblockParameters.lineNumbers.alwaysDisabled === other.codeblockParameters.lineNumbers.alwaysDisabled && this.codeblockParameters.lineNumbers.offset === other.codeblockParameters.lineNumbers.offset && this.maxLineNum === other.maxLineNum && this.empty === other.empty;
}
toDOM(view) {
- let lineNumberDisplay = "";
- if (!this.codeblockParameters.lineNumbers.alwaysEnabled && this.codeblockParameters.lineNumbers.alwaysDisabled)
- lineNumberDisplay = "-hide";
- else if (this.codeblockParameters.lineNumbers.alwaysEnabled && !this.codeblockParameters.lineNumbers.alwaysDisabled)
- lineNumberDisplay = "-specific";
- return createSpan({ attr: { style: this.maxLineNum.toString().length > (this.lineNumber + this.codeblockParameters.lineNumbers.offset).toString().length ? "width: var(--line-number-gutter-width);" : "" }, cls: `code-styler-line-number${lineNumberDisplay}`, text: this.empty ? "" : (this.lineNumber + this.codeblockParameters.lineNumbers.offset).toString() });
+ return createSpan({ attr: { style: this.maxLineNum.toString().length > (this.lineNumber + this.codeblockParameters.lineNumbers.offset).toString().length ? "width: var(--line-number-gutter-width);" : "" }, cls: `code-styler-line-number${getLineNumberDisplay(this.codeblockParameters)}`, text: this.empty ? "" : (this.lineNumber + this.codeblockParameters.lineNumbers.offset).toString() });
}
}
class HeaderWidget extends import_view.WidgetType {
@@ -4467,7 +4438,7 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
for (let i2 = 1; i2 < view.state.doc.lines; i2++) {
const line = view.state.doc.line(i2);
const lineText = line.text.toString();
- let currentDelimiter = testOpeningLine(lineText);
+ const currentDelimiter = testOpeningLine(lineText);
if (currentDelimiter) {
if (startLine) {
startLine = false;
@@ -4502,14 +4473,14 @@ function createCodeblockCodeMirrorExtensions(settings, languageIcons) {
return [codeblockLineNumberCharWidth, codeblockLines, codeblockHeader, codeblockCollapse, temporarilyUncollapsed, inlineCodeDecorator, cursorIntoCollapsedTransactionFilter()];
}
function getCharWidth(state, default_value) {
- let charWidths = Array.from(state.field(import_obsidian2.editorEditorField).contentDOM.querySelectorAll(".HyperMD-codeblock-end")).reduce((result, beginningElement) => {
- let nextElement = beginningElement.previousElementSibling;
+ const charWidths = Array.from(state.field(import_obsidian2.editorEditorField).contentDOM.querySelectorAll(".HyperMD-codeblock-end")).reduce((result, beginningElement) => {
+ const nextElement = beginningElement.previousElementSibling;
if (!nextElement)
return result;
- let lineNumberElement = nextElement.querySelector("[class^='code-styler-line-number']");
+ const lineNumberElement = nextElement.querySelector("[class^='code-styler-line-number']");
if (!lineNumberElement || lineNumberElement.innerText.length <= 2)
return result;
- let computedStyles = window.getComputedStyle(lineNumberElement, null);
+ const computedStyles = window.getComputedStyle(lineNumberElement, null);
result.push((lineNumberElement.getBoundingClientRect().width - parseFloat(computedStyles.paddingLeft) - parseFloat(computedStyles.paddingRight)) / lineNumberElement.innerText.length);
return result;
}, []);
@@ -4542,13 +4513,13 @@ function findCodeblocks(view) {
}
function modeHighlight({ start, text: text3, language }) {
var _a;
- let markDecorations = [];
+ const markDecorations = [];
const mode = window.CodeMirror.getMode(window.CodeMirror.defaults, (_a = window.CodeMirror.findModeByName(language)) == null ? void 0 : _a.mime);
- let state = window.CodeMirror.startState(mode);
+ const state = window.CodeMirror.startState(mode);
if (mode == null ? void 0 : mode.token) {
- let stream = new window.CodeMirror.StringStream(text3);
+ const stream = new window.CodeMirror.StringStream(text3);
while (!stream.eol()) {
- let style = mode.token(stream, state);
+ const style = mode.token(stream, state);
if (style)
markDecorations.push({ from: start + stream.start, to: start + stream.pos, value: import_view.Decoration.mark({ class: `cm-${style}` }) });
stream.start = stream.pos;
@@ -10611,132 +10582,31 @@ function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {
// src/ReadingView.ts
async function readingViewCodeblockDecoratingPostProcessor(element2, { sourcePath, getSectionInfo, frontmatter }, plugin, editingEmbeds = false) {
- var _a, _b;
+ var _a;
const cache = plugin.app.metadataCache.getCache(sourcePath);
if (!sourcePath || !element2 || ((_a = frontmatter != null ? frontmatter : cache == null ? void 0 : cache.frontmatter) == null ? void 0 : _a["code-styler-ignore"]) === true)
return;
- let codeblockPreElements;
editingEmbeds = editingEmbeds || Boolean(element2.matchParent(".cm-embed-block"));
- const specific = !Boolean(element2.querySelector(".view-content > *"));
+ const specific = !element2.querySelector(".view-content > *");
const printing = Boolean(element2.querySelector("div.print > *"));
if (printing && !plugin.settings.decoratePrint)
return;
- if (!editingEmbeds && !specific)
- codeblockPreElements = Array.from(element2.querySelectorAll(".markdown-reading-view pre:not(.frontmatter)"));
- else if (!editingEmbeds && specific) {
- codeblockPreElements = Array.from(element2.querySelectorAll("pre:not(.frontmatter)"));
- let admonitionCodeElement = (_b = codeblockPreElements == null ? void 0 : codeblockPreElements[0]) == null ? void 0 : _b.querySelector('pre:not([class]) > code[class*="language-ad-"]');
- if (admonitionCodeElement) {
- await sleep(50);
- codeblockPreElements = Array.from(element2.querySelectorAll("pre:not(.frontmatter)"));
- }
- } else if (editingEmbeds && !specific)
- codeblockPreElements = Array.from(element2.querySelectorAll(".markdown-source-view .cm-embed-block pre:not(.frontmatter)"));
- else
- codeblockPreElements = [];
+ const codeblockPreElements = await getCodeblockPreElements(element2, specific, editingEmbeds);
if (codeblockPreElements.length === 0 && !(editingEmbeds && specific))
return;
const codeblockSectionInfo = getSectionInfo(codeblockPreElements[0]);
if (codeblockSectionInfo && specific && !editingEmbeds)
- renderSpecificReadingSection(codeblockPreElements, sourcePath, codeblockSectionInfo, plugin);
- else if (specific && !printing) {
- await sleep(50);
- editingEmbeds = editingEmbeds || Boolean(element2.matchParent(".cm-embed-block"));
- if (editingEmbeds || !element2.classList.contains("admonition-content")) {
- let contentEl = element2.matchParent(".view-content");
- await readingViewCodeblockDecoratingPostProcessor(contentEl ? contentEl : element2.matchParent("div.print"), { sourcePath, getSectionInfo, frontmatter }, plugin, editingEmbeds);
- }
- } else
- renderDocument(codeblockPreElements, sourcePath, cache, editingEmbeds, printing, plugin);
+ await renderSpecificReadingSection(codeblockPreElements, sourcePath, codeblockSectionInfo, plugin);
+ else if (specific && !printing)
+ await retriggerProcessor(element2, { sourcePath, getSectionInfo, frontmatter }, plugin, editingEmbeds);
+ else
+ await renderDocument(codeblockPreElements, sourcePath, cache, editingEmbeds, printing, plugin);
}
-async function renderSpecificReadingSection(codeblockPreElements, sourcePath, codeblockSectionInfo, plugin) {
- const codeblocksParameters = (await parseCodeblockSource(Array.from({ length: codeblockSectionInfo.lineEnd - codeblockSectionInfo.lineStart + 1 }, (_2, num) => num + codeblockSectionInfo.lineStart).map((lineNumber) => codeblockSectionInfo.text.split("\n")[lineNumber]), sourcePath, plugin)).codeblocksParameters;
- if (codeblockPreElements.length !== codeblocksParameters.length)
- return;
- for (let [key, codeblockPreElement] of codeblockPreElements.entries()) {
- let codeblockParameters = codeblocksParameters[key];
- let codeblockCodeElement = codeblockPreElement.querySelector("pre > code");
- if (!codeblockCodeElement)
- return;
- if (Array.from(codeblockCodeElement.classList).some((className) => /^language-\S+/.test(className)))
- while (!codeblockCodeElement.classList.contains("is-loaded"))
- await sleep(2);
- if (isExcluded(codeblockParameters.language, plugin.settings.excludedLanguages) || codeblockParameters.ignore)
- continue;
- await remakeCodeblock(codeblockCodeElement, codeblockPreElement, codeblockParameters, true, plugin);
- }
-}
-async function renderDocument(codeblockPreElements, sourcePath, cache, editingEmbeds, printing, plugin) {
- const fileContentLines = await getFileContentLines(sourcePath, plugin);
- if (!fileContentLines)
- return;
- let codeblocksParameters = [];
- if (typeof (cache == null ? void 0 : cache.sections) !== "undefined") {
- for (const section of cache.sections) {
- if (!editingEmbeds || section.type === "code" || section.type === "callout") {
- const parsedCodeblocksParameters = await parseCodeblockSource(fileContentLines.slice(section.position.start.line, section.position.end.line + 1), sourcePath, plugin);
- if (!editingEmbeds || parsedCodeblocksParameters.nested)
- codeblocksParameters = codeblocksParameters.concat(parsedCodeblocksParameters.codeblocksParameters);
- }
- }
- } else {
- console.error(`Metadata cache not found for file: ${sourcePath}`);
- return;
- }
- if (codeblockPreElements.length !== codeblocksParameters.length)
- return;
- try {
- for (let [key, codeblockPreElement] of Array.from(codeblockPreElements).entries()) {
- let codeblockParameters = codeblocksParameters[key];
- let codeblockCodeElement = codeblockPreElement.querySelector("pre > code");
- if (!codeblockCodeElement)
- return;
- if (Array.from(codeblockCodeElement.classList).some((className) => /^language-\S+/.test(className)))
- while (!codeblockCodeElement.classList.contains("is-loaded"))
- await sleep(2);
- if (codeblockCodeElement.querySelector("code [class*='code-styler-line']"))
- continue;
- if (isExcluded(codeblockParameters.language, plugin.settings.excludedLanguages) || codeblockParameters.ignore)
- continue;
- await remakeCodeblock(codeblockCodeElement, codeblockPreElement, codeblockParameters, !printing, plugin);
- }
- } catch (error) {
- console.error(`Error rendering document: ${error.message}`);
- return;
- }
-}
-async function readingViewInlineDecoratingPostProcessor(element2, { sourcePath, getSectionInfo, frontmatter }, plugin) {
+async function readingViewInlineDecoratingPostProcessor(element2, { sourcePath }, plugin) {
if (!sourcePath || !element2)
return;
- for (let inlineCodeElement of Array.from(element2.querySelectorAll(":not(pre) > code"))) {
- if (inlineCodeElement.classList.contains("code-styler-highlighted") || inlineCodeElement.classList.contains("code-styler-highlight-ignore"))
- return;
- let tempRenderContainer = createDiv();
- let renderedCodeElement;
- let inlineCodeText = inlineCodeElement.innerText;
- let { parameters, text: text3 } = parseInlineCode(inlineCodeText);
- if (!parameters) {
- if (!text3)
- return;
- import_obsidian3.MarkdownRenderer.renderMarkdown("`".repeat(20) + text3 + "`".repeat(20), tempRenderContainer, "", new import_obsidian3.Component());
- renderedCodeElement = tempRenderContainer.querySelector("code");
- if (!renderedCodeElement)
- return;
- inlineCodeElement.innerHTML = renderedCodeElement.innerHTML;
- inlineCodeElement.classList.add("code-styler-highlight-ignore");
- } else {
- import_obsidian3.MarkdownRenderer.renderMarkdown(["```", plugin.settings.currentTheme.settings.inline.syntaxHighlight ? parameters.language : "", "\n", text3, "\n", "```"].join(""), tempRenderContainer, "", new import_obsidian3.Component());
- renderedCodeElement = tempRenderContainer.querySelector("pre > code");
- if (!renderedCodeElement)
- return;
- while (plugin.settings.currentTheme.settings.inline.syntaxHighlight && !renderedCodeElement.classList.contains("is-loaded"))
- await sleep(2);
- inlineCodeElement.innerHTML = renderedCodeElement.innerHTML;
- inlineCodeElement.classList.add("code-styler-highlighted");
- inlineCodeElement.setAttribute("parameters", inlineCodeText.substring(0, inlineCodeText.lastIndexOf(text3)));
- if (parameters.icon || parameters.title)
- inlineCodeElement.insertBefore(createInlineOpener(parameters, plugin.languageIcons), inlineCodeElement.childNodes[0]);
- }
+ for (const inlineCodeElement of Array.from(element2.querySelectorAll(":not(pre) > code"))) {
+ await remakeInlineCode(inlineCodeElement, plugin);
}
}
function destroyReadingModeElements() {
@@ -10780,79 +10650,118 @@ function destroyReadingModeElements() {
inlineCodeElement.innerText = inlineCodeElement.getAttribute("parameters") + inlineCodeElement.innerText;
});
}
+async function renderSpecificReadingSection(codeblockPreElements, sourcePath, codeblockSectionInfo, plugin) {
+ const codeblocksParameters = (await parseCodeblockSource(Array.from({ length: codeblockSectionInfo.lineEnd - codeblockSectionInfo.lineStart + 1 }, (_2, num) => num + codeblockSectionInfo.lineStart).map((lineNumber) => codeblockSectionInfo.text.split("\n")[lineNumber]), sourcePath, plugin)).codeblocksParameters;
+ if (codeblockPreElements.length !== codeblocksParameters.length)
+ return;
+ for (const [key, codeblockPreElement] of codeblockPreElements.entries()) {
+ const codeblockParameters = codeblocksParameters[key];
+ const codeblockCodeElement = codeblockPreElement.querySelector("pre > code");
+ if (!codeblockCodeElement)
+ return;
+ if (Array.from(codeblockCodeElement.classList).some((className) => /^language-\S+/.test(className)))
+ while (!codeblockCodeElement.classList.contains("is-loaded"))
+ await sleep(2);
+ if (isExcluded(codeblockParameters.language, plugin.settings.excludedLanguages) || codeblockParameters.ignore)
+ continue;
+ await remakeCodeblock(codeblockCodeElement, codeblockPreElement, codeblockParameters, true, plugin);
+ }
+}
+async function retriggerProcessor(element2, context, plugin, editingEmbeds) {
+ await sleep(50);
+ editingEmbeds = editingEmbeds || Boolean(element2.matchParent(".cm-embed-block"));
+ if (editingEmbeds || !element2.classList.contains("admonition-content")) {
+ const contentEl = element2.matchParent(".view-content");
+ await readingViewCodeblockDecoratingPostProcessor(contentEl || element2.matchParent("div.print"), context, plugin, editingEmbeds);
+ }
+}
+async function renderDocument(codeblockPreElements, sourcePath, cache, editingEmbeds, printing, plugin) {
+ const codeblocksParameters = await getCodeblocksParameters(sourcePath, cache, plugin, editingEmbeds);
+ if (codeblocksParameters.length !== codeblockPreElements.length)
+ return;
+ try {
+ for (const [key, codeblockPreElement] of Array.from(codeblockPreElements).entries()) {
+ const codeblockParameters = codeblocksParameters[key];
+ const codeblockCodeElement = codeblockPreElement.querySelector("pre > code");
+ if (!codeblockCodeElement)
+ return;
+ if (Array.from(codeblockCodeElement.classList).some((className) => /^language-\S+/.test(className)))
+ while (!codeblockCodeElement.classList.contains("is-loaded"))
+ await sleep(2);
+ if (codeblockCodeElement.querySelector("code [class*='code-styler-line']"))
+ continue;
+ if (isExcluded(codeblockParameters.language, plugin.settings.excludedLanguages) || codeblockParameters.ignore)
+ continue;
+ await remakeCodeblock(codeblockCodeElement, codeblockPreElement, codeblockParameters, !printing, plugin);
+ }
+ } catch (error) {
+ console.error(`Error rendering document: ${error.message}`);
+ return;
+ }
+}
async function remakeCodeblock(codeblockCodeElement, codeblockPreElement, codeblockParameters, dynamic, plugin) {
- function escapeHTML(plaintext) {
- return plaintext.replace(//g, ">").replace(/"/g, """);
- }
- if (dynamic) {
- plugin.executeCodeMutationObserver.observe(codeblockPreElement, {
- childList: true,
- subtree: true,
- attributes: true,
- characterData: true
- });
- }
- codeblockPreElement.classList.add(`code-styler-pre`);
- if (codeblockParameters.language)
- codeblockPreElement.classList.add(`language-${codeblockParameters.language}`);
+ if (dynamic)
+ plugin.executeCodeMutationObserver.observe(codeblockPreElement, { childList: true, subtree: true, attributes: true, characterData: true });
+ insertHeader(codeblockPreElement, codeblockParameters, plugin, dynamic);
+ codeblockPreElement.classList.add(...getPreClasses(codeblockParameters, dynamic));
if (codeblockPreElement.parentElement)
codeblockPreElement.parentElement.classList.add(`code-styler-pre-parent`);
- const headerContainer = createHeader(codeblockParameters, plugin.settings.currentTheme.settings, plugin.languageIcons);
- codeblockPreElement.insertBefore(headerContainer, codeblockPreElement.childNodes[0]);
- if (dynamic) {
- headerContainer.addEventListener("click", () => toggleFold(codeblockPreElement));
- if (codeblockParameters.fold.enabled)
- codeblockPreElement.classList.add("code-styler-collapsed");
- if (codeblockParameters.lineUnwrap.alwaysEnabled) {
- codeblockCodeElement.style.setProperty("--line-wrapping", "pre");
- if (codeblockParameters.lineUnwrap.activeWrap)
- codeblockCodeElement.style.setProperty("--line-active-wrapping", "pre-wrap");
- else
- codeblockCodeElement.style.setProperty("--line-active-wrapping", "pre");
- } else if (codeblockParameters.lineUnwrap.alwaysDisabled)
- codeblockCodeElement.style.setProperty("--line-wrapping", "pre-wrap");
- } else if (codeblockParameters.fold.enabled)
- codeblockPreElement.classList.add("code-styler-collapsed");
- if (codeblockCodeElement.querySelector("code [class*='code-styler-line']"))
+ if (!codeblockCodeElement.querySelector("code [class*='code-styler-line']"))
+ decorateCodeblockLines(codeblockCodeElement, codeblockParameters);
+}
+async function remakeInlineCode(inlineCodeElement, plugin) {
+ if (inlineCodeElement.classList.contains("code-styler-inline"))
return;
- let tree = unified().use(remarkParse).parse(codeblockCodeElement.innerHTML.replace(/\n/g, "
"));
- let stack = [];
- let codeblockHTML = "";
- codeblockCodeElement.innerHTML = "";
- visit(tree, (node2) => {
- if (node2.type === "html" || node2.type === "text") {
- if (node2.type === "html" && node2.value !== "
") {
- if (node2.value.startsWith("")
- node2.value = "".repeat(stack.length) + "
" + stack.join("");
- else
- node2.value = escapeHTML(node2.value);
- codeblockHTML += node2.value;
+ const inlineCodeText = inlineCodeElement.innerText;
+ const { parameters, text: text3 } = parseInlineCode(inlineCodeText);
+ if (parameters && plugin.settings.currentTheme.settings.inline.syntaxHighlight)
+ inlineCodeElement.innerHTML = await getHighlightedHTML(parameters, text3, plugin);
+ else if (!parameters && text3 || parameters && !plugin.settings.currentTheme.settings.inline.syntaxHighlight)
+ inlineCodeElement.innerHTML = text3;
+ else
+ return;
+ inlineCodeElement.classList.add("code-styler-inline");
+ if (parameters) {
+ const parameterString = inlineCodeText.substring(0, inlineCodeText.lastIndexOf(text3));
+ inlineCodeElement.setAttribute("parameters", parameterString);
+ if (parameters.icon || parameters.title)
+ inlineCodeElement.insertBefore(createInlineOpener(parameters, plugin.languageIcons), inlineCodeElement.childNodes[0]);
+ }
+}
+async function getCodeblockPreElements(element2, specific, editingEmbeds) {
+ var _a;
+ let codeblockPreElements;
+ if (!editingEmbeds && !specific)
+ codeblockPreElements = Array.from(element2.querySelectorAll(".markdown-reading-view pre:not(.frontmatter)"));
+ else if (editingEmbeds && !specific)
+ codeblockPreElements = Array.from(element2.querySelectorAll(".markdown-source-view .cm-embed-block pre:not(.frontmatter)"));
+ else if (!editingEmbeds && specific) {
+ codeblockPreElements = Array.from(element2.querySelectorAll("pre:not(.frontmatter)"));
+ const admonitionCodeElement = (_a = codeblockPreElements == null ? void 0 : codeblockPreElements[0]) == null ? void 0 : _a.querySelector('pre:not([class]) > code[class*="language-ad-"]');
+ if (admonitionCodeElement) {
+ await sleep(50);
+ codeblockPreElements = Array.from(element2.querySelectorAll("pre:not(.frontmatter)"));
}
- });
- let codeblockLines = codeblockHTML.split("
");
- if (codeblockLines.length == 1)
- codeblockLines = ["", ""];
- codeblockLines.forEach((line, index2) => {
- if (index2 === codeblockLines.length - 1)
- return;
- const lineNumber = index2 + 1;
- const lineWrapper = document.createElement("div");
- getLineClass(codeblockParameters, lineNumber, line).forEach((lineClass) => {
- lineWrapper.classList.add(lineClass);
- });
- codeblockCodeElement.appendChild(lineWrapper);
- let lineNumberDisplay = "";
- if (!codeblockParameters.lineNumbers.alwaysEnabled && codeblockParameters.lineNumbers.alwaysDisabled)
- lineNumberDisplay = "-hide";
- else if (codeblockParameters.lineNumbers.alwaysEnabled && !codeblockParameters.lineNumbers.alwaysDisabled)
- lineNumberDisplay = "-specific";
- lineWrapper.appendChild(createDiv({ cls: `code-styler-line-number${lineNumberDisplay}`, text: (lineNumber + codeblockParameters.lineNumbers.offset).toString() }));
- lineWrapper.appendChild(createDiv({ cls: `code-styler-line-text`, text: (0, import_obsidian3.sanitizeHTMLToDom)(line !== "" ? line : "
") }));
- });
+ } else
+ codeblockPreElements = [];
+ return codeblockPreElements;
+}
+async function getCodeblocksParameters(sourcePath, cache, plugin, editingEmbeds) {
+ let codeblocksParameters = [];
+ const fileContentLines = await getFileContentLines(sourcePath, plugin);
+ if (!fileContentLines)
+ return [];
+ if (typeof (cache == null ? void 0 : cache.sections) !== "undefined") {
+ for (const section of cache.sections) {
+ if (!editingEmbeds || section.type === "code" || section.type === "callout") {
+ const parsedCodeblocksParameters = await parseCodeblockSource(fileContentLines.slice(section.position.start.line, section.position.end.line + 1), sourcePath, plugin);
+ if (!editingEmbeds || parsedCodeblocksParameters.nested)
+ codeblocksParameters = codeblocksParameters.concat(parsedCodeblocksParameters.codeblocksParameters);
+ }
+ }
+ } else
+ console.error(`Metadata cache not found for file: ${sourcePath}`);
+ return codeblocksParameters;
}
async function toggleFold(codeblockPreElement) {
codeblockPreElement.querySelectorAll("pre > code").forEach((codeblockCodeElement) => codeblockCodeElement.style.setProperty("max-height", `calc(${Math.ceil(codeblockCodeElement.scrollHeight + 0.01)}px + var(--code-padding) * ${codeblockCodeElement.classList.contains("execute-code-output") ? "3.5 + var(--header-separator-width)" : "2"})`));
@@ -10861,6 +10770,77 @@ async function toggleFold(codeblockPreElement) {
await sleep(TRANSITION_LENGTH);
codeblockPreElement.querySelectorAll("pre > code").forEach((codeblockCodeElement) => codeblockCodeElement.style.removeProperty("max-height"));
}
+function insertHeader(codeblockPreElement, codeblockParameters, plugin, dynamic) {
+ const headerContainer = createHeader(codeblockParameters, plugin.settings.currentTheme.settings, plugin.languageIcons);
+ if (dynamic)
+ headerContainer.addEventListener("click", () => {
+ toggleFold(codeblockPreElement);
+ });
+ codeblockPreElement.insertBefore(headerContainer, codeblockPreElement.childNodes[0]);
+}
+function getPreClasses(codeblockParameters, dynamic) {
+ const preClassList = ["code-styler-pre"];
+ if (codeblockParameters.language)
+ preClassList.push(`language-${codeblockParameters.language}`);
+ if (dynamic) {
+ if (codeblockParameters.fold.enabled)
+ preClassList.push("code-styler-collapsed");
+ if (codeblockParameters.lineUnwrap.alwaysEnabled)
+ preClassList.push(codeblockParameters.lineUnwrap.activeWrap ? "unwrapped-inactive" : "unwrapped");
+ else if (codeblockParameters.lineUnwrap.alwaysDisabled)
+ preClassList.push("unwrapped");
+ }
+ return preClassList;
+}
+function decorateCodeblockLines(codeblockCodeElement, codeblockParameters) {
+ getCodeblockLines(codeblockCodeElement).forEach((line, index2, codeblockLines) => {
+ if (index2 !== codeblockLines.length - 1)
+ insertLineWrapper(codeblockCodeElement, codeblockParameters, index2 + 1, line);
+ });
+}
+function getCodeblockLines(codeblockCodeElement) {
+ function escapeHTML(plaintext) {
+ return plaintext.replace(//g, ">").replace(/"/g, """);
+ }
+ const tree = unified().use(remarkParse).parse(codeblockCodeElement.innerHTML.replace(/\n/g, "
"));
+ const stack = [];
+ let codeblockHTML = "";
+ visit(tree, ["text", "html"], (node2) => {
+ if (node2.type === "html" && node2.value !== "
") {
+ if (node2.value.startsWith("")
+ node2.value = "".repeat(stack.length) + "
" + stack.join("");
+ else if (node2.type === "text")
+ node2.value = escapeHTML(node2.value);
+ if ("value" in node2)
+ codeblockHTML += node2.value;
+ });
+ let codeblockLines = codeblockHTML.split("
");
+ if (codeblockLines.length == 1)
+ codeblockLines = ["", ""];
+ codeblockCodeElement.innerHTML = "";
+ return codeblockLines;
+}
+function insertLineWrapper(codeblockCodeElement, codeblockParameters, lineNumber, line) {
+ const lineWrapper = document.createElement("div");
+ codeblockCodeElement.appendChild(lineWrapper);
+ getLineClass(codeblockParameters, lineNumber, line).forEach((lineClass) => lineWrapper.classList.add(lineClass));
+ lineWrapper.appendChild(createDiv({ cls: `code-styler-line-number${getLineNumberDisplay(codeblockParameters)}`, text: (lineNumber + codeblockParameters.lineNumbers.offset).toString() }));
+ lineWrapper.appendChild(createDiv({ cls: `code-styler-line-text`, text: (0, import_obsidian3.sanitizeHTMLToDom)(line !== "" ? line : "
") }));
+}
+async function getHighlightedHTML(parameters, text3, plugin) {
+ const temporaryRenderingContainer = createDiv();
+ import_obsidian3.MarkdownRenderer.renderMarkdown(["```", parameters.language, "\n", text3, "\n", "```"].join(""), temporaryRenderingContainer, "", new import_obsidian3.Component());
+ const renderedCodeElement = temporaryRenderingContainer.querySelector("code");
+ if (!renderedCodeElement)
+ return "ERROR: Could not render highlighted code";
+ while (plugin.settings.currentTheme.settings.inline.syntaxHighlight && !renderedCodeElement.classList.contains("is-loaded"))
+ await sleep(2);
+ return renderedCodeElement.innerHTML;
+}
var executeCodeMutationObserver = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.type === "childList" && mutation.target.tagName === "PRE") {
@@ -10899,7 +10879,7 @@ var CodeStylerPlugin = class extends import_obsidian4.Plugin {
});
this.registerEvent(this.app.workspace.on("css-change", () => {
updateStyling(this.settings, this.app);
- let currentFontSize = document.body.getCssPropertyValue("--font-text-size");
+ const currentFontSize = document.body.getCssPropertyValue("--font-text-size");
if (this.sizes.font !== currentFontSize) {
this.sizes.font = currentFontSize;
clearTimeout(zoomTimeout);
@@ -10909,7 +10889,7 @@ var CodeStylerPlugin = class extends import_obsidian4.Plugin {
}
}, this));
this.registerEvent(this.app.workspace.on("resize", () => {
- let currentZoomSize = document.body.getCssPropertyValue("--zoom-factor");
+ const currentZoomSize = document.body.getCssPropertyValue("--zoom-factor");
if (this.sizes.zoom !== currentZoomSize) {
this.sizes.zoom = currentZoomSize;
clearTimeout(zoomTimeout);
@@ -10959,4 +10939,4 @@ is-buffer/index.js:
* @license MIT
*)
*/
-//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ib290c3RyYXAiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovc3JjL2pzL3V0aWxzL3V0aWxzLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvdXRpbHMvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3NyYy9qcy91dGlscy9oc3ZhY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3NyYy9qcy9saWJzL21vdmVhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvbGlicy9zZWxlY3RhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvdGVtcGxhdGUuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3NyYy9OYW5vUG9wLnRzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvcGlja3IuanMiLCAibm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZXh0ZW5kL2luZGV4LmpzIiwgInNyYy9tYWluLnRzIiwgInNyYy9TZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3NUYWIudHMiLCAibm9kZV9tb2R1bGVzL2NvbG9ydHJhbnNsYXRvci9lc20vaW5kZXguanMiLCAic3JjL0FwcGx5U3R5bGluZy50cyIsICJzcmMvRWRpdGluZ1ZpZXcudHMiLCAic3JjL0NvZGVibG9ja1BhcnNpbmcudHMiLCAic3JjL0NvZGVibG9ja0RlY29yYXRpbmcudHMiLCAic3JjL1JlYWRpbmdWaWV3LnRzIiwgIm5vZGVfbW9kdWxlcy9iYWlsL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy91bmlmaWVkL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvaXMtcGxhaW4tb2JqL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy90cm91Z2gvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL3ZmaWxlL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24vbGliL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy92ZmlsZS1tZXNzYWdlL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvdmZpbGUvbGliL21pbnBhdGguYnJvd3Nlci5qcyIsICJub2RlX21vZHVsZXMvdmZpbGUvbGliL21pbnByb2MuYnJvd3Nlci5qcyIsICJub2RlX21vZHVsZXMvdmZpbGUvbGliL21pbnVybC5zaGFyZWQuanMiLCAibm9kZV9tb2R1bGVzL3ZmaWxlL2xpYi9taW51cmwuYnJvd3Nlci5qcyIsICJub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1zdHJpbmcvbGliL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1jaHVua2VkL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1jb21iaW5lLWV4dGVuc2lvbnMvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNoYXJhY3Rlci9saWIvdW5pY29kZS1wdW5jdHVhdGlvbi1yZWdleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstZmFjdG9yeS1zcGFjZS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrL2xpYi9pbml0aWFsaXplL2NvbnRlbnQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvaW5pdGlhbGl6ZS9kb2N1bWVudC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtY2xhc3NpZnktY2hhcmFjdGVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1yZXNvbHZlLWFsbC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvYXR0ZW50aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9hdXRvbGluay5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvYmxhbmstbGluZS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvYmxvY2stcXVvdGUuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NoYXJhY3Rlci1lc2NhcGUuanMiLCAibm9kZV9tb2R1bGVzL2RlY29kZS1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlL2luZGV4LmRvbS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvY2hhcmFjdGVyLXJlZmVyZW5jZS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvY29kZS1mZW5jZWQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NvZGUtaW5kZW50ZWQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NvZGUtdGV4dC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtc3VidG9rZW5pemUvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NvbnRlbnQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LWRlc3RpbmF0aW9uL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstZmFjdG9yeS1sYWJlbC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWZhY3RvcnktdGl0bGUvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LXdoaXRlc3BhY2UvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLW5vcm1hbGl6ZS1pZGVudGlmaWVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9kZWZpbml0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9oYXJkLWJyZWFrLWVzY2FwZS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvaGVhZGluZy1hdHguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWh0bWwtdGFnLW5hbWUvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2h0bWwtZmxvdy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvaHRtbC10ZXh0LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9sYWJlbC1lbmQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2xhYmVsLXN0YXJ0LWltYWdlLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9sYWJlbC1zdGFydC1saW5rLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9saW5lLWVuZGluZy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvdGhlbWF0aWMtYnJlYWsuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2xpc3QuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL3NldGV4dC11bmRlcmxpbmUuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvaW5pdGlhbGl6ZS9mbG93LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmsvbGliL2luaXRpYWxpemUvdGV4dC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrL2xpYi9jcmVhdGUtdG9rZW5pemVyLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmsvbGliL2NvbnN0cnVjdHMuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvcGFyc2UuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvcHJlcHJvY2Vzcy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrL2xpYi9wb3N0cHJvY2Vzcy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtZGVjb2RlLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtZGVjb2RlLXN0cmluZy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWRhc3QtdXRpbC1mcm9tLW1hcmtkb3duL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1pcy9saWIvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9saWIvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9saWIvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQvbGliL2luZGV4LmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJQaWNrclwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJQaWNrclwiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsICIvLyBUaGUgcmVxdWlyZSBzY29wZVxudmFyIF9fd2VicGFja19yZXF1aXJlX18gPSB7fTtcblxuIiwgIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsICJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwgIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsICIvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItcmVzdC1wYXJhbXMgKi9cclxuZnVuY3Rpb24gZXZlbnRMaXN0ZW5lcihtZXRob2QsIGVsZW1lbnRzLCBldmVudHMsIGZuLCBvcHRpb25zID0ge30pIHtcclxuXHJcbiAgICAvLyBOb3JtYWxpemUgYXJyYXlcclxuICAgIGlmIChlbGVtZW50cyBpbnN0YW5jZW9mIEhUTUxDb2xsZWN0aW9uIHx8IGVsZW1lbnRzIGluc3RhbmNlb2YgTm9kZUxpc3QpIHtcclxuICAgICAgICBlbGVtZW50cyA9IEFycmF5LmZyb20oZWxlbWVudHMpO1xyXG4gICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShlbGVtZW50cykpIHtcclxuICAgICAgICBlbGVtZW50cyA9IFtlbGVtZW50c107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGV2ZW50cykpIHtcclxuICAgICAgICBldmVudHMgPSBbZXZlbnRzXTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGVsIG9mIGVsZW1lbnRzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBldiBvZiBldmVudHMpIHtcclxuICAgICAgICAgICAgZWxbbWV0aG9kXShldiwgZm4sIHtjYXB0dXJlOiBmYWxzZSwgLi4ub3B0aW9uc30pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCBldmVudChzKSB0byBlbGVtZW50KHMpLlxyXG4gKiBAcGFyYW0gZWxlbWVudHMgRE9NLUVsZW1lbnRzXHJcbiAqIEBwYXJhbSBldmVudHMgRXZlbnQgbmFtZXNcclxuICogQHBhcmFtIGZuIENhbGxiYWNrXHJcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnNcclxuICogQHJldHVybiBBcnJheSBwYXNzZWQgYXJndW1lbnRzXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgb24gPSBldmVudExpc3RlbmVyLmJpbmQobnVsbCwgJ2FkZEV2ZW50TGlzdGVuZXInKTtcclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgZXZlbnQocykgZnJvbSBlbGVtZW50KHMpLlxyXG4gKiBAcGFyYW0gZWxlbWVudHMgRE9NLUVsZW1lbnRzXHJcbiAqIEBwYXJhbSBldmVudHMgRXZlbnQgbmFtZXNcclxuICogQHBhcmFtIGZuIENhbGxiYWNrXHJcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnNcclxuICogQHJldHVybiBBcnJheSBwYXNzZWQgYXJndW1lbnRzXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgb2ZmID0gZXZlbnRMaXN0ZW5lci5iaW5kKG51bGwsICdyZW1vdmVFdmVudExpc3RlbmVyJyk7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhbiBET00tRWxlbWVudCBvdXQgb2YgYSBzdHJpbmcgKFNpbmdsZSBlbGVtZW50KS5cclxuICogQHBhcmFtIGh0bWwgSFRNTCByZXByZXNlbnRpbmcgYSBzaW5nbGUgZWxlbWVudFxyXG4gKiBAcmV0dXJucyB7RWxlbWVudCB8IG51bGx9IFRoZSBlbGVtZW50LlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRGcm9tU3RyaW5nKGh0bWwpIHtcclxuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgZGl2LmlubmVySFRNTCA9IGh0bWwudHJpbSgpO1xyXG4gICAgcmV0dXJuIGRpdi5maXJzdEVsZW1lbnRDaGlsZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBuZXcgaHRtbCBlbGVtZW50LCBldmVyeSBlbGVtZW50IHdoaWNoIGhhc1xyXG4gKiBhICc6cmVmJyBhdHRyaWJ1dGUgd2lsbCBiZSBzYXZlZCBpbiBhIG9iamVjdCAod2hpY2ggd2lsbCBiZSByZXR1cm5lZClcclxuICogd2hlcmUgdGhlIHZhbHVlIG9mICc6cmVmJyBpcyB0aGUgb2JqZWN0LWtleSBhbmQgdGhlIHZhbHVlIHRoZSBIVE1MRWxlbWVudC5cclxuICpcclxuICogSXQncyBwb3NzaWJsZSB0byBjcmVhdGUgYSBoaWVyYXJjaHkgaWYgeW91IGFkZCBhICc6b2JqJyBhdHRyaWJ1dGUuIEV2ZXJ5XHJcbiAqIHNpYmxpbmcgd2lsbCBiZSBhZGRlZCB0byB0aGUgb2JqZWN0IHdoaWNoIHdpbGwgZ2V0IHRoZSBuYW1lIGZyb20gdGhlICdkYXRhLWNvbicgYXR0cmlidXRlLlxyXG4gKlxyXG4gKiBJZiB5b3Ugd2FudCB0byBjcmVhdGUgYW4gQXJyYXkgb3V0IG9mIG11bHRpcGxlIGVsZW1lbnRzLCB5b3UgY2FuIHVzZSB0aGUgJzphcnInIGF0dHJpYnV0ZSxcclxuICogdGhlIHZhbHVlIGRlZmluZXMgdGhlIGtleSBhbmQgYWxsIGVsZW1lbnRzLCB3aGljaCBoYXMgdGhlIHNhbWUgcGFyZW50IGFuZCB0aGUgc2FtZSAnZGF0YS1hcnInIGF0dHJpYnV0ZSxcclxuICogd291bGQgYmUgYWRkZWQgdG8gaXQuXHJcbiAqXHJcbiAqIEBwYXJhbSBzdHIgLSBUaGUgSFRNTCBTdHJpbmcuXHJcbiAqL1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyb21UZW1wbGF0ZShzdHIpIHtcclxuXHJcbiAgICAvLyBSZW1vdmVzIGFuIGF0dHJpYnV0ZSBmcm9tIGEgSFRNTEVsZW1lbnQgYW5kIHJldHVybnMgdGhlIHZhbHVlLlxyXG4gICAgY29uc3QgcmVtb3ZlQXR0cmlidXRlID0gKGVsLCBuYW1lKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBlbC5nZXRBdHRyaWJ1dGUobmFtZSk7XHJcbiAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUmVjdXJzaXZlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGVtcGxhdGVcclxuICAgIGNvbnN0IHJlc29sdmUgPSAoZWxlbWVudCwgYmFzZSA9IHt9KSA9PiB7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGtleSBhbmQgY29udGFpbmVyIGF0dHJpYnV0ZVxyXG4gICAgICAgIGNvbnN0IGNvbiA9IHJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCAnOm9iaicpO1xyXG4gICAgICAgIGNvbnN0IGtleSA9IHJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCAnOnJlZicpO1xyXG4gICAgICAgIGNvbnN0IHN1YnRyZWUgPSBjb24gPyAoYmFzZVtjb25dID0ge30pIDogYmFzZTtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgYW5kIHNhdmUgZWxlbWVudFxyXG4gICAgICAgIGtleSAmJiAoYmFzZVtrZXldID0gZWxlbWVudCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBBcnJheS5mcm9tKGVsZW1lbnQuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IHJlbW92ZUF0dHJpYnV0ZShjaGlsZCwgJzphcnInKTtcclxuICAgICAgICAgICAgY29uc3Qgc3ViID0gcmVzb2x2ZShjaGlsZCwgYXJyID8ge30gOiBzdWJ0cmVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChhcnIpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGFycmF5IGFuZCBhZGQgZWxlbWVudFxyXG4gICAgICAgICAgICAgICAgKHN1YnRyZWVbYXJyXSB8fCAoc3VidHJlZVthcnJdID0gW10pKVxyXG4gICAgICAgICAgICAgICAgICAgIC5wdXNoKE9iamVjdC5rZXlzKHN1YikubGVuZ3RoID8gc3ViIDogY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYmFzZTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHJlc29sdmUoY3JlYXRlRWxlbWVudEZyb21TdHJpbmcoc3RyKSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQb2x5ZmlsbCBmb3Igc2FmYXJpICYgZmlyZWZveCBmb3IgdGhlIGV2ZW50UGF0aCBldmVudCBwcm9wZXJ0eS5cclxuICogQHBhcmFtIGV2dCBUaGUgZXZlbnQgb2JqZWN0LlxyXG4gKiBAcmV0dXJuIFtTdHJpbmddIGV2ZW50IHBhdGguXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRQYXRoKGV2dCkge1xyXG4gICAgbGV0IHBhdGggPSBldnQucGF0aCB8fCAoZXZ0LmNvbXBvc2VkUGF0aCAmJiBldnQuY29tcG9zZWRQYXRoKCkpO1xyXG4gICAgaWYgKHBhdGgpIHtcclxuICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZWwgPSBldnQudGFyZ2V0LnBhcmVudEVsZW1lbnQ7XHJcbiAgICBwYXRoID0gW2V2dC50YXJnZXQsIGVsXTtcclxuICAgIHdoaWxlIChlbCA9IGVsLnBhcmVudEVsZW1lbnQpIHtcclxuICAgICAgICBwYXRoLnB1c2goZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGgucHVzaChkb2N1bWVudCwgd2luZG93KTtcclxuICAgIHJldHVybiBwYXRoO1xyXG59XHJcblxyXG4vKipcclxuICogUmVzb2x2ZXMgYSBIVE1MRWxlbWVudCBieSBxdWVyeS5cclxuICogQHBhcmFtIHZhbFxyXG4gKiBAcmV0dXJucyB7bnVsbHxEb2N1bWVudHxFbGVtZW50fVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFbGVtZW50KHZhbCkge1xyXG4gICAgaWYgKHZhbCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcclxuICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHJldHVybiB2YWwuc3BsaXQoLz4+L2cpLnJlZHVjZSgocHYsIGN2LCBjaSwgYSkgPT4ge1xyXG4gICAgICAgICAgICBwdiA9IHB2LnF1ZXJ5U2VsZWN0b3IoY3YpO1xyXG4gICAgICAgICAgICByZXR1cm4gY2kgPCBhLmxlbmd0aCAtIDEgPyBwdi5zaGFkb3dSb290IDogcHY7XHJcbiAgICAgICAgfSwgZG9jdW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyB0aGUgYWJpbGl0eSB0byBjaGFuZ2UgbnVtYmVycyBpbiBhbiBpbnB1dCBmaWVsZCB3aXRoIHRoZSBzY3JvbGwtd2hlZWwuXHJcbiAqIEBwYXJhbSBlbFxyXG4gKiBAcGFyYW0gbWFwcGVyXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0YWJsZUlucHV0TnVtYmVycyhlbCwgbWFwcGVyID0gdiA9PiB2KSB7XHJcblxyXG4gICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKGUpIHtcclxuICAgICAgICBjb25zdCBpbmMgPSAoWzAuMDAxLCAwLjAxLCAwLjFdKVtOdW1iZXIoZS5zaGlmdEtleSB8fCBlLmN0cmxLZXkgKiAyKV0gKiAoZS5kZWx0YVkgPCAwID8gMSA6IC0xKTtcclxuXHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICBsZXQgb2ZmID0gZWwuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgZWwudmFsdWUgPSBlbC52YWx1ZS5yZXBsYWNlKC9bXFxkLl0rL2csICh2LCBpKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBDaGVjayBpZiBudW1iZXIgaXMgaW4gY3Vyc29yIHJhbmdlIGFuZCBpbmNyZWFzZSBpdFxyXG4gICAgICAgICAgICBpZiAoaSA8PSBvZmYgJiYgaSArIHYubGVuZ3RoID49IG9mZikge1xyXG4gICAgICAgICAgICAgICAgb2ZmID0gaTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtYXBwZXIoTnVtYmVyKHYpLCBpbmMsIGluZGV4KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgcmV0dXJuIHY7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGVsLmZvY3VzKCk7XHJcbiAgICAgICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2Uob2ZmLCBvZmYpO1xyXG5cclxuICAgICAgICAvLyBQcmV2ZW50IGRlZmF1bHQgYW5kIHRyaWdnZXIgaW5wdXQgZXZlbnRcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEJpbmQgZXZlbnRzXHJcbiAgICBvbihlbCwgJ2ZvY3VzJywgKCkgPT4gb24od2luZG93LCAnd2hlZWwnLCBoYW5kbGVTY3JvbGwsIHtwYXNzaXZlOiBmYWxzZX0pKTtcclxuICAgIG9uKGVsLCAnYmx1cicsICgpID0+IG9mZih3aW5kb3csICd3aGVlbCcsIGhhbmRsZVNjcm9sbCkpO1xyXG59XHJcbiIsICIvLyBTaG9ydGhhbmRzXHJcbmNvbnN0IHttaW4sIG1heCwgZmxvb3IsIHJvdW5kfSA9IE1hdGg7XHJcblxyXG4vKipcclxuICogVHJpZXMgdG8gY29udmVydCBhIGNvbG9yIG5hbWUgdG8gcmdiL2EgaGV4IHJlcHJlc2VudGF0aW9uXHJcbiAqIEBwYXJhbSBuYW1lXHJcbiAqIEByZXR1cm5zIHtzdHJpbmcgfCBDYW52YXNHcmFkaWVudCB8IENhbnZhc1BhdHRlcm59XHJcbiAqL1xyXG5mdW5jdGlvbiBzdGFuZGFyZGl6ZUNvbG9yKG5hbWUpIHtcclxuXHJcbiAgICAvLyBTaW5jZSBpbnZhbGlkIGNvbG9yJ3Mgd2lsbCBiZSBwYXJzZWQgYXMgYmxhY2ssIGZpbHRlciB0aGVtIG91dFxyXG4gICAgaWYgKG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2JsYWNrJykge1xyXG4gICAgICAgIHJldHVybiAnIzAwMCc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3R4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGN0eC5maWxsU3R5bGUgPSBuYW1lO1xyXG4gICAgcmV0dXJuIGN0eC5maWxsU3R5bGUgPT09ICcjMDAwJyA/IG51bGwgOiBjdHguZmlsbFN0eWxlO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIU1Ygc3BlY3RydW0gdG8gUkdCLlxyXG4gKiBAcGFyYW0gaCBIdWVcclxuICogQHBhcmFtIHMgU2F0dXJhdGlvblxyXG4gKiBAcGFyYW0gdiBWYWx1ZVxyXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IEFycmF5IHdpdGggcmdiIHZhbHVlcy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoc3ZUb1JnYihoLCBzLCB2KSB7XHJcbiAgICBoID0gKGggLyAzNjApICogNjtcclxuICAgIHMgLz0gMTAwO1xyXG4gICAgdiAvPSAxMDA7XHJcblxyXG4gICAgY29uc3QgaSA9IGZsb29yKGgpO1xyXG5cclxuICAgIGNvbnN0IGYgPSBoIC0gaTtcclxuICAgIGNvbnN0IHAgPSB2ICogKDEgLSBzKTtcclxuICAgIGNvbnN0IHEgPSB2ICogKDEgLSBmICogcyk7XHJcbiAgICBjb25zdCB0ID0gdiAqICgxIC0gKDEgLSBmKSAqIHMpO1xyXG5cclxuICAgIGNvbnN0IG1vZCA9IGkgJSA2O1xyXG4gICAgY29uc3QgciA9IFt2LCBxLCBwLCBwLCB0LCB2XVttb2RdO1xyXG4gICAgY29uc3QgZyA9IFt0LCB2LCB2LCBxLCBwLCBwXVttb2RdO1xyXG4gICAgY29uc3QgYiA9IFtwLCBwLCB0LCB2LCB2LCBxXVttb2RdO1xyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgciAqIDI1NSxcclxuICAgICAgICBnICogMjU1LFxyXG4gICAgICAgIGIgKiAyNTVcclxuICAgIF07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhTViBzcGVjdHJ1bSB0byBIZXguXHJcbiAqIEBwYXJhbSBoIEh1ZVxyXG4gKiBAcGFyYW0gcyBTYXR1cmF0aW9uXHJcbiAqIEBwYXJhbSB2IFZhbHVlXHJcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX0gSGV4IHZhbHVlc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvSGV4KGgsIHMsIHYpIHtcclxuICAgIHJldHVybiBoc3ZUb1JnYihoLCBzLCB2KS5tYXAodiA9PlxyXG4gICAgICAgIHJvdW5kKHYpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpXHJcbiAgICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIU1Ygc3BlY3RydW0gdG8gQ01ZSy5cclxuICogQHBhcmFtIGggSHVlXHJcbiAqIEBwYXJhbSBzIFNhdHVyYXRpb25cclxuICogQHBhcmFtIHYgVmFsdWVcclxuICogQHJldHVybnMge251bWJlcltdfSBDTVlLIHZhbHVlc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvQ215ayhoLCBzLCB2KSB7XHJcbiAgICBjb25zdCByZ2IgPSBoc3ZUb1JnYihoLCBzLCB2KTtcclxuICAgIGNvbnN0IHIgPSByZ2JbMF0gLyAyNTU7XHJcbiAgICBjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xyXG4gICAgY29uc3QgYiA9IHJnYlsyXSAvIDI1NTtcclxuXHJcbiAgICBjb25zdCBrID0gbWluKDEgLSByLCAxIC0gZywgMSAtIGIpO1xyXG4gICAgY29uc3QgYyA9IGsgPT09IDEgPyAwIDogKDEgLSByIC0gaykgLyAoMSAtIGspO1xyXG4gICAgY29uc3QgbSA9IGsgPT09IDEgPyAwIDogKDEgLSBnIC0gaykgLyAoMSAtIGspO1xyXG4gICAgY29uc3QgeSA9IGsgPT09IDEgPyAwIDogKDEgLSBiIC0gaykgLyAoMSAtIGspO1xyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgYyAqIDEwMCxcclxuICAgICAgICBtICogMTAwLFxyXG4gICAgICAgIHkgKiAxMDAsXHJcbiAgICAgICAgayAqIDEwMFxyXG4gICAgXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgSFNWIHNwZWN0cnVtIHRvIEhTTC5cclxuICogQHBhcmFtIGggSHVlXHJcbiAqIEBwYXJhbSBzIFNhdHVyYXRpb25cclxuICogQHBhcmFtIHYgVmFsdWVcclxuICogQHJldHVybnMge251bWJlcltdfSBIU0wgdmFsdWVzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaHN2VG9Ic2woaCwgcywgdikge1xyXG4gICAgcyAvPSAxMDA7XHJcbiAgICB2IC89IDEwMDtcclxuXHJcbiAgICBjb25zdCBsID0gKDIgLSBzKSAqIHYgLyAyO1xyXG5cclxuICAgIGlmIChsICE9PSAwKSB7XHJcbiAgICAgICAgaWYgKGwgPT09IDEpIHtcclxuICAgICAgICAgICAgcyA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChsIDwgMC41KSB7XHJcbiAgICAgICAgICAgIHMgPSBzICogdiAvIChsICogMik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcyA9IHMgKiB2IC8gKDIgLSBsICogMik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgaCxcclxuICAgICAgICBzICogMTAwLFxyXG4gICAgICAgIGwgKiAxMDBcclxuICAgIF07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IFJHQiB0byBIU1YuXHJcbiAqIEBwYXJhbSByIFJlZFxyXG4gKiBAcGFyYW0gZyBHcmVlblxyXG4gKiBAcGFyYW0gYiBCbHVlXHJcbiAqIEByZXR1cm4ge251bWJlcltdfSBIU1YgdmFsdWVzLlxyXG4gKi9cclxuZnVuY3Rpb24gcmdiVG9Ic3YociwgZywgYikge1xyXG4gICAgciAvPSAyNTU7XHJcbiAgICBnIC89IDI1NTtcclxuICAgIGIgLz0gMjU1O1xyXG5cclxuICAgIGNvbnN0IG1pblZhbCA9IG1pbihyLCBnLCBiKTtcclxuICAgIGNvbnN0IG1heFZhbCA9IG1heChyLCBnLCBiKTtcclxuICAgIGNvbnN0IGRlbHRhID0gbWF4VmFsIC0gbWluVmFsO1xyXG5cclxuICAgIGxldCBoLCBzO1xyXG4gICAgY29uc3QgdiA9IG1heFZhbDtcclxuICAgIGlmIChkZWx0YSA9PT0gMCkge1xyXG4gICAgICAgIGggPSBzID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcyA9IGRlbHRhIC8gbWF4VmFsO1xyXG4gICAgICAgIGNvbnN0IGRyID0gKCgobWF4VmFsIC0gcikgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhO1xyXG4gICAgICAgIGNvbnN0IGRnID0gKCgobWF4VmFsIC0gZykgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhO1xyXG4gICAgICAgIGNvbnN0IGRiID0gKCgobWF4VmFsIC0gYikgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhO1xyXG5cclxuICAgICAgICBpZiAociA9PT0gbWF4VmFsKSB7XHJcbiAgICAgICAgICAgIGggPSBkYiAtIGRnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZyA9PT0gbWF4VmFsKSB7XHJcbiAgICAgICAgICAgIGggPSAoMSAvIDMpICsgZHIgLSBkYjtcclxuICAgICAgICB9IGVsc2UgaWYgKGIgPT09IG1heFZhbCkge1xyXG4gICAgICAgICAgICBoID0gKDIgLyAzKSArIGRnIC0gZHI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaCA8IDApIHtcclxuICAgICAgICAgICAgaCArPSAxO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaCA+IDEpIHtcclxuICAgICAgICAgICAgaCAtPSAxO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIGggKiAzNjAsXHJcbiAgICAgICAgcyAqIDEwMCxcclxuICAgICAgICB2ICogMTAwXHJcbiAgICBdO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBDTVlLIHRvIEhTVi5cclxuICogQHBhcmFtIGMgQ3lhblxyXG4gKiBAcGFyYW0gbSBNYWdlbnRhXHJcbiAqIEBwYXJhbSB5IFllbGxvd1xyXG4gKiBAcGFyYW0gayBLZXkgKEJsYWNrKVxyXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gSFNWIHZhbHVlcy5cclxuICovXHJcbmZ1bmN0aW9uIGNteWtUb0hzdihjLCBtLCB5LCBrKSB7XHJcbiAgICBjIC89IDEwMDtcclxuICAgIG0gLz0gMTAwO1xyXG4gICAgeSAvPSAxMDA7XHJcbiAgICBrIC89IDEwMDtcclxuXHJcbiAgICBjb25zdCByID0gKDEgLSBtaW4oMSwgYyAqICgxIC0gaykgKyBrKSkgKiAyNTU7XHJcbiAgICBjb25zdCBnID0gKDEgLSBtaW4oMSwgbSAqICgxIC0gaykgKyBrKSkgKiAyNTU7XHJcbiAgICBjb25zdCBiID0gKDEgLSBtaW4oMSwgeSAqICgxIC0gaykgKyBrKSkgKiAyNTU7XHJcblxyXG4gICAgcmV0dXJuIFsuLi5yZ2JUb0hzdihyLCBnLCBiKV07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhTTCB0byBIU1YuXHJcbiAqIEBwYXJhbSBoIEh1ZVxyXG4gKiBAcGFyYW0gcyBTYXR1cmF0aW9uXHJcbiAqIEBwYXJhbSBsIExpZ2h0bmVzc1xyXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gSFNWIHZhbHVlcy5cclxuICovXHJcbmZ1bmN0aW9uIGhzbFRvSHN2KGgsIHMsIGwpIHtcclxuICAgIHMgLz0gMTAwO1xyXG4gICAgbCAvPSAxMDA7XHJcbiAgICBzICo9IGwgPCAwLjUgPyBsIDogMSAtIGw7XHJcblxyXG4gICAgY29uc3QgbnMgPSAoMiAqIHMgLyAobCArIHMpKSAqIDEwMDtcclxuICAgIGNvbnN0IHYgPSAobCArIHMpICogMTAwO1xyXG4gICAgcmV0dXJuIFtoLCBpc05hTihucykgPyAwIDogbnMsIHZdO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIRVggdG8gSFNWLlxyXG4gKiBAcGFyYW0gaGV4IEhleGFkZWNpbWFsIHN0cmluZyBvZiByZ2IgY29sb3JzLCBjYW4gaGF2ZSBsZW5ndGggMyBvciA2LlxyXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gSFNWIHZhbHVlcy5cclxuICovXHJcbmZ1bmN0aW9uIGhleFRvSHN2KGhleCkge1xyXG4gICAgcmV0dXJuIHJnYlRvSHN2KC4uLmhleC5tYXRjaCgvLnsyfS9nKS5tYXAodiA9PiBwYXJzZUludCh2LCAxNikpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRyeSdzIHRvIHBhcnNlIGEgc3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBjb2xvciB0byBhIEhTViBhcnJheS5cclxuICogQ3VycmVudCBzdXBwb3J0ZWQgdHlwZXMgYXJlIGNteWssIHJnYmEsIGhzbGEgYW5kIGhleGFkZWNpbWFsLlxyXG4gKiBAcGFyYW0gc3RyXHJcbiAqIEByZXR1cm4geyp9XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUb0hTVkEoc3RyKSB7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgc3RyaW5nIGlzIGEgY29sb3ItbmFtZVxyXG4gICAgc3RyID0gc3RyLm1hdGNoKC9eW2EtekEtWl0rJC8pID8gc3RhbmRhcmRpemVDb2xvcihzdHIpIDogc3RyO1xyXG5cclxuICAgIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gbWF0Y2ggZGlmZmVyZW50IHR5cGVzIG9mIGNvbG9yIHJlcHJlc2VudGlvblxyXG4gICAgY29uc3QgcmVnZXggPSB7XHJcbiAgICAgICAgY215azogL15jbXlrW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspL2ksXHJcbiAgICAgICAgcmdiYTogL14oKHJnYmEpfHJnYilbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSo/KFtcXGQuXSt8JCkvaSxcclxuICAgICAgICBoc2xhOiAvXigoaHNsYSl8aHNsKVtcXERdKyhbXFxkLl0rKVtcXERdKyhbXFxkLl0rKVtcXERdKyhbXFxkLl0rKVtcXERdKj8oW1xcZC5dK3wkKS9pLFxyXG4gICAgICAgIGhzdmE6IC9eKChoc3ZhKXxoc3YpW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0qPyhbXFxkLl0rfCQpL2ksXHJcbiAgICAgICAgaGV4YTogL14jPygoW1xcZEEtRmEtZl17Myw0fSl8KFtcXGRBLUZhLWZdezZ9KXwoW1xcZEEtRmEtZl17OH0pKSQvaVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRha2VzIGFuIEFycmF5IG9mIGFueSB0eXBlLCBjb252ZXJ0IHN0cmluZ3Mgd2hpY2ggcmVwcmVzZW50c1xyXG4gICAgICogYSBudW1iZXIgdG8gYSBudW1iZXIgYW4gYW55dGhpbmcgZWxzZSB0byB1bmRlZmluZWQuXHJcbiAgICAgKiBAcGFyYW0gYXJyYXlcclxuICAgICAqIEByZXR1cm4geyp9XHJcbiAgICAgKi9cclxuICAgIGNvbnN0IG51bWFyaXplID0gYXJyYXkgPT4gYXJyYXkubWFwKHYgPT4gL14ofFxcZCspXFwuXFxkK3xcXGQrJC8udGVzdCh2KSA/IE51bWJlcih2KSA6IHVuZGVmaW5lZCk7XHJcblxyXG4gICAgbGV0IG1hdGNoO1xyXG4gICAgaW52YWxpZDogZm9yIChjb25zdCB0eXBlIGluIHJlZ2V4KSB7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGlmIGN1cnJlbnQgc2NoZW1lIHBhc3NlZFxyXG4gICAgICAgIGlmICghKG1hdGNoID0gcmVnZXhbdHlwZV0uZXhlYyhzdHIpKSkge1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIE1hdGNoWzJdIGRvZXMgb25seSBjb250YWluIGEgdHJ1bHkgdmFsdWUgaWYgcmdiYSwgaHNsYSwgb3IgaHNsYSBnb3QgbWF0Y2hlZFxyXG4gICAgICAgIGNvbnN0IGFscGhhVmFsaWQgPSBhID0+ICghIW1hdGNoWzJdID09PSAodHlwZW9mIGEgPT09ICdudW1iZXInKSk7XHJcblxyXG4gICAgICAgIC8vIFRyeSB0byBjb252ZXJ0XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NteWsnOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBbLCBjLCBtLCB5LCBrXSA9IG51bWFyaXplKG1hdGNoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYyA+IDEwMCB8fCBtID4gMTAwIHx8IHkgPiAxMDAgfHwgayA+IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IGNteWtUb0hzdihjLCBtLCB5LCBrKSwgdHlwZX07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAncmdiYSc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFssICwgLCByLCBnLCBiLCBhXSA9IG51bWFyaXplKG1hdGNoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAociA+IDI1NSB8fCBnID4gMjU1IHx8IGIgPiAyNTUgfHwgYSA8IDAgfHwgYSA+IDEgfHwgIWFscGhhVmFsaWQoYSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhayBpbnZhbGlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWVzOiBbLi4ucmdiVG9Ic3YociwgZywgYiksIGFdLCBhLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdoZXhhJzoge1xyXG4gICAgICAgICAgICAgICAgbGV0IFssIGhleF0gPSBtYXRjaDtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaGV4Lmxlbmd0aCA9PT0gNCB8fCBoZXgubGVuZ3RoID09PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGV4ID0gaGV4LnNwbGl0KCcnKS5tYXAodiA9PiB2ICsgdikuam9pbignJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmF3ID0gaGV4LnN1YnN0cmluZygwLCA2KTtcclxuICAgICAgICAgICAgICAgIGxldCBhID0gaGV4LnN1YnN0cmluZyg2KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IDAgLSAyNTUgdG8gMCAtIDEgZm9yIG9wYWNpdHlcclxuICAgICAgICAgICAgICAgIGEgPSBhID8gKHBhcnNlSW50KGEsIDE2KSAvIDI1NSkgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IFsuLi5oZXhUb0hzdihyYXcpLCBhXSwgYSwgdHlwZX07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnaHNsYSc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFssICwgLCBoLCBzLCBsLCBhXSA9IG51bWFyaXplKG1hdGNoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaCA+IDM2MCB8fCBzID4gMTAwIHx8IGwgPiAxMDAgfHwgYSA8IDAgfHwgYSA+IDEgfHwgIWFscGhhVmFsaWQoYSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhayBpbnZhbGlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWVzOiBbLi4uaHNsVG9Ic3YoaCwgcywgbCksIGFdLCBhLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdoc3ZhJzoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgWywgLCAsIGgsIHMsIHYsIGFdID0gbnVtYXJpemUobWF0Y2gpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoID4gMzYwIHx8IHMgPiAxMDAgfHwgdiA+IDEwMCB8fCBhIDwgMCB8fCBhID4gMSB8fCAhYWxwaGFWYWxpZChhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IFtoLCBzLCB2LCBhXSwgYSwgdHlwZX07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHt2YWx1ZXM6IG51bGwsIHR5cGU6IG51bGx9O1xyXG59XHJcbiIsICJpbXBvcnQge2hzdlRvQ215aywgaHN2VG9IZXgsIGhzdlRvSHNsLCBoc3ZUb1JnYn0gZnJvbSAnLi9jb2xvcic7XHJcblxyXG4vKipcclxuICogU2ltcGxlIGNsYXNzIHdoaWNoIGhvbGRzIHRoZSBwcm9wZXJ0aWVzXHJcbiAqIG9mIHRoZSBjb2xvciByZXByZXNlbnRpb24gbW9kZWwgaHNsYSAoaHVlIHNhdHVyYXRpb24gbGlnaHRuZXNzIGFscGhhKVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEhTVmFDb2xvcihoID0gMCwgcyA9IDAsIHYgPSAwLCBhID0gMSkge1xyXG4gICAgY29uc3QgbWFwcGVyID0gKG9yaWdpbmFsLCBuZXh0KSA9PiAocHJlY2lzaW9uID0gLTEpID0+IHtcclxuICAgICAgICByZXR1cm4gbmV4dCh+cHJlY2lzaW9uID8gb3JpZ2luYWwubWFwKHYgPT4gTnVtYmVyKHYudG9GaXhlZChwcmVjaXNpb24pKSkgOiBvcmlnaW5hbCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHRoYXQgPSB7XHJcbiAgICAgICAgaCwgcywgdiwgYSxcclxuXHJcbiAgICAgICAgdG9IU1ZBKCkge1xyXG4gICAgICAgICAgICBjb25zdCBoc3ZhID0gW3RoYXQuaCwgdGhhdC5zLCB0aGF0LnYsIHRoYXQuYV07XHJcbiAgICAgICAgICAgIGhzdmEudG9TdHJpbmcgPSBtYXBwZXIoaHN2YSwgYXJyID0+IGBoc3ZhKCR7YXJyWzBdfSwgJHthcnJbMV19JSwgJHthcnJbMl19JSwgJHt0aGF0LmF9KWApO1xyXG4gICAgICAgICAgICByZXR1cm4gaHN2YTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b0hTTEEoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhzbGEgPSBbLi4uaHN2VG9Ic2wodGhhdC5oLCB0aGF0LnMsIHRoYXQudiksIHRoYXQuYV07XHJcbiAgICAgICAgICAgIGhzbGEudG9TdHJpbmcgPSBtYXBwZXIoaHNsYSwgYXJyID0+IGBoc2xhKCR7YXJyWzBdfSwgJHthcnJbMV19JSwgJHthcnJbMl19JSwgJHt0aGF0LmF9KWApO1xyXG4gICAgICAgICAgICByZXR1cm4gaHNsYTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b1JHQkEoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJnYmEgPSBbLi4uaHN2VG9SZ2IodGhhdC5oLCB0aGF0LnMsIHRoYXQudiksIHRoYXQuYV07XHJcbiAgICAgICAgICAgIHJnYmEudG9TdHJpbmcgPSBtYXBwZXIocmdiYSwgYXJyID0+IGByZ2JhKCR7YXJyWzBdfSwgJHthcnJbMV19LCAke2FyclsyXX0sICR7dGhhdC5hfSlgKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJnYmE7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdG9DTVlLKCkge1xyXG4gICAgICAgICAgICBjb25zdCBjbXlrID0gaHN2VG9DbXlrKHRoYXQuaCwgdGhhdC5zLCB0aGF0LnYpO1xyXG4gICAgICAgICAgICBjbXlrLnRvU3RyaW5nID0gbWFwcGVyKGNteWssIGFyciA9PiBgY215aygke2FyclswXX0lLCAke2FyclsxXX0lLCAke2FyclsyXX0lLCAke2FyclszXX0lKWApO1xyXG4gICAgICAgICAgICByZXR1cm4gY215aztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b0hFWEEoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhleCA9IGhzdlRvSGV4KHRoYXQuaCwgdGhhdC5zLCB0aGF0LnYpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYWxwaGEgY2hhbm5lbCBtYWtlIHNlbnNlLCBjb252ZXJ0IGl0IHRvIDI1NSBudW1iZXIgc3BhY2UsIGNvbnZlcnRcclxuICAgICAgICAgICAgLy8gVG8gaGV4IGFuZCBwYWQgaXQgd2l0aCB6ZXJvcyBpZiBuZWVkZXQuXHJcbiAgICAgICAgICAgIGNvbnN0IGFscGhhID0gdGhhdC5hID49IDEgPyAnJyA6IE51bWJlcigodGhhdC5hICogMjU1KS50b0ZpeGVkKDApKVxyXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKDE2KVxyXG4gICAgICAgICAgICAgICAgLnRvVXBwZXJDYXNlKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuXHJcbiAgICAgICAgICAgIGFscGhhICYmIGhleC5wdXNoKGFscGhhKTtcclxuICAgICAgICAgICAgaGV4LnRvU3RyaW5nID0gKCkgPT4gYCMke2hleC5qb2luKCcnKS50b1VwcGVyQ2FzZSgpfWA7XHJcbiAgICAgICAgICAgIHJldHVybiBoZXg7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgY2xvbmU6ICgpID0+IEhTVmFDb2xvcih0aGF0LmgsIHRoYXQucywgdGhhdC52LCB0aGF0LmEpXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGF0O1xyXG59XHJcbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbmNvbnN0IGNsYW1wID0gdiA9PiBNYXRoLm1heChNYXRoLm1pbih2LCAxKSwgMCk7XHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1vdmVhYmxlKG9wdCkge1xyXG5cclxuICAgIGNvbnN0IHRoYXQgPSB7XHJcblxyXG4gICAgICAgIC8vIEFzc2lnbiBkZWZhdWx0IHZhbHVlc1xyXG4gICAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICBsb2NrOiBudWxsLFxyXG4gICAgICAgICAgICBvbmNoYW5nZTogKCkgPT4gMCxcclxuICAgICAgICAgICAgb25zdG9wOiAoKSA9PiAwXHJcbiAgICAgICAgfSwgb3B0KSxcclxuXHJcbiAgICAgICAgX2tleWJvYXJkKGUpIHtcclxuICAgICAgICAgICAgY29uc3Qge29wdGlvbnN9ID0gdGhhdDtcclxuICAgICAgICAgICAgY29uc3Qge3R5cGUsIGtleX0gPSBlO1xyXG5cclxuICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBNb3ZhYmxlIGlzIGZvY3VzZWQgYW5kIHRoZW4gbW92ZSBpdCBiYXNlZCBvbiBhcnJvdyBrZXkgaW5wdXRzXHJcbiAgICAgICAgICAgIC8vIEZvciBpbXByb3ZlZCBhY2Nlc3NpYmlsaXR5XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBvcHRpb25zLndyYXBwZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHtsb2NrfSA9IHRoYXQub3B0aW9ucztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVwID0ga2V5ID09PSAnQXJyb3dVcCc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGtleSA9PT0gJ0Fycm93UmlnaHQnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZG93biA9IGtleSA9PT0gJ0Fycm93RG93bic7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0ga2V5ID09PSAnQXJyb3dMZWZ0JztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2tleWRvd24nICYmICh1cCB8fCByaWdodCB8fCBkb3duIHx8IGxlZnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHhtID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgeW0gPSAwO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAobG9jayA9PT0gJ3YnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtID0gKHVwIHx8IHJpZ2h0KSA/IDEgOiAtMTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2sgPT09ICdoJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4bSA9ICh1cCB8fCByaWdodCkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeW0gPSB1cCA/IC0xIDogKGRvd24gPyAxIDogMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtID0gbGVmdCA/IC0xIDogKHJpZ2h0ID8gMSA6IDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC51cGRhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYW1wKHRoYXQuY2FjaGUueCArICgwLjAxICogeG0pKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXAodGhhdC5jYWNoZS55ICsgKDAuMDEgKiB5bSkpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleS5zdGFydHNXaXRoKCdBcnJvdycpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5vcHRpb25zLm9uc3RvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIF90YXBzdGFydChldnQpIHtcclxuICAgICAgICAgICAgXy5vbihkb2N1bWVudCwgWydtb3VzZXVwJywgJ3RvdWNoZW5kJywgJ3RvdWNoY2FuY2VsJ10sIHRoYXQuX3RhcHN0b3ApO1xyXG4gICAgICAgICAgICBfLm9uKGRvY3VtZW50LCBbJ21vdXNlbW92ZScsICd0b3VjaG1vdmUnXSwgdGhhdC5fdGFwbW92ZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZXZ0LmNhbmNlbGFibGUpIHtcclxuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBUcmlnZ2VyXHJcbiAgICAgICAgICAgIHRoYXQuX3RhcG1vdmUoZXZ0KTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBfdGFwbW92ZShldnQpIHtcclxuICAgICAgICAgICAgY29uc3Qge29wdGlvbnMsIGNhY2hlfSA9IHRoYXQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHtsb2NrLCBlbGVtZW50LCB3cmFwcGVyfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgICAgIGNvbnN0IGIgPSB3cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICAgICAgbGV0IHggPSAwLCB5ID0gMDtcclxuICAgICAgICAgICAgaWYgKGV2dCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdG91Y2ggPSBldnQgJiYgZXZ0LnRvdWNoZXMgJiYgZXZ0LnRvdWNoZXNbMF07XHJcbiAgICAgICAgICAgICAgICB4ID0gZXZ0ID8gKHRvdWNoIHx8IGV2dCkuY2xpZW50WCA6IDA7XHJcbiAgICAgICAgICAgICAgICB5ID0gZXZ0ID8gKHRvdWNoIHx8IGV2dCkuY2xpZW50WSA6IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gUmVzZXQgdG8gYm91bmRzXHJcbiAgICAgICAgICAgICAgICBpZiAoeCA8IGIubGVmdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHggPSBiLmxlZnQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHggPiBiLmxlZnQgKyBiLndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IGIubGVmdCArIGIud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoeSA8IGIudG9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeSA9IGIudG9wO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh5ID4gYi50b3AgKyBiLmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHkgPSBiLnRvcCArIGIuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZVxyXG4gICAgICAgICAgICAgICAgeCAtPSBiLmxlZnQ7XHJcbiAgICAgICAgICAgICAgICB5IC09IGIudG9wO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhY2hlKSB7XHJcbiAgICAgICAgICAgICAgICB4ID0gY2FjaGUueCAqIGIud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB5ID0gY2FjaGUueSAqIGIuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAobG9jayAhPT0gJ2gnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBgY2FsYygke3ggLyBiLndpZHRoICogMTAwfSUgLSAke2VsZW1lbnQub2Zmc2V0V2lkdGggLyAyfXB4KWA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChsb2NrICE9PSAndicpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gYGNhbGMoJHt5IC8gYi5oZWlnaHQgKiAxMDB9JSAtICR7ZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyfXB4KWA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoYXQuY2FjaGUgPSB7eDogeCAvIGIud2lkdGgsIHk6IHkgLyBiLmhlaWdodH07XHJcbiAgICAgICAgICAgIGNvbnN0IGN4ID0gY2xhbXAoeCAvIGIud2lkdGgpO1xyXG4gICAgICAgICAgICBjb25zdCBjeSA9IGNsYW1wKHkgLyBiLmhlaWdodCk7XHJcblxyXG4gICAgICAgICAgICBzd2l0Y2ggKGxvY2spIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3YnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm9uY2hhbmdlKGN4KTtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2gnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm9uY2hhbmdlKGN5KTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMub25jaGFuZ2UoY3gsIGN5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIF90YXBzdG9wKCkge1xyXG4gICAgICAgICAgICB0aGF0Lm9wdGlvbnMub25zdG9wKCk7XHJcbiAgICAgICAgICAgIF8ub2ZmKGRvY3VtZW50LCBbJ21vdXNldXAnLCAndG91Y2hlbmQnLCAndG91Y2hjYW5jZWwnXSwgdGhhdC5fdGFwc3RvcCk7XHJcbiAgICAgICAgICAgIF8ub2ZmKGRvY3VtZW50LCBbJ21vdXNlbW92ZScsICd0b3VjaG1vdmUnXSwgdGhhdC5fdGFwbW92ZSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdHJpZ2dlcigpIHtcclxuICAgICAgICAgICAgdGhhdC5fdGFwbW92ZSgpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZSh4ID0gMCwgeSA9IDApIHtcclxuICAgICAgICAgICAgY29uc3Qge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH0gPSB0aGF0Lm9wdGlvbnMud3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMubG9jayA9PT0gJ2gnKSB7XHJcbiAgICAgICAgICAgICAgICB5ID0geDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhhdC5fdGFwbW92ZSh7XHJcbiAgICAgICAgICAgICAgICBjbGllbnRYOiBsZWZ0ICsgd2lkdGggKiB4LFxyXG4gICAgICAgICAgICAgICAgY2xpZW50WTogdG9wICsgaGVpZ2h0ICogeVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkZXN0cm95KCkge1xyXG4gICAgICAgICAgICBjb25zdCB7b3B0aW9ucywgX3RhcHN0YXJ0LCBfa2V5Ym9hcmR9ID0gdGhhdDtcclxuICAgICAgICAgICAgXy5vZmYoZG9jdW1lbnQsIFsna2V5ZG93bicsICdrZXl1cCddLCBfa2V5Ym9hcmQpO1xyXG4gICAgICAgICAgICBfLm9mZihbb3B0aW9ucy53cmFwcGVyLCBvcHRpb25zLmVsZW1lbnRdLCAnbW91c2Vkb3duJywgX3RhcHN0YXJ0KTtcclxuICAgICAgICAgICAgXy5vZmYoW29wdGlvbnMud3JhcHBlciwgb3B0aW9ucy5lbGVtZW50XSwgJ3RvdWNoc3RhcnQnLCBfdGFwc3RhcnQsIHtcclxuICAgICAgICAgICAgICAgIHBhc3NpdmU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlsaXplXHJcbiAgICBjb25zdCB7b3B0aW9ucywgX3RhcHN0YXJ0LCBfa2V5Ym9hcmR9ID0gdGhhdDtcclxuICAgIF8ub24oW29wdGlvbnMud3JhcHBlciwgb3B0aW9ucy5lbGVtZW50XSwgJ21vdXNlZG93bicsIF90YXBzdGFydCk7XHJcbiAgICBfLm9uKFtvcHRpb25zLndyYXBwZXIsIG9wdGlvbnMuZWxlbWVudF0sICd0b3VjaHN0YXJ0JywgX3RhcHN0YXJ0LCB7XHJcbiAgICAgICAgcGFzc2l2ZTogZmFsc2VcclxuICAgIH0pO1xyXG5cclxuICAgIF8ub24oZG9jdW1lbnQsIFsna2V5ZG93bicsICdrZXl1cCddLCBfa2V5Ym9hcmQpO1xyXG5cclxuICAgIHJldHVybiB0aGF0O1xyXG59XHJcbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4uL3V0aWxzL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2VsZWN0YWJsZShvcHQgPSB7fSkge1xuICAgIG9wdCA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBvbmNoYW5nZTogKCkgPT4gMCxcbiAgICAgICAgY2xhc3NOYW1lOiAnJyxcbiAgICAgICAgZWxlbWVudHM6IFtdXG4gICAgfSwgb3B0KTtcblxuICAgIGNvbnN0IG9uVGFwID0gXy5vbihvcHQuZWxlbWVudHMsICdjbGljaycsIGV2dCA9PiB7XG4gICAgICAgIG9wdC5lbGVtZW50cy5mb3JFYWNoKGUgPT5cbiAgICAgICAgICAgIGUuY2xhc3NMaXN0W2V2dC50YXJnZXQgPT09IGUgPyAnYWRkJyA6ICdyZW1vdmUnXShvcHQuY2xhc3NOYW1lKVxuICAgICAgICApO1xuXG4gICAgICAgIG9wdC5vbmNoYW5nZShldnQpO1xuXG4gICAgICAgIC8vIEZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL1NpbW9ud2VwL3BpY2tyL2lzc3Vlcy8yNDNcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGVzdHJveTogKCkgPT4gXy5vZmYoLi4ub25UYXApXG4gICAgfTtcbn1cbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4vdXRpbHMvdXRpbHMnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgaW5zdGFuY2UgPT4ge1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgICBjb21wb25lbnRzLFxyXG4gICAgICAgIHVzZUFzQnV0dG9uLFxyXG4gICAgICAgIGlubGluZSxcclxuICAgICAgICBhcHBDbGFzcyxcclxuICAgICAgICB0aGVtZSxcclxuICAgICAgICBsb2NrT3BhY2l0eVxyXG4gICAgfSA9IGluc3RhbmNlLm9wdGlvbnM7XHJcblxyXG4gICAgLy8gVXRpbHNcclxuICAgIGNvbnN0IGhpZGRlbiA9IGNvbiA9PiBjb24gPyAnJyA6ICdzdHlsZT1cImRpc3BsYXk6bm9uZVwiIGhpZGRlbic7XHJcbiAgICBjb25zdCB0ID0gc3RyID0+IGluc3RhbmNlLl90KHN0cik7XHJcblxyXG4gICAgY29uc3Qgcm9vdCA9IF8uY3JlYXRlRnJvbVRlbXBsYXRlKGBcclxuICAgICAgPGRpdiA6cmVmPVwicm9vdFwiIGNsYXNzPVwicGlja3JcIj5cclxuXHJcbiAgICAgICAgJHt1c2VBc0J1dHRvbiA/ICcnIDogJzxidXR0b24gdHlwZT1cImJ1dHRvblwiIDpyZWY9XCJidXR0b25cIiBjbGFzcz1cInBjci1idXR0b25cIj48L2J1dHRvbj4nfVxyXG5cclxuICAgICAgICA8ZGl2IDpyZWY9XCJhcHBcIiBjbGFzcz1cInBjci1hcHAgJHthcHBDbGFzcyB8fCAnJ31cIiBkYXRhLXRoZW1lPVwiJHt0aGVtZX1cIiAke2lubGluZSA/ICdzdHlsZT1cInBvc2l0aW9uOiB1bnNldFwiJyA6ICcnfSBhcmlhLWxhYmVsPVwiJHt0KCd1aTpkaWFsb2cnLCAnY29sb3IgcGlja2VyIGRpYWxvZycpfVwiIHJvbGU9XCJ3aW5kb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwY3Itc2VsZWN0aW9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5wYWxldHRlKX0+XHJcbiAgICAgICAgICAgIDxkaXYgOm9iaj1cInByZXZpZXdcIiBjbGFzcz1cInBjci1jb2xvci1wcmV2aWV3XCIgJHtoaWRkZW4oY29tcG9uZW50cy5wcmV2aWV3KX0+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgOnJlZj1cImxhc3RDb2xvclwiIGNsYXNzPVwicGNyLWxhc3QtY29sb3JcIiBhcmlhLWxhYmVsPVwiJHt0KCdidG46bGFzdC1jb2xvcicpfVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cImN1cnJlbnRDb2xvclwiIGNsYXNzPVwicGNyLWN1cnJlbnQtY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IDpvYmo9XCJwYWxldHRlXCIgY2xhc3M9XCJwY3ItY29sb3ItcGFsZXR0ZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cInBpY2tlclwiIGNsYXNzPVwicGNyLXBpY2tlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cInBhbGV0dGVcIiBjbGFzcz1cInBjci1wYWxldHRlXCIgdGFiaW5kZXg9XCIwXCIgYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpwYWxldHRlJyl9XCIgcm9sZT1cImxpc3Rib3hcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IDpvYmo9XCJodWVcIiBjbGFzcz1cInBjci1jb2xvci1jaG9vc2VyXCIgJHtoaWRkZW4oY29tcG9uZW50cy5odWUpfT5cclxuICAgICAgICAgICAgICA8ZGl2IDpyZWY9XCJwaWNrZXJcIiBjbGFzcz1cInBjci1waWNrZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IDpyZWY9XCJzbGlkZXJcIiBjbGFzcz1cInBjci1odWUgcGNyLXNsaWRlclwiIHRhYmluZGV4PVwiMFwiIGFyaWEtbGFiZWw9XCIke3QoJ2FyaWE6aHVlJyl9XCIgcm9sZT1cInNsaWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgOm9iaj1cIm9wYWNpdHlcIiBjbGFzcz1cInBjci1jb2xvci1vcGFjaXR5XCIgJHtoaWRkZW4oY29tcG9uZW50cy5vcGFjaXR5KX0+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwicGlja2VyXCIgY2xhc3M9XCJwY3ItcGlja2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwic2xpZGVyXCIgY2xhc3M9XCJwY3Itb3BhY2l0eSBwY3Itc2xpZGVyXCIgdGFiaW5kZXg9XCIwXCIgYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpvcGFjaXR5JywgJ29wYWNpdHkgc2VsZWN0aW9uIHNsaWRlcicpfVwiIHJvbGU9XCJzbGlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGNyLXN3YXRjaGVzICR7Y29tcG9uZW50cy5wYWxldHRlID8gJycgOiAncGNyLWxhc3QnfVwiIDpyZWY9XCJzd2F0Y2hlc1wiPjwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgOm9iaj1cImludGVyYWN0aW9uXCIgY2xhc3M9XCJwY3ItaW50ZXJhY3Rpb25cIiAke2hpZGRlbihPYmplY3Qua2V5cyhjb21wb25lbnRzLmludGVyYWN0aW9uKS5sZW5ndGgpfT5cclxuICAgICAgICAgICAgPGlucHV0IDpyZWY9XCJyZXN1bHRcIiBjbGFzcz1cInBjci1yZXN1bHRcIiB0eXBlPVwidGV4dFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uaW5wdXQpfSBhcmlhLWxhYmVsPVwiJHt0KCdhcmlhOmlucHV0JywgJ2NvbG9yIGlucHV0IGZpZWxkJyl9XCI+XHJcblxyXG4gICAgICAgICAgICA8aW5wdXQgOmFycj1cIm9wdGlvbnNcIiBjbGFzcz1cInBjci10eXBlXCIgZGF0YS10eXBlPVwiSEVYQVwiIHZhbHVlPVwiJHtsb2NrT3BhY2l0eSA/ICdIRVgnIDogJ0hFWEEnfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLmhleCl9PlxyXG4gICAgICAgICAgICA8aW5wdXQgOmFycj1cIm9wdGlvbnNcIiBjbGFzcz1cInBjci10eXBlXCIgZGF0YS10eXBlPVwiUkdCQVwiIHZhbHVlPVwiJHtsb2NrT3BhY2l0eSA/ICdSR0InIDogJ1JHQkEnfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLnJnYmEpfT5cclxuICAgICAgICAgICAgPGlucHV0IDphcnI9XCJvcHRpb25zXCIgY2xhc3M9XCJwY3ItdHlwZVwiIGRhdGEtdHlwZT1cIkhTTEFcIiB2YWx1ZT1cIiR7bG9ja09wYWNpdHkgPyAnSFNMJyA6ICdIU0xBJ31cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5oc2xhKX0+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6YXJyPVwib3B0aW9uc1wiIGNsYXNzPVwicGNyLXR5cGVcIiBkYXRhLXR5cGU9XCJIU1ZBXCIgdmFsdWU9XCIke2xvY2tPcGFjaXR5ID8gJ0hTVicgOiAnSFNWQSd9XCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uaHN2YSl9PlxyXG4gICAgICAgICAgICA8aW5wdXQgOmFycj1cIm9wdGlvbnNcIiBjbGFzcz1cInBjci10eXBlXCIgZGF0YS10eXBlPVwiQ01ZS1wiIHZhbHVlPVwiQ01ZS1wiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLmNteWspfT5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCA6cmVmPVwic2F2ZVwiIGNsYXNzPVwicGNyLXNhdmVcIiB2YWx1ZT1cIiR7dCgnYnRuOnNhdmUnKX1cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5zYXZlKX0gYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpidG46c2F2ZScpfVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgOnJlZj1cImNhbmNlbFwiIGNsYXNzPVwicGNyLWNhbmNlbFwiIHZhbHVlPVwiJHt0KCdidG46Y2FuY2VsJyl9XCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uY2FuY2VsKX0gYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpidG46Y2FuY2VsJyl9XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6cmVmPVwiY2xlYXJcIiBjbGFzcz1cInBjci1jbGVhclwiIHZhbHVlPVwiJHt0KCdidG46Y2xlYXInKX1cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5jbGVhcil9IGFyaWEtbGFiZWw9XCIke3QoJ2FyaWE6YnRuOmNsZWFyJyl9XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICBgKTtcclxuXHJcbiAgICBjb25zdCBpbnQgPSByb290LmludGVyYWN0aW9uO1xyXG5cclxuICAgIC8vIFNlbGVjdCBvcHRpb24gd2hpY2ggaXMgbm90IGhpZGRlblxyXG4gICAgaW50Lm9wdGlvbnMuZmluZChvID0+ICFvLmhpZGRlbiAmJiAhby5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKSk7XHJcblxyXG4gICAgLy8gQXBwZW5kIG1ldGhvZCB0byBmaW5kIGN1cnJlbnRseSBhY3RpdmUgb3B0aW9uXHJcbiAgICBpbnQudHlwZSA9ICgpID0+IGludC5vcHRpb25zLmZpbmQoZSA9PiBlLmNsYXNzTGlzdC5jb250YWlucygnYWN0aXZlJykpO1xyXG4gICAgcmV0dXJuIHJvb3Q7XHJcbn07XHJcbiIsICJ0eXBlIERpcmVjdGlvbiA9ICd0b3AnIHwgJ2xlZnQnIHwgJ2JvdHRvbScgfCAncmlnaHQnO1xuXG5leHBvcnQgdHlwZSBWYXJpYW50RmxpcE9yZGVyID0ge1xuICAgIHN0YXJ0OiBzdHJpbmc7XG4gICAgbWlkZGxlOiBzdHJpbmc7XG4gICAgZW5kOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvbkZsaXBPcmRlciA9IHtcbiAgICB0b3A6IHN0cmluZztcbiAgICByaWdodDogc3RyaW5nO1xuICAgIGJvdHRvbTogc3RyaW5nO1xuICAgIGxlZnQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5hbm9Qb3BQb3NpdGlvbiA9XG4gICAgJ3RvcC1zdGFydCcgfCAndG9wLW1pZGRsZScgfCAndG9wLWVuZCcgfFxuICAgICdsZWZ0LXN0YXJ0JyB8ICdsZWZ0LW1pZGRsZScgfCAnbGVmdC1lbmQnIHxcbiAgICAncmlnaHQtc3RhcnQnIHwgJ3JpZ2h0LW1pZGRsZScgfCAncmlnaHQtZW5kJyB8XG4gICAgJ2JvdHRvbS1zdGFydCcgfCAnYm90dG9tLW1pZGRsZScgfCAnYm90dG9tLWVuZCcgfCBEaXJlY3Rpb247XG5cbmV4cG9ydCB0eXBlIE5hbm9Qb3BPcHRpb25zID0ge1xuICAgIGNvbnRhaW5lcjogRE9NUmVjdDtcbiAgICBwb3NpdGlvbjogTmFub1BvcFBvc2l0aW9uO1xuICAgIHZhcmlhbnRGbGlwT3JkZXI6IFZhcmlhbnRGbGlwT3JkZXI7XG4gICAgcG9zaXRpb25GbGlwT3JkZXI6IFBvc2l0aW9uRmxpcE9yZGVyO1xuICAgIG1hcmdpbjogbnVtYmVyO1xuICAgIHJlZmVyZW5jZT86IEhUTUxFbGVtZW50O1xuICAgIHBvcHBlcj86IEhUTUxFbGVtZW50O1xufTtcblxudHlwZSBBdmFpbGFibGVQb3NpdGlvbnMgPSB7XG4gICAgdDogbnVtYmVyO1xuICAgIGI6IG51bWJlcjtcbiAgICBsOiBudW1iZXI7XG4gICAgcjogbnVtYmVyO1xufTtcblxudHlwZSBBdmFpbGFibGVWYXJpYW50cyA9IHtcbiAgICB2czogbnVtYmVyO1xuICAgIHZtOiBudW1iZXI7XG4gICAgdmU6IG51bWJlcjtcbiAgICBoczogbnVtYmVyO1xuICAgIGhtOiBudW1iZXI7XG4gICAgaGU6IG51bWJlcjtcbn07XG5cbnR5cGUgUG9zaXRpb25QYWlycyA9IFtEaXJlY3Rpb24sIERpcmVjdGlvbl07XG5leHBvcnQgdHlwZSBQb3NpdGlvbk1hdGNoID0gJ3RzJyB8ICd0bScgfCAndGUnIHwgJ2JzJyB8ICdibScgfCAnYmUnIHwgJ2xzJyB8ICdsbScgfCAnbGUnIHwgJ3JzJyB8ICdybScgfCAncmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hbm9Qb3Age1xuICAgIHVwZGF0ZSh1cGRhdGVkT3B0aW9ucz86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+KTogUG9zaXRpb25NYXRjaCB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmFub1BvcENvbnN0cnVjdG9yIHtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSByZWZlcmVuY2UgUmVmZXJlbmNlIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gcG9wcGVyIEFjdHVhbCBwb3BwZXIgZWxlbWVudFxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnNcbiAgICAgKi9cbiAgICAocmVmZXJlbmNlOiBIVE1MRWxlbWVudCwgcG9wcGVyOiBIVE1MRWxlbWVudCwgb3B0aW9ucz86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+KTogTmFub1BvcDtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFBhcnRpYWwgb3B0aW9ucyB3aGljaCBnZXQgbWVyZ2VkIHdpdGggdGhlIGN1cnJlbnQgb25lXG4gICAgICovXG4gICAgKG9wdGlvbnM/OiBQYXJ0aWFsPE5hbm9Qb3BPcHRpb25zPik6IE5hbm9Qb3A7XG59XG5cbi8vIEV4cG9ydCBjdXJyZW50IHZlcnNpb25cbmV4cG9ydCBjb25zdCB2ZXJzaW9uID0gVkVSU0lPTjtcblxuLy8gRXhwb3J0IGRlZmF1bHRcbmV4cG9ydCBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICB2YXJpYW50RmxpcE9yZGVyOiB7c3RhcnQ6ICdzbWUnLCBtaWRkbGU6ICdtc2UnLCBlbmQ6ICdlbXMnfSxcbiAgICBwb3NpdGlvbkZsaXBPcmRlcjoge3RvcDogJ3RicmwnLCByaWdodDogJ3JsdGInLCBib3R0b206ICdidHJsJywgbGVmdDogJ2xyYnQnfSxcbiAgICBwb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgbWFyZ2luOiA4XG59O1xuXG4vKipcbiAqIFJlcG9zaXRpb25zIGFuIGVsZW1lbnQgb25jZSB1c2luZyB0aGUgcHJvdmlkZWQgb3B0aW9ucyBhbmQgZWxlbWVudHMuXG4gKiBAcGFyYW0gcmVmZXJlbmNlIFJlZmVyZW5jZSBlbGVtZW50XG4gKiBAcGFyYW0gcG9wcGVyIFBvcHBlciBlbGVtZW50XG4gKiBAcGFyYW0gb3B0IE9wdGlvbmFsLCBhZGRpdGlvbmFsIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlcG9zaXRpb24gPSAoXG4gICAgcmVmZXJlbmNlOiBIVE1MRWxlbWVudCxcbiAgICBwb3BwZXI6IEhUTUxFbGVtZW50LFxuICAgIG9wdD86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+XG4pOiBQb3NpdGlvbk1hdGNoIHwgbnVsbCA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIG1hcmdpbixcbiAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIHZhcmlhbnRGbGlwT3JkZXIsXG4gICAgICAgIHBvc2l0aW9uRmxpcE9yZGVyXG4gICAgfSA9IHtcbiAgICAgICAgY29udGFpbmVyOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICAgIC4uLmRlZmF1bHRzLFxuICAgICAgICAuLi5vcHRcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmVzZXQgcG9zaXRpb24gdG8gcmVzb2x2ZSB2aWV3cG9ydFxuICAgICAqIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvcG9zaXRpb24jZml4ZWRcbiAgICAgKi9cbiAgICBjb25zdCB7bGVmdDogb3JpZ2luYWxMZWZ0LCB0b3A6IG9yaWdpbmFsVG9wfSA9IHBvcHBlci5zdHlsZTtcbiAgICBwb3BwZXIuc3R5bGUubGVmdCA9ICcwJztcbiAgICBwb3BwZXIuc3R5bGUudG9wID0gJzAnO1xuXG4gICAgY29uc3QgcmVmQm94ID0gcmVmZXJlbmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHBvcEJveCA9IHBvcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIC8qKlxuICAgICAqIEhvbGRzIGNvb3JkaW5hdGVzIG9mIHRvcCwgbGVmdCwgYm90dG9tIGFuZCByaWdodCBhbGlnbm1lbnRcbiAgICAgKi9cbiAgICBjb25zdCBwb3NpdGlvblN0b3JlOiBBdmFpbGFibGVQb3NpdGlvbnMgPSB7XG4gICAgICAgIHQ6IHJlZkJveC50b3AgLSBwb3BCb3guaGVpZ2h0IC0gbWFyZ2luLFxuICAgICAgICBiOiByZWZCb3guYm90dG9tICsgbWFyZ2luLFxuICAgICAgICByOiByZWZCb3gucmlnaHQgKyBtYXJnaW4sXG4gICAgICAgIGw6IHJlZkJveC5sZWZ0IC0gcG9wQm94LndpZHRoIC0gbWFyZ2luXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEhvbGRzIGNvcnJlc3BvbmRpbmcgdmFyaWFudHMgKHN0YXJ0LCBtaWRkbGUsIGVuZCkuXG4gICAgICogVGhlIHZhbHVlcyBkZXBlbmQgb24gaG9yaXpvbnRhbCAvIHZlcnRpY2FsIG9yaWVudGF0aW9uXG4gICAgICovXG4gICAgY29uc3QgdmFyaWFudFN0b3JlOiBBdmFpbGFibGVWYXJpYW50cyA9IHtcbiAgICAgICAgdnM6IHJlZkJveC5sZWZ0LFxuICAgICAgICB2bTogcmVmQm94LmxlZnQgKyByZWZCb3gud2lkdGggLyAyICsgLXBvcEJveC53aWR0aCAvIDIsXG4gICAgICAgIHZlOiByZWZCb3gubGVmdCArIHJlZkJveC53aWR0aCAtIHBvcEJveC53aWR0aCxcbiAgICAgICAgaHM6IHJlZkJveC50b3AsXG4gICAgICAgIGhtOiByZWZCb3guYm90dG9tIC0gcmVmQm94LmhlaWdodCAvIDIgLSBwb3BCb3guaGVpZ2h0IC8gMixcbiAgICAgICAgaGU6IHJlZkJveC5ib3R0b20gLSBwb3BCb3guaGVpZ2h0XG4gICAgfTtcblxuICAgIC8vIEV4dHJhY3QgcG9zaXRpb24gYW5kIHZhcmlhbnRcbiAgICAvLyBUb3Atc3RhcnQgLT4gdG9wIGlzIFwicG9zaXRpb25cIiBhbmQgXCJzdGFydFwiIGlzIHRoZSB2YXJpYW50XG4gICAgY29uc3QgW3Bvc0tleSwgdmFyS2V5ID0gJ21pZGRsZSddID0gcG9zaXRpb24uc3BsaXQoJy0nKTtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBwb3NpdGlvbkZsaXBPcmRlcltwb3NLZXkgYXMga2V5b2YgUG9zaXRpb25GbGlwT3JkZXJdO1xuICAgIGNvbnN0IHZhcmlhbnRzID0gdmFyaWFudEZsaXBPcmRlclt2YXJLZXkgYXMga2V5b2YgVmFyaWFudEZsaXBPcmRlcl07XG5cbiAgICAvLyBUcnkgb3V0IGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMsIHN0YXJ0aW5nIHdpdGggdGhlIHByZWZlcnJlZCBvbmUuXG4gICAgY29uc3Qge3RvcCwgbGVmdCwgYm90dG9tLCByaWdodH0gPSBjb250YWluZXI7XG5cbiAgICBmb3IgKGNvbnN0IHAgb2YgcG9zaXRpb25zKSB7XG4gICAgICAgIGNvbnN0IHZlcnRpY2FsID0gKHAgPT09ICd0JyB8fCBwID09PSAnYicpO1xuXG4gICAgICAgIC8vIFRoZSBwb3NpdGlvbi12YWx1ZVxuICAgICAgICBjb25zdCBwb3NpdGlvblZhbCA9IHBvc2l0aW9uU3RvcmVbcCBhcyBrZXlvZiBBdmFpbGFibGVQb3NpdGlvbnNdO1xuXG4gICAgICAgIC8vIFdoaWNoIHByb3BlcnR5IGhhcyB0byBiZSBjaGFuZ2VzLlxuICAgICAgICBjb25zdCBbcG9zaXRpb25LZXksIHZhcmlhbnRLZXldID0gKHZlcnRpY2FsID8gWyd0b3AnLCAnbGVmdCddIDogWydsZWZ0JywgJ3RvcCddKSBhcyBQb3NpdGlvblBhaXJzO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBib3ggcmVmZXJzIHRvIHRoZSBzaXplIG9mIHRoZSBwb3BwZXIgZWxlbWVudC4gRGVwZW5kaW5nIG9uIHRoZSBvcmllbnRhdGlvbiB0aGlzIGlzIHdpZHRoIG9yIGhlaWdodC5cbiAgICAgICAgICogVGhlIGxpbWl0IGlzIHRoZSBjb3JyZXNwb25kaW5nLCBtYXhpbXVtIHZhbHVlIGZvciB0aGlzIHBvc2l0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgW3Bvc2l0aW9uU2l6ZSwgdmFyaWFudFNpemVdID0gdmVydGljYWwgPyBbcG9wQm94LmhlaWdodCwgcG9wQm94LndpZHRoXSA6IFtwb3BCb3gud2lkdGgsIHBvcEJveC5oZWlnaHRdO1xuICAgICAgICBjb25zdCBbcG9zaXRpb25NYXhpbXVtLCB2YXJpYW50TWF4aW11bV0gPSB2ZXJ0aWNhbCA/IFtib3R0b20sIHJpZ2h0XSA6IFtyaWdodCwgYm90dG9tXTtcbiAgICAgICAgY29uc3QgW3Bvc2l0aW9uTWluaW11bSwgdmFyaWFudE1pbmltdW1dID0gdmVydGljYWwgPyBbdG9wLCBsZWZ0XSA6IFtsZWZ0LCB0b3BdO1xuXG4gICAgICAgIC8vIFNraXAgcHJlLWNsaXBwZWQgdmFsdWVzXG4gICAgICAgIGlmIChwb3NpdGlvblZhbCA8IHBvc2l0aW9uTWluaW11bSB8fCAocG9zaXRpb25WYWwgKyBwb3NpdGlvblNpemUpID4gcG9zaXRpb25NYXhpbXVtKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdiBvZiB2YXJpYW50cykge1xuXG4gICAgICAgICAgICAvLyBUaGUgcG9zaXRpb24tdmFsdWUsIHRoZSByZWxhdGVkIHNpemUgdmFsdWUgb2YgdGhlIHBvcHBlciBhbmQgdGhlIGxpbWl0XG4gICAgICAgICAgICBjb25zdCB2YXJpYW50VmFsID0gdmFyaWFudFN0b3JlWygodmVydGljYWwgPyAndicgOiAnaCcpICsgdikgYXMga2V5b2YgQXZhaWxhYmxlVmFyaWFudHNdO1xuXG4gICAgICAgICAgICBpZiAodmFyaWFudFZhbCA8IHZhcmlhbnRNaW5pbXVtIHx8ICh2YXJpYW50VmFsICsgdmFyaWFudFNpemUpID4gdmFyaWFudE1heGltdW0pIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQXBwbHkgc3R5bGVzIGFuZCBub3JtYWxpemUgdmlld3BvcnRcbiAgICAgICAgICAgIHBvcHBlci5zdHlsZVt2YXJpYW50S2V5XSA9IGAke3ZhcmlhbnRWYWwgLSBwb3BCb3hbdmFyaWFudEtleV19cHhgO1xuICAgICAgICAgICAgcG9wcGVyLnN0eWxlW3Bvc2l0aW9uS2V5XSA9IGAke3Bvc2l0aW9uVmFsIC0gcG9wQm94W3Bvc2l0aW9uS2V5XX1weGA7XG4gICAgICAgICAgICByZXR1cm4gKHAgKyB2KSBhcyBQb3NpdGlvbk1hdGNoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV2ZXJ0IHN0eWxlIHZhbHVlcyAod29uJ3Qgd29yayB3aXRoIHN0eWxlZC1lbGVtZW50cyBvciBzaW1pbGFyIHN5c3RlbXMpXG4gICAgLy8gXCJGaXhcIiBmb3IgaHR0cHM6Ly9naXRodWIuY29tL1NpbW9ud2VwL25hbm9wb3AvaXNzdWVzLzdcbiAgICBwb3BwZXIuc3R5bGUubGVmdCA9IG9yaWdpbmFsTGVmdDtcbiAgICBwb3BwZXIuc3R5bGUudG9wID0gb3JpZ2luYWxUb3A7XG5cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YXRlZnVsIHBvcHBlci5cbiAqIFlvdSBjYW4gZWl0aGVyLi4uXG4gKiAuLi4gcGFzcyBhbiBvcHRpb25zIG9iamVjdDogY3JlYXRlUG9wcGVyKDxvcHRpb25zPilcbiAqIC4uLiBwYXNzIGJvdGggdGhlIHJlZmVyZW5jZSBhbmQgcG9wcGVyOiBjcmVhdGUoPHJlZj4sIDxlbD4sIDw/b3B0aW9ucz4pXG4gKiAuLi4gcGFzcyBub3RoaW5nLCBpbiB0aGlzIGNhc2UgeW91J2xsIGhhdmUgdG8gc2V0IGF0IGxlYXN0IGJvdGggYSByZWZlcmVuY2UgYW5kIGEgcG9wcGVyIGluIHVwZGF0ZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIHwgb3B0aW9ucyBSZWZlcmVuY2UgZWxlbWVudCBvciBvcHRpb25zXG4gKiBAcGFyYW0gcG9wcGVyIFBvcHBlciBlbGVtZW50XG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBhZGRpdGlvbmFsIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVBvcHBlcjogTmFub1BvcENvbnN0cnVjdG9yID0gKFxuICAgIHJlZmVyZW5jZT86IEhUTUxFbGVtZW50IHwgUGFydGlhbDxOYW5vUG9wT3B0aW9ucz4sXG4gICAgcG9wcGVyPzogSFRNTEVsZW1lbnQsXG4gICAgb3B0aW9ucz86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+XG4pOiBOYW5vUG9wID0+IHtcblxuICAgIC8vIFJlc29sdmUgb3B0aW9uc1xuICAgIGNvbnN0IGJhc2VPcHRpb25zOiBQYXJ0aWFsPE5hbm9Qb3BPcHRpb25zPiA9IHR5cGVvZiByZWZlcmVuY2UgPT09ICdvYmplY3QnICYmICEocmVmZXJlbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpID9cbiAgICAgICAgcmVmZXJlbmNlIDoge3JlZmVyZW5jZSwgcG9wcGVyLCAuLi5vcHRpb25zfTtcblxuICAgIHJldHVybiB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlcG9zaXRpb25zIHRoZSBjdXJyZW50IHBvcHBlci5cbiAgICAgICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9ucyB3aGljaCBnZXQgbWVyZ2VkIHdpdGggdGhlIGN1cnJlbnQgb25lcy5cbiAgICAgICAgICovXG4gICAgICAgIHVwZGF0ZShvcHRpb25zOiBQYXJ0aWFsPE5hbm9Qb3BPcHRpb25zPiA9IGJhc2VPcHRpb25zKTogUG9zaXRpb25NYXRjaCB8IG51bGwge1xuICAgICAgICAgICAgY29uc3Qge3JlZmVyZW5jZSwgcG9wcGVyfSA9IE9iamVjdC5hc3NpZ24oYmFzZU9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBpZiAoIXBvcHBlciB8fCAhcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQb3BwZXItIG9yIHJlZmVyZW5jZS1lbGVtZW50IG1pc3NpbmcuJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXBvc2l0aW9uKHJlZmVyZW5jZSwgcG9wcGVyLCBiYXNlT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtwYXJzZVRvSFNWQX0gZnJvbSAnLi91dGlscy9jb2xvcic7XG5pbXBvcnQge0hTVmFDb2xvcn0gZnJvbSAnLi91dGlscy9oc3ZhY29sb3InO1xuaW1wb3J0IE1vdmVhYmxlIGZyb20gJy4vbGlicy9tb3ZlYWJsZSc7XG5pbXBvcnQgU2VsZWN0YWJsZSBmcm9tICcuL2xpYnMvc2VsZWN0YWJsZSc7XG5pbXBvcnQgYnVpbGRQaWNrciBmcm9tICcuL3RlbXBsYXRlJztcbmltcG9ydCB7Y3JlYXRlUG9wcGVyfSBmcm9tICduYW5vcG9wJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGlja3Ige1xuXG4gICAgLy8gRXhwb3NlIHBpY2tyIHV0aWxzXG4gICAgc3RhdGljIHV0aWxzID0gXztcblxuICAgIC8vIEFzc2lnbiB2ZXJzaW9uIGFuZCBleHBvcnRcbiAgICBzdGF0aWMgdmVyc2lvbiA9IFZFUlNJT047XG5cbiAgICAvLyBEZWZhdWx0IHN0cmluZ3NcbiAgICBzdGF0aWMgSTE4Tl9ERUZBVUxUUyA9IHtcblxuICAgICAgICAvLyBTdHJpbmdzIHZpc2libGUgaW4gdGhlIFVJXG4gICAgICAgICd1aTpkaWFsb2cnOiAnY29sb3IgcGlja2VyIGRpYWxvZycsXG4gICAgICAgICdidG46dG9nZ2xlJzogJ3RvZ2dsZSBjb2xvciBwaWNrZXIgZGlhbG9nJyxcbiAgICAgICAgJ2J0bjpzd2F0Y2gnOiAnY29sb3Igc3dhdGNoJyxcbiAgICAgICAgJ2J0bjpsYXN0LWNvbG9yJzogJ3VzZSBwcmV2aW91cyBjb2xvcicsXG4gICAgICAgICdidG46c2F2ZSc6ICdTYXZlJyxcbiAgICAgICAgJ2J0bjpjYW5jZWwnOiAnQ2FuY2VsJyxcbiAgICAgICAgJ2J0bjpjbGVhcic6ICdDbGVhcicsXG5cbiAgICAgICAgLy8gU3RyaW5ncyB1c2VkIGZvciBhcmlhLWxhYmVsc1xuICAgICAgICAnYXJpYTpidG46c2F2ZSc6ICdzYXZlIGFuZCBjbG9zZScsXG4gICAgICAgICdhcmlhOmJ0bjpjYW5jZWwnOiAnY2FuY2VsIGFuZCBjbG9zZScsXG4gICAgICAgICdhcmlhOmJ0bjpjbGVhcic6ICdjbGVhciBhbmQgY2xvc2UnLFxuICAgICAgICAnYXJpYTppbnB1dCc6ICdjb2xvciBpbnB1dCBmaWVsZCcsXG4gICAgICAgICdhcmlhOnBhbGV0dGUnOiAnY29sb3Igc2VsZWN0aW9uIGFyZWEnLFxuICAgICAgICAnYXJpYTpodWUnOiAnaHVlIHNlbGVjdGlvbiBzbGlkZXInLFxuICAgICAgICAnYXJpYTpvcGFjaXR5JzogJ3NlbGVjdGlvbiBzbGlkZXInXG4gICAgfTtcblxuICAgIC8vIERlZmF1bHQgb3B0aW9uc1xuICAgIHN0YXRpYyBERUZBVUxUX09QVElPTlMgPSB7XG4gICAgICAgIGFwcENsYXNzOiBudWxsLFxuICAgICAgICB0aGVtZTogJ2NsYXNzaWMnLFxuICAgICAgICB1c2VBc0J1dHRvbjogZmFsc2UsXG4gICAgICAgIHBhZGRpbmc6IDgsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgY29tcGFyaXNvbjogdHJ1ZSxcbiAgICAgICAgY2xvc2VPblNjcm9sbDogZmFsc2UsXG4gICAgICAgIG91dHB1dFByZWNpc2lvbjogMCxcbiAgICAgICAgbG9ja09wYWNpdHk6IGZhbHNlLFxuICAgICAgICBhdXRvUmVwb3NpdGlvbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbmVyOiAnYm9keScsXG5cbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgaW50ZXJhY3Rpb246IHt9XG4gICAgICAgIH0sXG5cbiAgICAgICAgaTE4bjoge30sXG4gICAgICAgIHN3YXRjaGVzOiBudWxsLFxuICAgICAgICBpbmxpbmU6IGZhbHNlLFxuICAgICAgICBzbGlkZXJzOiBudWxsLFxuXG4gICAgICAgIGRlZmF1bHQ6ICcjNDI0NDVhJyxcbiAgICAgICAgZGVmYXVsdFJlcHJlc2VudGF0aW9uOiBudWxsLFxuICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbS1taWRkbGUnLFxuICAgICAgICBhZGp1c3RhYmxlTnVtYmVyczogdHJ1ZSxcbiAgICAgICAgc2hvd0Fsd2F5czogZmFsc2UsXG5cbiAgICAgICAgY2xvc2VXaXRoS2V5OiAnRXNjYXBlJ1xuICAgIH07XG5cbiAgICAvLyBXaWxsIGJlIHVzZWQgdG8gcHJldmVudCBzcGVjaWZpYyBhY3Rpb25zIGR1cmluZyBpbml0aWxpemF0aW9uXG4gICAgX2luaXRpYWxpemluZ0FjdGl2ZSA9IHRydWU7XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudCBjb2xvciB2YWx1ZSBzaG91bGQgYmUgcmVjYWxjdWxhdGVkXG4gICAgX3JlY2FsYyA9IHRydWU7XG5cbiAgICAvLyBQb3NpdGlvbmluZyBlbmdpbmUgYW5kIERPTS1UcmVlXG4gICAgX25hbm9wb3AgPSBudWxsO1xuICAgIF9yb290ID0gbnVsbDtcblxuICAgIC8vIEN1cnJlbnQgYW5kIGxhc3QgY29sb3IgZm9yIGNvbXBhcmlzb25cbiAgICBfY29sb3IgPSBIU1ZhQ29sb3IoKTtcbiAgICBfbGFzdENvbG9yID0gSFNWYUNvbG9yKCk7XG4gICAgX3N3YXRjaENvbG9ycyA9IFtdO1xuXG4gICAgLy8gQW5pbWF0aW9uIGZyYW1lIHVzZWQgZm9yIHNldHVwLlxuICAgIC8vIFdpbGwgYmUgY2FuY2VsbGVkIGluIGNhc2Ugb2YgZGVzdHJ1Y3Rpb24uXG4gICAgX3NldHVwQW5pbWF0aW9uRnJhbWUgPSBudWxsO1xuXG4gICAgLy8gRXZlbmxpc3RlbmVyIG5hbWU6IFtjYWxsYmFja3NdXG4gICAgX2V2ZW50TGlzdGVuZXIgPSB7XG4gICAgICAgIGluaXQ6IFtdLFxuICAgICAgICBzYXZlOiBbXSxcbiAgICAgICAgaGlkZTogW10sXG4gICAgICAgIHNob3c6IFtdLFxuICAgICAgICBjbGVhcjogW10sXG4gICAgICAgIGNoYW5nZTogW10sXG4gICAgICAgIGNoYW5nZXN0b3A6IFtdLFxuICAgICAgICBjYW5jZWw6IFtdLFxuICAgICAgICBzd2F0Y2hzZWxlY3Q6IFtdXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdCkge1xuXG4gICAgICAgIC8vIEFzc2lnbiBkZWZhdWx0IHZhbHVlc1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHQgPSBPYmplY3QuYXNzaWduKHsuLi5QaWNrci5ERUZBVUxUX09QVElPTlN9LCBvcHQpO1xuXG4gICAgICAgIGNvbnN0IHtzd2F0Y2hlcywgY29tcG9uZW50cywgdGhlbWUsIHNsaWRlcnMsIGxvY2tPcGFjaXR5LCBwYWRkaW5nfSA9IG9wdDtcblxuICAgICAgICBpZiAoWyduYW5vJywgJ21vbm9saXRoJ10uaW5jbHVkZXModGhlbWUpICYmICFzbGlkZXJzKSB7XG4gICAgICAgICAgICBvcHQuc2xpZGVycyA9ICdoJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGludGVyYWN0aW9uIHNlY3Rpb25cbiAgICAgICAgaWYgKCFjb21wb25lbnRzLmludGVyYWN0aW9uKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLmludGVyYWN0aW9uID0ge307XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdmVyd3JpdGUgcGFsZXR0ZSBpZiBwcmV2aWV3LCBvcGFjaXR5IG9yIGh1ZSBhcmUgdHJ1ZVxuICAgICAgICBjb25zdCB7cHJldmlldywgb3BhY2l0eSwgaHVlLCBwYWxldHRlfSA9IGNvbXBvbmVudHM7XG4gICAgICAgIGNvbXBvbmVudHMub3BhY2l0eSA9ICghbG9ja09wYWNpdHkgJiYgb3BhY2l0eSk7XG4gICAgICAgIGNvbXBvbmVudHMucGFsZXR0ZSA9IHBhbGV0dGUgfHwgcHJldmlldyB8fCBvcGFjaXR5IHx8IGh1ZTtcblxuICAgICAgICAvLyBJbml0aWFsaXplIHBpY2tlclxuICAgICAgICB0aGlzLl9wcmVCdWlsZCgpO1xuICAgICAgICB0aGlzLl9idWlsZENvbXBvbmVudHMoKTtcbiAgICAgICAgdGhpcy5fYmluZEV2ZW50cygpO1xuICAgICAgICB0aGlzLl9maW5hbEJ1aWxkKCk7XG5cbiAgICAgICAgLy8gQXBwZW5kIHByZS1kZWZpbmVkIHN3YXRjaCBjb2xvcnNcbiAgICAgICAgaWYgKHN3YXRjaGVzICYmIHN3YXRjaGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3dhdGNoZXMuZm9yRWFjaChjb2xvciA9PiB0aGlzLmFkZFN3YXRjaChjb2xvcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBwb3NpdGlvbmluZyBlbmdpbmVcbiAgICAgICAgY29uc3Qge2J1dHRvbiwgYXBwfSA9IHRoaXMuX3Jvb3Q7XG4gICAgICAgIHRoaXMuX25hbm9wb3AgPSBjcmVhdGVQb3BwZXIoYnV0dG9uLCBhcHAsIHtcbiAgICAgICAgICAgIG1hcmdpbjogcGFkZGluZ1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBJbml0aWFsaXplIGFjY2Vzc2liaWxpdHlcbiAgICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgncm9sZScsICdidXR0b24nKTtcbiAgICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuX3QoJ2J0bjp0b2dnbGUnKSk7XG5cbiAgICAgICAgLy8gSW5pdGlsaXphdGlvbiBpcyBmaW5pc2gsIHBpY2tyIGlzIHZpc2libGUgYW5kIHJlYWR5IGZvciB1c2FnZVxuICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgdGhpcy5fc2V0dXBBbmltYXRpb25GcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24gY2IoKSB7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFBlcmZvcm1hbmNlIGlzc3VlIGR1ZSB0byBoaWdoIGNhbGwtcmF0ZT9cbiAgICAgICAgICAgIGlmICghYXBwLm9mZnNldFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFwcGx5IGRlZmF1bHQgY29sb3JcbiAgICAgICAgICAgIHRoYXQuc2V0Q29sb3Iob3B0LmRlZmF1bHQpO1xuICAgICAgICAgICAgdGhhdC5fcmVQb3NpdGlvbmluZ1BpY2tlcigpO1xuXG4gICAgICAgICAgICAvLyBJbml0aWFsaXplIGNvbG9yIHJlcHJlc2VudGF0aW9uXG4gICAgICAgICAgICBpZiAob3B0LmRlZmF1bHRSZXByZXNlbnRhdGlvbikge1xuICAgICAgICAgICAgICAgIHRoYXQuX3JlcHJlc2VudGF0aW9uID0gb3B0LmRlZmF1bHRSZXByZXNlbnRhdGlvbjtcbiAgICAgICAgICAgICAgICB0aGF0LnNldENvbG9yUmVwcmVzZW50YXRpb24odGhhdC5fcmVwcmVzZW50YXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaG93IHBpY2tyIGlmIGxvY2tlZFxuICAgICAgICAgICAgaWYgKG9wdC5zaG93QWx3YXlzKSB7XG4gICAgICAgICAgICAgICAgdGhhdC5zaG93KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIGlzIGRvbmUgLSBwaWNrciBpcyB1c2FibGUsIGZpcmUgaW5pdCBldmVudFxuICAgICAgICAgICAgdGhhdC5faW5pdGlhbGl6aW5nQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGF0Ll9lbWl0KCdpbml0Jyk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgaW5zdGFuY2UgdmlhIG1ldGhvZFxuICAgIHN0YXRpYyBjcmVhdGUgPSBvcHRpb25zID0+IG5ldyBQaWNrcihvcHRpb25zKTtcblxuICAgIC8vIERvZXMgb25seSB0aGUgYWJzb2x1dGx5IGJhc2ljIHRoaW5nIHRvIGluaXRpYWxpemUgdGhlIGNvbXBvbmVudHNcbiAgICBfcHJlQnVpbGQoKSB7XG4gICAgICAgIGNvbnN0IHtvcHRpb25zfSA9IHRoaXM7XG5cbiAgICAgICAgLy8gUmVzb2x2ZSBlbGVtZW50c1xuICAgICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgWydlbCcsICdjb250YWluZXInXSkge1xuICAgICAgICAgICAgb3B0aW9uc1t0eXBlXSA9IF8ucmVzb2x2ZUVsZW1lbnQob3B0aW9uc1t0eXBlXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgZWxlbWVudCBhbmQgYXBwZW5kIGl0IHRvIGJvZHkgdG9cbiAgICAgICAgLy8gUHJldmVudCBpbml0aWFsaXphdGlvbiBlcnJvcnNcbiAgICAgICAgdGhpcy5fcm9vdCA9IGJ1aWxkUGlja3IodGhpcyk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgYSBjdXN0b20gYnV0dG9uIGlzIHVzZWRcbiAgICAgICAgaWYgKG9wdGlvbnMudXNlQXNCdXR0b24pIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QuYnV0dG9uID0gb3B0aW9ucy5lbDsgLy8gUmVwbGFjZSBidXR0b24gd2l0aCBjdXN0b21pemVkIGJ1dHRvblxuICAgICAgICB9XG5cbiAgICAgICAgb3B0aW9ucy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fcm9vdC5yb290KTtcbiAgICB9XG5cbiAgICBfZmluYWxCdWlsZCgpIHtcbiAgICAgICAgY29uc3Qgb3B0ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCByb290ID0gdGhpcy5fcm9vdDtcblxuICAgICAgICAvLyBSZW1vdmUgZnJvbSBib2R5XG4gICAgICAgIG9wdC5jb250YWluZXIucmVtb3ZlQ2hpbGQocm9vdC5yb290KTtcblxuICAgICAgICBpZiAob3B0LmlubGluZSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gb3B0LmVsLnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChvcHQuZWwubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHJvb3QuYXBwLCBvcHQuZWwubmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQocm9vdC5hcHApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0LmNvbnRhaW5lci5hcHBlbmRDaGlsZChyb290LmFwcCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEb24ndCByZXBsYWNlIHRoZSB0aGUgZWxlbWVudCBpZiBhIGN1c3RvbSBidXR0b24gaXMgdXNlZFxuICAgICAgICBpZiAoIW9wdC51c2VBc0J1dHRvbikge1xuXG4gICAgICAgICAgICAvLyBSZXBsYWNlIGVsZW1lbnQgd2l0aCBhY3R1YWwgY29sb3ItcGlja2VyXG4gICAgICAgICAgICBvcHQuZWwucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQocm9vdC5yb290LCBvcHQuZWwpO1xuICAgICAgICB9IGVsc2UgaWYgKG9wdC5pbmxpbmUpIHtcbiAgICAgICAgICAgIG9wdC5lbC5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIGl0IHNob3VsZCBiZSBpbW1lZGlhdGx5IGRpc2FibGVkXG4gICAgICAgIGlmIChvcHQuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgY29sb3IgY29tcGFyaXNvbiBpcyBkaXNhYmxlZCwgaWYgeWVzIC0gcmVtb3ZlIHRyYW5zaXRpb25zIHNvIGV2ZXJ5dGhpbmcga2VlcHMgc21vb3RobHlcbiAgICAgICAgaWYgKCFvcHQuY29tcGFyaXNvbikge1xuICAgICAgICAgICAgcm9vdC5idXR0b24uc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcblxuICAgICAgICAgICAgaWYgKCFvcHQudXNlQXNCdXR0b24pIHtcbiAgICAgICAgICAgICAgICByb290LnByZXZpZXcubGFzdENvbG9yLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG5cbiAgICBfYnVpbGRDb21wb25lbnRzKCkge1xuXG4gICAgICAgIC8vIEluc3RhbmNlIHJlZmVyZW5jZVxuICAgICAgICBjb25zdCBpbnN0ID0gdGhpcztcbiAgICAgICAgY29uc3QgY3MgPSB0aGlzLm9wdGlvbnMuY29tcG9uZW50cztcbiAgICAgICAgY29uc3Qgc2xpZGVycyA9IChpbnN0Lm9wdGlvbnMuc2xpZGVycyB8fCAndicpLnJlcGVhdCgyKTtcbiAgICAgICAgY29uc3QgW3NvLCBzaF0gPSBzbGlkZXJzLm1hdGNoKC9eW3ZoXSskL2cpID8gc2xpZGVycyA6IFtdO1xuXG4gICAgICAgIC8vIFJlLWFzc2lnbiBpZiBudWxsXG4gICAgICAgIGNvbnN0IGdldENvbG9yID0gKCkgPT5cbiAgICAgICAgICAgIHRoaXMuX2NvbG9yIHx8ICh0aGlzLl9jb2xvciA9IHRoaXMuX2xhc3RDb2xvci5jbG9uZSgpKTtcblxuICAgICAgICBjb25zdCBjb21wb25lbnRzID0ge1xuXG4gICAgICAgICAgICBwYWxldHRlOiBNb3ZlYWJsZSh7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogaW5zdC5fcm9vdC5wYWxldHRlLnBpY2tlcixcbiAgICAgICAgICAgICAgICB3cmFwcGVyOiBpbnN0Ll9yb290LnBhbGV0dGUucGFsZXR0ZSxcblxuICAgICAgICAgICAgICAgIG9uc3RvcDogKCkgPT4gaW5zdC5fZW1pdCgnY2hhbmdlc3RvcCcsICdzbGlkZXInLCBpbnN0KSxcbiAgICAgICAgICAgICAgICBvbmNoYW5nZSh4LCB5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3MucGFsZXR0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBnZXRDb2xvcigpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7X3Jvb3QsIG9wdGlvbnN9ID0gaW5zdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge2xhc3RDb2xvciwgY3VycmVudENvbG9yfSA9IF9yb290LnByZXZpZXc7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBpbnB1dCBmaWVsZCBvbmx5IGlmIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBub3QgdHlwaW5nXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnN0Ll9yZWNhbGMpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHNhdHVyYXRpb24gYmFzZWQgb24gdGhlIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5zID0geCAqIDEwMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IudiA9IDEwMCAtIHkgKiAxMDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgZmFsbGluZyB1bmRlciB6ZXJvXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvci52IDwgMCA/IGNvbG9yLnYgPSAwIDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuX3VwZGF0ZU91dHB1dCgnc2xpZGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBTZXQgcGlja2VyIGFuZCBncmFkaWVudCBjb2xvclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjc3NSR0JhU3RyaW5nID0gY29sb3IudG9SR0JBKCkudG9TdHJpbmcoMCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gY3NzUkdCYVN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyLnN0eWxlLmJhY2tncm91bmQgPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDAsIDAsICR7Y29sb3IuYX0pLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgaHNsYSgke2NvbG9yLmh9LCAxMDAlLCA1MCUsICR7Y29sb3IuYX0pLCByZ2JhKDI1NSwgMjU1LCAyNTUsICR7Y29sb3IuYX0pKVxuICAgICAgICAgICAgICAgICAgICBgO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGNvbG9yIGlzIGxvY2tlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuY29tcGFyaXNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3Jvb3QuYnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KCctLXBjci1jb2xvcicsIGNzc1JHQmFTdHJpbmcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBjb2xvciwgcmVtb3ZlIHRoZSBjbGVhcmVkIGljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIF9yb290LmJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdjbGVhcicpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLnVzZUFzQnV0dG9uICYmICFpbnN0Ll9sYXN0Q29sb3IpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbHkgY29sb3IgdG8gYm90aCB0aGUgbGFzdCBhbmQgY3VycmVudCBjb2xvciBzaW5jZSB0aGUgY3VycmVudCBzdGF0ZSBpcyBjbGVhcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0Q29sb3Iuc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGEgc3dhdGNoIHdoaWNoIGNvbG9yIG1hdGNoZXMgdGhlIGN1cnJlbnQgb25lXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhleGEgPSBjb2xvci50b0hFWEEoKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHtlbCwgY29sb3J9IG9mIGluc3QuX3N3YXRjaENvbG9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0W2hleGEgPT09IGNvbG9yLnRvSEVYQSgpLnRvU3RyaW5nKCkgPyAnYWRkJyA6ICdyZW1vdmUnXSgncGNyLWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hhbmdlIGN1cnJlbnQgY29sb3JcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbG9yLnN0eWxlLnNldFByb3BlcnR5KCctLXBjci1jb2xvcicsIGNzc1JHQmFTdHJpbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBodWU6IE1vdmVhYmxlKHtcbiAgICAgICAgICAgICAgICBsb2NrOiBzaCA9PT0gJ3YnID8gJ2gnIDogJ3YnLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGluc3QuX3Jvb3QuaHVlLnBpY2tlcixcbiAgICAgICAgICAgICAgICB3cmFwcGVyOiBpbnN0Ll9yb290Lmh1ZS5zbGlkZXIsXG5cbiAgICAgICAgICAgICAgICBvbnN0b3A6ICgpID0+IGluc3QuX2VtaXQoJ2NoYW5nZXN0b3AnLCAnc2xpZGVyJywgaW5zdCksXG4gICAgICAgICAgICAgICAgb25jaGFuZ2Uodikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNzLmh1ZSB8fCAhY3MucGFsZXR0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBnZXRDb2xvcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBodWVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3QuX3JlY2FsYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuaCA9IHYgKiAzNjA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgY29sb3JcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGBoc2woJHtjb2xvci5ofSwgMTAwJSwgNTAlKWA7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucGFsZXR0ZS50cmlnZ2VyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIG9wYWNpdHk6IE1vdmVhYmxlKHtcbiAgICAgICAgICAgICAgICBsb2NrOiBzbyA9PT0gJ3YnID8gJ2gnIDogJ3YnLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGluc3QuX3Jvb3Qub3BhY2l0eS5waWNrZXIsXG4gICAgICAgICAgICAgICAgd3JhcHBlcjogaW5zdC5fcm9vdC5vcGFjaXR5LnNsaWRlcixcblxuICAgICAgICAgICAgICAgIG9uc3RvcDogKCkgPT4gaW5zdC5fZW1pdCgnY2hhbmdlc3RvcCcsICdzbGlkZXInLCBpbnN0KSxcbiAgICAgICAgICAgICAgICBvbmNoYW5nZSh2KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3Mub3BhY2l0eSB8fCAhY3MucGFsZXR0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBnZXRDb2xvcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBvcGFjaXR5XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnN0Ll9yZWNhbGMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLmEgPSBNYXRoLnJvdW5kKHYgKiAxZTIpIC8gMTAwO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNvbG9yXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gYHJnYmEoMCwgMCwgMCwgJHtjb2xvci5hfSlgO1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLnBhbGV0dGUudHJpZ2dlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBTZWxlY3RhYmxlKHtcbiAgICAgICAgICAgICAgICBlbGVtZW50czogaW5zdC5fcm9vdC5pbnRlcmFjdGlvbi5vcHRpb25zLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2FjdGl2ZScsXG5cbiAgICAgICAgICAgICAgICBvbmNoYW5nZShlKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3QuX3JlcHJlc2VudGF0aW9uID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBpbnN0Ll9yZWNhbGMgJiYgaW5zdC5fdXBkYXRlT3V0cHV0KCdzd2F0Y2gnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuICAgIH1cblxuICAgIF9iaW5kRXZlbnRzKCkge1xuICAgICAgICBjb25zdCB7X3Jvb3QsIG9wdGlvbnN9ID0gdGhpcztcblxuICAgICAgICBjb25zdCBldmVudEJpbmRpbmdzID0gW1xuXG4gICAgICAgICAgICAvLyBDbGVhciBjb2xvclxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5jbGVhciwgJ2NsaWNrJywgKCkgPT4gdGhpcy5fY2xlYXJDb2xvcigpKSxcblxuICAgICAgICAgICAgLy8gU2VsZWN0IGxhc3QgY29sb3Igb24gY2xpY2tcbiAgICAgICAgICAgIF8ub24oW1xuICAgICAgICAgICAgICAgIF9yb290LmludGVyYWN0aW9uLmNhbmNlbCxcbiAgICAgICAgICAgICAgICBfcm9vdC5wcmV2aWV3Lmxhc3RDb2xvclxuICAgICAgICAgICAgXSwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SFNWQSguLi4odGhpcy5fbGFzdENvbG9yIHx8IHRoaXMuX2NvbG9yKS50b0hTVkEoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2FuY2VsJyk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgLy8gU2F2ZSBjb2xvclxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5zYXZlLCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgIXRoaXMuYXBwbHlDb2xvcigpICYmICFvcHRpb25zLnNob3dBbHdheXMgJiYgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgLy8gVXNlciBpbnB1dFxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5yZXN1bHQsIFsna2V5dXAnLCAnaW5wdXQnXSwgZSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBGaXJlIGxpc3RlbmVyIGlmIGluaXRpYWxpemF0aW9uIGlzIGZpbmlzaCBhbmQgY2hhbmdlZCBjb2xvciB3YXMgdmFsaWRcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXRDb2xvcihlLnRhcmdldC52YWx1ZSwgdHJ1ZSkgJiYgIXRoaXMuX2luaXRpYWxpemluZ0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0KCdjaGFuZ2UnLCB0aGlzLl9jb2xvciwgJ2lucHV0JywgdGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQoJ2NoYW5nZXN0b3AnLCAnaW5wdXQnLCB0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIC8vIERldGVjdCB1c2VyIGlucHV0IGFuZCBkaXNhYmxlIGF1dG8tcmVjYWxjdWxhdGlvblxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5yZXN1bHQsIFsnZm9jdXMnLCAnYmx1ciddLCBlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWNhbGMgPSBlLnR5cGUgPT09ICdibHVyJztcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWNhbGMgJiYgdGhpcy5fdXBkYXRlT3V0cHV0KG51bGwpO1xuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIC8vIENhbmNlbCBpbnB1dCBkZXRlY3Rpb24gb24gY29sb3IgY2hhbmdlXG4gICAgICAgICAgICBfLm9uKFtcbiAgICAgICAgICAgICAgICBfcm9vdC5wYWxldHRlLnBhbGV0dGUsXG4gICAgICAgICAgICAgICAgX3Jvb3QucGFsZXR0ZS5waWNrZXIsXG4gICAgICAgICAgICAgICAgX3Jvb3QuaHVlLnNsaWRlcixcbiAgICAgICAgICAgICAgICBfcm9vdC5odWUucGlja2VyLFxuICAgICAgICAgICAgICAgIF9yb290Lm9wYWNpdHkuc2xpZGVyLFxuICAgICAgICAgICAgICAgIF9yb290Lm9wYWNpdHkucGlja2VyXG4gICAgICAgICAgICBdLCBbJ21vdXNlZG93bicsICd0b3VjaHN0YXJ0J10sICgpID0+IHRoaXMuX3JlY2FsYyA9IHRydWUsIHtwYXNzaXZlOiB0cnVlfSlcbiAgICAgICAgXTtcblxuICAgICAgICAvLyBQcm92aWRlIGhpZGluZyAvIHNob3dpbmcgYWJpbGl0aWVzIG9ubHkgaWYgc2hvd0Fsd2F5cyBpcyBmYWxzZVxuICAgICAgICBpZiAoIW9wdGlvbnMuc2hvd0Fsd2F5cykge1xuICAgICAgICAgICAgY29uc3QgY2sgPSBvcHRpb25zLmNsb3NlV2l0aEtleTtcblxuICAgICAgICAgICAgZXZlbnRCaW5kaW5ncy5wdXNoKFxuXG4gICAgICAgICAgICAgICAgLy8gU2F2ZSBhbmQgaGlkZSAvIHNob3cgcGlja2VyXG4gICAgICAgICAgICAgICAgXy5vbihfcm9vdC5idXR0b24sICdjbGljaycsICgpID0+IHRoaXMuaXNPcGVuKCkgPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdygpKSxcblxuICAgICAgICAgICAgICAgIC8vIENsb3NlIHdpdGggZXNjYXBlIGtleVxuICAgICAgICAgICAgICAgIF8ub24oZG9jdW1lbnQsICdrZXl1cCcsIGUgPT4gdGhpcy5pc09wZW4oKSAmJiAoZS5rZXkgPT09IGNrIHx8IGUuY29kZSA9PT0gY2spICYmIHRoaXMuaGlkZSgpKSxcblxuICAgICAgICAgICAgICAgIC8vIENhbmNlbCBzZWxlY3RpbmcgaWYgdGhlIHVzZXIgdGFwcyBiZWhpbmQgdGhlIGNvbG9yIHBpY2tlclxuICAgICAgICAgICAgICAgIF8ub24oZG9jdW1lbnQsIFsndG91Y2hzdGFydCcsICdtb3VzZWRvd24nXSwgZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3BlbigpICYmICFfLmV2ZW50UGF0aChlKS5zb21lKGVsID0+IGVsID09PSBfcm9vdC5hcHAgfHwgZWwgPT09IF9yb290LmJ1dHRvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge2NhcHR1cmU6IHRydWV9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1ha2UgaW5wdXQgYWRqdXN0YWJsZSBpZiBlbmFibGVkXG4gICAgICAgIGlmIChvcHRpb25zLmFkanVzdGFibGVOdW1iZXJzKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZXMgPSB7XG4gICAgICAgICAgICAgICAgcmdiYTogWzI1NSwgMjU1LCAyNTUsIDFdLFxuICAgICAgICAgICAgICAgIGhzdmE6IFszNjAsIDEwMCwgMTAwLCAxXSxcbiAgICAgICAgICAgICAgICBoc2xhOiBbMzYwLCAxMDAsIDEwMCwgMV0sXG4gICAgICAgICAgICAgICAgY215azogWzEwMCwgMTAwLCAxMDAsIDEwMF1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIF8uYWRqdXN0YWJsZUlucHV0TnVtYmVycyhfcm9vdC5pbnRlcmFjdGlvbi5yZXN1bHQsIChvLCBzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gcmFuZ2VzW3RoaXMuZ2V0Q29sb3JSZXByZXNlbnRhdGlvbigpLnRvTG93ZXJDYXNlKCldO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IHJhbmdlW2luZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgbmV4dCByZWFzb25hYmxlIG51bWJlclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBudiA9IG8gKyAobWF4ID49IDEwMCA/IHN0ZXAgKiAxMDAwIDogc3RlcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQXBwbHkgcmFuZ2Ugb2YgemVybyB1cCB0byBtYXgsIGZpeCBmbG9hdGluZy1wb2ludCBpc3N1ZXNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG52IDw9IDAgPyAwIDogTnVtYmVyKChudiA8IG1heCA/IG52IDogbWF4KS50b1ByZWNpc2lvbigzKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG87XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmF1dG9SZXBvc2l0aW9uICYmICFvcHRpb25zLmlubGluZSkge1xuICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgICAgIC8vIFJlLWNhbGMgcG9zaXRpb24gb24gd2luZG93IHJlc2l6ZSwgc2Nyb2xsIGFuZCB3aGVlbFxuICAgICAgICAgICAgZXZlbnRCaW5kaW5ncy5wdXNoKFxuICAgICAgICAgICAgICAgIF8ub24od2luZG93LCBbJ3Njcm9sbCcsICdyZXNpemUnXSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5pc09wZW4oKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5jbG9zZU9uU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aW1lb3V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGltZW91dCA9IG51bGwsIDEwMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgcG9zaXRpb24gb24gZXZlcnkgZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gcnMoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3JlUG9zaXRpb25pbmdQaWNrZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWVvdXQgIT09IG51bGwpICYmIHJlcXVlc3RBbmltYXRpb25GcmFtZShycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aW1lb3V0ID0gbnVsbCwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtjYXB0dXJlOiB0cnVlfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTYXZlIGJpbmRpbmdzXG4gICAgICAgIHRoaXMuX2V2ZW50QmluZGluZ3MgPSBldmVudEJpbmRpbmdzO1xuICAgIH1cblxuICAgIF9yZVBvc2l0aW9uaW5nUGlja2VyKCkge1xuICAgICAgICBjb25zdCB7b3B0aW9uc30gPSB0aGlzO1xuXG4gICAgICAgIC8vIE5vIHJlcG9zaXRpb25pbmcgbmVlZGVkIGlmIGlubGluZVxuICAgICAgICBpZiAoIW9wdGlvbnMuaW5saW5lKSB7XG4gICAgICAgICAgICBjb25zdCBzdWNjZXNzID0gdGhpcy5fbmFub3BvcC51cGRhdGUoe1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogZG9jdW1lbnQuYm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogb3B0aW9ucy5wb3NpdGlvblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy5fcm9vdC5hcHA7XG4gICAgICAgICAgICAgICAgY29uc3QgZWIgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBlbC5zdHlsZS50b3AgPSBgJHsod2luZG93LmlubmVySGVpZ2h0IC0gZWIuaGVpZ2h0KSAvIDJ9cHhgO1xuICAgICAgICAgICAgICAgIGVsLnN0eWxlLmxlZnQgPSBgJHsod2luZG93LmlubmVyV2lkdGggLSBlYi53aWR0aCkgLyAyfXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIF91cGRhdGVPdXRwdXQoZXZlbnRTb3VyY2UpIHtcbiAgICAgICAgY29uc3Qge19yb290LCBfY29sb3IsIG9wdGlvbnN9ID0gdGhpcztcblxuICAgICAgICAvLyBDaGVjayBpZiBjb21wb25lbnQgaXMgcHJlc2VudFxuICAgICAgICBpZiAoX3Jvb3QuaW50ZXJhY3Rpb24udHlwZSgpKSB7XG5cbiAgICAgICAgICAgIC8vIENvbnN0cnVjdCBmdW5jdGlvbiBuYW1lIGFuZCBjYWxsIGlmIHByZXNlbnRcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IGB0byR7X3Jvb3QuaW50ZXJhY3Rpb24udHlwZSgpLmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJyl9YDtcbiAgICAgICAgICAgIF9yb290LmludGVyYWN0aW9uLnJlc3VsdC52YWx1ZSA9IHR5cGVvZiBfY29sb3JbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJyA/XG4gICAgICAgICAgICAgICAgX2NvbG9yW21ldGhvZF0oKS50b1N0cmluZyhvcHRpb25zLm91dHB1dFByZWNpc2lvbikgOiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcmUgbGlzdGVuZXIgaWYgaW5pdGlhbGl6YXRpb24gaXMgZmluaXNoXG4gICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6aW5nQWN0aXZlICYmIHRoaXMuX3JlY2FsYykge1xuICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2hhbmdlJywgX2NvbG9yLCBldmVudFNvdXJjZSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfY2xlYXJDb2xvcihzaWxlbnQgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB7X3Jvb3QsIG9wdGlvbnN9ID0gdGhpcztcblxuICAgICAgICAvLyBDaGFuZ2Ugb25seSB0aGUgYnV0dG9uIGNvbG9yIGlmIGl0IGlzbid0IGN1c3RvbWl6ZWRcbiAgICAgICAgaWYgKCFvcHRpb25zLnVzZUFzQnV0dG9uKSB7XG4gICAgICAgICAgICBfcm9vdC5idXR0b24uc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgJ3JnYmEoMCwgMCwgMCwgMC4xNSknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF9yb290LmJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdjbGVhcicpO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5zaG93QWx3YXlzKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xhc3RDb2xvciA9IG51bGw7XG4gICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6aW5nQWN0aXZlICYmICFzaWxlbnQpIHtcblxuICAgICAgICAgICAgLy8gRmlyZSBsaXN0ZW5lclxuICAgICAgICAgICAgdGhpcy5fZW1pdCgnc2F2ZScsIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2xlYXInKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9wYXJzZUxvY2FsQ29sb3Ioc3RyKSB7XG4gICAgICAgIGNvbnN0IHt2YWx1ZXMsIHR5cGUsIGF9ID0gcGFyc2VUb0hTVkEoc3RyKTtcbiAgICAgICAgY29uc3Qge2xvY2tPcGFjaXR5fSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgY29uc3QgYWxwaGFNYWtlc0FDaGFuZ2UgPSBhICE9PSB1bmRlZmluZWQgJiYgYSAhPT0gMTtcblxuICAgICAgICAvLyBJZiBubyBvcGFjaXR5IGlzIGFwcGxpZWQsIGFkZCB1bmRlZmluZWQgYXQgdGhlIHZlcnkgZW5kIHdoaWNoIGdldHNcbiAgICAgICAgLy8gU2V0IHRvIDEgaW4gc2V0SFNWQVxuICAgICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIHZhbHVlc1szXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZXM6ICghdmFsdWVzIHx8IChsb2NrT3BhY2l0eSAmJiBhbHBoYU1ha2VzQUNoYW5nZSkpID8gbnVsbCA6IHZhbHVlcyxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfdChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pMThuW2tleV0gfHwgUGlja3IuSTE4Tl9ERUZBVUxUU1trZXldO1xuICAgIH1cblxuICAgIF9lbWl0KGV2ZW50LCAuLi5hcmdzKSB7XG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJbZXZlbnRdLmZvckVhY2goY2IgPT4gY2IoLi4uYXJncywgdGhpcykpO1xuICAgIH1cblxuICAgIG9uKGV2ZW50LCBjYikge1xuICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyW2V2ZW50XS5wdXNoKGNiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgb2ZmKGV2ZW50LCBjYikge1xuICAgICAgICBjb25zdCBjYWxsQmFja3MgPSAodGhpcy5fZXZlbnRMaXN0ZW5lcltldmVudF0gfHwgW10pO1xuICAgICAgICBjb25zdCBpbmRleCA9IGNhbGxCYWNrcy5pbmRleE9mKGNiKTtcblxuICAgICAgICBpZiAofmluZGV4KSB7XG4gICAgICAgICAgICBjYWxsQmFja3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGVuZHMgYSBjb2xvciB0byB0aGUgc3dhdGNoIHBhbGV0dGVcbiAgICAgKiBAcGFyYW0gY29sb3JcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBhZGRTd2F0Y2goY29sb3IpIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlc30gPSB0aGlzLl9wYXJzZUxvY2FsQ29sb3IoY29sb3IpO1xuXG4gICAgICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHtfc3dhdGNoQ29sb3JzLCBfcm9vdH0gPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSBIU1ZhQ29sb3IoLi4udmFsdWVzKTtcblxuICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBzd2F0Y2ggSFRNTEVsZW1lbnRcbiAgICAgICAgICAgIGNvbnN0IGVsID0gXy5jcmVhdGVFbGVtZW50RnJvbVN0cmluZyhcbiAgICAgICAgICAgICAgICBgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCItLXBjci1jb2xvcjogJHtjb2xvci50b1JHQkEoKS50b1N0cmluZygwKX1cIiBhcmlhLWxhYmVsPVwiJHt0aGlzLl90KCdidG46c3dhdGNoJyl9XCIvPmBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEFwcGVuZCBlbGVtZW50IGFuZCBzYXZlIHN3YXRjaCBkYXRhXG4gICAgICAgICAgICBfcm9vdC5zd2F0Y2hlcy5hcHBlbmRDaGlsZChlbCk7XG4gICAgICAgICAgICBfc3dhdGNoQ29sb3JzLnB1c2goe2VsLCBjb2xvcn0pO1xuXG4gICAgICAgICAgICAvLyBCaW5kIGV2ZW50XG4gICAgICAgICAgICB0aGlzLl9ldmVudEJpbmRpbmdzLnB1c2goXG4gICAgICAgICAgICAgICAgXy5vbihlbCwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEhTVkEoLi4uY29sb3IudG9IU1ZBKCksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0KCdzd2F0Y2hzZWxlY3QnLCBjb2xvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQoJ2NoYW5nZScsIGNvbG9yLCAnc3dhdGNoJywgdGhpcyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSBzd2F0Y2ggY29sb3IgYnkgaXQncyBpbmRleFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIHJlbW92ZVN3YXRjaChpbmRleCkge1xuICAgICAgICBjb25zdCBzd2F0Y2hDb2xvciA9IHRoaXMuX3N3YXRjaENvbG9yc1tpbmRleF07XG5cbiAgICAgICAgLy8gQ2hlY2sgc3dhdGNoIGRhdGFcbiAgICAgICAgaWYgKHN3YXRjaENvbG9yKSB7XG4gICAgICAgICAgICBjb25zdCB7ZWx9ID0gc3dhdGNoQ29sb3I7XG5cbiAgICAgICAgICAgIC8vIFJlbW92ZSBIVE1MIGNoaWxkIGFuZCBzd2F0Y2ggZGF0YVxuICAgICAgICAgICAgdGhpcy5fcm9vdC5zd2F0Y2hlcy5yZW1vdmVDaGlsZChlbCk7XG4gICAgICAgICAgICB0aGlzLl9zd2F0Y2hDb2xvcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGFwcGx5Q29sb3Ioc2lsZW50ID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qge3ByZXZpZXcsIGJ1dHRvbn0gPSB0aGlzLl9yb290O1xuXG4gICAgICAgIC8vIENoYW5nZSBwcmV2aWV3IGFuZCBjdXJyZW50IGNvbG9yXG4gICAgICAgIGNvbnN0IGNzc1JHQmFTdHJpbmcgPSB0aGlzLl9jb2xvci50b1JHQkEoKS50b1N0cmluZygwKTtcbiAgICAgICAgcHJldmlldy5sYXN0Q29sb3Iuc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG5cbiAgICAgICAgLy8gQ2hhbmdlIG9ubHkgdGhlIGJ1dHRvbiBjb2xvciBpZiBpdCBpc24ndCBjdXN0b21pemVkXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLnVzZUFzQnV0dG9uKSB7XG4gICAgICAgICAgICBidXR0b24uc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2VyIGNoYW5nZWQgdGhlIGNvbG9yIHNvIHJlbW92ZSB0aGUgY2xlYXIgY2xhc1xuICAgICAgICBidXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnY2xlYXInKTtcblxuICAgICAgICAvLyBTYXZlIGxhc3QgY29sb3JcbiAgICAgICAgdGhpcy5fbGFzdENvbG9yID0gdGhpcy5fY29sb3IuY2xvbmUoKTtcblxuICAgICAgICAvLyBGaXJlIGxpc3RlbmVyXG4gICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6aW5nQWN0aXZlICYmICFzaWxlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXQoJ3NhdmUnLCB0aGlzLl9jb2xvcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95J3MgYWxsIGZ1bmN0aW9uYWxpdHlzXG4gICAgICovXG4gICAgZGVzdHJveSgpIHtcblxuICAgICAgICAvLyBDYW5jZWwgc2V0dXAtZnJhbWUgaWYgc2V0XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NldHVwQW5pbWF0aW9uRnJhbWUpO1xuXG4gICAgICAgIC8vIFVuYmluZCBldmVudHNcbiAgICAgICAgdGhpcy5fZXZlbnRCaW5kaW5ncy5mb3JFYWNoKGFyZ3MgPT4gXy5vZmYoLi4uYXJncykpO1xuXG4gICAgICAgIC8vIERlc3Ryb3kgc3ViLWNvbXBvbmVudHNcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5fY29tcG9uZW50cylcbiAgICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB0aGlzLl9jb21wb25lbnRzW2tleV0uZGVzdHJveSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95J3MgYWxsIGZ1bmN0aW9uYWxpdHlzIGFuZCByZW1vdmVzXG4gICAgICogdGhlIHBpY2tyIGVsZW1lbnQuXG4gICAgICovXG4gICAgZGVzdHJveUFuZFJlbW92ZSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIGNvbnN0IHtyb290LCBhcHB9ID0gdGhpcy5fcm9vdDtcblxuICAgICAgICAvLyBSZW1vdmUgZWxlbWVudFxuICAgICAgICBpZiAocm9vdC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICByb290LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQocm9vdCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW1vdmUgLnBjci1hcHBcbiAgICAgICAgYXBwLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoYXBwKTtcblxuICAgICAgICAvLyBUaGVyZSBhcmUgcmVmZXJlbmNlcyB0byB2YXJpb3VzIERPTSBlbGVtZW50cyBzdG9yZWQgaW4gdGhlIHBpY2tyIGluc3RhbmNlXG4gICAgICAgIC8vIFRoaXMgY2xlYW5zIGFsbCBvZiB0aGVtIHRvIGF2b2lkIGRldGFjaGVkIERPTXNcbiAgICAgICAgT2JqZWN0LmtleXModGhpcylcbiAgICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB0aGlzW2tleV0gPSBudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlcyB0aGUgY29sb3ItcGlja2VyIHVpLlxuICAgICAqL1xuICAgIGhpZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9yb290LmFwcC5jbGFzc0xpc3QucmVtb3ZlKCd2aXNpYmxlJyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdoaWRlJyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyB0aGUgY29sb3ItcGlja2VyIHVpLlxuICAgICAqL1xuICAgIHNob3coKSB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmRpc2FibGVkICYmICF0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9yb290LmFwcC5jbGFzc0xpc3QuYWRkKCd2aXNpYmxlJyk7XG4gICAgICAgICAgICB0aGlzLl9yZVBvc2l0aW9uaW5nUGlja2VyKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdzaG93JywgdGhpcy5fY29sb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gSWYgdGhlIGNvbG9yIHBpY2tlciBpcyBjdXJyZW50bHkgb3BlblxuICAgICAqL1xuICAgIGlzT3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QuYXBwLmNsYXNzTGlzdC5jb250YWlucygndmlzaWJsZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBhIHNwZWNpZmljIGNvbG9yLlxuICAgICAqIEBwYXJhbSBoIEh1ZVxuICAgICAqIEBwYXJhbSBzIFNhdHVyYXRpb25cbiAgICAgKiBAcGFyYW0gdiBWYWx1ZVxuICAgICAqIEBwYXJhbSBhIEFscGhhIGNoYW5uZWwgKDAgLSAxKVxuICAgICAqIEBwYXJhbSBzaWxlbnQgSWYgdGhlIGJ1dHRvbiBzaG91bGQgbm90IGNoYW5nZSB0aGUgY29sb3JcbiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gaWYgdGhlIGNvbG9yIGhhcyBiZWVuIGFjY2VwdGVkXG4gICAgICovXG4gICAgc2V0SFNWQShoID0gMzYwLCBzID0gMCwgdiA9IDAsIGEgPSAxLCBzaWxlbnQgPSBmYWxzZSkge1xuXG4gICAgICAgIC8vIERlYWN0aXZhdGUgY29sb3IgY2FsY3VsYXRpb25cbiAgICAgICAgY29uc3QgcmVjYWxjID0gdGhpcy5fcmVjYWxjOyAvLyBTYXZlIHN0YXRlXG4gICAgICAgIHRoaXMuX3JlY2FsYyA9IGZhbHNlO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIGlucHV0XG4gICAgICAgIGlmIChoIDwgMCB8fCBoID4gMzYwIHx8IHMgPCAwIHx8IHMgPiAxMDAgfHwgdiA8IDAgfHwgdiA+IDEwMCB8fCBhIDwgMCB8fCBhID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3ZlcnJpZGUgY3VycmVudCBjb2xvciBhbmQgcmUtYWN0aXZlIGNvbG9yIGNhbGN1bGF0aW9uXG4gICAgICAgIHRoaXMuX2NvbG9yID0gSFNWYUNvbG9yKGgsIHMsIHYsIGEpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBzbGlkZXIgYW5kIHBhbGV0dGVcbiAgICAgICAgY29uc3Qge2h1ZSwgb3BhY2l0eSwgcGFsZXR0ZX0gPSB0aGlzLl9jb21wb25lbnRzO1xuICAgICAgICBodWUudXBkYXRlKChoIC8gMzYwKSk7XG4gICAgICAgIG9wYWNpdHkudXBkYXRlKGEpO1xuICAgICAgICBwYWxldHRlLnVwZGF0ZShzIC8gMTAwLCAxIC0gKHYgLyAxMDApKTtcblxuICAgICAgICAvLyBDaGVjayBpZiBjYWxsIGlzIHNpbGVudFxuICAgICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUNvbG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGUgb3V0cHV0IGlmIHJlY2FsY3VsYXRpb24gaXMgZW5hYmxlZFxuICAgICAgICBpZiAocmVjYWxjKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVPdXRwdXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlc3RvcmUgb2xkIHN0YXRlXG4gICAgICAgIHRoaXMuX3JlY2FsYyA9IHJlY2FsYztcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gcGFyc2UgYSBzdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGNvbG9yLlxuICAgICAqIEV4YW1wbGVzOiAjZmZmXG4gICAgICogICAgICAgICAgIHJnYiAxMCAxMCAyMDBcbiAgICAgKiAgICAgICAgICAgaHN2YSAxMCAyMCA1IDAuNVxuICAgICAqIEBwYXJhbSBzdHJpbmdcbiAgICAgKiBAcGFyYW0gc2lsZW50XG4gICAgICovXG4gICAgc2V0Q29sb3Ioc3RyaW5nLCBzaWxlbnQgPSBmYWxzZSkge1xuXG4gICAgICAgIC8vIENoZWNrIGlmIG51bGxcbiAgICAgICAgaWYgKHN0cmluZyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fY2xlYXJDb2xvcihzaWxlbnQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7dmFsdWVzLCB0eXBlfSA9IHRoaXMuX3BhcnNlTG9jYWxDb2xvcihzdHJpbmcpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGNvbG9yIGlzIG9rXG4gICAgICAgIGlmICh2YWx1ZXMpIHtcblxuICAgICAgICAgICAgLy8gQ2hhbmdlIHNlbGVjdGVkIGNvbG9yIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgdXR5cGUgPSB0eXBlLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCB7b3B0aW9uc30gPSB0aGlzLl9yb290LmludGVyYWN0aW9uO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gb3B0aW9ucy5maW5kKGVsID0+IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJykgPT09IHV0eXBlKTtcblxuICAgICAgICAgICAgLy8gQXV0byBzZWxlY3Qgb25seSBpZiBub3QgaGlkZGVuXG4gICAgICAgICAgICBpZiAodGFyZ2V0ICYmICF0YXJnZXQuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbCBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLmNsYXNzTGlzdFtlbCA9PT0gdGFyZ2V0ID8gJ2FkZCcgOiAncmVtb3ZlJ10oJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIGNvbG9yIChmaXJlcyAnc2F2ZScgZXZlbnQgaWYgc2lsZW50IGlzICdmYWxzZScpXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2V0SFNWQSguLi52YWx1ZXMsIHNpbGVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSByZXByZXNlbnRhdGlvbiAoZmlyZXMgJ2NoYW5nZScgZXZlbnQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDb2xvclJlcHJlc2VudGF0aW9uKHV0eXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2VzIHRoZSBjb2xvciBfcmVwcmVzZW50YXRpb24uXG4gICAgICogQWxsb3dlZCB2YWx1ZXMgYXJlIEhFWCwgUkdCLCBIU1YsIEhTTCBhbmQgQ01ZS1xuICAgICAqIEBwYXJhbSB0eXBlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IGlmIHRoZSBzZWxlY3RlZCB0eXBlIHdhcyB2YWxpZC5cbiAgICAgKi9cbiAgICBzZXRDb2xvclJlcHJlc2VudGF0aW9uKHR5cGUpIHtcblxuICAgICAgICAvLyBGb3JjZSB1cHBlcmNhc2UgdG8gYWxsb3cgYSBjYXNlLXNlbnNpdGl2IGNvbXBhcmlzb25cbiAgICAgICAgdHlwZSA9IHR5cGUudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAvLyBGaW5kIGJ1dHRvbiB3aXRoIGdpdmVuIHR5cGUgYW5kIHRyaWdnZXIgY2xpY2sgZXZlbnRcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fcm9vdC5pbnRlcmFjdGlvbi5vcHRpb25zXG4gICAgICAgICAgICAuZmluZCh2ID0+IHYuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKS5zdGFydHNXaXRoKHR5cGUpICYmICF2LmNsaWNrKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgY29sb3IgcmVwcmVzZW50YWlvbi4gU2VlIHNldENvbG9yUmVwcmVzZW50YXRpb25cbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBnZXRDb2xvclJlcHJlc2VudGF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVwcmVzZW50YXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgSFNWYUNvbG9yIEN1cnJlbnQgSFNWYUNvbG9yIG9iamVjdC5cbiAgICAgKi9cbiAgICBnZXRDb2xvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjb2xvci5cbiAgICAgKiBAcmV0dXJucyB7e2EsIHRvSFNWQSwgdG9IRVhBLCBzLCB2LCBoLCBjbG9uZSwgdG9DTVlLLCB0b0hTTEEsIHRvUkdCQX19XG4gICAgICovXG4gICAgZ2V0U2VsZWN0ZWRDb2xvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RDb2xvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBUaGUgcm9vdCBIVE1MRWxlbWVudCB3aXRoIGFsbCBoaXMgY29tcG9uZW50cy5cbiAgICAgKi9cbiAgICBnZXRSb290KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNhYmxlIHBpY2tyXG4gICAgICovXG4gICAgZGlzYWJsZSgpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Jvb3QuYnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2Rpc2FibGVkJyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZSBwaWNrclxuICAgICAqL1xuICAgIGVuYWJsZSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3Jvb3QuYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2Rpc2FibGVkJyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cbiIsICIvKiFcbiAqIERldGVybWluZSBpZiBhbiBvYmplY3QgaXMgYSBCdWZmZXJcbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNCdWZmZXIgKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgb2JqLmNvbnN0cnVjdG9yICE9IG51bGwgJiZcbiAgICB0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihvYmopXG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBpc0FycmF5ID0gZnVuY3Rpb24gaXNBcnJheShhcnIpIHtcblx0aWYgKHR5cGVvZiBBcnJheS5pc0FycmF5ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoYXJyKTtcblx0fVxuXG5cdHJldHVybiB0b1N0ci5jYWxsKGFycikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuXG52YXIgaXNQbGFpbk9iamVjdCA9IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG5cdGlmICghb2JqIHx8IHRvU3RyLmNhbGwob2JqKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHR2YXIgaGFzT3duQ29uc3RydWN0b3IgPSBoYXNPd24uY2FsbChvYmosICdjb25zdHJ1Y3RvcicpO1xuXHR2YXIgaGFzSXNQcm90b3R5cGVPZiA9IG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IucHJvdG90eXBlICYmIGhhc093bi5jYWxsKG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsICdpc1Byb3RvdHlwZU9mJyk7XG5cdC8vIE5vdCBvd24gY29uc3RydWN0b3IgcHJvcGVydHkgbXVzdCBiZSBPYmplY3Rcblx0aWYgKG9iai5jb25zdHJ1Y3RvciAmJiAhaGFzT3duQ29uc3RydWN0b3IgJiYgIWhhc0lzUHJvdG90eXBlT2YpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBPd24gcHJvcGVydGllcyBhcmUgZW51bWVyYXRlZCBmaXJzdGx5LCBzbyB0byBzcGVlZCB1cCxcblx0Ly8gaWYgbGFzdCBvbmUgaXMgb3duLCB0aGVuIGFsbCBwcm9wZXJ0aWVzIGFyZSBvd24uXG5cdHZhciBrZXk7XG5cdGZvciAoa2V5IGluIG9iaikgeyAvKiovIH1cblxuXHRyZXR1cm4gdHlwZW9mIGtleSA9PT0gJ3VuZGVmaW5lZCcgfHwgaGFzT3duLmNhbGwob2JqLCBrZXkpO1xufTtcblxuLy8gSWYgbmFtZSBpcyAnX19wcm90b19fJywgYW5kIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBpcyBhdmFpbGFibGUsIGRlZmluZSBfX3Byb3RvX18gYXMgYW4gb3duIHByb3BlcnR5IG9uIHRhcmdldFxudmFyIHNldFByb3BlcnR5ID0gZnVuY3Rpb24gc2V0UHJvcGVydHkodGFyZ2V0LCBvcHRpb25zKSB7XG5cdGlmIChkZWZpbmVQcm9wZXJ0eSAmJiBvcHRpb25zLm5hbWUgPT09ICdfX3Byb3RvX18nKSB7XG5cdFx0ZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBvcHRpb25zLm5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHR2YWx1ZTogb3B0aW9ucy5uZXdWYWx1ZSxcblx0XHRcdHdyaXRhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0dGFyZ2V0W29wdGlvbnMubmFtZV0gPSBvcHRpb25zLm5ld1ZhbHVlO1xuXHR9XG59O1xuXG4vLyBSZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgX19wcm90b19fIGlmICdfX3Byb3RvX18nIGlzIG5vdCBhbiBvd24gcHJvcGVydHlcbnZhciBnZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uIGdldFByb3BlcnR5KG9iaiwgbmFtZSkge1xuXHRpZiAobmFtZSA9PT0gJ19fcHJvdG9fXycpIHtcblx0XHRpZiAoIWhhc093bi5jYWxsKG9iaiwgbmFtZSkpIHtcblx0XHRcdHJldHVybiB2b2lkIDA7XG5cdFx0fSBlbHNlIGlmIChnT1BEKSB7XG5cdFx0XHQvLyBJbiBlYXJseSB2ZXJzaW9ucyBvZiBub2RlLCBvYmpbJ19fcHJvdG9fXyddIGlzIGJ1Z2d5IHdoZW4gb2JqIGhhc1xuXHRcdFx0Ly8gX19wcm90b19fIGFzIGFuIG93biBwcm9wZXJ0eS4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigpIHdvcmtzLlxuXHRcdFx0cmV0dXJuIGdPUEQob2JqLCBuYW1lKS52YWx1ZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb2JqW25hbWVdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBleHRlbmQoKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZTtcblx0dmFyIHRhcmdldCA9IGFyZ3VtZW50c1swXTtcblx0dmFyIGkgPSAxO1xuXHR2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcblx0dmFyIGRlZXAgPSBmYWxzZTtcblxuXHQvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uXG5cdGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnYm9vbGVhbicpIHtcblx0XHRkZWVwID0gdGFyZ2V0O1xuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sxXSB8fCB7fTtcblx0XHQvLyBza2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0aSA9IDI7XG5cdH1cblx0aWYgKHRhcmdldCA9PSBudWxsIHx8ICh0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nKSkge1xuXHRcdHRhcmdldCA9IHt9O1xuXHR9XG5cblx0Zm9yICg7IGkgPCBsZW5ndGg7ICsraSkge1xuXHRcdG9wdGlvbnMgPSBhcmd1bWVudHNbaV07XG5cdFx0Ly8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlc1xuXHRcdGlmIChvcHRpb25zICE9IG51bGwpIHtcblx0XHRcdC8vIEV4dGVuZCB0aGUgYmFzZSBvYmplY3Rcblx0XHRcdGZvciAobmFtZSBpbiBvcHRpb25zKSB7XG5cdFx0XHRcdHNyYyA9IGdldFByb3BlcnR5KHRhcmdldCwgbmFtZSk7XG5cdFx0XHRcdGNvcHkgPSBnZXRQcm9wZXJ0eShvcHRpb25zLCBuYW1lKTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICh0YXJnZXQgIT09IGNvcHkpIHtcblx0XHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0XHRpZiAoZGVlcCAmJiBjb3B5ICYmIChpc1BsYWluT2JqZWN0KGNvcHkpIHx8IChjb3B5SXNBcnJheSA9IGlzQXJyYXkoY29weSkpKSkge1xuXHRcdFx0XHRcdFx0aWYgKGNvcHlJc0FycmF5KSB7XG5cdFx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGlzQXJyYXkoc3JjKSA/IHNyYyA6IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgaXNQbGFpbk9iamVjdChzcmMpID8gc3JjIDoge307XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdFx0c2V0UHJvcGVydHkodGFyZ2V0LCB7IG5hbWU6IG5hbWUsIG5ld1ZhbHVlOiBleHRlbmQoZGVlcCwgY2xvbmUsIGNvcHkpIH0pO1xuXG5cdFx0XHRcdFx0Ly8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlc1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGNvcHkgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdFx0XHRzZXRQcm9wZXJ0eSh0YXJnZXQsIHsgbmFtZTogbmFtZSwgbmV3VmFsdWU6IGNvcHkgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3Rcblx0cmV0dXJuIHRhcmdldDtcbn07XG4iLCAiaW1wb3J0IHsgUGx1Z2luLCBNYXJrZG93blZpZXcsIFdvcmtzcGFjZUxlYWYgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgREVGQVVMVF9TRVRUSU5HUywgTEFOR1VBR0VfSUNPTlNfREFUQSwgQ29kZVN0eWxlclNldHRpbmdzIH0gZnJvbSAnLi9TZXR0aW5ncyc7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYiB9IGZyb20gXCIuL1NldHRpbmdzVGFiXCI7XG5pbXBvcnQgeyByZW1vdmVTdHlsZXNBbmRDbGFzc2VzLCB1cGRhdGVTdHlsaW5nIH0gZnJvbSBcIi4vQXBwbHlTdHlsaW5nXCI7XG5pbXBvcnQgeyBjcmVhdGVDb2RlYmxvY2tDb2RlTWlycm9yRXh0ZW5zaW9ucyB9IGZyb20gXCIuL0VkaXRpbmdWaWV3XCI7XG5pbXBvcnQgeyBkZXN0cm95UmVhZGluZ01vZGVFbGVtZW50cywgZXhlY3V0ZUNvZGVNdXRhdGlvbk9ic2VydmVyLCByZWFkaW5nVmlld0NvZGVibG9ja0RlY29yYXRpbmdQb3N0UHJvY2Vzc29yLCByZWFkaW5nVmlld0lubGluZURlY29yYXRpbmdQb3N0UHJvY2Vzc29yIH0gZnJvbSBcIi4vUmVhZGluZ1ZpZXdcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29kZVN0eWxlclBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cdHNldHRpbmdzOiBDb2RlU3R5bGVyU2V0dGluZ3M7XG5cdGV4ZWN1dGVDb2RlTXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblx0bGFuZ3VhZ2VJY29uczogUmVjb3JkPHN0cmluZyxzdHJpbmc+O1xuXHRzaXplczoge1xuXHRcdGZvbnQ6IHN0cmluZztcblx0XHR6b29tOiBzdHJpbmc7XG5cdH07XG5cdFxuXHRhc3luYyBvbmxvYWQoKSB7XG5cdFx0YXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTsgLy8gTG9hZCBTZXR0aW5nc1xuXHRcdGNvbnN0IHNldHRpbmdzVGFiID0gbmV3IFNldHRpbmdzVGFiKHRoaXMuYXBwLHRoaXMpO1xuXHRcdHRoaXMuYWRkU2V0dGluZ1RhYihzZXR0aW5nc1RhYik7XG5cblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2NvZGUtc3R5bGVyJyk7IC8vIExvYWQgU3R5bGVzXG5cdFx0dXBkYXRlU3R5bGluZyh0aGlzLnNldHRpbmdzLHRoaXMuYXBwKTtcblxuXHRcdHRoaXMubGFuZ3VhZ2VJY29ucyA9IE9iamVjdC5rZXlzKExBTkdVQUdFX0lDT05TX0RBVEEpLnJlZHVjZSgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSwga2V5OiBzdHJpbmcpID0+IHsgLy8gTG9hZCBJY29uc1xuXHRcdFx0cmVzdWx0W2tleV0gPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiPiR7TEFOR1VBR0VfSUNPTlNfREFUQVtrZXldfTwvc3ZnPmBdLCB7IHR5cGU6IFwiaW1hZ2Uvc3ZnK3htbFwiIH0pKTtcblx0XHRcdHJldHVybiByZXN1bHRcblx0XHR9LHt9KTtcblx0XHR0aGlzLnNpemVzID0ge1xuXHRcdFx0Zm9udDogZG9jdW1lbnQuYm9keS5nZXRDc3NQcm9wZXJ0eVZhbHVlKCctLWZvbnQtdGV4dC1zaXplJyksXG5cdFx0XHR6b29tOiBkb2N1bWVudC5ib2R5LmdldENzc1Byb3BlcnR5VmFsdWUoJy0tem9vbS1mYWN0b3InKSxcblx0XHR9O1xuXG5cdFx0dGhpcy5leGVjdXRlQ29kZU11dGF0aW9uT2JzZXJ2ZXIgPSBleGVjdXRlQ29kZU11dGF0aW9uT2JzZXJ2ZXI7IC8vIEFkZCBleGVjdXRlIGNvZGUgbXV0YXRpb24gb2JzZXJ2ZXJcblx0XHRcblx0XHR0aGlzLnJlZ2lzdGVyTWFya2Rvd25Qb3N0UHJvY2Vzc29yKGFzeW5jIChlbCxjdHgpID0+IHthd2FpdCByZWFkaW5nVmlld0NvZGVibG9ja0RlY29yYXRpbmdQb3N0UHJvY2Vzc29yKGVsLGN0eCx0aGlzKX0pOyAvLyBBZGQgY29kZWJsb2NrIGRlY29yYXRpbmcgbWFya2Rvd25Qb3N0UHJvY2Vzc29yXG5cdFx0dGhpcy5yZWdpc3Rlck1hcmtkb3duUG9zdFByb2Nlc3Nvcihhc3luYyAoZWwsY3R4KSA9PiB7YXdhaXQgcmVhZGluZ1ZpZXdJbmxpbmVEZWNvcmF0aW5nUG9zdFByb2Nlc3NvcihlbCxjdHgsdGhpcyl9KTsgLy8gQWRkIGlubGluZSBjb2RlIGRlY29yYXRpbmcgbWFya2Rvd25Qb3N0UHJvY2Vzc29yXG5cblx0XHR0aGlzLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKGNyZWF0ZUNvZGVibG9ja0NvZGVNaXJyb3JFeHRlbnNpb25zKHRoaXMuc2V0dGluZ3MsdGhpcy5sYW5ndWFnZUljb25zKSk7IC8vIEFkZCBjb2RlbWlycm9yIGV4dGVuc2lvbnNcblxuXHRcdGxldCB6b29tVGltZW91dDogTm9kZUpTLlRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57fSk7XG5cdFx0dGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbignY3NzLWNoYW5nZScsKCk9Pntcblx0XHRcdHVwZGF0ZVN0eWxpbmcodGhpcy5zZXR0aW5ncyx0aGlzLmFwcCk7IC8vIFVwZGF0ZSBzdHlsaW5nIG9uIGNzcyBjaGFuZ2VzXG5cdFx0XHRsZXQgY3VycmVudEZvbnRTaXplID0gZG9jdW1lbnQuYm9keS5nZXRDc3NQcm9wZXJ0eVZhbHVlKCctLWZvbnQtdGV4dC1zaXplJyk7XG5cdFx0XHRpZiAodGhpcy5zaXplcy5mb250ICE9PSBjdXJyZW50Rm9udFNpemUpIHtcblx0XHRcdFx0dGhpcy5zaXplcy5mb250ID0gY3VycmVudEZvbnRTaXplO1xuXHRcdFx0XHRjbGVhclRpbWVvdXQoem9vbVRpbWVvdXQpO1xuXHRcdFx0XHR6b29tVGltZW91dCA9IHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0XHR0aGlzLnJlcmVuZGVyUHJldmlldygpOyAvLyBSZS1yZW5kZXIgb24gZm9udCBzaXplIGNoYW5nZXNcblx0XHRcdFx0fSwxMDAwKTtcblx0XHRcdH1cblx0XHR9LHRoaXMpKTtcblx0XHR0aGlzLnJlZ2lzdGVyRXZlbnQodGhpcy5hcHAud29ya3NwYWNlLm9uKCdyZXNpemUnLCgpPT57XG5cdFx0XHRsZXQgY3VycmVudFpvb21TaXplID0gZG9jdW1lbnQuYm9keS5nZXRDc3NQcm9wZXJ0eVZhbHVlKCctLXpvb20tZmFjdG9yJyk7XG5cdFx0XHRpZiAodGhpcy5zaXplcy56b29tICE9PSBjdXJyZW50Wm9vbVNpemUpIHtcblx0XHRcdFx0dGhpcy5zaXplcy56b29tID0gY3VycmVudFpvb21TaXplO1xuXHRcdFx0XHRjbGVhclRpbWVvdXQoem9vbVRpbWVvdXQpO1xuXHRcdFx0XHR6b29tVGltZW91dCA9IHNldFRpbWVvdXQoKCk9Pntcblx0XHRcdFx0XHR0aGlzLnJlcmVuZGVyUHJldmlldygpOyAvLyBSZS1yZW5kZXIgb24gem9vbSBjaGFuZ2VzXG5cdFx0XHRcdH0sMTAwMCk7XG5cdFx0XHR9XG5cdFx0fSx0aGlzKSk7XG5cblx0XHR0aGlzLmFwcC53b3Jrc3BhY2Uub25MYXlvdXRSZWFkeSgoKT0+e3RoaXMucmVyZW5kZXJQcmV2aWV3KCl9KTsgLy8gQWRkIGRlY29yYXRpb24gb24gZW5hYmxpbmcgb2YgcGx1Z2luXG5cblx0XHRjb25zb2xlLmxvZyhcIkxvYWRlZCBwbHVnaW46IENvZGUgU3R5bGVyXCIpO1xuXHR9XG5cdFxuXHRvbnVubG9hZCgpIHtcblx0XHR0aGlzLmV4ZWN1dGVDb2RlTXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG5cdFx0cmVtb3ZlU3R5bGVzQW5kQ2xhc3NlcygpO1xuXHRcdGRlc3Ryb3lSZWFkaW5nTW9kZUVsZW1lbnRzKCk7XG5cdFx0Zm9yIChjb25zdCB1cmwgb2YgT2JqZWN0LnZhbHVlcyh0aGlzLmxhbmd1YWdlSWNvbnMpKSAvLyBVbmxvYWQgaWNvbnNcblx0XHRcdFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcblx0XHRjb25zb2xlLmxvZyhcIlVubG9hZGVkIHBsdWdpbjogQ29kZSBTdHlsZXJcIik7XG5cdH1cblxuXHRhc3luYyBsb2FkU2V0dGluZ3MoKSB7XG5cdFx0dGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHN0cnVjdHVyZWRDbG9uZShERUZBVUxUX1NFVFRJTkdTKSwgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcblx0fVxuXG5cdGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcblx0XHRhd2FpdCB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xuXHRcdHRoaXMuYXBwLndvcmtzcGFjZS51cGRhdGVPcHRpb25zKCk7XG5cdFx0dXBkYXRlU3R5bGluZyh0aGlzLnNldHRpbmdzLHRoaXMuYXBwKTtcblx0fVxuXG5cdHJlcmVuZGVyUHJldmlldygpIHtcblx0XHR0aGlzLmFwcC53b3Jrc3BhY2UuaXRlcmF0ZVJvb3RMZWF2ZXMoKGxlYWY6IFdvcmtzcGFjZUxlYWYpID0+IHtcblx0XHRcdGlmIChsZWFmLnZpZXcgaW5zdGFuY2VvZiBNYXJrZG93blZpZXcgJiYgbGVhZi52aWV3LmdldE1vZGUoKSA9PT0gJ3ByZXZpZXcnKVxuXHRcdFx0XHRsZWFmLnZpZXcucHJldmlld01vZGUucmVyZW5kZXIodHJ1ZSk7XG5cdFx0fSk7XG5cdH1cbn1cbiIsICIvLyBUeXBpbmdcbmV4cG9ydCB0eXBlIEhFWCA9IGAjJHtzdHJpbmd9YDtcbmV4cG9ydCB0eXBlIENTUyA9IGAtLSR7c3RyaW5nfWA7XG5leHBvcnQgdHlwZSBDb2xvdXIgPSBIRVggfCBDU1M7XG5leHBvcnQgdHlwZSBQZXJjZW50YWdlID0gYCR7bnVtYmVyfSVgO1xuZXhwb3J0IHR5cGUgRGlzcGxheSA9IFwibm9uZVwiIHwgXCJpZl9oZWFkZXJfc2hvd25cIiB8IFwiYWx3YXlzXCI7XG5cbi8vIEludGVyZmFjZSBDcmVhdGlvblxuZXhwb3J0IGludGVyZmFjZSBDb2RlU3R5bGVyVGhlbWVNb2RlQ29sb3VycyB7XG5cdGNvZGVibG9jazoge1xuXHRcdGJhY2tncm91bmRDb2xvdXI6IENvbG91cjtcblx0XHR0ZXh0Q29sb3VyOiBDb2xvdXI7XG5cdH0sXG5cdGd1dHRlcjoge1xuXHRcdGJhY2tncm91bmRDb2xvdXI6IENvbG91cjtcblx0XHR0ZXh0Q29sb3VyOiBDb2xvdXI7XG5cdFx0YWN0aXZlVGV4dENvbG91cjogQ29sb3VyO1xuXHR9LFxuXHRoZWFkZXI6IHtcblx0XHRiYWNrZ3JvdW5kQ29sb3VyOiBDb2xvdXI7XG5cdFx0dGl0bGU6IHtcblx0XHRcdHRleHRDb2xvdXI6IENvbG91cjtcblx0XHR9LFxuXHRcdGxhbmd1YWdlVGFnOiB7XG5cdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiBDb2xvdXI7XG5cdFx0XHR0ZXh0Q29sb3VyOiBDb2xvdXI7XG5cdFx0fSxcblx0XHRsaW5lQ29sb3VyOiBDb2xvdXI7XG5cdH0sXG5cdGhpZ2hsaWdodHM6IHtcblx0XHRhY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3VyOiBDb2xvdXI7XG5cdFx0YWN0aXZlRWRpdG9yTGluZUNvbG91cjogQ29sb3VyO1xuXHRcdGRlZmF1bHRDb2xvdXI6IENvbG91cjtcblx0XHRhbHRlcm5hdGl2ZUhpZ2hsaWdodHM6IFJlY29yZDxzdHJpbmcsQ29sb3VyPjtcblx0fSxcblx0aW5saW5lOiB7XG5cdFx0YmFja2dyb3VuZENvbG91cjogQ29sb3VyO1xuXHRcdHRleHRDb2xvdXI6IENvbG91cjtcblx0XHRhY3RpdmVUZXh0Q29sb3VyOiBDb2xvdXI7XG5cdFx0dGl0bGVUZXh0Q29sb3VyOiBDb2xvdXJcblx0fVxuXHRhZHZhbmNlZDoge1xuXHRcdGJ1dHRvbkNvbG91cjogQ29sb3VyO1xuXHRcdGJ1dHRvbkFjdGl2ZUNvbG91cjogQ29sb3VyO1xuXHR9XG59XG5leHBvcnQgaW50ZXJmYWNlIENvZGVTdHlsZXJUaGVtZVNldHRpbmdzIHtcblx0Y29kZWJsb2NrOiB7XG5cdFx0bGluZU51bWJlcnM6IGJvb2xlYW47XG5cdFx0dW53cmFwTGluZXM6IGJvb2xlYW47XG5cdFx0d3JhcExpbmVzQWN0aXZlOiBib29sZWFuO1xuXHRcdGN1cnZhdHVyZTogbnVtYmVyO1xuXHR9LFxuXHRndXR0ZXI6IHtcblx0XHRoaWdobGlnaHQ6IGJvb2xlYW47XG5cdFx0YWN0aXZlTGluZTogYm9vbGVhbjtcblx0fSxcblx0aGVhZGVyOiB7XG5cdFx0dGl0bGU6IHtcblx0XHRcdHRleHRGb250OiBzdHJpbmc7XG5cdFx0XHR0ZXh0Qm9sZDogYm9vbGVhbjtcblx0XHRcdHRleHRJdGFsaWM6IGJvb2xlYW47XG5cdFx0fSxcblx0XHRsYW5ndWFnZVRhZzoge1xuXHRcdFx0ZGlzcGxheTogRGlzcGxheTtcblx0XHRcdHRleHRGb250OiBzdHJpbmc7XG5cdFx0XHR0ZXh0Qm9sZDogYm9vbGVhbjtcblx0XHRcdHRleHRJdGFsaWM6IGJvb2xlYW47XG5cdFx0fSxcblx0XHRsYW5ndWFnZUljb246IHtcblx0XHRcdGRpc3BsYXk6IERpc3BsYXk7XG5cdFx0XHRkaXNwbGF5Q29sb3VyOiBib29sZWFuO1xuXHRcdH0sXG5cdFx0Zm9udFNpemU6IG51bWJlcjtcblx0XHRjb2xsYXBzZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cdH0sXG5cdGhpZ2hsaWdodHM6IHtcblx0XHRhY3RpdmVDb2RlYmxvY2tMaW5lOiBib29sZWFuO1xuXHRcdGFjdGl2ZUVkaXRvckxpbmU6IGJvb2xlYW47XG5cdH0sXG5cdGlubGluZToge1xuXHRcdHN5bnRheEhpZ2hsaWdodDogYm9vbGVhbjtcblx0XHRmb250V2VpZ2h0OiBudW1iZXI7XG5cdFx0Y3VydmF0dXJlOiBudW1iZXI7XG5cdFx0cGFkZGluZ1ZlcnRpY2FsOiBudW1iZXI7XG5cdFx0cGFkZGluZ0hvcml6b250YWw6IG51bWJlcjtcblx0XHRtYXJnaW5Ib3Jpem9udGFsOiBudW1iZXI7XG5cdFx0dGl0bGVGb250V2VpZ2h0OiBudW1iZXI7XG5cdH0sXG5cdGFkdmFuY2VkOiB7XG5cdFx0Z3JhZGllbnRIaWdobGlnaHRzOiBib29sZWFuO1xuXHRcdGdyYWRpZW50SGlnaGxpZ2h0c0NvbG91clN0b3A6IFBlcmNlbnRhZ2U7XG5cdFx0bGFuZ3VhZ2VCb3JkZXJDb2xvdXI6IGJvb2xlYW47XG5cdFx0bGFuZ3VhZ2VCb3JkZXJXaWR0aDogbnVtYmVyO1xuXHRcdGljb25TaXplOiBudW1iZXI7XG5cdH07XG59XG5leHBvcnQgaW50ZXJmYWNlIENvZGVTdHlsZXJUaGVtZUNvbG91cnMge1xuXHRsaWdodDogQ29kZVN0eWxlclRoZW1lTW9kZUNvbG91cnM7XG5cdGRhcms6IENvZGVTdHlsZXJUaGVtZU1vZGVDb2xvdXJzO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2RlU3R5bGVyVGhlbWUge1xuXHRzZXR0aW5nczogQ29kZVN0eWxlclRoZW1lU2V0dGluZ3M7XG5cdGNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnM7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvZGVTdHlsZXJTZXR0aW5ncyB7XG5cdHRoZW1lczogUmVjb3JkPHN0cmluZyxDb2RlU3R5bGVyVGhlbWU+O1xuXHRzZWxlY3RlZFRoZW1lOiBzdHJpbmc7XG5cdGN1cnJlbnRUaGVtZTogQ29kZVN0eWxlclRoZW1lO1xuXHRuZXdUaGVtZTogc3RyaW5nO1xuXHRuZXdIaWdobGlnaHQ6IHN0cmluZztcblx0ZGVjb3JhdGVQcmludDogYm9vbGVhbjtcblx0ZXhjbHVkZWRMYW5ndWFnZXM6IHN0cmluZztcblx0ZXhjbHVkZWRDb2RlYmxvY2tzOiBzdHJpbmc7XG5cdHNwZWNpYWxMYW5ndWFnZXM6IEFycmF5PHN0cmluZz47XG5cdHJlZGlyZWN0TGFuZ3VhZ2VzOiBSZWNvcmQ8c3RyaW5nLHtjb2xvdXI/OiBDb2xvdXIsIGljb24/OiBzdHJpbmd9PlxufVxuXG4vLyBUaGVtZSBEZWZhdWx0c1xuY29uc3QgVEhFTUVfREVGQVVMVF9TRVRUSU5HUzogQ29kZVN0eWxlclRoZW1lU2V0dGluZ3MgPSB7XG5cdGNvZGVibG9jazoge1xuXHRcdGxpbmVOdW1iZXJzOiB0cnVlLFxuXHRcdHVud3JhcExpbmVzOiB0cnVlLFxuXHRcdHdyYXBMaW5lc0FjdGl2ZTogZmFsc2UsXG5cdFx0Y3VydmF0dXJlOiA0LFxuXHR9LFxuXHRndXR0ZXI6IHtcblx0XHRoaWdobGlnaHQ6IHRydWUsXG5cdFx0YWN0aXZlTGluZTogZmFsc2UsXG5cdH0sXG5cdGhlYWRlcjoge1xuXHRcdHRpdGxlOiB7XG5cdFx0XHR0ZXh0Rm9udDogJycsXG5cdFx0XHR0ZXh0Qm9sZDogZmFsc2UsXG5cdFx0XHR0ZXh0SXRhbGljOiB0cnVlLFxuXHRcdH0sXG5cdFx0bGFuZ3VhZ2VUYWc6IHtcblx0XHRcdGRpc3BsYXk6IFwibm9uZVwiLFxuXHRcdFx0dGV4dEZvbnQ6ICcnLFxuXHRcdFx0dGV4dEJvbGQ6IHRydWUsXG5cdFx0XHR0ZXh0SXRhbGljOiBmYWxzZSxcblx0XHR9LFxuXHRcdGxhbmd1YWdlSWNvbjoge1xuXHRcdFx0ZGlzcGxheTogXCJub25lXCIsXG5cdFx0XHRkaXNwbGF5Q29sb3VyOiB0cnVlLFxuXHRcdH0sXG5cdFx0Zm9udFNpemU6IDE0LFxuXHRcdGNvbGxhcHNlUGxhY2Vob2xkZXI6ICcnLFxuXHR9LFxuXHRoaWdobGlnaHRzOiB7XG5cdFx0YWN0aXZlQ29kZWJsb2NrTGluZTogZmFsc2UsXG5cdFx0YWN0aXZlRWRpdG9yTGluZTogZmFsc2UsXG5cdH0sXG5cdGlubGluZToge1xuXHRcdHN5bnRheEhpZ2hsaWdodDogdHJ1ZSxcblx0XHRmb250V2VpZ2h0OiA0LFxuXHRcdGN1cnZhdHVyZTogNixcblx0XHRwYWRkaW5nVmVydGljYWw6IDUsXG5cdFx0cGFkZGluZ0hvcml6b250YWw6IDUsXG5cdFx0bWFyZ2luSG9yaXpvbnRhbDogMCxcblx0XHR0aXRsZUZvbnRXZWlnaHQ6IDgsXG5cdH0sXG5cdGFkdmFuY2VkOiB7XG5cdFx0Z3JhZGllbnRIaWdobGlnaHRzOiBmYWxzZSxcblx0XHRncmFkaWVudEhpZ2hsaWdodHNDb2xvdXJTdG9wOiAnNzAlJyxcblx0XHRsYW5ndWFnZUJvcmRlckNvbG91cjogZmFsc2UsXG5cdFx0bGFuZ3VhZ2VCb3JkZXJXaWR0aDogNSxcblx0XHRpY29uU2l6ZTogMjgsXG5cdH0sXG59XG5leHBvcnQgY29uc3QgVEhFTUVfRkFMTEJBQ0tfQ09MT1VSUzogQ29kZVN0eWxlclRoZW1lTW9kZUNvbG91cnMgPSB7XG5cdGNvZGVibG9jazoge1xuXHRcdGJhY2tncm91bmRDb2xvdXI6ICctLWNvZGUtYmFja2dyb3VuZCcsXG5cdFx0dGV4dENvbG91cjogJy0tY29kZS1ub3JtYWwnLFxuXHR9LFxuXHRndXR0ZXI6IHtcblx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnLS1jb2RlLWJhY2tncm91bmQnLFxuXHRcdHRleHRDb2xvdXI6ICctLXRleHQtZmFpbnQnLFxuXHRcdGFjdGl2ZVRleHRDb2xvdXI6ICctLXRleHQtbXV0ZWQnLFxuXHR9LFxuXHRoZWFkZXI6IHtcblx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnLS1jb2RlLWJhY2tncm91bmQnLFxuXHRcdHRpdGxlOiB7XG5cdFx0XHR0ZXh0Q29sb3VyOiAnLS1jb2RlLWNvbW1lbnQnLFxuXHRcdH0sXG5cdFx0bGFuZ3VhZ2VUYWc6IHtcblx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICctLWNvZGUtYmFja2dyb3VuZCcsXG5cdFx0XHR0ZXh0Q29sb3VyOiAnLS1jb2RlLWNvbW1lbnQnLFxuXHRcdH0sXG5cdFx0bGluZUNvbG91cjogJy0tY29sb3ItYmFzZS0zMCcsXG5cdH0sXG5cdGhpZ2hsaWdodHM6IHtcblx0XHRhY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3VyOiAnLS1jb2xvci1iYXNlLTMwJyxcblx0XHRhY3RpdmVFZGl0b3JMaW5lQ29sb3VyOiAnLS1jb2xvci1iYXNlLTIwJyxcblx0XHRkZWZhdWx0Q29sb3VyOiAnLS10ZXh0LWhpZ2hsaWdodC1iZycsXG5cdFx0YWx0ZXJuYXRpdmVIaWdobGlnaHRzOiB7fSxcblx0fSxcblx0aW5saW5lOiB7XG5cdFx0YmFja2dyb3VuZENvbG91cjogJy0tY29kZS1iYWNrZ3JvdW5kJyxcblx0XHR0ZXh0Q29sb3VyOiAnLS1jb2RlLW5vcm1hbCcsXG5cdFx0YWN0aXZlVGV4dENvbG91cjogJy0tY29kZS1ub3JtYWwnLFxuXHRcdHRpdGxlVGV4dENvbG91cjogJy0tY29kZS1jb21tZW50Jyxcblx0fSxcblx0YWR2YW5jZWQ6IHtcblx0XHRidXR0b25Db2xvdXI6ICctLXRleHQtbXV0ZWQnLFxuXHRcdGJ1dHRvbkFjdGl2ZUNvbG91cjogJy0tdGV4dC1ub3JtYWwnLFxuXHR9XG59XG5cbi8vIFRoZW1lIENyZWF0aW9uXG5jb25zdCBERUZBVUxUX1RIRU1FOiBDb2RlU3R5bGVyVGhlbWUgPSB7XG5cdHNldHRpbmdzOiBUSEVNRV9ERUZBVUxUX1NFVFRJTkdTLFxuXHRjb2xvdXJzOiB7XG5cdFx0bGlnaHQ6IFRIRU1FX0ZBTExCQUNLX0NPTE9VUlMsXG5cdFx0ZGFyazogVEhFTUVfRkFMTEJBQ0tfQ09MT1VSUyxcblx0fSxcbn1cbmNvbnN0IFNPTEFSSVpFRF9USEVNRTogQ29kZVN0eWxlclRoZW1lID0ge1xuXHRzZXR0aW5nczogVEhFTUVfREVGQVVMVF9TRVRUSU5HUyxcblx0Y29sb3Vyczoge1xuXHRcdGxpZ2h0OiB7XG5cdFx0XHRjb2RlYmxvY2s6IHtcblx0XHRcdFx0YmFja2dyb3VuZENvbG91cjogJyNGQ0Y2RTQnLFxuXHRcdFx0XHR0ZXh0Q29sb3VyOiAnI2JhYmFiYScsXG5cdFx0XHR9LFxuXHRcdFx0Z3V0dGVyOiB7XG5cdFx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICcjRURFOEQ2Jyxcblx0XHRcdFx0dGV4dENvbG91cjogJyM2YzZjNmMnLFxuXHRcdFx0XHRhY3RpdmVUZXh0Q29sb3VyOiAnIzhjOGM4YycsXG5cdFx0XHR9LFxuXHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICcjRDVDQ0I0Jyxcblx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHR0ZXh0Q29sb3VyOiAnIzg2NjcwNCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGxhbmd1YWdlVGFnOiB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZENvbG91cjogJyNCOEI1QUEnLFxuXHRcdFx0XHRcdHRleHRDb2xvdXI6ICcjQzI1RjMwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0bGluZUNvbG91cjogJyNFREQ0ODknLFxuXHRcdFx0fSxcblx0XHRcdGhpZ2hsaWdodHM6IHtcblx0XHRcdFx0YWN0aXZlQ29kZWJsb2NrTGluZUNvbG91cjogJyNFREU4RDYnLFxuXHRcdFx0XHRhY3RpdmVFZGl0b3JMaW5lQ29sb3VyOiAnIzYwNDYwNjMzJyxcblx0XHRcdFx0ZGVmYXVsdENvbG91cjogJyNFOURGQkEnLFxuXHRcdFx0XHRhbHRlcm5hdGl2ZUhpZ2hsaWdodHM6IHt9LFxuXHRcdFx0fSxcblx0XHRcdGlubGluZToge1xuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnI0ZDRjZFNCcsXG5cdFx0XHRcdHRleHRDb2xvdXI6ICcjYmFiYWJhJyxcblx0XHRcdFx0YWN0aXZlVGV4dENvbG91cjogJyNiYWJhYmEnLFxuXHRcdFx0XHR0aXRsZVRleHRDb2xvdXI6ICcjQzI1RjMwJyxcblx0XHRcdH0sXG5cdFx0XHRhZHZhbmNlZDoge1xuXHRcdFx0XHRidXR0b25Db2xvdXI6ICctLXRleHQtbXV0ZWQnLFxuXHRcdFx0XHRidXR0b25BY3RpdmVDb2xvdXI6ICctLXRleHQtbm9ybWFsJyxcblx0XHRcdH1cblx0XHR9LFxuXHRcdGRhcms6IHtcblx0XHRcdGNvZGVibG9jazoge1xuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnIzAwMmIzNicsXG5cdFx0XHRcdHRleHRDb2xvdXI6ICcjYmFiYWJhJyxcblx0XHRcdH0sXG5cdFx0XHRndXR0ZXI6IHtcblx0XHRcdFx0YmFja2dyb3VuZENvbG91cjogJyMwNzM2NDInLFxuXHRcdFx0XHR0ZXh0Q29sb3VyOiAnIzZjNmM2YycsXG5cdFx0XHRcdGFjdGl2ZVRleHRDb2xvdXI6ICcjNGM0YzRjJyxcblx0XHRcdH0sXG5cdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0YmFja2dyb3VuZENvbG91cjogJyMwYTQ1NTQnLFxuXHRcdFx0XHR0aXRsZToge1xuXHRcdFx0XHRcdHRleHRDb2xvdXI6ICcjZGFkYWRhJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0bGFuZ3VhZ2VUYWc6IHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnIzAwODA4MCcsXG5cdFx0XHRcdFx0dGV4dENvbG91cjogJyMwMDAwMDAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRsaW5lQ29sb3VyOiAnIzQ2Y2NlZCcsXG5cdFx0XHR9LFxuXHRcdFx0aGlnaGxpZ2h0czoge1xuXHRcdFx0XHRhY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3VyOiAnIzA3MzY0MicsXG5cdFx0XHRcdGFjdGl2ZUVkaXRvckxpbmVDb2xvdXI6ICcjNDY4ZWViMzMnLFxuXHRcdFx0XHRkZWZhdWx0Q29sb3VyOiAnIzA1NGI1YycsXG5cdFx0XHRcdGFsdGVybmF0aXZlSGlnaGxpZ2h0czoge30sXG5cdFx0XHR9LFxuXHRcdFx0aW5saW5lOiB7XG5cdFx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICcjMDAyYjM2Jyxcblx0XHRcdFx0dGV4dENvbG91cjogJyNiYWJhYmEnLFxuXHRcdFx0XHRhY3RpdmVUZXh0Q29sb3VyOiAnI2JhYmFiYScsXG5cdFx0XHRcdHRpdGxlVGV4dENvbG91cjogJyMwMDAwMDAnLFxuXHRcdFx0fSxcblx0XHRcdGFkdmFuY2VkOiB7XG5cdFx0XHRcdGJ1dHRvbkNvbG91cjogJy0tdGV4dC1tdXRlZCcsXG5cdFx0XHRcdGJ1dHRvbkFjdGl2ZUNvbG91cjogJy0tdGV4dC1ub3JtYWwnLFxuXHRcdFx0fVxuXHRcdH0sXG5cdH0sXG59XG5cbi8vIFBsdWdpbiBkZWZhdWx0IHNldHRpbmdzXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogQ29kZVN0eWxlclNldHRpbmdzID0ge1xuXHR0aGVtZXM6IHtcblx0XHQnRGVmYXVsdCc6IERFRkFVTFRfVEhFTUUsXG5cdFx0J1NvbGFyaXplZCc6IFNPTEFSSVpFRF9USEVNRSxcblx0fSxcblx0c2VsZWN0ZWRUaGVtZTogJ0RlZmF1bHQnLFxuXHRjdXJyZW50VGhlbWU6IHN0cnVjdHVyZWRDbG9uZShERUZBVUxUX1RIRU1FKSxcblx0bmV3VGhlbWU6ICcnLFxuXHRuZXdIaWdobGlnaHQ6ICcnLFxuXHRkZWNvcmF0ZVByaW50OiB0cnVlLFxuXHRleGNsdWRlZExhbmd1YWdlczogXCJhZC0qXCIsXG5cdGV4Y2x1ZGVkQ29kZWJsb2NrczogXCJkYXRhdmlldywgZGF0YXZpZXdqcywgbWF0aFwiLFxuXHRzcGVjaWFsTGFuZ3VhZ2VzOiBbXCJecHJldmlldyRcIixcIl5pbmNsdWRlJFwiLFwiXm91dHB1dCRcIixcIl5ydW4tLiskXCJdLFxuXHRyZWRpcmVjdExhbmd1YWdlczoge30sXG59XG5cbi8vIENvbnN0YW50c1xuZXhwb3J0IGNvbnN0IFBBUkFNRVRFUlMgPSBbJ3RpdGxlJywnZm9sZCcsJ2xuJywndW53cmFwJywnaWdub3JlJ107XG5leHBvcnQgY29uc3QgVFJBTlNJVElPTl9MRU5HVEggPSAyNDA7IC8vIDI0MG1zXG5cbmNvbnN0IFBSSVNNX0xBTkdVQUdFUzoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7IC8vIFByaXNtIExhbmd1YWdlczogaHR0cHM6Ly9wcmlzbWpzLmNvbS9wbHVnaW5zL3Nob3ctbGFuZ3VhZ2UvXG5cdC8vIFwibm9uZVwiOiBcIlBsYWluIHRleHRcIiwgLy8gTk9URTogT2JzaWRpYW4gdXNlcyB0aGlzIGZvciBjb2RlYmxvY2tzIHdpdGhvdXQgbGFuZ3VhZ2UgbmFtZXNcblx0XCJwbGFpblwiOiBcIlBsYWluIHRleHRcIixcblx0XCJwbGFpbnRleHRcIjogXCJQbGFpbiB0ZXh0XCIsXG5cdFwidGV4dFwiOiBcIlBsYWluIHRleHRcIixcblx0XCJ0eHRcIjogXCJQbGFpbiB0ZXh0XCIsXG5cdFwiaHRtbFwiOiBcIkhUTUxcIixcblx0XCJ4bWxcIjogXCJYTUxcIixcblx0XCJzdmdcIjogXCJTVkdcIixcblx0XCJtYXRobWxcIjogXCJNYXRoTUxcIixcblx0XCJzc21sXCI6IFwiU1NNTFwiLFxuXHRcInJzc1wiOiBcIlJTU1wiLFxuXHRcImNzc1wiOiBcIkNTU1wiLFxuXHRcImNsaWtlXCI6IFwiQy1saWtlXCIsXG5cdFwianNcIjogXCJKYXZhU2NyaXB0XCIsXG5cdFwiYWJhcFwiOiBcIkFCQVBcIixcblx0XCJhYm5mXCI6IFwiQUJORlwiLFxuXHRcImFsXCI6IFwiQUxcIixcblx0XCJhbnRscjRcIjogXCJBTlRMUjRcIixcblx0XCJnNFwiOiBcIkFOVExSNFwiLFxuXHRcImFwYWNoZWNvbmZcIjogXCJBcGFjaGUgQ29uZmlndXJhdGlvblwiLFxuXHRcImFwbFwiOiBcIkFQTFwiLFxuXHRcImFxbFwiOiBcIkFRTFwiLFxuXHRcImlub1wiOiBcIkFyZHVpbm9cIixcblx0XCJhcmZmXCI6IFwiQVJGRlwiLFxuXHRcImFybWFzbVwiOiBcIkFSTSBBc3NlbWJseVwiLFxuXHRcImFybS1hc21cIjogXCJBUk0gQXNzZW1ibHlcIixcblx0XCJhcnRcIjogXCJBcnR1cm9cIixcblx0XCJhc2NpaWRvY1wiOiBcIkFzY2lpRG9jXCIsXG5cdFwiYWRvY1wiOiBcIkFzY2lpRG9jXCIsXG5cdFwiYXNwbmV0XCI6IFwiQVNQLk5FVCAoQyMpXCIsXG5cdFwiYXNtNjUwMlwiOiBcIjY1MDIgQXNzZW1ibHlcIixcblx0XCJhc21hdG1lbFwiOiBcIkF0bWVsIEFWUiBBc3NlbWJseVwiLFxuXHRcImF1dG9ob3RrZXlcIjogXCJBdXRvSG90a2V5XCIsXG5cdFwiYXV0b2l0XCI6IFwiQXV0b0l0XCIsXG5cdFwiYXZpc3ludGhcIjogXCJBdmlTeW50aFwiLFxuXHRcImF2c1wiOiBcIkF2aVN5bnRoXCIsXG5cdFwiYXZyby1pZGxcIjogXCJBdnJvIElETFwiLFxuXHRcImF2ZGxcIjogXCJBdnJvIElETFwiLFxuXHRcImF3a1wiOiBcIkFXS1wiLFxuXHRcImdhd2tcIjogXCJHQVdLXCIsXG5cdFwic2hcIjogXCJTaGVsbFwiLFxuXHRcImJhc2ljXCI6IFwiQkFTSUNcIixcblx0XCJiYmNvZGVcIjogXCJCQmNvZGVcIixcblx0XCJiYmpcIjogXCJCQmpcIixcblx0XCJibmZcIjogXCJCTkZcIixcblx0XCJyYm5mXCI6IFwiUkJORlwiLFxuXHRcImJxblwiOiBcIkJRTlwiLFxuXHRcImJzbFwiOiBcIkJTTCAoMUM6RW50ZXJwcmlzZSlcIixcblx0XCJvc2NyaXB0XCI6IFwiT25lU2NyaXB0XCIsXG5cdFwiY3NoYXJwXCI6IFwiQyNcIixcblx0XCJjc1wiOiBcIkMjXCIsXG5cdFwiZG90bmV0XCI6IFwiQyNcIixcblx0XCJjcHBcIjogXCJDKytcIixcblx0XCJjZnNjcmlwdFwiOiBcIkNGU2NyaXB0XCIsXG5cdFwiY2ZjXCI6IFwiQ0ZTY3JpcHRcIixcblx0XCJjaWxcIjogXCJDSUxcIixcblx0XCJjaWxrY1wiOiBcIkNpbGsvQ1wiLFxuXHRcImNpbGstY1wiOiBcIkNpbGsvQ1wiLFxuXHRcImNpbGtjcHBcIjogXCJDaWxrL0MrK1wiLFxuXHRcImNpbGstY3BwXCI6IFwiQ2lsay9DKytcIixcblx0XCJjaWxrXCI6IFwiQ2lsay9DKytcIixcblx0XCJjbWFrZVwiOiBcIkNNYWtlXCIsXG5cdFwiY29ib2xcIjogXCJDT0JPTFwiLFxuXHRcImNvZmZlZVwiOiBcIkNvZmZlZVNjcmlwdFwiLFxuXHRcImNvbmNcIjogXCJDb25jdXJuYXNcIixcblx0XCJjc3BcIjogXCJDb250ZW50LVNlY3VyaXR5LVBvbGljeVwiLFxuXHRcImNzcy1leHRyYXNcIjogXCJDU1MgRXh0cmFzXCIsXG5cdFwiY3N2XCI6IFwiQ1NWXCIsXG5cdFwiY3VlXCI6IFwiQ1VFXCIsXG5cdFwiZGF0YXdlYXZlXCI6IFwiRGF0YVdlYXZlXCIsXG5cdFwiZGF4XCI6IFwiREFYXCIsXG5cdFwiZGphbmdvXCI6IFwiRGphbmdvL0ppbmphMlwiLFxuXHRcImppbmphMlwiOiBcIkRqYW5nby9KaW5qYTJcIixcblx0XCJkbnMtem9uZS1maWxlXCI6IFwiRE5TIHpvbmUgZmlsZVwiLFxuXHRcImRucy16b25lXCI6IFwiRE5TIHpvbmUgZmlsZVwiLFxuXHRcImRvY2tlcmZpbGVcIjogXCJEb2NrZXJcIixcblx0XCJkb3RcIjogXCJET1QgKEdyYXBodml6KVwiLFxuXHRcImd2XCI6IFwiRE9UIChHcmFwaHZpeilcIixcblx0XCJlYm5mXCI6IFwiRUJORlwiLFxuXHRcImVkaXRvcmNvbmZpZ1wiOiBcIkVkaXRvckNvbmZpZ1wiLFxuXHRcImVqc1wiOiBcIkVKU1wiLFxuXHRcImV0bHVhXCI6IFwiRW1iZWRkZWQgTHVhIHRlbXBsYXRpbmdcIixcblx0XCJlcmJcIjogXCJFUkJcIixcblx0XCJleGNlbC1mb3JtdWxhXCI6IFwiRXhjZWwgRm9ybXVsYVwiLFxuXHRcInhsc3hcIjogXCJFeGNlbCBGb3JtdWxhXCIsXG5cdFwieGxzXCI6IFwiRXhjZWwgRm9ybXVsYVwiLFxuXHRcImZzaGFycFwiOiBcIkYjXCIsXG5cdFwiZmlyZXN0b3JlLXNlY3VyaXR5LXJ1bGVzXCI6IFwiRmlyZXN0b3JlIHNlY3VyaXR5IHJ1bGVzXCIsXG5cdFwiZnRsXCI6IFwiRnJlZU1hcmtlciBUZW1wbGF0ZSBMYW5ndWFnZVwiLFxuXHRcImdtbFwiOiBcIkdhbWVNYWtlciBMYW5ndWFnZVwiLFxuXHRcImdhbWVtYWtlcmxhbmd1YWdlXCI6IFwiR2FtZU1ha2VyIExhbmd1YWdlXCIsXG5cdFwiZ2FwXCI6IFwiR0FQIChDQVMpXCIsXG5cdFwiZ2NvZGVcIjogXCJHLWNvZGVcIixcblx0XCJnZHNjcmlwdFwiOiBcIkdEU2NyaXB0XCIsXG5cdFwiZ2VkY29tXCI6IFwiR0VEQ09NXCIsXG5cdFwiZ2V0dGV4dFwiOiBcImdldHRleHRcIixcblx0XCJwb1wiOiBcImdldHRleHRcIixcblx0XCJnbHNsXCI6IFwiR0xTTFwiLFxuXHRcImduXCI6IFwiR05cIixcblx0XCJnbmlcIjogXCJHTlwiLFxuXHRcImxpbmtlci1zY3JpcHRcIjogXCJHTlUgTGlua2VyIFNjcmlwdFwiLFxuXHRcImxkXCI6IFwiR05VIExpbmtlciBTY3JpcHRcIixcblx0XCJnby1tb2R1bGVcIjogXCJHbyBtb2R1bGVcIixcblx0XCJnby1tb2RcIjogXCJHbyBtb2R1bGVcIixcblx0XCJncmFwaHFsXCI6IFwiR3JhcGhRTFwiLFxuXHRcImhic1wiOiBcIkhhbmRsZWJhcnNcIixcblx0XCJoc1wiOiBcIkhhc2tlbGxcIixcblx0XCJoY2xcIjogXCJIQ0xcIixcblx0XCJobHNsXCI6IFwiSExTTFwiLFxuXHRcImh0dHBcIjogXCJIVFRQXCIsXG5cdFwiaHBrcFwiOiBcIkhUVFAgUHVibGljLUtleS1QaW5zXCIsXG5cdFwiaHN0c1wiOiBcIkhUVFAgU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eVwiLFxuXHRcImljaGlnb2phbVwiOiBcIkljaGlnb0phbVwiLFxuXHRcImljdS1tZXNzYWdlLWZvcm1hdFwiOiBcIklDVSBNZXNzYWdlIEZvcm1hdFwiLFxuXHRcImlkclwiOiBcIklkcmlzXCIsXG5cdFwiaWdub3JlXCI6IFwiLmlnbm9yZVwiLFxuXHRcImdpdGlnbm9yZVwiOiBcIi5naXRpZ25vcmVcIixcblx0XCJoZ2lnbm9yZVwiOiBcIi5oZ2lnbm9yZVwiLFxuXHRcIm5wbWlnbm9yZVwiOiBcIi5ucG1pZ25vcmVcIixcblx0XCJpbmZvcm03XCI6IFwiSW5mb3JtIDdcIixcblx0XCJqYXZhZG9jXCI6IFwiSmF2YURvY1wiLFxuXHRcImphdmFkb2NsaWtlXCI6IFwiSmF2YURvYy1saWtlXCIsXG5cdFwiamF2YXN0YWNrdHJhY2VcIjogXCJKYXZhIHN0YWNrIHRyYWNlXCIsXG5cdFwianFcIjogXCJKUVwiLFxuXHRcImpzZG9jXCI6IFwiSlNEb2NcIixcblx0XCJqcy1leHRyYXNcIjogXCJKUyBFeHRyYXNcIixcblx0XCJqc29uXCI6IFwiSlNPTlwiLFxuXHRcIndlYm1hbmlmZXN0XCI6IFwiV2ViIEFwcCBNYW5pZmVzdFwiLFxuXHRcImpzb241XCI6IFwiSlNPTjVcIixcblx0XCJqc29ucFwiOiBcIkpTT05QXCIsXG5cdFwianNzdGFja3RyYWNlXCI6IFwiSlMgc3RhY2sgdHJhY2VcIixcblx0XCJqcy10ZW1wbGF0ZXNcIjogXCJKUyBUZW1wbGF0ZXNcIixcblx0XCJrZWVwYWxpdmVkXCI6IFwiS2VlcGFsaXZlZCBDb25maWd1cmVcIixcblx0XCJrdHNcIjogXCJLb3RsaW4gU2NyaXB0XCIsXG5cdFwia3RcIjogXCJLb3RsaW5cIixcblx0XCJrdW1pclwiOiBcIkt1TWlyIChcdTA0MUFcdTA0NDNcdTA0MUNcdTA0MzhcdTA0NDApXCIsXG5cdFwia3VtXCI6IFwiS3VNaXIgKFx1MDQxQVx1MDQ0M1x1MDQxQ1x1MDQzOFx1MDQ0MClcIixcblx0XCJsYXRleFwiOiBcIkxhVGVYXCIsXG5cdFwidGV4XCI6IFwiVGVYXCIsXG5cdFwiY29udGV4dFwiOiBcIkNvblRlWHRcIixcblx0XCJsaWx5cG9uZFwiOiBcIkxpbHlQb25kXCIsXG5cdFwibHlcIjogXCJMaWx5UG9uZFwiLFxuXHRcImVtYWNzXCI6IFwiTGlzcFwiLFxuXHRcImVsaXNwXCI6IFwiTGlzcFwiLFxuXHRcImVtYWNzLWxpc3BcIjogXCJMaXNwXCIsXG5cdFwibGx2bVwiOiBcIkxMVk0gSVJcIixcblx0XCJsb2dcIjogXCJMb2cgZmlsZVwiLFxuXHRcImxvbGNvZGVcIjogXCJMT0xDT0RFXCIsXG5cdFwibWFnbWFcIjogXCJNYWdtYSAoQ0FTKVwiLFxuXHRcIm1kXCI6IFwiTWFya2Rvd25cIixcblx0XCJtYXJrdXAtdGVtcGxhdGluZ1wiOiBcIk1hcmt1cCB0ZW1wbGF0aW5nXCIsXG5cdFwibWF0bGFiXCI6IFwiTUFUTEFCXCIsXG5cdFwibWF4c2NyaXB0XCI6IFwiTUFYU2NyaXB0XCIsXG5cdFwibWVsXCI6IFwiTUVMXCIsXG5cdFwibWV0YWZvbnRcIjogXCJNRVRBRk9OVFwiLFxuXHRcIm1vbmdvZGJcIjogXCJNb25nb0RCXCIsXG5cdFwibW9vblwiOiBcIk1vb25TY3JpcHRcIixcblx0XCJuMXFsXCI6IFwiTjFRTFwiLFxuXHRcIm40anNcIjogXCJONEpTXCIsXG5cdFwibjRqc2RcIjogXCJONEpTXCIsXG5cdFwibmFuZDJ0ZXRyaXMtaGRsXCI6IFwiTmFuZCBUbyBUZXRyaXMgSERMXCIsXG5cdFwibmFuaXNjcmlwdFwiOiBcIk5hbmlub3ZlbCBTY3JpcHRcIixcblx0XCJuYW5pXCI6IFwiTmFuaW5vdmVsIFNjcmlwdFwiLFxuXHRcIm5hc21cIjogXCJOQVNNXCIsXG5cdFwibmVvblwiOiBcIk5FT05cIixcblx0XCJuZ2lueFwiOiBcIm5naW54XCIsXG5cdFwibnNpc1wiOiBcIk5TSVNcIixcblx0XCJvYmplY3RpdmVjXCI6IFwiT2JqZWN0aXZlLUNcIixcblx0XCJvYmpjXCI6IFwiT2JqZWN0aXZlLUNcIixcblx0XCJvY2FtbFwiOiBcIk9DYW1sXCIsXG5cdFwib3BlbmNsXCI6IFwiT3BlbkNMXCIsXG5cdFwib3BlbnFhc21cIjogXCJPcGVuUWFzbVwiLFxuXHRcInFhc21cIjogXCJPcGVuUWFzbVwiLFxuXHRcInBhcmlncFwiOiBcIlBBUkkvR1BcIixcblx0XCJvYmplY3RwYXNjYWxcIjogXCJPYmplY3QgUGFzY2FsXCIsXG5cdFwicHNsXCI6IFwiUEFUUk9MIFNjcmlwdGluZyBMYW5ndWFnZVwiLFxuXHRcInBjYXhpc1wiOiBcIlBDLUF4aXNcIixcblx0XCJweFwiOiBcIlBDLUF4aXNcIixcblx0XCJwZW9wbGVjb2RlXCI6IFwiUGVvcGxlQ29kZVwiLFxuXHRcInBjb2RlXCI6IFwiUGVvcGxlQ29kZVwiLFxuXHRcInBocFwiOiBcIlBIUFwiLFxuXHRcInBocGRvY1wiOiBcIlBIUERvY1wiLFxuXHRcInBocC1leHRyYXNcIjogXCJQSFAgRXh0cmFzXCIsXG5cdFwicGxhbnQtdW1sXCI6IFwiUGxhbnRVTUxcIixcblx0XCJwbGFudHVtbFwiOiBcIlBsYW50VU1MXCIsXG5cdFwicGxzcWxcIjogXCJQTC9TUUxcIixcblx0XCJwb3dlcnF1ZXJ5XCI6IFwiUG93ZXJRdWVyeVwiLFxuXHRcInBxXCI6IFwiUG93ZXJRdWVyeVwiLFxuXHRcIm1zY3JpcHRcIjogXCJQb3dlclF1ZXJ5XCIsXG5cdFwicG93ZXJzaGVsbFwiOiBcIlBvd2VyU2hlbGxcIixcblx0XCJwcm9tcWxcIjogXCJQcm9tUUxcIixcblx0XCJwcm9wZXJ0aWVzXCI6IFwiLnByb3BlcnRpZXNcIixcblx0XCJwcm90b2J1ZlwiOiBcIlByb3RvY29sIEJ1ZmZlcnNcIixcblx0XCJwdXJlYmFzaWNcIjogXCJQdXJlQmFzaWNcIixcblx0XCJwYmZhc21cIjogXCJQdXJlQmFzaWNcIixcblx0XCJwdXJzXCI6IFwiUHVyZVNjcmlwdFwiLFxuXHRcInB5XCI6IFwiUHl0aG9uXCIsXG5cdFwicXNoYXJwXCI6IFwiUSNcIixcblx0XCJxc1wiOiBcIlEjXCIsXG5cdFwicVwiOiBcIlEgKGtkYisgZGF0YWJhc2UpXCIsXG5cdFwicW1sXCI6IFwiUU1MXCIsXG5cdFwicmt0XCI6IFwiUmFja2V0XCIsXG5cdFwiY3NodG1sXCI6IFwiUmF6b3IgQyNcIixcblx0XCJyYXpvclwiOiBcIlJhem9yIEMjXCIsXG5cdFwianN4XCI6IFwiUmVhY3QgSlNYXCIsXG5cdFwidHN4XCI6IFwiUmVhY3QgVFNYXCIsXG5cdFwicmVucHlcIjogXCJSZW4ncHlcIixcblx0XCJycHlcIjogXCJSZW4ncHlcIixcblx0XCJyZXNcIjogXCJSZVNjcmlwdFwiLFxuXHRcInJlc3RcIjogXCJyZVNUIChyZVN0cnVjdHVyZWRUZXh0KVwiLFxuXHRcInJvYm90ZnJhbWV3b3JrXCI6IFwiUm9ib3QgRnJhbWV3b3JrXCIsXG5cdFwicm9ib3RcIjogXCJSb2JvdCBGcmFtZXdvcmtcIixcblx0XCJyYlwiOiBcIlJ1YnlcIixcblx0XCJzYXNcIjogXCJTQVNcIixcblx0XCJzYXNzXCI6IFwiU2FzcyAoU2FzcylcIixcblx0XCJzY3NzXCI6IFwiU2FzcyAoU0NTUylcIixcblx0XCJzaGVsbC1zZXNzaW9uXCI6IFwiU2hlbGwgc2Vzc2lvblwiLFxuXHRcInNoLXNlc3Npb25cIjogXCJTaGVsbCBzZXNzaW9uXCIsXG5cdFwic2hlbGxzZXNzaW9uXCI6IFwiU2hlbGwgc2Vzc2lvblwiLFxuXHRcInNtbFwiOiBcIlNNTFwiLFxuXHRcInNtbG5qXCI6IFwiU01ML05KXCIsXG5cdFwic29saWRpdHlcIjogXCJTb2xpZGl0eSAoRXRoZXJldW0pXCIsXG5cdFwic29sXCI6IFwiU29saWRpdHkgKEV0aGVyZXVtKVwiLFxuXHRcInNvbHV0aW9uLWZpbGVcIjogXCJTb2x1dGlvbiBmaWxlXCIsXG5cdFwic2xuXCI6IFwiU29sdXRpb24gZmlsZVwiLFxuXHRcInNveVwiOiBcIlNveSAoQ2xvc3VyZSBUZW1wbGF0ZSlcIixcblx0XCJzcGFycWxcIjogXCJTUEFSUUxcIixcblx0XCJycVwiOiBcIlNQQVJRTFwiLFxuXHRcInNwbHVuay1zcGxcIjogXCJTcGx1bmsgU1BMXCIsXG5cdFwic3FmXCI6IFwiU1FGOiBTdGF0dXMgUXVvIEZ1bmN0aW9uIChBcm1hIDMpXCIsXG5cdFwic3FsXCI6IFwiU1FMXCIsXG5cdFwic3RhdGFcIjogXCJTdGF0YSBBZG9cIixcblx0XCJpZWNzdFwiOiBcIlN0cnVjdHVyZWQgVGV4dCAoSUVDIDYxMTMxLTMpXCIsXG5cdFwic3VwZXJjb2xsaWRlclwiOiBcIlN1cGVyQ29sbGlkZXJcIixcblx0XCJzY2xhbmdcIjogXCJTdXBlckNvbGxpZGVyXCIsXG5cdFwic3lzdGVtZFwiOiBcIlN5c3RlbWQgY29uZmlndXJhdGlvbiBmaWxlXCIsXG5cdFwidDQtdGVtcGxhdGluZ1wiOiBcIlQ0IHRlbXBsYXRpbmdcIixcblx0XCJ0NC1jc1wiOiBcIlQ0IFRleHQgVGVtcGxhdGVzIChDIylcIixcblx0XCJ0NFwiOiBcIlQ0IFRleHQgVGVtcGxhdGVzIChDIylcIixcblx0XCJ0NC12YlwiOiBcIlQ0IFRleHQgVGVtcGxhdGVzIChWQilcIixcblx0XCJ0YXBcIjogXCJUQVBcIixcblx0XCJ0dDJcIjogXCJUZW1wbGF0ZSBUb29sa2l0IDJcIixcblx0XCJ0b21sXCI6IFwiVE9NTFwiLFxuXHRcInRyaWNrbGVcIjogXCJ0cmlja2xlXCIsXG5cdFwidHJveVwiOiBcInRyb3lcIixcblx0XCJ0cmlnXCI6IFwiVHJpR1wiLFxuXHRcInRzXCI6IFwiVHlwZVNjcmlwdFwiLFxuXHRcInRzY29uZmlnXCI6IFwiVFNDb25maWdcIixcblx0XCJ1c2NyaXB0XCI6IFwiVW5yZWFsU2NyaXB0XCIsXG5cdFwidWNcIjogXCJVbnJlYWxTY3JpcHRcIixcblx0XCJ1b3Jhem9yXCI6IFwiVU8gUmF6b3IgU2NyaXB0XCIsXG5cdFwidXJpXCI6IFwiVVJJXCIsXG5cdFwidXJsXCI6IFwiVVJMXCIsXG5cdFwidmJuZXRcIjogXCJWQi5OZXRcIixcblx0XCJ2aGRsXCI6IFwiVkhETFwiLFxuXHRcInZpbVwiOiBcInZpbVwiLFxuXHRcInZpc3VhbC1iYXNpY1wiOiBcIlZpc3VhbCBCYXNpY1wiLFxuXHRcInZiYVwiOiBcIlZCQVwiLFxuXHRcInZiXCI6IFwiVmlzdWFsIEJhc2ljXCIsXG5cdFwid2FzbVwiOiBcIldlYkFzc2VtYmx5XCIsXG5cdFwid2ViLWlkbFwiOiBcIldlYiBJRExcIixcblx0XCJ3ZWJpZGxcIjogXCJXZWIgSURMXCIsXG5cdFwid2dzbFwiOiBcIldHU0xcIixcblx0XCJ3aWtpXCI6IFwiV2lraSBtYXJrdXBcIixcblx0XCJ3b2xmcmFtXCI6IFwiV29sZnJhbSBsYW5ndWFnZVwiLFxuXHRcIm5iXCI6IFwiTWF0aGVtYXRpY2EgTm90ZWJvb2tcIixcblx0XCJ3bFwiOiBcIldvbGZyYW0gbGFuZ3VhZ2VcIixcblx0XCJ4ZW9yYWN1YmVcIjogXCJYZW9yYUN1YmVcIixcblx0XCJ4bWwtZG9jXCI6IFwiWE1MIGRvYyAoLm5ldClcIixcblx0XCJ4b2pvXCI6IFwiWG9qbyAoUkVBTGJhc2ljKVwiLFxuXHRcInhxdWVyeVwiOiBcIlhRdWVyeVwiLFxuXHRcInlhbWxcIjogXCJZQU1MXCIsXG5cdFwieW1sXCI6IFwiWUFNTFwiLFxuXHRcInlhbmdcIjogXCJZQU5HXCIsXG59OyBcbmNvbnN0IE1BTlVBTF9QUklTTV9MQU5HVUFHRVM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0geyAvLyBNYW51YWxseSBnZW5lcmF0ZWQgbGlzdCBmcm9tIGh0dHBzOi8vcHJpc21qcy5jb20vICAtICAyOTcgbGFuZ3VhZ2VzXG5cdFwiY3NzXCI6XCJDU1NcIixcblx0XCJjbGlrZVwiOlwiQy1saWtlXCIsXG5cdFwiamF2YXNjcmlwdFwiOlwiSmF2YVNjcmlwdFwiLFxuXHRcImpzXCI6XCJKYXZhU2NyaXB0XCIsXG5cdFwiYWJhcFwiOlwiQUJBUFwiLFxuXHRcImFibmZcIjpcIkFCTkZcIixcblx0XCJhY3Rpb25zY3JpcHRcIjpcIkFjdGlvblNjcmlwdFwiLFxuXHRcImFkYVwiOlwiQWRhXCIsXG5cdFwiYWdkYVwiOlwiQWdkYVwiLFxuXHRcImFsXCI6XCJBTFwiLFxuXHRcImFudGxyNFwiOlwiQU5UTFI0XCIsXG5cdFwiZzRcIjpcIkFOVExSNFwiLFxuXHRcImFwYWNoZWNvbmZcIjpcIkFwYWNoZSBDb25maWd1cmF0aW9uXCIsXG5cdFwiYXBleFwiOlwiQXBleFwiLFxuXHRcImFwbFwiOlwiQVBMXCIsXG5cdFwiYXBwbGVzY3JpcHRcIjpcIkFwcGxlU2NyaXB0XCIsXG5cdFwiYXFsXCI6XCJBUUxcIixcblx0XCJhcmR1aW5vXCI6XCJBcmR1aW5vXCIsXG5cdFwiaW5vXCI6XCJBcmR1aW5vXCIsXG5cdFwiYXJmZlwiOlwiQVJGRlwiLFxuXHRcImFybWFzbVwiOlwiQVJNIEFzc2VtYmx5XCIsXG5cdFwiYXJtLWFzbVwiOlwiQVJNIEFzc2VtYmx5XCIsXG5cdFwiYXJ0dXJvXCI6XCJBcnR1cm9cIixcblx0XCJhcnRcIjpcIkFydHVyb1wiLFxuXHRcImFzY2lpZG9jXCI6XCJBc2NpaURvY1wiLFxuXHRcImFkb2NcIjpcIkFzY2lpRG9jXCIsXG5cdFwiYXNwbmV0XCI6XCJBU1AuTkVUIChDIylcIixcblx0XCJhc202NTAyXCI6XCI2NTAyIEFzc2VtYmx5XCIsXG5cdFwiYXNtYXRtZWxcIjpcIkF0bWVsIEFWUiBBc3NlbWJseVwiLFxuXHRcImF1dG9ob3RrZXlcIjpcIkF1dG9Ib3RrZXlcIixcblx0XCJhdXRvaXRcIjpcIkF1dG9JdFwiLFxuXHRcImF2aXN5bnRoXCI6XCJBdmlTeW50aFwiLFxuXHRcImF2c1wiOlwiQXZpU3ludGhcIixcblx0XCJhdnJvLWlkbFwiOlwiQXZybyBJRExcIixcblx0XCJhdmRsXCI6XCJBdnJvIElETFwiLFxuXHRcImF3a1wiOlwiQVdLXCIsXG5cdFwiZ2F3a1wiOlwiR0FXS1wiLFxuXHRcImJhc2hcIjpcIkJhc2hcIixcblx0XCJzaFwiOlwiU2hlbGxcIixcblx0XCJzaGVsbFwiOlwiU2hlbGxcIixcblx0XCJiYXNpY1wiOlwiQkFTSUNcIixcblx0XCJiYXRjaFwiOlwiQmF0Y2hcIixcblx0XCJiYmNvZGVcIjpcIkJCY29kZVwiLFxuXHRcInNob3J0Y29kZVwiOlwiQkJjb2RlXCIsXG5cdFwiYmJqXCI6XCJCQmpcIixcblx0XCJiaXJiXCI6XCJCaXJiXCIsXG5cdFwiYmlzb25cIjpcIkJpc29uXCIsXG5cdFwiYm5mXCI6XCJCTkZcIixcblx0XCJyYm5mXCI6XCJCTkZcIixcblx0XCJicW5cIjpcIkJRTlwiLFxuXHRcImJyYWluZnVja1wiOlwiQnJhaW5mdWNrXCIsXG5cdFwiYnJpZ2h0c2NyaXB0XCI6XCJCcmlnaHRTY3JpcHRcIixcblx0XCJicm9cIjpcIkJyb1wiLFxuXHRcImJzbFwiOlwiQlNMICgxQylcIixcblx0XCJvc2NyaXB0XCI6XCJCU0wgKDFDKVwiLFxuXHRcImNcIjpcIkNcIixcblx0XCJjc2hhcnBcIjpcIkMjXCIsXG5cdFwiY3NcIjpcIkMjXCIsXG5cdFwiZG90bmV0XCI6XCJDI1wiLFxuXHRcImNwcFwiOlwiQysrXCIsXG5cdFwiY2ZzY3JpcHRcIjpcIkNGU2NyaXB0XCIsXG5cdFwiY2ZjXCI6XCJDRlNjcmlwdFwiLFxuXHRcImNoYWlzY3JpcHRcIjpcIkNoYWlTY3JpcHRcIixcblx0XCJjaWxcIjpcIkNJTFwiLFxuXHRcImNpbGtjXCI6XCJDaWxrL0NcIixcblx0XCJjaWxrLWNcIjpcIkNpbGsvQ1wiLFxuXHRcImNpbGtjcHBcIjpcIkNpbGsvQysrXCIsXG5cdFwiY2lsay1jcHBcIjpcIkNpbGsvQysrXCIsXG5cdFwiY2lsa1wiOlwiQ2lsay9DKytcIixcblx0XCJjbG9qdXJlXCI6XCJDbG9qdXJlXCIsXG5cdFwiY21ha2VcIjpcIkNNYWtlXCIsXG5cdFwiY29ib2xcIjpcIkNPQk9MXCIsXG5cdFwiY29mZmVlc2NyaXB0XCI6XCJDb2ZmZWVTY3JpcHRcIixcblx0XCJjb2ZmZWVcIjpcIkNvZmZlZVNjcmlwdFwiLFxuXHRcImNvbmN1cm5hc1wiOlwiQ29uY3VybmFzXCIsXG5cdFwiY29uY1wiOlwiQ29uY3VybmFzXCIsXG5cdFwiY3NwXCI6XCJDb250ZW50LVNlY3VyaXR5LVBvbGljeVwiLFxuXHRcImNvb2tsYW5nXCI6XCJDb29rbGFuZ1wiLFxuXHRcImNvcVwiOlwiQ29xXCIsXG5cdFwiY3J5c3RhbFwiOlwiQ3J5c3RhbFwiLFxuXHRcImNzcy1leHRyYXNcIjpcIkNTUyBFeHRyYXNcIixcblx0XCJjc3ZcIjpcIkNTVlwiLFxuXHRcImN1ZVwiOlwiQ1VFXCIsXG5cdFwiY3lwaGVyXCI6XCJDeXBoZXJcIixcblx0XCJkXCI6XCJEXCIsXG5cdFwiZGFydFwiOlwiRGFydFwiLFxuXHRcImRhdGF3ZWF2ZVwiOlwiRGF0YVdlYXZlXCIsXG5cdFwiZGF4XCI6XCJEQVhcIixcblx0XCJkaGFsbFwiOlwiRGhhbGxcIixcblx0XCJkaWZmXCI6XCJEaWZmXCIsXG5cdFwiZGphbmdvXCI6XCJEamFuZ28vSmluamEyXCIsXG5cdFwiamluamEyXCI6XCJEamFuZ28vSmluamEyXCIsXG5cdFwiZG5zLXpvbmUtZmlsZVwiOlwiRE5TIHpvbmUgZmlsZVwiLFxuXHRcImRucy16b25lXCI6XCJETlMgem9uZSBmaWxlXCIsXG5cdFwiZG9ja2VyXCI6XCJEb2NrZXJcIixcblx0XCJkb2NrZXJmaWxlXCI6XCJEb2NrZXJcIixcblx0XCJkb3RcIjpcIkRPVCAoR3JhcGh2aXopXCIsXG5cdFwiZ3ZcIjpcIkRPVCAoR3JhcGh2aXopXCIsXG5cdFwiZWJuZlwiOlwiRUJORlwiLFxuXHRcImVkaXRvcmNvbmZpZ1wiOlwiRWRpdG9yQ29uZmlnXCIsXG5cdFwiZWlmZmVsXCI6XCJFaWZmZWxcIixcblx0XCJlanNcIjpcIkVKU1wiLFxuXHRcImV0YVwiOlwiRUpTXCIsXG5cdFwiZWxpeGlyXCI6XCJFbGl4aXJcIixcblx0XCJlbG1cIjpcIkVsbVwiLFxuXHRcImV0bHVhXCI6XCJFbWJlZGRlZCBMdWEgdGVtcGxhdGluZ1wiLFxuXHRcImVyYlwiOlwiRVJCXCIsXG5cdFwiZXJsYW5nXCI6XCJFcmxhbmdcIixcblx0XCJleGNlbC1mb3JtdWxhXCI6XCJFeGNlbCBGb3JtdWxhXCIsXG5cdFwieGxzeFwiOlwiRXhjZWwgRm9ybXVsYVwiLFxuXHRcInhsc1wiOlwiRXhjZWwgRm9ybXVsYVwiLFxuXHRcImZzaGFycFwiOlwiRiNcIixcblx0XCJmYWN0b3JcIjpcIkZhY3RvclwiLFxuXHRcImZhbHNlXCI6XCJGYWxzZVwiLFxuXHRcImZpcmVzdG9yZS1zZWN1cml0eS1ydWxlc1wiOlwiRmlyZXN0b3JlIHNlY3VyaXR5IHJ1bGVzXCIsXG5cdFwiZmxvd1wiOlwiRmxvd1wiLFxuXHRcImZvcnRyYW5cIjpcIkZvcnRyYW5cIixcblx0XCJmdGxcIjpcIkZyZWVNYXJrZXIgVGVtcGxhdGUgTGFuZ3VhZ2VcIixcblx0XCJnbWxcIjpcIkdhbWVNYWtlciBMYW5ndWFnZVwiLFxuXHRcImdhbWVtYWtlcmxhbmd1YWdlXCI6XCJHYW1lTWFrZXIgTGFuZ3VhZ2VcIixcblx0XCJnYXBcIjpcIkdBUCAoQ0FTKVwiLFxuXHRcImdjb2RlXCI6XCJHLWNvZGVcIixcblx0XCJnZHNjcmlwdFwiOlwiR0RTY3JpcHRcIixcblx0XCJnZWRjb21cIjpcIkdFRENPTVwiLFxuXHRcImdldHRleHRcIjpcImdldHRleHRcIixcblx0XCJwb1wiOlwiZ2V0dGV4dFwiLFxuXHRcImdoZXJraW5cIjpcIkdoZXJraW5cIixcblx0XCJnaXRcIjpcIkdpdFwiLFxuXHRcImdsc2xcIjpcIkdMU0xcIixcblx0XCJnblwiOlwiR05cIixcblx0XCJnbmlcIjpcIkdOXCIsXG5cdFwibGlua2VyLXNjcmlwdFwiOlwiR05VIExpbmtlciBTY3JpcHRcIixcblx0XCJsZFwiOlwiR05VIExpbmtlciBTY3JpcHRcIixcblx0XCJnb1wiOlwiR29cIixcblx0XCJnby1tb2R1bGVcIjpcIkdvIG1vZHVsZVwiLFxuXHRcImdvLW1vZFwiOlwiR28gbW9kdWxlXCIsXG5cdFwiZ3JhZGxlXCI6XCJHcmFkbGVcIixcblx0XCJncmFwaHFsXCI6XCJHcmFwaFFMXCIsXG5cdFwiZ3Jvb3Z5XCI6XCJHcm9vdnlcIixcblx0XCJoYW1sXCI6XCJIYW1sXCIsXG5cdFwiaGFuZGxlYmFyc1wiOlwiSGFuZGxlYmFyc1wiLFxuXHRcImhic1wiOlwiSGFuZGxlYmFyc1wiLFxuXHRcIm11c3RhY2hlXCI6XCJIYW5kbGViYXJzXCIsXG5cdFwiaGFza2VsbFwiOlwiSGFza2VsbFwiLFxuXHRcImhzXCI6XCJIYXNrZWxsXCIsXG5cdFwiaGF4ZVwiOlwiSGF4ZVwiLFxuXHRcImhjbFwiOlwiSENMXCIsXG5cdFwiaGxzbFwiOlwiSExTTFwiLFxuXHRcImhvb25cIjpcIkhvb25cIixcblx0XCJodHRwXCI6XCJIVFRQXCIsXG5cdFwiaHBrcFwiOlwiSFRUUCBQdWJsaWMtS2V5LVBpbnNcIixcblx0XCJoc3RzXCI6XCJIVFRQIFN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHlcIixcblx0XCJpY2hpZ29qYW1cIjpcIkljaGlnb0phbVwiLFxuXHRcImljb25cIjpcIkljb25cIixcblx0XCJpY3UtbWVzc2FnZS1mb3JtYXRcIjpcIklDVSBNZXNzYWdlIEZvcm1hdFwiLFxuXHRcImlkcmlzXCI6XCJJZHJpc1wiLFxuXHRcImlkclwiOlwiSWRyaXNcIixcblx0XCJpbmZvcm03XCI6XCJJbmZvcm0gN1wiLFxuXHRcImluaVwiOlwiSW5pXCIsXG5cdFwiaW9cIjpcIklvXCIsXG5cdFwialwiOlwiSlwiLFxuXHRcImphdmFcIjpcIkphdmFcIixcblx0XCJqYXZhZG9jXCI6XCJKYXZhRG9jXCIsXG5cdFwiamF2YWRvY2xpa2VcIjpcIkphdmFEb2MtbGlrZVwiLFxuXHRcImphdmFzdGFja3RyYWNlXCI6XCJKYXZhIHN0YWNrIHRyYWNlXCIsXG5cdFwiamV4bFwiOlwiSmV4bFwiLFxuXHRcImpvbGllXCI6XCJKb2xpZVwiLFxuXHRcImpxXCI6XCJKUVwiLFxuXHRcImpzZG9jXCI6XCJKU0RvY1wiLFxuXHRcImpzLWV4dHJhc1wiOlwiSlMgRXh0cmFzXCIsXG5cdFwianNvblwiOlwiSlNPTlwiLFxuXHRcIndlYm1hbmlmZXN0XCI6XCJKU09OXCIsXG5cdFwianNvbjVcIjpcIkpTT041XCIsXG5cdFwianNvbnBcIjpcIkpTT05QXCIsXG5cdFwianNzdGFja3RyYWNlXCI6XCJKUyBzdGFjayB0cmFjZVwiLFxuXHRcImpzLXRlbXBsYXRlc1wiOlwiSlMgVGVtcGxhdGVzXCIsXG5cdFwianVsaWFcIjpcIkp1bGlhXCIsXG5cdFwia2VlcGFsaXZlZFwiOlwiS2VlcGFsaXZlZCBDb25maWd1cmVcIixcblx0XCJrZXltYW5cIjpcIktleW1hblwiLFxuXHRcImtvdGxpblwiOlwiS290bGluXCIsXG5cdFwia3RcIjpcIktvdGxpblwiLFxuXHRcImt0c1wiOlwiS290bGluXCIsXG5cdFwia3VtaXJcIjpcIkt1TWlyIChcdTA0MUFcdTA0NDNcdTA0MUNcdTA0MzhcdTA0NDApXCIsXG5cdFwia3VtXCI6XCJLdU1pciAoXHUwNDFBXHUwNDQzXHUwNDFDXHUwNDM4XHUwNDQwKVwiLFxuXHRcImt1c3RvXCI6XCJLdXN0b1wiLFxuXHRcImxhdGV4XCI6XCJMYVRlWFwiLFxuXHRcInRleFwiOlwiTGFUZVhcIixcblx0XCJjb250ZXh0XCI6XCJMYVRlWFwiLFxuXHRcImxhdHRlXCI6XCJMYXR0ZVwiLFxuXHRcImxlc3NcIjpcIkxlc3NcIixcblx0XCJsaWx5cG9uZFwiOlwiTGlseVBvbmRcIixcblx0XCJseVwiOlwiTGlseVBvbmRcIixcblx0XCJsaXF1aWRcIjpcIkxpcXVpZFwiLFxuXHRcImxpc3BcIjpcIkxpc3BcIixcblx0XCJlbWFjc1wiOlwiTGlzcFwiLFxuXHRcImVsaXNwXCI6XCJMaXNwXCIsXG5cdFwiZW1hY3MtbGlzcFwiOlwiTGlzcFwiLFxuXHRcImxpdmVzY3JpcHRcIjpcIkxpdmVTY3JpcHRcIixcblx0XCJsbHZtXCI6XCJMTFZNIElSXCIsXG5cdFwibG9nXCI6XCJMb2cgZmlsZVwiLFxuXHRcImxvbGNvZGVcIjpcIkxPTENPREVcIixcblx0XCJsdWFcIjpcIkx1YVwiLFxuXHRcIm1hZ21hXCI6XCJNYWdtYSAoQ0FTKVwiLFxuXHRcIm1ha2VmaWxlXCI6XCJNYWtlZmlsZVwiLFxuXHRcIm1hcmtkb3duXCI6XCJNYXJrZG93blwiLFxuXHRcIm1kXCI6XCJNYXJrZG93blwiLFxuXHRcIm1hcmt1cC10ZW1wbGF0aW5nXCI6XCJNYXJrdXAgdGVtcGxhdGluZ1wiLFxuXHRcIm1hdGFcIjpcIk1hdGFcIixcblx0XCJtYXRsYWJcIjpcIk1BVExBQlwiLFxuXHRcIm1heHNjcmlwdFwiOlwiTUFYU2NyaXB0XCIsXG5cdFwibWVsXCI6XCJNRUxcIixcblx0XCJtZXJtYWlkXCI6XCJNZXJtYWlkXCIsXG5cdFwibWV0YWZvbnRcIjpcIk1FVEFGT05UXCIsXG5cdFwibWl6YXJcIjpcIk1pemFyXCIsXG5cdFwibW9uZ29kYlwiOlwiTW9uZ29EQlwiLFxuXHRcIm1vbmtleVwiOlwiTW9ua2V5XCIsXG5cdFwibW9vbnNjcmlwdFwiOlwiTW9vblNjcmlwdFwiLFxuXHRcIm1vb25cIjpcIk1vb25TY3JpcHRcIixcblx0XCJuMXFsXCI6XCJOMVFMXCIsXG5cdFwibjRqc1wiOlwiTjRKU1wiLFxuXHRcIm40anNkXCI6XCJONEpTXCIsXG5cdFwibmFuZDJ0ZXRyaXMtaGRsXCI6XCJOYW5kIFRvIFRldHJpcyBIRExcIixcblx0XCJuYW5pc2NyaXB0XCI6XCJOYW5pbm92ZWwgU2NyaXB0XCIsXG5cdFwibmFuaVwiOlwiTmFuaW5vdmVsIFNjcmlwdFwiLFxuXHRcIm5hc21cIjpcIk5BU01cIixcblx0XCJuZW9uXCI6XCJORU9OXCIsXG5cdFwibmV2b2RcIjpcIk5ldm9kXCIsXG5cdFwibmdpbnhcIjpcIm5naW54XCIsXG5cdFwibmltXCI6XCJOaW1cIixcblx0XCJuaXhcIjpcIk5peFwiLFxuXHRcIm5zaXNcIjpcIk5TSVNcIixcblx0XCJvYmplY3RpdmVjXCI6XCJPYmplY3RpdmUtQ1wiLFxuXHRcIm9iamNcIjpcIk9iamVjdGl2ZS1DXCIsXG5cdFwib2NhbWxcIjpcIk9DYW1sXCIsXG5cdFwib2RpblwiOlwiT2RpblwiLFxuXHRcIm9wZW5jbFwiOlwiT3BlbkNMXCIsXG5cdFwib3BlbnFhc21cIjpcIk9wZW5RYXNtXCIsXG5cdFwicWFzbVwiOlwiT3BlblFhc21cIixcblx0XCJvelwiOlwiT3pcIixcblx0XCJwYXJpZ3BcIjpcIlBBUkkvR1BcIixcblx0XCJwYXJzZXJcIjpcIlBhcnNlclwiLFxuXHRcInBhc2NhbFwiOlwiUGFzY2FsXCIsXG5cdFwicGFzY2FsaWdvXCI6XCJQYXNjYWxpZ29cIixcblx0XCJwc2xcIjpcIlBBVFJPTCBTY3JpcHRpbmcgTGFuZ3VhZ2VcIixcblx0XCJwY2F4aXNcIjpcIlBDLUF4aXNcIixcblx0XCJweFwiOlwiUEMtQXhpc1wiLFxuXHRcInBlb3BsZWNvZGVcIjpcIlBlb3BsZUNvZGVcIixcblx0XCJwY29kZVwiOlwiUGVvcGxlQ29kZVwiLFxuXHRcInBlcmxcIjpcIlBlcmxcIixcblx0XCJwaHBcIjpcIlBIUFwiLFxuXHRcInBocGRvY1wiOlwiUEhQRG9jXCIsXG5cdFwicGhwLWV4dHJhc1wiOlwiUEhQIEV4dHJhc1wiLFxuXHRcInBsYW50LXVtbFwiOlwiUGxhbnRVTUxcIixcblx0XCJwbGFudHVtbFwiOlwiUGxhbnRVTUxcIixcblx0XCJwbHNxbFwiOlwiUEwvU1FMXCIsXG5cdFwicG93ZXJxdWVyeVwiOlwiUG93ZXJRdWVyeVwiLFxuXHRcInBxXCI6XCJQb3dlclF1ZXJ5XCIsXG5cdFwibXNjcmlwdFwiOlwiUG93ZXJRdWVyeVwiLFxuXHRcInBvd2Vyc2hlbGxcIjpcIlBvd2VyU2hlbGxcIixcblx0XCJwcm9jZXNzaW5nXCI6XCJQcm9jZXNzaW5nXCIsXG5cdFwicHJvbG9nXCI6XCJQcm9sb2dcIixcblx0XCJwcm9tcWxcIjpcIlByb21RTFwiLFxuXHRcInByb3BlcnRpZXNcIjpcIi5wcm9wZXJ0aWVzXCIsXG5cdFwicHJvdG9idWZcIjpcIlByb3RvY29sIEJ1ZmZlcnNcIixcblx0XCJwdWdcIjpcIlB1Z1wiLFxuXHRcInB1cHBldFwiOlwiUHVwcGV0XCIsXG5cdFwicHVyZVwiOlwiUHVyZVwiLFxuXHRcInB1cmViYXNpY1wiOlwiUHVyZUJhc2ljXCIsXG5cdFwicGJmYXNtXCI6XCJQdXJlQmFzaWNcIixcblx0XCJwdXJlc2NyaXB0XCI6XCJQdXJlU2NyaXB0XCIsXG5cdFwicHVyc1wiOlwiUHVyZVNjcmlwdFwiLFxuXHRcInB5dGhvblwiOlwiUHl0aG9uXCIsXG5cdFwicHlcIjpcIlB5dGhvblwiLFxuXHRcInFzaGFycFwiOlwiUSNcIixcblx0XCJxc1wiOlwiUSNcIixcblx0XCJxXCI6XCJRIChrZGIrIGRhdGFiYXNlKVwiLFxuXHRcInFtbFwiOlwiUU1MXCIsXG5cdFwicW9yZVwiOlwiUW9yZVwiLFxuXHRcInJcIjpcIlJcIixcblx0XCJyYWNrZXRcIjpcIlJhY2tldFwiLFxuXHRcInJrdFwiOlwiUmFja2V0XCIsXG5cdFwiY3NodG1sXCI6XCJSYXpvciBDI1wiLFxuXHRcImpzeFwiOlwiUmVhY3QgSlNYXCIsXG5cdFwidHN4XCI6XCJSZWFjdCBUU1hcIixcblx0XCJyZWFzb25cIjpcIlJlYXNvblwiLFxuXHRcInJlZ2V4XCI6XCJSZWdleFwiLFxuXHRcInJlZ29cIjpcIlJlZ29cIixcblx0XCJyZW5weVwiOlwiUmVuJ3B5XCIsXG5cdFwicnB5XCI6XCJSZW4ncHlcIixcblx0XCJyZXNjcmlwdFwiOlwiUmVTY3JpcHRcIixcblx0XCJyZXNcIjpcIlJlU2NyaXB0XCIsXG5cdFwicmVzdFwiOlwicmVTVCAocmVTdHJ1Y3R1cmVkVGV4dClcIixcblx0XCJyaXBcIjpcIlJpcFwiLFxuXHRcInJvYm9jb25mXCI6XCJSb2JvY29uZlwiLFxuXHRcInJvYm90ZnJhbWV3b3JrXCI6XCJSb2JvdCBGcmFtZXdvcmtcIixcblx0XCJyb2JvdFwiOlwiUm9ib3QgRnJhbWV3b3JrXCIsXG5cdFwicnVieVwiOlwiUnVieVwiLFxuXHRcInJiXCI6XCJSdWJ5XCIsXG5cdFwicnVzdFwiOlwiUnVzdFwiLFxuXHRcInNhc1wiOlwiU0FTXCIsXG5cdFwic2Fzc1wiOlwiU2FzcyAoU2FzcylcIixcblx0XCJzY3NzXCI6XCJTYXNzIChTQ1NTKVwiLFxuXHRcInNjYWxhXCI6XCJTY2FsYVwiLFxuXHRcInNjaGVtZVwiOlwiU2NoZW1lXCIsXG5cdFwic2hlbGwtc2Vzc2lvblwiOlwiU2hlbGwgc2Vzc2lvblwiLFxuXHRcInNoLXNlc3Npb25cIjpcIlNoZWxsIHNlc3Npb25cIixcblx0XCJzaGVsbHNlc3Npb25cIjpcIlNoZWxsIHNlc3Npb25cIixcblx0XCJzbWFsaVwiOlwiU21hbGlcIixcblx0XCJzbWFsbHRhbGtcIjpcIlNtYWxsdGFsa1wiLFxuXHRcInNtYXJ0eVwiOlwiU21hcnR5XCIsXG5cdFwic21sXCI6XCJTTUxcIixcblx0XCJzbWxualwiOlwiU01MXCIsXG5cdFwic29saWRpdHlcIjpcIlNvbGlkaXR5IChFdGhlcmV1bSlcIixcblx0XCJzb2xcIjpcIlNvbGlkaXR5IChFdGhlcmV1bSlcIixcblx0XCJzb2x1dGlvbi1maWxlXCI6XCJTb2x1dGlvbiBmaWxlXCIsXG5cdFwic2xuXCI6XCJTb2x1dGlvbiBmaWxlXCIsXG5cdFwic295XCI6XCJTb3kgKENsb3N1cmUgVGVtcGxhdGUpXCIsXG5cdFwic3BhcnFsXCI6XCJTUEFSUUxcIixcblx0XCJycVwiOlwiU1BBUlFMXCIsXG5cdFwic3BsdW5rLXNwbFwiOlwiU3BsdW5rIFNQTFwiLFxuXHRcInNxZlwiOlwiU1FGXCIsXG5cdFwic3FsXCI6XCJTUUxcIixcblx0XCJzcXVpcnJlbFwiOlwiU3F1aXJyZWxcIixcblx0XCJzdGFuXCI6XCJTdGFuXCIsXG5cdFwic3RhdGFcIjpcIlN0YXRhIEFkb1wiLFxuXHRcImllY3N0XCI6XCJTdHJ1Y3R1cmVkIFRleHQgKElFQyA2MTEzMS0zKVwiLFxuXHRcInN0eWx1c1wiOlwiU3R5bHVzXCIsXG5cdFwic3VwZXJjb2xsaWRlclwiOlwiU3VwZXJDb2xsaWRlclwiLFxuXHRcInNjbGFuZ1wiOlwiU3VwZXJDb2xsaWRlclwiLFxuXHRcInN3aWZ0XCI6XCJTd2lmdFwiLFxuXHRcInN5c3RlbWRcIjpcIlN5c3RlbWQgY29uZmlndXJhdGlvbiBmaWxlXCIsXG5cdFwidDQtdGVtcGxhdGluZ1wiOlwiVDQgdGVtcGxhdGluZ1wiLFxuXHRcInQ0LWNzXCI6XCJUNCBUZXh0IFRlbXBsYXRlcyAoQyMpXCIsXG5cdFwidDRcIjpcIlQ0IFRleHQgVGVtcGxhdGVzIChDIylcIixcblx0XCJ0NC12YlwiOlwiVDQgVGV4dCBUZW1wbGF0ZXMgKFZCKVwiLFxuXHRcInRhcFwiOlwiVEFQXCIsXG5cdFwidGNsXCI6XCJUY2xcIixcblx0XCJ0dDJcIjpcIlRlbXBsYXRlIFRvb2xraXQgMlwiLFxuXHRcInRleHRpbGVcIjpcIlRleHRpbGVcIixcblx0XCJ0b21sXCI6XCJUT01MXCIsXG5cdFwidHJlbW9yXCI6XCJUcmVtb3JcIixcblx0XCJ0cmlja2xlXCI6XCJUcmVtb3JcIixcblx0XCJ0cm95XCI6XCJUcmVtb3JcIixcblx0XCJ0dXJ0bGVcIjpcIlR1cnRsZVwiLFxuXHRcInRyaWdcIjpcIlR1cnRsZVwiLFxuXHRcInR3aWdcIjpcIlR3aWdcIixcblx0XCJ0eXBlc2NyaXB0XCI6XCJUeXBlU2NyaXB0XCIsXG5cdFwidHNcIjpcIlR5cGVTY3JpcHRcIixcblx0XCJ0eXBvc2NyaXB0XCI6XCJUeXBvU2NyaXB0XCIsXG5cdFwidHNjb25maWdcIjpcIlRTQ29uZmlnXCIsXG5cdFwidW5yZWFsc2NyaXB0XCI6XCJVbnJlYWxTY3JpcHRcIixcblx0XCJ1c2NyaXB0XCI6XCJVbnJlYWxTY3JpcHRcIixcblx0XCJ1Y1wiOlwiVW5yZWFsU2NyaXB0XCIsXG5cdFwidW9yYXpvclwiOlwiVU8gUmF6b3IgU2NyaXB0XCIsXG5cdFwidXJpXCI6XCJVUklcIixcblx0XCJ1cmxcIjpcIlVSSVwiLFxuXHRcInZcIjpcIlZcIixcblx0XCJ2YWxhXCI6XCJWYWxhXCIsXG5cdFwidmJuZXRcIjpcIlZCLk5ldFwiLFxuXHRcInZlbG9jaXR5XCI6XCJWZWxvY2l0eVwiLFxuXHRcInZlcmlsb2dcIjpcIlZlcmlsb2dcIixcblx0XCJ2aGRsXCI6XCJWSERMXCIsXG5cdFwidmltXCI6XCJ2aW1cIixcblx0XCJ2aXN1YWwtYmFzaWNcIjpcIlZpc3VhbCBCYXNpY1wiLFxuXHRcInZiXCI6XCJWaXN1YWwgQmFzaWNcIixcblx0XCJ3YXJwc2NyaXB0XCI6XCJXYXJwU2NyaXB0XCIsXG5cdFwid2FzbVwiOlwiV2ViQXNzZW1ibHlcIixcblx0XCJ3ZWItaWRsXCI6XCJXZWIgSURMXCIsXG5cdFwid2ViaWRsXCI6XCJXZWIgSURMXCIsXG5cdFwid2dzbFwiOlwiV0dTTFwiLFxuXHRcIndpa2lcIjpcIldpa2kgbWFya3VwXCIsXG5cdFwid29sZnJhbVwiOlwiV29sZnJhbSBsYW5ndWFnZVwiLFxuXHRcIm1hdGhlbWF0aWNhXCI6XCJXb2xmcmFtIGxhbmd1YWdlXCIsXG5cdFwibmJcIjpcIldvbGZyYW0gbGFuZ3VhZ2VcIixcblx0XCJ3bFwiOlwiV29sZnJhbSBsYW5ndWFnZVwiLFxuXHRcIndyZW5cIjpcIldyZW5cIixcblx0XCJ4ZW9yYVwiOlwiWGVvcmFcIixcblx0XCJ4ZW9yYWN1YmVcIjpcIlhlb3JhXCIsXG5cdFwieG1sLWRvY1wiOlwiWE1MIGRvYyAoLm5ldClcIixcblx0XCJ4b2pvXCI6XCJYb2pvIChSRUFMYmFzaWMpXCIsXG5cdFwieHF1ZXJ5XCI6XCJYUXVlcnlcIixcblx0XCJ5YW1sXCI6XCJZQU1MXCIsXG5cdFwieW1sXCI6XCJZQU1MXCIsXG5cdFwieWFuZ1wiOlwiWUFOR1wiLFxuXHRcInppZ1wiOlwiWmlnXCJcbn1cbmNvbnN0IE1BTlVBTF9MQU5HVUFHRVM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0geyAvLyBNYW51YWxseSBjcmVhdGVkIGxpc3Rcblx0XCJmaXNoXCI6XCJGaXNoXCIsXG5cdFwib2N0YXZlXCI6XCJPY3RhdmVcIixcblx0XCJtYXhpbWFcIjpcIk1heGltYVwiLFxuXHRcIm15c3FsXCI6XCJTUUxcIixcblx0XCJwb3N0Z3Jlc3FsXCI6XCJTUUxcIixcblx0XCJyc2NyaXB0XCI6XCJSXCIsXG5cdFwic2hlbGxzY3JpcHRcIjpcIlNoZWxsXCIsXG5cdFwic3FsaXRlXCI6XCJTUUxcIixcblx0XCJ6c2hcIjpcIlpzaFwiLFxufVxuZXhwb3J0IGNvbnN0IExBTkdVQUdFX05BTUVTOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHsuLi5QUklTTV9MQU5HVUFHRVMsLi4uTUFOVUFMX1BSSVNNX0xBTkdVQUdFUywuLi5NQU5VQUxfTEFOR1VBR0VTfTtcbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9JQ09OU19EQVRBOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHsgLy8gSWNvbnMgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdnNjb2RlLWljb25zL3ZzY29kZS1pY29ucy93aWtpL0xpc3RPZkZpbGVzIGFuZCBodHRwczovL2Rldmljb24uZGV2L1xuXHRcIi5naXRpZ25vcmVcIjogYDxwYXRoIGQ9XCJNMjkuNDcyLDE0Ljc1MywxNy4yNDcsMi41MjhhMS44LDEuOCwwLDAsMC0yLjU1LDBMMTIuMTU4LDUuMDY3bDMuMjIsMy4yMmEyLjE0MSwyLjE0MSwwLDAsMSwyLjcxMiwyLjczbDMuMSwzLjFhMi4xNDMsMi4xNDMsMCwxLDEtMS4yODUsMS4yMWwtMi44OTUtMi44OTV2Ny42MTdhMi4xNDEsMi4xNDEsMCwxLDEtMS43NjQtLjA2MlYxMi4zYTIuMTQ2LDIuMTQ2LDAsMCwxLTEuMTY1LTIuODE0TDEwLjkxMSw2LjMxNCwyLjUyOCwxNC43YTEuOCwxLjgsMCwwLDAsMCwyLjU1MUwxNC43NTMsMjkuNDcyYTEuOCwxLjgsMCwwLDAsMi41NSwwTDI5LjQ3MiwxNy4zYTEuOCwxLjgsMCwwLDAsMC0yLjU1MVwiIHN0eWxlPVwiZmlsbDojZGQ0YzM1XCIvPjxwYXRoIGQ9XCJNMTIuMTU4LDUuMDY3bDMuMjIsMy4yMmEyLjE0MSwyLjE0MSwwLDAsMSwyLjcxMiwyLjczbDMuMSwzLjFhMi4xNDMsMi4xNDMsMCwxLDEtMS4yODUsMS4yMWwtMi44OTUtMi44OTV2Ny42MTdhMi4xNDEsMi4xNDEsMCwxLDEtMS43NjQtLjA2MlYxMi4zYTIuMTQ2LDIuMTQ2LDAsMCwxLTEuMTY1LTIuODE0TDEwLjkxMSw2LjMxNFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiLmhnaWdub3JlXCI6IGA8cGF0aCBkPVwiTTI4LjA0MiwyMy4xNzJjNC45ODktOC4zLTEuMDU0LTIxLjc1MS0xMi4xLTIwLjM4NEM1Ljk1NSw0LjAyMiw1Ljc5NCwxNC41MywxNC41OTMsMTcuMDI2YzcuNjE0LDIuMTYyLDEuNTczLDYuOTkyLDEuNzQ5LDEwLjIwOHM2LjYyLDQuMzgyLDExLjctNC4wNjNcIiBzdHlsZT1cImZpbGw6IzFiMWIxYlwiLz48Y2lyY2xlIGN4PVwiOS43ODRcIiBjeT1cIjI0LjI1N1wiIHI9XCI0LjMzMlwiIHN0eWxlPVwiZmlsbDojMWIxYjFiXCIvPjxjaXJjbGUgY3g9XCI0LjgzNVwiIGN5PVwiMTUuMDk5XCIgcj1cIjIuODM1XCIgc3R5bGU9XCJmaWxsOiMxYjFiMWJcIi8+PHBhdGggZD1cIk0yOC4yMzEsMjIuODM1YzQuOTg5LTguMy0xLjA1NC0yMS43NTEtMTIuMS0yMC4zODRDNi4xNDQsMy42ODYsNS45ODMsMTQuMTk0LDE0Ljc4MSwxNi42OWM3LjYxNCwyLjE2MiwxLjU3Myw2Ljk5MiwxLjc0OSwxMC4yMDhzNi42Miw0LjM4MiwxMS43LTQuMDYzXCIgc3R5bGU9XCJmaWxsOiNiZmJmYmZcIi8+PGNpcmNsZSBjeD1cIjkuOTcyXCIgY3k9XCIyMy45MjFcIiByPVwiNC4zMzJcIiBzdHlsZT1cImZpbGw6I2JmYmZiZlwiLz48Y2lyY2xlIGN4PVwiNS4wMjNcIiBjeT1cIjE0Ljc2MlwiIHI9XCIyLjgzNVwiIHN0eWxlPVwiZmlsbDojYmZiZmJmXCIvPjxwYXRoIGQ9XCJNMTcuODExLDI4LjE2OGEuNjY5LjY2OSwwLDAsMSwuNjM1LS45OTQsNyw3LDAsMCwwLDMuNy0uNzQ2YzMuMjQ3LTEuODQxLDguMjQ0LTEwLjcsNS43MzEtMTYuMjg1QTEyLjc3LDEyLjc3LDAsMCwwLDI1LjA0OSw1LjdjLS4yMzYtLjI0OS0uMS0uMjM2LjA1OS0uMTUyYTEwLjA4LDEwLjA4LDAsMCwxLDIuODU3LDMuNjc2LDE0LjU3OCwxNC41NzgsMCwwLDEsMS4xLDEwLjI3OWMtLjQ5NCwxLjgxNy0yLjIsNS45MjgtNC42OTEsNy43MDZzLTUuNDI0LDIuOC02LjU2My45NTVNMTUuNTQ4LDE2LjY3M2MtMS43LS41LTMuODk0LTEuMjA4LTUuMTYzLTIuODY3QTguMDg4LDguMDg4LDAsMCwxLDguODU0LDEwLjQ5Yy0uMDQzLS4yNy0uMDgtLjUsMC0uNTU4YTIxLjg4MiwyMS44ODIsMCwwLDAsMS42ODgsMi43MjMsNi40ODcsNi40ODcsMCwwLDAsMy41MjYsMi4yNTYsMTIuMzgzLDEyLjM4MywwLDAsMSwzLjg2NywxLjM3Yy43MzkuNjI5LjgsMS45ODkuNTUyLDIuMTQycy0uNzU5LTEuMS0yLjkzOC0xLjc0OW0tOC4xNTUsMTAuNGMzLjM2OSwzLjEyMSw4LjQzOS0xLjE2Niw2LjIwNy00Ljk1NC0uMjUxLS40MjUtLjU3Ni0uNzQ5LS40NjktLjQyMy43MTQsMi4xNzguMDU0LDMuOS0xLjE3Niw0Ljc4OGE0LjA2Myw0LjA2MywwLDAsMS00LjE5Mi4zMjhjLS4zOS0uMi0uNTUxLjA5Mi0uMzcuMjYxbS0zLjkzLTEwLjE2Yy4wMTguMi4yOTIuNDU4LjcyMi41NzZhMi45NjksMi45NjksMCwwLDAsMi41NS0uNDEzLDIuNzU5LDIuNzU5LDAsMCwwLC44MS0zLjQ1MmMtLjE3Mi0uMzA4LS40LS41MzMtLjIxOC0uMDQxQTIuNjgsMi42OCwwLDAsMSw2LjE0OCwxNi41M2EyLjQzOSwyLjQzOSwwLDAsMS0yLjEuMTY0Yy0uMzkxLS4xMTktLjYuMDE2LS41OC4yMjNcIi8+PHBhdGggZD1cIk0xOS4wNTYsMjguNDA3Yy0uMDMzLjM4OS40MTQuNDY2LDEuMDE2LjM3NmE2Ljc1NSw2Ljc1NSwwLDAsMCwyLjMxMy0uNjQ4LDkuNTQsOS41NCwwLDAsMCwzLjMxNC0yLjYzYzIuNjYyLTMuNDczLDMuNi03LjU4MiwzLjQ2LTguMTczQTE2LjE3MiwxNi4xNzIsMCwwLDEsMjcsMjIuNjkyYy0xLjg4OCwyLjk2OC0zLjI1Niw0LjU0OC02LjQxMyw1LjMxNC0uODc5LjIxMy0xLjQ4NS0uMTEyLTEuNTI5LjRtLTctMTMuNUE3Ljk2Nyw3Ljk2NywwLDAsMCwxNC42LDE2LjA4OWExMi4yLDEyLjIsMCwwLDEsMi45NiwxLjMxYy4zNzguMjUzLjYxOC44MTkuNjQyLjMxN3MtLjI4NS0uOTM0LS45NzYtMS4xNjRhMTUuMjc0LDE1LjI3NCwwLDAsMC0yLjAwOS0uNjc0Yy0uNDg1LS4xLTEuMjczLS4yODUtMS45NDktLjQ5My0uMzcxLS4xMTQtLjc0OC0uMzEzLTEuMjE0LS40ODNNMTAuMDM3LDI3LjcxOGMuNDI5LS4wOSwyLjkyNC0uNzM2LDMuNTEtMi43ODguMTgzLS42NC4yMTUtLjUxMS4xNjQtLjE2NWEzLjgsMy44LDAsMCwxLTMuMzU4LDMuMTIzYy0uMjg5LjAzLS42NjgtLjEtLjMxNS0uMTdNNS4wNDYsMTcuMmE3Ljk5MSw3Ljk5MSwwLDAsMCwxLjE5NS0uMzM2LDIuMzgzLDIuMzgzLDAsMCwwLDEuMjMyLTEuNzQxYy4wNjQtLjUwNS4wODMtLjM3OC4xMDktLjFhMi42MjcsMi42MjcsMCwwLDEtMi4xNDcsMi4zMjRjLS4yLjAyOC0uNTYuMDExLS4zODktLjE0M1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjcuNTQsMTcuNDQ2YzIuMTI0LTYuMTIzLTIuMzIxLTE1LjM3LTExLjMxNS0xNC4yNTgtOC4xMjYsMS04LjI1Nyw5LjU1Ny0xLjEsMTEuNTksOC4xMTIsMS4yMjgsMy4yMjcsNy4zNDcsMi41MzUsMTAuNDMzLS42MjEsMi43NjYsNi41NTUsMy4yMjEsOS44NzYtNy43NjVNNy4yMTksMjYuMmEyLjAyOCwyLjAyOCwwLDAsMSwxLjMzMi40NDIsMy41MjUsMy41MjUsMCwwLDAsMy43NTUtLjk4M0E0LjE1NCw0LjE1NCwwLDAsMCwxMi44NjksMjJjLS44MDYtMi4zMTktNC4yMjktMi4yNzgtNS43NTgtLjM1My0xLjY1NCwyLjE1LS40LDQuNTM5LjEwOCw0LjU0OE0yLjY3NiwxNS40NTFhMS4xNjYsMS4xNjYsMCwwLDAsLjkwOC44NjNjLjczMS4xLjg4LjQzNCwxLjc0My4yNjNBMi40NjQsMi40NjQsMCwwLDAsNy4xLDE0LjkxNmExLjc3MSwxLjc3MSwwLDAsMC0uODI0LTIuMTQsMi42ODksMi42ODksMCwwLDAtMy4wNDcuMzYzLDIuMjYzLDIuMjYzLDAsMCwwLS41NTgsMi4zMTJcIiBzdHlsZT1cImZpbGw6Izk5OVwiLz48cGF0aCBkPVwiTTIxLjk4MSwyMi4yMjhjLTIuMi0uMjcyLTUuMzYsNC42OS0yLjM3OCw0LjEwOWgwYTUuNjQ1LDUuNjQ1LDAsMCwwLDMuNjgzLTEuOTMyLDIzLjEzNiwyMy4xMzYsMCwwLDAsNC4wNTUtNy4yYy41LTEuODYxLjI1MS00Ljc0NS0uMjY5LTIuMDM2LS41MzMsMi43ODEtMi44OTMsNy4zMzYtNS4wOTEsNy4wNjRNMTAuNTIzLDI2LjM2MkEyLjc3OCwyLjc3OCwwLDAsMCwxMi41LDIyLjk5Yy0uMTY1LTEuMjc2LS44NjEsMS41ODQtMi4xNSwyLjAxMi0xLjk1My42NDgtMS43MzMsMS44NjEuMTc2LDEuMzYxbS00Ljk3OC0xMC4yYy42NjMtLjE3MywxLjU0LTEuMDc3LDEuMS0xLjc2Ny0uNTM3LS44NS0yLjAzMy0uMTIyLTIuMDg0LjgyNHMuMjc3LDEuMTI3Ljk3OS45NDNcIiBzdHlsZT1cImZpbGw6I2YzZjNmM1wiLz5gLFxuXHRcIi5ucG1pZ25vcmVcIjogYDxwYXRoIGQ9XCJNMiwxMC41NTVIMzB2OS4zMzVIMTZ2MS41NTZIOS43NzhWMTkuODg5SDJabTEuNTU2LDcuNzc5SDYuNjY3VjEzLjY2Nkg4LjIyMnY0LjY2N0g5Ljc3OFYxMi4xMTFIMy41NTZabTcuNzc4LTYuMjIzdjcuNzc5aDMuMTExVjE4LjMzNGgzLjExMVYxMi4xMTFabTMuMTExLDEuNTU2SDE2djMuMTEySDE0LjQ0NFptNC42NjctMS41NTZ2Ni4yMjNoMy4xMTFWMTMuNjY2aDEuNTU2djQuNjY3aDEuNTU2VjEzLjY2NmgxLjU1NnY0LjY2N2gxLjU1NlYxMi4xMTFaXCIgc3R5bGU9XCJmaWxsOiNjYjM4MzdcIi8+YCxcblx0XCIucHJvcGVydGllc1wiOiBgPHBhdGggZD1cIk0yMy4yNjUsMjQuMzgxbC45LS44OTRjNC4xNjQuMTM2LDQuMjI4LS4wMSw0LjQxMS0uNDM4bDEuMTQ0LTIuNzg1TDI5LjgwNSwyMGwtLjA5My0uMjMxYy0uMDQ5LS4xMjItLjItLjQ4Ni0yLjgtMi45NjVWMTUuNWMzLTIuODksMi45MzYtMy4wMzgsMi43NjUtMy40NjFMMjguNTM4LDkuMjI1Yy0uMTcxLS40MjItLjIzNi0uNTg3LTQuMzctLjQ3NGwtLjktLjkzYTIwLjE2NiwyMC4xNjYsMCwwLDAtLjE0MS00LjEwNmwtLjExNi0uMjYzLTIuOTc0LTEuM2MtLjQzOC0uMi0uNTkyLS4yNzItMy40LDIuNzg2bC0xLjI2Mi0uMDE5Yy0yLjg5MS0zLjA4Ni0zLjAyOC0zLjAzLTMuNDYxLTIuODU1TDkuMTQ5LDMuMTgyYy0uNDMzLjE3NS0uNTg2LjIzNy0uNDE4LDQuNDM3bC0uODkzLjg5Yy00LjE2Mi0uMTM2LTQuMjI2LjAxMi00LjQwNy40MzhMMi4yODUsMTEuNzMzLDIuMTk1LDEybC4wOTQuMjMyYy4wNDkuMTIuMTk0LjQ4LDIuOCwyLjk2MmwwLDEuM2MtMywyLjg5LTIuOTM1LDMuMDM4LTIuNzYzLDMuNDYybDEuMTM4LDIuODE3Yy4xNzQuNDMxLjIzNi41ODQsNC4zNjkuNDc2bC45LjkzNWEyMC4yNDMsMjAuMjQzLDAsMCwwLC4xMzcsNC4xbC4xMTYuMjY1LDIuOTkzLDEuMzA4Yy40MzUuMTgyLjU4Ni4yNDcsMy4zODYtMi44bDEuMjYyLjAxNmMyLjg5NSwzLjA5LDMuMDQzLDMuMDMsMy40NjYsMi44NTlsMi43NTktMS4xMTVDMjMuMjg4LDI4LjY0NCwyMy40NCwyOC41ODMsMjMuMjY1LDI0LjM4MVpNMTEuNDA3LDE3Ljg1N2E0Ljk1Nyw0Ljk1NywwLDEsMSw2LjQ4OCwyLjgyNEE1LjAxNCw1LjAxNCwwLDAsMSwxMS40MDcsMTcuODU3WlwiIHN0eWxlPVwiZmlsbDojOTliOGM0XCIvPmAsXG5cdFwiNjUwMiBBc3NlbWJseVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiODM2LjYzXCIgeTE9XCIzNi4yMDVcIiB4Mj1cIjg0My44MDJcIiB5Mj1cIjE0LjQ4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoNTI1LjkyMiAzMC4yNDkpIHJvdGF0ZSgxODApIHNjYWxlKDAuNjA3IDAuNjA3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMC4yNzVcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9hc3NlbWJseTwvdGl0bGU+PHBhdGggZD1cIk0xNiwyYy0xLjI0NiwzLjA1Ni0yLDUuMDU3LTMuMzkxLDguMDIyQTIxLjg4NCwyMS44ODQsMCwwLDAsMTYuMiwxMy4xNTZhMTQuODU4LDE0Ljg1OCwwLDAsMS00LTIuMjgzQzEwLjQzLDE0LjU3OSw3LjY0NiwxOS44NTUsMiwzMGM1LjE4Ni0yLjk5NCw5LjAxMi00LjY0OCwxMi42OTEtNC45NjZWMjQuMmgtLjgzNHYtLjgzN2guODM0VjI0LjJoMS42NzVWMjIuNTIxSDE0LjY5MXYtLjgzNGgtLjgzNFYyMC4wMTNoLjgzNHYtLjgzNGgxLjY3NXYuODM0SDE3LjJ2LjgzN2gtLjgzN3YtLjgzN0gxNC42OTF2MS42NzVoMS42NzV2LjgzNEgxNy4yVjI0LjJoLS44Mzd2Ljc4M2MzLjk4LjEsOC4wMDYsMS43NzIsMTMuNjM0LDUuMDIxLS44NjMtMS41ODktMS42MzYtMy4wMjEtMi4zNzItNC4zODVhMjUuNTI2LDI1LjUyNiwwLDAsMC00LjgzMy0zLjMzM0ExNC40MzYsMTQuNDM2LDAsMCwxLDI2LjY1LDIzLjhDMTkuMTcsOS44NzIsMTguNTY1LDguMDIsMTYsMlpNMTAuNTExLDE5LjE3OWgxLjY3MXYuODM0aC44Mzd2NS4wMjFoLS44MzdWMjIuNTIxSDEwLjUxMXYyLjUxMkg5LjY3M1YyMC4wMTNoLjgzN1ptMCwuODM0djEuNjc1aDEuNjcxVjIwLjAxM1ptNy41MjYtLjgzNGguODM3di44MzRoLjgzN3YuODM3aC44MzR2LS44MzdoLjgzN3YtLjgzNGguODM3djUuODU1aC0uODM3VjIwLjg1aC0uODM3di44MzdoLS44MzRWMjAuODVoLS44Mzd2NC4xODRoLS44MzdaXCIgc3R5bGU9XCJmaWxsOiMwMDAwYmZcIi8+PHBhdGggZD1cIk0yMy44ODEsMTguNjQyYy02LjA2OS04LjIzNy03LjQ3Ni0xNC44NzYtNy44MzItMTYuNDYxQTE3NS4yMTcsMTc1LjIxNywwLDAsMCwyMy44ODEsMTguNjQyWlwiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtb3BhY2l0eTowLjE2NTY4MDQ2ODA4MjQyOFwiLz48cGF0aCBkPVwiTTE2LjA1MSwyLjEyLDE1LjYsMy4yMjdjLS4xNTkuMzkxLS4zMTEuNzY1LS40NjEsMS4xMzFzLS4zLjcyNC0uNDQ4LDEuMDc3LS4zLjctLjQ0OCwxLjA1My0uMy43MDYtLjQ2NSwxLjA2Ni0uMzI5LjcyOS0uNTA2LDEuMTExLS4zNjIuNzc4LS41NjEsMS4xOTNjLS4wMjguMDU3LS4wNjEuMTIzLS4wODkuMTgxQTIxLjg3MiwyMS44NzIsMCwwLDAsMTYuMiwxMy4xNTZhMTQuODc5LDE0Ljg3OSwwLDAsMS0zLjk4OS0yLjI3NmwtLjE0LjI4N2MtLjA2NS4xMzMtLjE0NC4yODMtLjIxMi40MmwtLjEwNi4yMTljLS44NzgsMS43OTMtMi4wMDYsMy45ODQtMy41MjQsNi44MjIsMy41NTEtMiw3LjM4MS00Ljg4NywxNC4zMzgtMi40LS4zNDktLjY2MS0uNjctMS4yOC0uOTcxLTEuODYzcy0uNTgxLTEuMTI4LS44NDEtMS42NDQtLjUtMS0uNzI1LTEuNDYzLS40MzMtLjktLjYyOS0xLjMxMy0uMzgtLjgxOC0uNTU0LTEuMi0uMzM5LS43NTQtLjUtMS4xMThTMTguMDQ3LDYuOSwxNy45LDYuNTQ2cy0uMjkxLS43MDktLjQzNC0xLjA2NmMtLjAzNi0uMDkxLS4wNzMtLjE4Ni0uMTA5LS4yNzdDMTYuOTQ5LDQuMjQ3LDE2LjUzNiwzLjI1OCwxNi4wNTEsMi4xMlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuXHRcIkFjdGlvblNjcmlwdFwiOiBgPHBhdGggZD1cIk0yLDE1LjI4MWMxLjkxOCwwLDIuMTEtMS4wNTUsMi4xMS0xLjkxOGExNy4xMTksMTcuMTE5LDAsMCwwLS4xOTItMi4yMDUsMTguNzIzLDE4LjcyMywwLDAsMS0uMTkyLTIuMjA1YzAtMi40LDEuNjMtMy40NTIsMy44MzYtMy40NTJoLjU3NVY2LjkzOEg3LjY1OGMtMS41MzQsMC0yLjExLjc2Ny0yLjExLDIuMjA1YTE0LjQxMiwxNC40MTIsMCwwLDAsLjE5MiwxLjkxOCwxNC4zMDYsMTQuMzA2LDAsMCwxLC4xOTIsMi4wMTRjMCwxLjcyNi0uNjcxLDIuNDkzLTEuOTE4LDIuODc3di4xYzEuMTUxLjI4OCwxLjkxOCwxLjE1MSwxLjkxOCwyLjg3N2ExNC4zMDYsMTQuMzA2LDAsMCwxLS4xOTIsMi4wMTQsMTMsMTMsMCwwLDAtLjE5MiwxLjkxOGMwLDEuNDM4LjU3NSwyLjMsMi4xMSwyLjNoLjQ3OVYyNi42SDcuNTYyYy0yLjIwNSwwLTMuODM2LS45NTktMy44MzYtMy42NDRhMTguNzIzLDE4LjcyMywwLDAsMSwuMTkyLTIuMjA1LDE1LjY4LDE1LjY4LDAsMCwwLC4xOTItMi4xMWMwLS44NjMtLjI4OC0xLjkxOC0yLjExLTEuOTE4WlwiIHN0eWxlPVwiZmlsbDojYzQxNzE4XCIvPjxwYXRoIGQ9XCJNOS40NzksMTguMDYyLDguMjMzLDIxLjhINi42TDEwLjYzLDkuOTExaDEuODIyTDE2LjQ3OSwyMS44SDE0Ljk0NUwxMy43LDE4LjA2MlptMy45MzItMS4xNTFMMTIuMjYsMTMuNDU5YTkuMzY0LDkuMzY0LDAsMCwxLS41NzUtMi4yMDVoMGMtLjE5Mi42NzEtLjM4NCwxLjQzOC0uNTc1LDIuMTFMOS45NTksMTYuODE1aDMuNDUyWlwiIHN0eWxlPVwiZmlsbDojYzQxNzE4XCIvPjxwYXRoIGQ9XCJNMTcuOTE4LDE5Ljk3OWE1Ljk0MSw1Ljk0MSwwLDAsMCwyLjc4MS43NjdjMS41MzQsMCwyLjQ5My0uODYzLDIuNDkzLTIuMDE0cy0uNjcxLTEuNzI2LTIuMjA1LTIuNGMtMS45MTgtLjY3MS0zLjE2NC0xLjcyNi0zLjE2NC0zLjM1NiwwLTEuODIyLDEuNTM0LTMuMjYsMy44MzYtMy4yNmE1LjEzNSw1LjEzNSwwLDAsMSwyLjU4OS41NzVsLS4zODQsMS4yNDdhNS41MTksNS41MTksMCwwLDAtMi4zLS40NzljLTEuNjMsMC0yLjIwNS45NTktMi4yMDUsMS44MjIsMCwxLjE1MS43NjcsMS42MywyLjQsMi4zLDIuMDE0Ljc2NywzLjA2OCwxLjcyNiwzLjA2OCwzLjQ1MiwwLDEuODIyLTEuMzQyLDMuNDUyLTQuMTIzLDMuNDUyYTUuODA3LDUuODA3LDAsMCwxLTMuMDY4LS43NjdaXCIgc3R5bGU9XCJmaWxsOiNjNDE3MThcIi8+PHBhdGggZD1cIk0zMCwxNi42MjNjLTEuOTE4LDAtMi4xMSwxLjE1MS0yLjExLDEuOTE4YTE1LjY4LDE1LjY4LDAsMCwwLC4xOTIsMi4xMSwxNS43MzgsMTUuNzM4LDAsMCwxLC4xOTIsMi4yMDVjMCwyLjY4NS0xLjYzLDMuNjQ0LTMuODM2LDMuNjQ0aC0uNTc1VjI1LjA2MmguNDc5YzEuNDM4LDAsMi4xMS0uODYzLDIuMTEtMi4zYTEzLDEzLDAsMCwwLS4xOTItMS45MTgsMTQuMzA2LDE0LjMwNiwwLDAsMS0uMTkyLTIuMDE0YzAtMS43MjYuNzY3LTIuNTg5LDEuOTE4LTIuODc3di0uMWMtMS4xNTEtLjI4OC0xLjkxOC0xLjE1MS0xLjkxOC0yLjg3N2ExNC4zMDYsMTQuMzA2LDAsMCwxLC4xOTItMi4wMTQsMTMsMTMsMCwwLDAsLjE5Mi0xLjkxOGMwLTEuNDM4LS41NzUtMi4yMDUtMi4xMS0yLjNoLS40NzlWNS40aC41NzVjMi4yMDUsMCwzLjgzNiwxLjA1NSwzLjgzNiwzLjQ1MmExNy4xMTksMTcuMTE5LDAsMCwxLS4xOTIsMi4yMDUsMTcuMTE5LDE3LjExOSwwLDAsMC0uMTkyLDIuMjA1YzAsLjk1OS4yODgsMS45MTgsMi4xMSwxLjkxOFpcIiBzdHlsZT1cImZpbGw6I2M0MTcxOFwiLz5gLFxuXHRcIkFkYVwiOiBgPHBhdGggZD1cIk0yNC41NTQsMjAuMDc1Yy4yMDkuMjcsMS4zNTYuOTYxLDEuMzcsMS4yNDZhNi45MjEsNi45MjEsMCwwLDAtMS40LS4zMjRjLS40NjgtLjE0Mi0uOTUxLS4yOTMtMS40MTItLjQ4YTkuMiw5LjIsMCwwLDEtMi4zNzUtMS4zQTMuMTQ2LDMuMTQ2LDAsMCwxLDE5LjMsMTYuNzVhMS43MjIsMS43MjIsMCwwLDEsMS43NjctMS44MjIsMy41ODQsMy41ODQsMCwwLDEsMS41OTMuMzIxYy4xNDYuMDY2LDEuMzEuNjA2LDEuMjU2LjgwOWE1LjUsNS41LDAsMCwwLTEuNDEtLjExMmMtLjY0OS4yNDQtLjQuODI4LS4xNjgsMS4zMTFhNy44NzcsNy44NzcsMCwwLDAsMS4wNzgsMS41NTRDMjMuNTgsMTkuMDA1LDI0LjMsMjAuMDgyLDI0LjU1NCwyMC4wNzVaXCIgc3R5bGU9XCJmaWxsOiMwZjIzYzNcIi8+PHBhdGggZD1cIk0yNC4xNDEsMTYuMjc2Yy4xMjgtLjU5LjgxOS0xLjM4NCwxLjM0NC0uNzczYTQuMiw0LjIsMCwwLDEsLjU3OCwxLjkxOGMuMTIuNjU2LjIsMS4zMjcuMjYxLDEuOTgyLjAzOC4zNzkuMzQsMS43OTQuMTIzLDIuMDc1YTIzLjI0LDIzLjI0LDAsMCwxLTIuOTIyLTIuODM4LDMuNzYzLDMuNzYzLDAsMCwxLS45MjUtMS43QzIyLjUsMTUuODY3LDIzLjQ3OSwxNi4yMSwyNC4xNDEsMTYuMjc2WlwiIHN0eWxlPVwiZmlsbDojMWExOTc4XCIvPjxwYXRoIGQ9XCJNMjYuMywxNy43ODFjLjE0MS0uNzMyLS40MDYtMi41OTItMS4wNjctMi45NDlhLjA2LjA2LDAsMCwwLC4wNDQtLjAwN2MtLjE1Ni0uNDQ0LTEuMzU5LDEuMTE2LTEuMjI4LDEuMTc0LS4zMTYtLjEzOC43NzQtMS45ODQuOTg4LTIuMTYuNy0uNTc4LDEuMzcyLS4wODYsMS44NDUuNTQzYTYuMDM2LDYuMDM2LDAsMCwxLC43MzMsNC40MzQsNC41LDQuNSwwLDAsMS0uNDIxLDEuMzEyYy0uMS4yMi0uNDUsMS4xLS42ODIsMS4xNzRBMTQuNzU0LDE0Ljc1NCwwLDAsMCwyNi4zLDE3Ljc4MVpcIiBzdHlsZT1cImZpbGw6IzBmMjNjM1wiLz48cGF0aCBkPVwiTTMuNjg3LDguNGMuMTc5LS4xODgtLjA0MS0xLjUyNy4zMjQtMS41NDguMjYyLS4wMTUuNTUzLDEuNzQxLjYyNywxLjk2OGE5LjIsOS4yLDAsMCwwLDEuMTI3LDIuMzI5LDcuNTI5LDcuNTI5LDAsMCwwLDQuMDE2LDIuOTc4LDQuNTUsNC41NSwwLDAsMCwyLjM2Ni4yYy45MzEtLjIwOCwxLjgyLS41NzcsMi43NTctLjc2NSwxLjM1LS4yNywzLjM0Mi0uMzUyLDQuNDM4LjY0Ny43LjY0MS4zNzYuNzYuMDQzLDEuNDIxYTIuNDQ1LDIuNDQ1LDAsMCwwLC4xNzgsMi41NjJjLjIzNS4zNDIsMS4wMzMuODI3LjY3NSwxLjA5NC0uNTY3LjQyNC0xLjI3Ny0uNDUyLTEuNjM2LS43NzYtMS40LTEuMjY0LTIuNzExLTEuMzEzLTQuNDkyLTEuMDc0YTguOTg3LDguOTg3LDAsMCwxLTQuODgzLS43MDhBOS40NjksOS40NjksMCwwLDEsMy42ODcsOC40WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTkuOTQxLDMwYTMuNjE1LDMuNjE1LDAsMCwxLTIuMzI1LS44MTdjLjQ2OS0uMDkyLDEuMDIxLjAyNSwxLjUwOC0uMDQ0YTkuNyw5LjcsMCwwLDAsMS43NTQtLjQzQTEwLjUzNywxMC41MzcsMCwwLDAsMjMuOSwyNy4xNTVhNi41NSw2LjU1LDAsMCwwLDIuNzU3LTUuMjE0Yy4xNDktLjA4OC4zMTYsMS4wMzQuMzE5LDEuMDkxYTUuNzg5LDUuNzg5LDAsMCwxLS4xOSwxLjcyNyw2Ljg2Nyw2Ljg2NywwLDAsMS0xLjQyMywyLjc3NEE3LjI4Niw3LjI4NiwwLDAsMSwxOS45NDEsMzBaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOC45NjIsMTkuMTA5YTUuNzYsNS43NiwwLDAsMS0yLjA1Ljg1OSwxMy4zOCwxMy4zOCwwLDAsMS0yLjIyNC41NDksOC44NjEsOC44NjEsMCwwLDEtNC40MzUtLjUxLDkuOTM5LDkuOTM5LDAsMCwxLTMuODQ5LTIuNEM2LjA1MiwxNy4yNCw0LjMsMTUuMTksNC44NTYsMTQuNTU3Yy4yNDgtLjI4Mi44NzUuODQ2LDEsLjk5MmE1LDUsMCwwLDAsMS4zNTcsMS4xMSwxMC45MTcsMTAuOTE3LDAsMCwwLDQuMDM1LDEuNDU2LDYuNjkzLDYuNjkzLDAsMCwwLDIuMzQtLjA5NCwxMi43NDMsMTIuNzQzLDAsMCwxLDEuNjk0LS40ODUsNCw0LDAsMCwxLDIuMTEzLjQ1N0MxNy43MzksMTguMTYzLDE4LjkxOCwxOC43MzYsMTguOTYyLDE5LjEwOVpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTI4LjMxMywxNS4wNzhhMTkuMjc3LDE5LjI3NywwLDAsMS0uNDUzLDMuNzc0Yy0uMTc2LS4yNDIuMDE2LTEuNDcsMC0xLjc5MmE2LjAzMiw2LjAzMiwwLDAsMC0uMzg0LTIuMDg3QTQuOTI1LDQuOTI1LDAsMCwwLDI2LjEsMTMuMzEyYTE0LjcyOCwxNC43MjgsMCwwLDEtMS4yNy0xLjUzNmMtMS44MzctMi4zODItMy4yNDUtNS4yMTEtMi45LTguMy4wMzQtLjMwOC4wNjktMS40NDguNDExLTEuNDQ1LjE1MiwwLC4yNjYsMS41NjEuMjksMS43MThhMTIuNTI3LDEyLjUyNywwLDAsMCwxLjIyNCw0LjExNmMuNjcsMS4yMjIsMS45NDcsMi4wMjMsMi44MjUsMy4xQTYuNTc5LDYuNTc5LDAsMCwxLDI4LjMxMywxNS4wNzhaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xNS43LDI2LjkzNWExMC44NDUsMTAuODQ1LDAsMCwwLDYuNDM2LS42ODcsNi45NDEsNi45NDEsMCwwLDAsNC4yNzgtNC40MThjLjMxOS4yLS4wNDgsMS41MjktLjEyOCwxLjc4MWE1LjcyNiw1LjcyNiwwLDAsMS0xLjAxLDEuODEzLDguOTMzLDguOTMzLDAsMCwxLTMuMjU3LDIuNTE0QzIwLjMxNiwyOC43MSwxNi4zNTcsMjkuNTksMTUuNywyNi45MzVaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOS4xNTEsMTkuMzc2Yy4zNjcsMi4xMDctMi45NTcsMy4xMjQtNC40NzgsMy4yMTMtMS44NTkuMTEtNC45MjktLjI5Mi02LjA2LTIuMDMxLS42NzMtMS4wMzUuNzgxLS4wOSwxLjE4OC4wNThhOC42NjMsOC42NjMsMCwwLDAsMy4wNi41LDExLjYsMTEuNiwwLDAsMCwzLjMwNS0uNSwxMy43MjUsMTMuNzI1LDAsMCwwLDEuNTMzLS41NzZDMTgsMTkuOTA4LDE4LjgyMywxOS4zNDksMTkuMTUxLDE5LjM3NlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTI0LjE0MiwyMy40NmMuNC0uOTQ1LTEuODgzLTEuNTc4LTIuNDQ1LTEuODU4YTQuODU3LDQuODU3LDAsMCwxLTEuMzE1LS44NjdjLS4xODEtLjE4MS0uODcyLS45Mi0uODA3LTEuMjE5YTQuOTEyLDQuOTEyLDAsMCwxLDEuMDg3LS4xNzUsNS45Myw1LjkzLDAsMCwxLC44NTUuNTg4LDEwLjMyMywxMC4zMjMsMCwwLDAsLjk2NC41QTE1LjYxNSwxNS42MTUsMCwwLDAsMjQuNiwyMS4yYy4zMDguMDksMS41NDkuMjA4LDEuNzI3LjQyOEMyNi4yODcsMjEuOTI0LDI0LjM1NywyMy42NDksMjQuMTQyLDIzLjQ2WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjYuMSwyMi4xNzJjLjI2NS40My0xLjA4LDEuODMxLTEuMzYzLDIuMTA1YTkuMzQsOS4zNCwwLDAsMS0yLjU2NiwxLjcyOCw3Ljc0OCw3Ljc0OCwwLDAsMS0yLjU2Ljc1M2MtLjY3OS4wNTgtMS45NjYtLjEyNC0yLjE0MS0uOTc5YTYuOTUxLDYuOTUxLDAsMCwxLDEuMTc3LS4wODZjLjQ2Mi0uMDU5LjkyMS0uMTQ5LDEuMzc2LS4yNDZhMTMuMDY1LDEzLjA2NSwwLDAsMCwyLjE4NC0uNjQ1LDExLjUwNiwxMS41MDYsMCwwLDAsMi4wODQtMS4xMSwxMC44NzIsMTAuODcyLDAsMCwwLDEuMDc4LS44MjJDMjUuNDc0LDIyLjc4MSwyNS45ODYsMjIuMTY4LDI2LjEsMjIuMTcyWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTguNzU4LDExLjk2NWMtLjEtMS4zMDgsMi42MTItMS4zLDMuMjcxLTEuMDkyYTUuOTc2LDUuOTc2LDAsMCwxLDIuOTgyLDIuNDc1Yy0xLjA4Mi44LTIuNDQ5LjA5NC0zLjMtLjY1NGE0LjMyNCw0LjMyNCwwLDAsMC0xLjQ4MS0xLjAyOUMxOS40MjEsMTEuNCwxOS40MTIsMTEuNzU5LDE4Ljc1OCwxMS45NjVaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yNS43ODMsMTMuMzQxYy0uNDQ0LS4wMjktLjMxNi4wNzEtLjY0Ny0uMjEyLS4zNTgtLjMwNy0uNjE0LS43OTUtLjk0NS0xLjE0MS0uNTM0LS41NTgtMS4yNDItLjg5NS0xLjcyMy0xLjQ4NWE3LjI2OSw3LjI2OSwwLDAsMS0xLjYyNC00Ljg0OGMuMDE4LTEuNDg5LjQwNy4xODcuNTUxLjY3NWExMi4yNzYsMTIuMjc2LDAsMCwwLDEuMTI2LDIuNzA4LDQ2LjA1NSw0Ni4wNTUsMCwwLDAsMy40LDQuMzIxQzI1Ljg4MiwxMy4zNjEsMjUuODI0LDEzLjMzOCwyNS43ODMsMTMuMzQxWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjAuMDY4LDE0Ljc1NmMuMDMzLS42MjUtLjkxMS0uNzkyLTEuMjExLTEuNDItLjE2NC0uMzQzLS4yMTEtLjU2OS4wMjktLjcuMDgyLS4wNDUuMzgzLjAxMi41LS4wMi4yNzEtLjA3Ni4zMzUtLjI3My41ODEtLjRBMS4xOTMsMS4xOTMsMCwwLDEsMjEuNiwxMy4yMzcsMS44MjEsMS44MjEsMCwwLDEsMjAuMDY4LDE0Ljc1NlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTIwLjUsMTQuNzQ1YTEuOTMxLDEuOTMxLDAsMCwwLDEuMzIzLTEuN2MuNTI0LjEzOS45MjguNjU4LDEuNTIxLjc3MWEyLjU4NCwyLjU4NCwwLDAsMCwxLjAyOS0uMDE3Yy4yMDctLjA0NS41NC0uMjc0LjcyMS0uMjU5LS4wMzMuMTYzLS40NjQuNTQ2LS41NjUuNzE3YTQuMjQyLDQuMjQyLDAsMCwwLS4zODguOWMtLjIyOS43NDEtLjA2MS43MzktLjcwOS4zMTFhNC4yODQsNC4yODQsMCwwLDAtMS45NTctLjcyQzIxLjIwOSwxNC43MjIsMjAuNTk0LDE0Ljc2NywyMC41LDE0Ljc0NVpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE5LjkwNSwyMC43MzRhMi4wMDgsMi4wMDgsMCwwLDEtMS40LDEuNzEyYy0uMjA1LjA5MS0yLjAxOC43MzMtMi4wMzIuMzQ4LS4wMDctLjIsMS42MjQtLjk1NCwxLjgwOS0xLjExYTMuMzU1LDMuMzU1LDAsMCwwLC44NjctMS4wNzFjLjA1NS0uMTEyLjIzMi0uOTI1LjI3MS0uOTQzQzE5LjY0NCwxOS41NjQsMTkuOTA4LDIwLjYsMTkuOTA1LDIwLjczNFpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTExLjM3MywxMi41MzJhMTAuNjI1LDEwLjYyNSwwLDAsMSwzLjcxLS45MTQsMTAuMjgyLDEwLjI4MiwwLDAsMSwxLjg2NS4wMjRjLjM2Ni4wMzksMS40NjkuMDU0LDEuNzQuMzQzYS4yNTUuMjU1LDAsMCwxLS4yNzMuMTczYy0uMDM3LjA3Ny4yNTEuMzcxLjMuNDI1LS4wMzQuMDM0LTEuNDQ1LS40LTEuNTcyLS40MjRhMTAuNjMyLDEwLjYzMiwwLDAsMC0yLjI4Mi0uMTM0LDE2LDE2LDAsMCwwLTEuODQxLjE5NEE2LjIyNCw2LjIyNCwwLDAsMSwxMS4zNzMsMTIuNTMyWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjIuNTEyLDEwLjczMWExLjg4OCwxLjg4OCwwLDAsMS0xLjUxNy0uNmMtLjI0Ny0uMzQ5LS43MzctMS42OTItLjM4NS0yLjAyMS4yMDktLjIuMzg0LjY2Mi40ODQuODQ2QTEwLjgyMiwxMC44MjIsMCwwLDAsMjIuNTEyLDEwLjczMVpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTI3Ljc4OCwxOS4yYTE5LjIxMiwxOS4yMTIsMCwwLDEtLjc0OSwzLjMxM2MtLjE3My0uMDc3LS4yNzUtLjc3OC0uNTYyLS45NWE0LjA3LDQuMDcsMCwwLDAsLjc2LTEuMTU0QzI3LjM4OSwyMC4xMDcsMjcuNTQsMTkuMzYzLDI3Ljc4OCwxOS4yWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTkuOTgxLDExLjg0M2MtLjEzMi4yNjgtLjkzMiwxLjEtMS4xMTguNDgxQzE4Ljc1NiwxMS45NjgsMTkuNzM5LDExLjQ4MywxOS45ODEsMTEuODQzWm0tLjc0Ny40NWMuMjI4LjAwNi4wMTItLjI0OC4wMTItLjI2NkMxOS4yNDUsMTEuOTg0LDE4Ljg3OCwxMi4yOTMsMTkuMjM0LDEyLjI5M1pcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz5gLFxuXHRcIkFMXCI6IGA8cGF0aCBkPVwiTTExLjYxNiw3Ljk4NkExLjU1OSwxLjU1OSwwLDAsMCwxMC4xNiw3SDEwLjFhMS41NTgsMS41NTgsMCwwLDAtMS40NTYuOTg2TDIsMjVINS44MDZsMS4wMTUtMi44MzRoNi42MjFMMTQuNDU3LDI1aDMuOFpNNy45NDQsMTguOTU2bDIuMTg4LTYuMTExLDIuMTg4LDYuMTE2WlwiIHN0eWxlPVwiZmlsbDojMmVhOThlXCIvPjxwYXRoIGQ9XCJNMjMuODI5LDIxLjY3MVY3LjEyOUgyMC4zVjIyLjc0N0EyLjM0NiwyLjM0NiwwLDAsMCwyMi41NywyNUgzMFYyMS42NzJaXCIgc3R5bGU9XCJmaWxsOiMyZWE5OGVcIi8+YCxcblx0XCJBTlRMUjRcIjogYDxwYXRoIGQ9XCJNMTQuMTc3LDcuMjc4YTIuMDgsMi4wOCwwLDAsMSwzLjA0MS0uOEEzLjU3MSwzLjU3MSwwLDAsMSwxOC4yLDguMDIyYzEuMzU2LDMuMTIyLDIuOSw2LjE2NSw0LjExOSw5LjM0NS42NDUsMS41LDEuNDI5LDIuOTM4LDEuOTk0LDQuNDY4YTEuNDU1LDEuNDU1LDAsMCwxLTIuMjU4LDEuMzc2Yy0yLjgtMS41NzItNS42MjgtMy4wOTQtOC4zODUtNC43MzEsMi4wMDkuMDA4LDQuMDE4LS4wMDgsNi4wMjUuMDEzYTE5LjcwNywxOS43MDcsMCwwLDAtMS4yODgtMi45MThjLS43ODEtMS44NTgtMS42LTMuNy0yLjM1OC01LjU2NWE5Ljc4Myw5Ljc4MywwLDAsMC0xLjAzMiwyLjEyNWMtMS4zLDMuMTgyLTIuODcsNi4yNDEtNC4xMzYsOS40MzUtLjI4MS41OS0uNDI0LDEuMzQ0LTEuMDM1LDEuNjlhMS40NDcsMS40NDcsMCwwLDEtMi4wOTQtLjczOGMtLjI0MS0uNjEuMTUxLTEuMi4zODItMS43NDMuNzc5LTEuNzI1LDEuNjQ1LTMuNDEzLDIuMjgzLTUuMkMxMS42NSwxMi44LDEyLjkxNiwxMC4wNDEsMTQuMTc3LDcuMjc4WlwiIHN0eWxlPVwiZmlsbDojZmVmZWZlXCIvPjxwYXRoIGQ9XCJNMTMuODE3LDIuMkExMy45MjMsMTMuOTIzLDAsMCwxLDI5LjUyNiwxMi41NDlhMTMuNzMzLDEzLjczMywwLDAsMS0yLjA4MiwxMS41MTlBMTQuMDc0LDE0LjA3NCwwLDAsMSw3LjczOCwyNy4yOTNhMTMuODUyLDEzLjg1MiwwLDAsMS01LjYxNS05LjQ4M0ExNC4xNTIsMTQuMTUyLDAsMCwxLDMuNDUxLDkuODUsMTMuOTYxLDEzLjk2MSwwLDAsMSwxMy44MTcsMi4ybS4zNTksNS4wOGMtMS4yNjEsMi43NjItMi41MjYsNS41MjUtMy43NjIsOC4zLS42MzgsMS43ODYtMS41LDMuNDczLTIuMjgzLDUuMi0uMjMxLjU0Mi0uNjIzLDEuMTMzLS4zODIsMS43NDNhMS40NDcsMS40NDcsMCwwLDAsMi4wOTQuNzM4Yy42MS0uMzQ3Ljc1My0xLjEsMS4wMzUtMS42OSwxLjI2Ni0zLjE5NCwyLjgzMy02LjI1Myw0LjEzNi05LjQzNWE5Ljc4Myw5Ljc4MywwLDAsMSwxLjAzMi0yLjEyNWMuNzU2LDEuODY4LDEuNTc3LDMuNzA3LDIuMzU4LDUuNTY1YTE5LjcwNywxOS43MDcsMCwwLDEsMS4yODgsMi45MThjLTIuMDA3LS4wMi00LjAxNi0uMDA1LTYuMDI1LS4wMTMsMi43NTcsMS42MzcsNS41ODgsMy4xNTksOC4zODUsNC43MzFhMS40NTUsMS40NTUsMCwwLDAsMi4yNTgtMS4zNzZjLS41NjUtMS41MjktMS4zNDktMi45NzEtMS45OTQtNC40NjgtMS4yMi0zLjE3OS0yLjc2Mi02LjIyMy00LjExOS05LjM0NWEzLjU3MSwzLjU3MSwwLDAsMC0uOTgyLTEuNTQ0QTIuMDgsMi4wOCwwLDAsMCwxNC4xNzcsNy4yNzhaXCIgc3R5bGU9XCJmaWxsOiNlNDRhMzJcIi8+YCxcblx0XCJBcGFjaGUgQ29uZmlndXJhdGlvblwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTU2MDIuNjgyXCIgeTE9XCI3NjguNTQxXCIgeDI9XCItNTU5OC43MjdcIiB5Mj1cIjc2My45MTdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjQyMywgLTAuOTA2LCAtMC45MDYsIC0wLjQyMywgMzA4Mi44NTMsIC00NzQ4LjU1MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmNjk5MjNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMTJcIiBzdG9wLWNvbG9yPVwiI2Y3OWEyM1wiLz48c3RvcCBvZmZzZXQ9XCIwLjgzOFwiIHN0b3AtY29sb3I9XCIjZTk3ODI2XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTU2MzEuOTUyXCIgeTE9XCI3NjkuMDUyXCIgeDI9XCItNTYwMy43MzdcIiB5Mj1cIjc2OS4wNTJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjQyMywgLTAuOTA2LCAtMC45MDYsIC0wLjQyMywgMzA4Mi44NTMsIC00NzQ4LjU1MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjMyM1wiIHN0b3AtY29sb3I9XCIjOWUyMDY0XCIvPjxzdG9wIG9mZnNldD1cIjAuNjNcIiBzdG9wLWNvbG9yPVwiI2M5MjAzN1wiLz48c3RvcCBvZmZzZXQ9XCIwLjc1MVwiIHN0b3AtY29sb3I9XCIjY2QyMzM1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2U5NzgyNlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi01NjI4LjU0NlwiIHkxPVwiNzY2LjIyMVwiIHgyPVwiLTU2MTEuNzMzXCIgeTI9XCI3NjYuMjIxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC40MjMsIC0wLjkwNiwgLTAuOTA2LCAtMC40MjMsIDMwODIuODUzLCAtNDc0OC41NTEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMjgyNjYyXCIvPjxzdG9wIG9mZnNldD1cIjAuMDk1XCIgc3RvcC1jb2xvcj1cIiM2NjJlOGRcIi8+PHN0b3Agb2Zmc2V0PVwiMC43ODhcIiBzdG9wLWNvbG9yPVwiIzlmMjA2NFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk0OVwiIHN0b3AtY29sb3I9XCIjY2QyMDMyXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiLTU2MzAuMzY3XCIgeTE9XCI3NjkuMzE2XCIgeDI9XCItNTYwMi4xNTJcIiB5Mj1cIjc2OS4zMTZcIiB4bGluazpocmVmPVwiI2JcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZVwiIHgxPVwiLTU2MjguMzFcIiB5MT1cIjc2OC45MzNcIiB4Mj1cIi01NjEzLjQ4MlwiIHkyPVwiNzY4LjkzM1wiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJmXCIgeDE9XCItNTYzMC4zNjdcIiB5MT1cIjc2Ni4zOTRcIiB4Mj1cIi01NjAyLjE1MlwiIHkyPVwiNzY2LjM5NFwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJnXCIgeDE9XCItNTYzMi4xMThcIiB5MT1cIjc2Ni41MzlcIiB4Mj1cIi01NjAzLjkwMlwiIHkyPVwiNzY2LjUzOVwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJoXCIgeDE9XCItNTYzMC4zNjdcIiB5MT1cIjc2NS41MjZcIiB4Mj1cIi01NjAyLjE1MlwiIHkyPVwiNzY1LjUyNlwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJpXCIgeDE9XCItNTYzMC4zNjdcIiB5MT1cIjc2NS42MjVcIiB4Mj1cIi01NjAyLjE1MlwiIHkyPVwiNzY1LjYyNVwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJqXCIgeDE9XCItNTYxNC41MTZcIiB5MT1cIjc2NS42NDVcIiB4Mj1cIi01NjA4LjI4XCIgeTI9XCI3NjUuNjQ1XCIgeGxpbms6aHJlZj1cIiNiXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2FwYWNoZTwvdGl0bGU+PHBhdGggZD1cIk0xOS45OTMsMi4xMzNhMTAuMjY3LDEwLjI2NywwLDAsMC0yLjA0LDIuMDU2bC44LDEuNTFhMTkuNzMzLDE5LjczMywwLDAsMSwxLjcwOC0yLjE0NGMuMDQ0LS4wNDkuMDY4LS4wNzIuMDY4LS4wNzJsLS4wNjguMDcyYTE3Ljg2NSwxNy44NjUsMCwwLDAtMS42LDIuMTc0LDMwLjEsMzAuMSwwLDAsMCwzLjExMS0uMzg1LDMuMjg4LDMuMjg4LDAsMCwwLS4zLTIuNVMyMC45LDEuNiwxOS45OTMsMi4xMzNaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xOC42MzgsMTAuNzQ5bC4wMTgsMC0uMTE1LjAxMy0uMDIxLjAwOVpcIiBzdHlsZT1cImZpbGw6bm9uZVwiLz48cGF0aCBkPVwiTTE3LjgyMSwxMy40NTVjLS4wNjYuMDE1LS4xMzIuMDI2LS4yLjAzNkMxNy42ODksMTMuNDgxLDE3Ljc1NiwxMy40NjksMTcuODIxLDEzLjQ1NVpcIiBzdHlsZT1cImZpbGw6bm9uZVwiLz48cGF0aCBkPVwiTTEyLjI3LDE5LjUyNGMuMDA5LS4wMjMuMDE3LS4wNDUuMDI1LS4wNjhxLjI2NC0uNy41MjMtMS4zNTcuMjkxLS43NDEuNTc1LTEuNDM2LjMtLjczMy41OS0xLjQxOC4zMDUtLjcxOC42LTEuMzg0LjI0LS41NDIuNDc0LTEuMDQ5LjA3OC0uMTY5LjE1NS0uMzM1LjE1My0uMzI5LjMtLjY0NS4xMzgtLjI5MS4yNzQtLjU3Yy4wMy0uMDYyLjA2LS4xMjMuMDktLjE4NWwuMDE1LS4wMy0uMS4wMTEtLjA3OC0uMTU0Yy0uMDA3LjAxNS0uMDE1LjAzLS4wMjMuMDQ1cS0uMjExLjQxOC0uNDE3Ljg0NS0uMTE5LjI0Ni0uMjM4LjQ5NS0uMzI4LjY4OS0uNjQ1LDEuMzg5VDEzLjc2NiwxNS4xcS0uMy43LS41OTQsMS40dC0uNTY3LDEuMzg3cS0uMjg5LjcyLS41NjIsMS40MjYtLjA2Mi4xNTktLjEyMy4zMTgtLjIxOS41NjktLjQyNiwxLjEyNGwuMTIzLjI0My4xMS0uMDEyLjAxMi0uMDMzUTEyLjAwOCwyMC4yMTYsMTIuMjcsMTkuNTI0WlwiIHN0eWxlPVwiZmlsbDpub25lXCIvPjxwYXRoIGQ9XCJNMTcuNTcsMTMuNVpcIiBzdHlsZT1cImZpbGw6bm9uZVwiLz48cGF0aCBkPVwiTTE3LjMwNSwxNC44MThsLS4zMTUuMDU1aDBsLjE2MS0uMDI1QzE3LjIsMTQuODM5LDE3LjI1MywxNC44MjksMTcuMzA1LDE0LjgxOFpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZVwiLz48cGF0aCBkPVwiTTE3LjMwNSwxNC44MThsLS4zMTUuMDU1aDBsLjE2MS0uMDI1QzE3LjIsMTQuODM5LDE3LjI1MywxNC44MjksMTcuMzA1LDE0LjgxOFpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZTtvcGFjaXR5OjAuMzQ5OTk5OTk0MDM5NTM1NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE3LjU3MywxMy41aDBsLjA1LS4wMDdjLjA2OC0uMDEuMTM1LS4wMjIuMi0uMDM2bC0uMjQ4LjA0MlpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZVwiLz48cGF0aCBkPVwiTTE3LjU3MywxMy41aDBsLjA1LS4wMDdjLjA2OC0uMDEuMTM1LS4wMjIuMi0uMDM2bC0uMjQ4LjA0MlpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZTtvcGFjaXR5OjAuMzQ5OTk5OTk0MDM5NTM1NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE2LjM5NCw5LjZxLjM2NS0uNjgyLjczOS0xLjMzMi4zODgtLjY3NC43ODQtMS4zMDVsLjA0Ni0uMDc1cS4zOTItLjYyLjc5LTEuMTkxbC0uOC0xLjUxLS4xODIuMjI1Yy0uMjMxLjI4OC0uNDcuNi0uNzE2LjkyNS0uMjc3LjM3LS41NjIuNzY0LS44NTEsMS4xNzktLjI2Ny4zODMtLjUzOC43ODQtLjgwOSwxLjItLjIzMS4zNTMtLjQ2Mi43MTctLjY5MiwxLjA5bC0uMDI2LjA0MkwxNS43MTgsMTAuOVExNi4wNTIsMTAuMjQ0LDE2LjM5NCw5LjZaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xMS42NTEsMjEuMTkycS0uMjA3LjU2OC0uNDE1LDEuMTU5bC0uMDA2LjAxNy0uMDU5LjE2N2MtLjA5My4yNjYtLjE3NS41LS4zNjEsMS4wNDlhMi4xMDcsMi4xMDcsMCwwLDEsLjc4Ni45MjYsMS42OCwxLjY4LDAsMCwwLS41NDQtMS4xNTQsMy42MjEsMy42MjEsMCwwLDAsMy40ODktMS40MiwyLjc5MSwyLjc5MSwwLDAsMCwuMTY1LS4zMTMsMS40NTEsMS40NTEsMCwwLDEtMS40LjUxM2wwLDAsMCwwYTQuMDU5LDQuMDU5LDAsMCwwLDIuMDQ2LTEuNjcyYy4xMTEtLjE3OC4yMTgtLjM3Mi4zMjgtLjU4N2EzLjMsMy4zLDAsMCwxLTMuMTA5LDEuMDFsLS44NDIuMDkyQzExLjcsMjEuMDUsMTEuNjc3LDIxLjEyMSwxMS42NTEsMjEuMTkyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNMTIuMDQ0LDE5LjMwNnEuMjczLS43MDYuNTYyLTEuNDI2LjI3Ni0uNjkuNTY3LTEuMzg3dC41OTQtMS40cS4zMDgtLjcxMS42MjktMS40MTl0LjY0NS0xLjM4OXEuMTE4LS4yNDguMjM4LS40OTUuMjA3LS40MjYuNDE3LS44NDVjLjAwNy0uMDE1LjAxNS0uMDMuMDIzLS4wNDVMMTQuNjc3LDguODQ3bC0uMDUxLjA4M2MtLjI0Mi40LS40ODQuOC0uNzIxLDEuMjE2cy0uNDc1Ljg0NC0uNywxLjI3NnEtLjI5MS41NDctLjU2OCwxLjFsLS4xMS4yMjVjLS4yMjcuNDY3LS40MzIuOTE4LS42MTcsMS4zNTJxLS4zMTUuNzM3LS41NTYsMS40MDZjLS4xMDcuMjkzLS4yLjU3Ni0uMjkyLjg0Ny0uMDczLjIzMi0uMTQyLjQ2NC0uMjA4LjdxLS4yMzQuODE4LS40LDEuNjMxTDExLjUsMjAuNzQ4cS4yMDgtLjU1NC40MjYtMS4xMjRaXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0xMC40MzUsMTguNzU1YTE2LjA3LDE2LjA3LDAsMCwwLS4yNzIsMS45NzRjMCwuMDIzLDAsLjA0Ni0uMDA1LjA2OWE0LjE1LDQuMTUsMCwwLDAtMS4yLTEuMDI5LDUuODI1LDUuODI1LDAsMCwxLDEuMTcyLDIuNjkzLDIuNjQyLDIuNjQyLDAsMCwxLTEuMzI1LS4yMjYsMi42NjIsMi42NjIsMCwwLDAsMS4xMy42ODYsMy4yNDcsMy4yNDcsMCwwLDAtMS41NzEuNzgzLDMuMzU5LDMuMzU5LDAsMCwxLDEuODYxLS4zNDJDOS41MSwyNS4zODksOC43OTMsMjcuNjI2LDguMDc2LDMwYS42MjUuNjI1LDAsMCwwLC40MjUtLjQxM2MuMTI4LS40My45NzYtMy4yNTEsMi4zMDYtNi45NTlsLjExNS0uMzE4LjAzMi0uMDg5cS4yMTEtLjU4My40MzctMS4xOWwuMS0uMjc3LDAtLjAwNUwxMC40NSwxOC42ODRDMTAuNDQ1LDE4LjcwNywxMC40MzksMTguNzMxLDEwLjQzNSwxOC43NTVaXCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBhdGggZD1cIk0xNS44OCwxMS4wNzhsLS4wOS4xODVxLS4xMzUuMjc5LS4yNzQuNTctLjE1LjMxNS0uMy42NDVjLS4wNTIuMTExLS4xLjIyMi0uMTU1LjMzNXEtLjIzNC41MDgtLjQ3NCwxLjA0OS0uMy42NjYtLjYsMS4zODQtLjI5MS42ODUtLjU5LDEuNDE4LS4yODQuNy0uNTc1LDEuNDM2LS4yNTkuNjYxLS41MjMsMS4zNTdjLS4wMDkuMDIzLS4wMTcuMDQ1LS4wMjUuMDY4cS0uMjYyLjY5My0uNTI5LDEuNDIybC0uMDEyLjAzMy44NDItLjA5Mi0uMDUtLjAwOWE2LDYsMCwwLDAsMy4yMS0xLjgwNyw3Ljk4NCw3Ljk4NCwwLDAsMCwxLjEtMS41MjQsMTMuMTM5LDEzLjEzOSwwLDAsMCwuNzA2LTEuNDY3Yy4xOTUtLjQ3Mi4zODItLjk4Mi41NjItMS41MzZhMy4wNTMsMy4wNTMsMCwwLDEtLjc4OC4yNzRjLS4wNTEuMDExLS4xLjAyMS0uMTU2LjAzcy0uMTA3LjAxOC0uMTYxLjAyNWgwYTMuNjY4LDMuNjY4LDAsMCwwLDEuOTYyLTEuOTEzLDMuMzQ0LDMuMzQ0LDAsMCwxLTEuMTMuNDk1Yy0uMDY2LjAxNS0uMTMyLjAyNi0uMi4wMzZsLS4wNS4wMDdoMGEzLjgyMSwzLjgyMSwwLDAsMCwuODM5LS40NjljLjA1MS0uMDM4LjEtLjA3OC4xNDgtLjEyLjA3My0uMDYzLjE0Mi0uMTI5LjIwOC0uMi4wNDItLjA0NC4wODMtLjA5LjEyMy0uMTM4YTMuMjcsMy4yNywwLDAsMCwuMjYzLS4zNjJjLjAyNS0uMDQuMDUtLjA4LjA3NC0uMTIyLjAzMS0uMDYuMDYxLS4xMTkuMDktLjE3OC4xMzEtLjI2NC4yMzYtLjUuMzE5LS43MDYuMDQyLS4xLjA3OC0uMi4xMDktLjI4OC4wMTMtLjAzNS4wMjUtLjA3LjAzNi0uMS4wMzMtLjEuMDYtLjE4Ny4wODEtLjI2NWEyLjYwNSwyLjYwNSwwLDAsMCwuMDYyLS4yNzVoMGExLjAxLDEuMDEsMCwwLDEtLjEwOS4wNzUsMy45NjUsMy45NjUsMCwwLDEtMS4xNjIuNGwuNzczLS4wODUtLjc3My4wODUtLjAxOCwwLS4xMTkuMDE5LjAyMS0uMDA5LTIuNjQ1LjI5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNMTguODU4LDUuNzNjLS4yMzUuMzYxLS40OTIuNzcxLS43NjgsMS4yMzZsLS4wNDQuMDc0cS0uMzU4LjYtLjc1OSwxLjMyNy0uMzQ2LjYyNi0uNzE5LDEuMzQ3LS4zMjYuNjI5LS42NzIsMS4zMzZsMi42NDUtLjI5QTMuMjE2LDMuMjE2LDAsMCwwLDE5Ljk5LDkuNjJjLjA4OS0uMTI4LjE3OC0uMjYyLjI2Ny0uNC4yNzItLjQyNC41MzgtLjg5MS43NzYtMS4zNTVhMTQuMDc0LDE0LjA3NCwwLDAsMCwuNTg4LTEuMjk0LDYuOCw2LjgsMCwwLDAsLjIzMy0uN2MuMDQ4LS4xODQuMDg2LS4zNTguMTE1LS41MjRBMzAuMTUyLDMwLjE1MiwwLDAsMSwxOC44NTgsNS43M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNnKVwiLz48cGF0aCBkPVwiTTE3LjE0OSwxNC44NDhjLS4wNTMuMDA5LS4xMDcuMDE4LS4xNjEuMDI1aDBDMTcuMDQyLDE0Ljg2NiwxNy4xLDE0Ljg1NywxNy4xNDksMTQuODQ4WlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlXCIvPjxwYXRoIGQ9XCJNMTcuMTQ5LDE0Ljg0OGMtLjA1My4wMDktLjEwNy4wMTgtLjE2MS4wMjVoMEMxNy4wNDIsMTQuODY2LDE3LjEsMTQuODU3LDE3LjE0OSwxNC44NDhaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmU7b3BhY2l0eTowLjM0OTk5OTk5NDAzOTUzNTU7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xNy4xNDksMTQuODQ4Yy0uMDUzLjAwOS0uMTA3LjAxOC0uMTYxLjAyNWgwQzE3LjA0MiwxNC44NjYsMTcuMSwxNC44NTcsMTcuMTQ5LDE0Ljg0OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNoKVwiLz48cGF0aCBkPVwiTTE3LjU3LDEzLjVsLjA1LS4wMDctLjA1LjAwN1pcIiBzdHlsZT1cImZpbGw6I2JlMjAyZVwiLz48cGF0aCBkPVwiTTE3LjU3LDEzLjVsLjA1LS4wMDctLjA1LjAwN1pcIiBzdHlsZT1cImZpbGw6I2JlMjAyZTtvcGFjaXR5OjAuMzQ5OTk5OTk0MDM5NTM1NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE3LjU3LDEzLjVsLjA1LS4wMDctLjA1LjAwN1pcIiBzdHlsZT1cImZpbGw6dXJsKCNpKVwiLz48cGF0aCBkPVwiTTE3LjU3MiwxMy41aDBaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmVcIi8+PHBhdGggZD1cIk0xNy41NzIsMTMuNWgwWlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlO29wYWNpdHk6MC4zNDk5OTk5OTQwMzk1MzU1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTcuNTcyLDEzLjVoMFpcIiBzdHlsZT1cImZpbGw6dXJsKCNqKVwiLz5gLFxuXHRcIkFwZXhcIjogYDxwYXRoIGQ9XCJNMTMuNjUyLDguMzM4QTQuOTA2LDQuOTA2LDAsMCwxLDE3LjIsNi44MTRhNC45NTcsNC45NTcsMCwwLDEsNC4zMiwyLjU2LDUuOTcyLDUuOTcyLDAsMCwxLDIuNDQyLS41MTksNi4wODksNi4wODksMCwxLDEtMS4xODksMTIuMDYsNC40MTIsNC40MTIsMCwwLDEtNS43ODIsMS44MTZBNS4wMzQsNS4wMzQsMCwwLDEsNy42MzQsMjIuNWE0LjY0Niw0LjY0NiwwLDAsMS0uOTYuMSw0LjczMiw0LjczMiwwLDAsMS0yLjMzNy04LjgxMiw1LjQzOCw1LjQzOCwwLDAsMSw5LjMxNS01LjQ1M1wiIHN0eWxlPVwiZmlsbDojMGY5YmQ3XCIvPjxwYXRoIGQ9XCJNMjUuMzc2LDMwLjk2NmgtLjU2MWE0LjY1OCw0LjY1OCwwLDAsMS0xLjI4NC0uMTM3LDEuOSwxLjksMCwwLDEtLjgxOC0uNDgyLDEuNzI2LDEuNzI2LDAsMCwxLS40NTUtLjg0Myw2Ljc3LDYuNzcsMCwwLDEtLjEwNi0xLjQxMyw1Ljg4OSw1Ljg4OSwwLDAsMC0uMDg0LTEuMzMsMSwxLDAsMCwwLS4zLS41NDQsMS4yMjMsMS4yMjMsMCwwLDAtLjY2LS4xNzlsLS4yMzYtLjAxNFYyNC4xNDVsLjIzNi0uMDE0YTEuNDgyLDEuNDgyLDAsMCwwLC41NDktLjEuNzA2LjcwNiwwLDAsMCwuMjczLS4yNjQsMS4zOTQsMS4zOTQsMCwwLDAsLjE4MS0uNTI5LDYuNjgzLDYuNjgzLDAsMCwwLC4wNDQtLjkzOSw4LjEzMiw4LjEzMiwwLDAsMSwuMTEyLTEuNjQzLDEuNywxLjcsMCwwLDEsLjQ0OC0uODQxLDIuMTQ0LDIuMTQ0LDAsMCwxLC45MDYtLjQ5Miw0LjUxNCw0LjUxNCwwLDAsMSwxLjItLjExNmguNTYxdjEuOWgtLjI1YTIuNTg5LDIuNTg5LDAsMCwwLS43NDMuMDU2LjI4NC4yODQsMCwwLDAtLjE0OC4xMTcuODM5LjgzOSwwLDAsMC0uMDU0LjM4NnEwLC4zNzItLjA1MywxLjQxM2EzLjc0LDMuNzQsMCwwLDEtLjE2NiwxLjAwOSwxLjk0NSwxLjk0NSwwLDAsMS0uNjkzLDEsMi4wMSwyLjAxLDAsMCwxLC43LDEuMDQ0LDQuNjI3LDQuNjI3LDAsMCwxLC4xNjMsMS4wNzljLjAyNy42NTcuMDQxLDEuMDc0LjA0MSwxLjI1NmEuODcxLjg3MSwwLDAsMCwuMDU3LjQwOEEuMzQzLjM0MywwLDAsMCwyNC40LDI5YTIuMzgyLDIuMzgyLDAsMCwwLC43MjguMDZoLjI1WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjEuMTE4LDI1Ljc4OFYyNC4zODJhMS43NTIsMS43NTIsMCwwLDAsLjY0NS0uMTI5LjkzNi45MzYsMCwwLDAsLjM3NS0uMzU0LDEuNjIxLDEuNjIxLDAsMCwwLC4yMTctLjYyNEE2Ljg4LDYuODgsMCwwLDAsMjIuNCwyMi4zYTgsOCwwLDAsMSwuMTA1LTEuNTg1LDEuNDU2LDEuNDU2LDAsMCwxLC4zODEtLjcyMSwxLjksMS45LDAsMCwxLC44LS40MzEsNC4zMzYsNC4zMzYsMCwwLDEsMS4xMjUtLjEwNWguMzExdjEuNGEyLjg3NiwyLjg3NiwwLDAsMC0uODM1LjA3My41My41MywwLDAsMC0uMjcyLjIyMywxLjA3OSwxLjA3OSwwLDAsMC0uMDg4LjUxM3EwLC4zNjktLjA1MywxLjRhMy41MzEsMy41MzEsMCwwLDEtLjE1Mi45NCwxLjkxOCwxLjkxOCwwLDAsMS0uMzEzLjU5NSwyLjQ3LDIuNDcsMCwwLDEtLjU4My40ODYsMi4wNDUsMi4wNDUsMCwwLDEsLjU2NS40NjYsMS44NjksMS44NjksMCwwLDEsLjMzNy42NDcsNC40MSw0LjQxLDAsMCwxLC4xNTIsMS4wMnEuMDQxLjk3My4wNDEsMS4yNDJhMS4xLDEuMSwwLDAsMCwuMDk0LjUzOS41ODQuNTg0LDAsMCwwLC4yODQuMjMxLDIuNjQ5LDIuNjQ5LDAsMCwwLC44MjMuMDc5djEuNDA2aC0uMzExQTQuNDc0LDQuNDc0LDAsMCwxLDIzLjYsMzAuNTlhMS42NDQsMS42NDQsMCwwLDEtLjcxMi0uNDE5LDEuNDc4LDEuNDc4LDAsMCwxLS4zOS0uNzI0LDYuNjIxLDYuNjIxLDAsMCwxLS4xLTEuMzU2LDYuMzc0LDYuMzc0LDAsMCwwLS4wOTQtMS40LDEuMjMyLDEuMjMyLDAsMCwwLS4zOS0uNjcxQTEuNDMxLDEuNDMxLDAsMCwwLDIxLjExOCwyNS43ODhaXCIgc3R5bGU9XCJmaWxsOiMwMDcyYTBcIi8+PHBhdGggZD1cIk0yNy4wMTEsMzAuOTY2SDI2LjQ1VjI5LjA1OWguMjVBMi4zMjksMi4zMjksMCwwLDAsMjcuNDI2LDI5YS4zMjMuMzIzLDAsMCwwLC4xNjUtLjEyNy44MTIuODEyLDAsMCwwLC4wNTgtLjM3OXEwLS4zNi4wNS0xLjM3NWEzLjcyNSwzLjcyNSwwLDAsMSwuMTczLTEuMDQ3LDIuMjIzLDIuMjIzLDAsMCwxLC4zODctLjcsMi4xNDUsMi4xNDUsMCwwLDEsLjMtLjI5MiwyLjE0MSwyLjE0MSwwLDAsMS0uNC0uNCwyLjYxMiwyLjYxMiwwLDAsMS0uNDIxLTEuMDkyLDE3LjUyNSwxNy41MjUsMCwwLDEtLjEtMS44NDEsMS4zNTcsMS4zNTcsMCwwLDAtLjA1My0uNDc5Yy0uMDA4LS4wMTYtLjAzMS0uMDYyLS4xMzYtLjEwNmEyLjUyNCwyLjUyNCwwLDAsMC0uNzU3LS4wNmgtLjI1VjE5LjJoLjU2MWE0Ljc5Myw0Ljc5MywwLDAsMSwxLjI4My4xMzMsMS44NDEsMS44NDEsMCwwLDEsLjgxOC40ODUsMS43ODEsMS43ODEsMCwwLDEsLjQ1My44NDMsNi42LDYuNiwwLDAsMSwuMTA5LDEuNDE0LDYuMzU5LDYuMzU5LDAsMCwwLC4wNzksMS4zMzYuOTkyLjk5MiwwLDAsMCwuMy41MzcsMS4yMjYsMS4yMjYsMCwwLDAsLjY2NC4xOGwuMjM2LjAxNHYxLjg3OWwtLjIzNi4wMTRhMS40ODIsMS40ODIsMCwwLDAtLjU0OS4xLjY4Ni42ODYsMCwwLDAtLjI3LjI2MiwxLjQ4NCwxLjQ4NCwwLDAsMC0uMTg2LjUzNCw2Ljc0Myw2Ljc0MywwLDAsMC0uMDQzLjkzMSw4LjM4Myw4LjM4MywwLDAsMS0uMTA4LDEuNjQ0LDEuNjk0LDEuNjk0LDAsMCwxLS40NDYuODQ2LDIuMTQzLDIuMTQzLDAsMCwxLS45MTMuNDkyQTQuNSw0LjUsMCwwLDEsMjcuMDExLDMwLjk2NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTMwLjcwOCwyNS43ODhhMS43NTIsMS43NTIsMCwwLDAtLjY0NS4xMjkuOTE4LjkxOCwwLDAsMC0uMzcyLjM1NCwxLjcyNSwxLjcyNSwwLDAsMC0uMjIuNjI0LDYuODIsNi44MiwwLDAsMC0uMDQ3Ljk3Myw4LjI3LDguMjcsMCwwLDEtLjEsMS41ODgsMS40MzksMS40MzksMCwwLDEtLjM3OC43MjQsMS45LDEuOSwwLDAsMS0uODA5LjQzMSw0LjMzNiw0LjMzNiwwLDAsMS0xLjEyNS4xMDVIMjYuN1YyOS4zMWEyLjY1MiwyLjY1MiwwLDAsMCwuODItLjA3OUEuNTcyLjU3MiwwLDAsMCwyNy44LDI5LDEuMDUsMS4wNSwwLDAsMCwyNy45LDI4LjVxMC0uMzU3LjA1LTEuMzY1YTMuNTMsMy41MywwLDAsMSwuMTU4LS45NzYsMS45NzYsMS45NzYsMCwwLDEsLjM0My0uNjIxQTIuMDM4LDIuMDM4LDAsMCwxLDI5LDI1LjA4NWEyLjQxNiwyLjQxNiwwLDAsMS0uNjMzLS41NTEsMi4zMzksMi4zMzksMCwwLDEtLjM3NS0uOTg0LDE3LjU2NCwxNy41NjQsMCwwLDEtLjA5NC0xLjgsMS41NzEsMS41NzEsMCwwLDAtLjA3OS0uNTg2LjQ4Ny40ODcsMCwwLDAtLjI2NC0uMjI2LDIuOCwyLjgsMCwwLDAtLjg1My0uMDc5di0xLjRoLjMxMWE0LjU3Niw0LjU3NiwwLDAsMSwxLjIxMy4xMjMsMS41ODcsMS41ODcsMCwwLDEsLjcwOS40MTksMS41MjksMS41MjksMCwwLDEsLjM5LjcyNyw2LjQzNiw2LjQzNiwwLDAsMSwuMSwxLjM1Niw2Ljg0Miw2Ljg0MiwwLDAsMCwuMDg4LDEuNCwxLjIyMywxLjIyMywwLDAsMCwuMzkzLjY3MSwxLjQ0NywxLjQ0NywwLDAsMCwuOC4yMzFaXCIgc3R5bGU9XCJmaWxsOiMwMDcyYTBcIi8+YCxcblx0XCJBUExcIjogYDxwYXRoIGQ9XCJNMzAsMjguMjc1LDE2LDIsMiwyOC4yNzVIMTQuMTYyVjMwaDMuNjc2VjI4LjI3NVpNMTcuODM4LDI0LjgyNlYxMy4xNjFsNi4yMTUsMTEuNjY1Wm0tOS44OTEsMCw2LjIxNS0xMS42NjVWMjQuODI2WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPmAsXG5cdFwiQXBwbGVTY3JpcHRcIjogYDxwYXRoIGQ9XCJNMTcuMTgxLDQuNDM3QTUuOTkzLDUuOTkzLDAsMCwxLDIxLjU3OSwyYTUuOTc5LDUuOTc5LDAsMCwxLTEuNDQ3LDQuNDc2LDQuNzI5LDQuNzI5LDAsMCwxLTQuMTcsMS45NjFBNS4yLDUuMiwwLDAsMSwxNy4xODEsNC40MzdaXCIgc3R5bGU9XCJmaWxsOiNhOGMyYWJcIi8+PHBhdGggZD1cIk0xNi4yLDEwLjAzNGMuOTQ2LDAsMi43LTEuMyw0Ljk4OS0xLjNhNi4yNDksNi4yNDksMCwwLDEsNS40ODQsMi44LDYuMDgsNi4wOCwwLDAsMC0zLjAyOCw1LjMsNi4yMzUsNi4yMzUsMCwwLDAsMy43NzIsNS43cy0yLjYzNyw3LjQyMi02LjIsNy40MjJjLTEuNjM2LDAtMi45MDgtMS4xLTQuNjMxLTEuMS0xLjc1NywwLTMuNSwxLjE0NC00LjYzNSwxLjE0NEM4LjcsMzAsNC41ODcsMjIuOTU5LDQuNTg3LDE3LjNjMC01LjU2OCwzLjQ3OC04LjQ4OSw2Ljc0LTguNDg5QzEzLjQ0OCw4LjgxMSwxNS4wOTMsMTAuMDM0LDE2LjIsMTAuMDM0WlwiIHN0eWxlPVwiZmlsbDojYThjMmFiXCIvPmAsXG5cdFwiQXJkdWlub1wiOiBgPGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPVwiYVwiIGN4PVwiNzY3LjE3OVwiIGN5PVwiNTE2OS41NDNcIiByPVwiMTQuOTg5XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTcxOC4xMTIgLTQ5NTMuOTE3KSBzY2FsZSgwLjk1NSAwLjk2MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMzNmJhYzBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMmQ5MDk0XCIvPjwvcmFkaWFsR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfYXJkdWlubzwvdGl0bGU+PHBhdGggZD1cIk0yOS42NDUsMTUuOTI1QTEzLjc3LDEzLjc3LDAsMSwxLDE1Ljg3NiwyLjA1NiwxMy44MTksMTMuODE5LDAsMCwxLDI5LjY0NSwxNS45MjVaXCIgc3R5bGU9XCJzdHJva2U6IzAyNzk3ZTtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjEuMTM2NzIyODQ1NDk2OTI2N3B4O2ZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTEwLjU4MSwxMS42NDhjMi40MS0uMDc2LDMuMzU5LjgzNCw0LjYwNSwyLjA2OS4yODUuMjgyLjU3OS41OS45LjkyMWwuOTIyLS45OTFhNi4yMjMsNi4yMjMsMCwwLDEsMy4yNTYtMS45M2MxLjkzOS0uMjExLDMuMTE5LS4xMjIsNC4zMTEuODE0YTUuMDIzLDUuMDIzLDAsMCwxLDIuMjQ1LDMuOSw1LjY1Myw1LjY1MywwLDAsMS0zLjI1LDUuMTU2LDUuOTc1LDUuOTc1LDAsMCwxLTMuOTEzLjEzNSw3LjY1Niw3LjY1NiwwLDAsMS0zLjU0MS0yLjk4N2MtMS42NzgsMi4xNDItMy4xODcsMy4yNTMtNS4yMzUsMy4xNTUtNy40NTItLjM1NC02Ljg0Mi0xMC4wNzUtLjMtMTAuMjQ3Wm0xLjY1Nyw3Ljk5NGE5LjE5Myw5LjE5MywwLDAsMCwyLjg1Ni0yLjljLS43NC0xLjI0My0yLjIwOS0yLjgyNC0zLjQ1NS0zLjEzNGE0LjMyOCw0LjMyOCwwLDAsMC0zLjIyNC43NzcsMy4zODQsMy4zODQsMCwwLDAtLjc2MiwzLjY4NiwzLjY3NCwzLjY3NCwwLDAsMCw0LjU4NSwxLjU3Wm0tMi45OC0zLjQ4NywzLjI3OC4wMDV2MS4yMWwtMy4yODMuMDA1Wm0xMy40NDgsMy42QTMuODQzLDMuODQzLDAsMCwwLDI0LjkzNywxN2EzLjQ1OCwzLjQ1OCwwLDAsMC0xLjg2My0zLjEwOSwzLjY0OCwzLjY0OCwwLDAsMC00LjIuNzI4LDcuMzY0LDcuMzY0LDAsMCwwLTEuNjQ5LDIuMTUxQTguOTM2LDguOTM2LDAsMCwwLDE5LjIsMTkuMjUyLDQuMDIyLDQuMDIyLDAsMCwwLDIyLjcwNiwxOS43NTRabS0xLjk1NS0yLjM3Ni0xLjA4OC0uMDA4LDAtMS4yMTcsMS4wOTEsMFYxNS4wNzVsMS4xMDctLjAwOC0uMDA3LDEuMDkzLDEuMDg1LDB2MS4xNjVsLTEuMDIxLS4wMDh2MS4xMkgyMC43NTNaXCIgc3R5bGU9XCJzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6MC4xMjEwMzA5NjQ4MDkyNzQ4MnB4O29wYWNpdHk6MC4xNjgwOTk5OTk0Mjc3OTU0O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNNC45MTcsMTYuMzM3YzAsNS4zNDgsNy4zNTQsNy4zNCwxMC45ODcsMS44OTQsMy43NjUsNS42NDcsMTAuODI0LDMuMjgsMTAuODI0LTEuOVMxOS43LDguNjU2LDE1LjksMTQuNDQxYy0zLjYtNS43MTktMTAuOTg3LTMuNDUzLTEwLjk4NywxLjlabTEuOTMxLDBjMC0zLjg2LDUuNDU1LTUuMDc4LDcuOTkyLDAtMi41ODgsNC44ODktNy45OTIsMy44NTktNy45OTIsMFptMTAuMTE5LDBjMi4yODYtNS4xNzgsNy44ODktMy43NTEsNy44NzIuMDA4UzE5LjE4NiwyMS4yNzcsMTYuOTY3LDE2LjMzN1pcIiBzdHlsZT1cImZpbGw6I2ZmZjtzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6MC4yNDIwNjE5Mjk2MTg1NDk2NHB4XCIvPjxyZWN0IHg9XCI4Ljg5OFwiIHk9XCIxNS43OTVcIiB3aWR0aD1cIjMuMjM3XCIgaGVpZ2h0PVwiMS4wNjdcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIyMC42NDQgMTYuODQ2IDE5LjU3NiAxNi44NDYgMTkuNTc2IDE1LjcxMiAyMC42NDQgMTUuNzEyIDIwLjY0NCAxNC42NDQgMjEuNzc5IDE0LjY0NCAyMS43NzkgMTUuNzEyIDIyLjg0NyAxNS43MTIgMjIuODQ3IDE2Ljg0NiAyMS43NzkgMTYuODQ2IDIxLjc3OSAxNy45MTQgMjAuNjQ0IDE3LjkxNCAyMC42NDQgMTYuODQ2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJBUk0gQXNzZW1ibHlcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjgzNi42M1wiIHkxPVwiMzYuMjA1XCIgeDI9XCI4NDMuODAyXCIgeTI9XCIxNC40OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDUyNS45MjIgMzAuMjQ5KSByb3RhdGUoMTgwKSBzY2FsZSgwLjYwNyAwLjYwNylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjAuMjc1XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfYXNzZW1ibHk8L3RpdGxlPjxwYXRoIGQ9XCJNMTYsMmMtMS4yNDYsMy4wNTYtMiw1LjA1Ny0zLjM5MSw4LjAyMkEyMS44ODQsMjEuODg0LDAsMCwwLDE2LjIsMTMuMTU2YTE0Ljg1OCwxNC44NTgsMCwwLDEtNC0yLjI4M0MxMC40MywxNC41NzksNy42NDYsMTkuODU1LDIsMzBjNS4xODYtMi45OTQsOS4wMTItNC42NDgsMTIuNjkxLTQuOTY2VjI0LjJoLS44MzR2LS44MzdoLjgzNFYyNC4yaDEuNjc1VjIyLjUyMUgxNC42OTF2LS44MzRoLS44MzRWMjAuMDEzaC44MzR2LS44MzRoMS42NzV2LjgzNEgxNy4ydi44MzdoLS44Mzd2LS44MzdIMTQuNjkxdjEuNjc1aDEuNjc1di44MzRIMTcuMlYyNC4yaC0uODM3di43ODNjMy45OC4xLDguMDA2LDEuNzcyLDEzLjYzNCw1LjAyMS0uODYzLTEuNTg5LTEuNjM2LTMuMDIxLTIuMzcyLTQuMzg1YTI1LjUyNiwyNS41MjYsMCwwLDAtNC44MzMtMy4zMzNBMTQuNDM2LDE0LjQzNiwwLDAsMSwyNi42NSwyMy44QzE5LjE3LDkuODcyLDE4LjU2NSw4LjAyLDE2LDJaTTEwLjUxMSwxOS4xNzloMS42NzF2LjgzNGguODM3djUuMDIxaC0uODM3VjIyLjUyMUgxMC41MTF2Mi41MTJIOS42NzNWMjAuMDEzaC44MzdabTAsLjgzNHYxLjY3NWgxLjY3MVYyMC4wMTNabTcuNTI2LS44MzRoLjgzN3YuODM0aC44Mzd2LjgzN2guODM0di0uODM3aC44Mzd2LS44MzRoLjgzN3Y1Ljg1NWgtLjgzN1YyMC44NWgtLjgzN3YuODM3aC0uODM0VjIwLjg1aC0uODM3djQuMTg0aC0uODM3WlwiIHN0eWxlPVwiZmlsbDojMDAwMGJmXCIvPjxwYXRoIGQ9XCJNMjMuODgxLDE4LjY0MmMtNi4wNjktOC4yMzctNy40NzYtMTQuODc2LTcuODMyLTE2LjQ2MUExNzUuMjE3LDE3NS4yMTcsMCwwLDAsMjMuODgxLDE4LjY0MlpcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLW9wYWNpdHk6MC4xNjU2ODA0NjgwODI0MjhcIi8+PHBhdGggZD1cIk0xNi4wNTEsMi4xMiwxNS42LDMuMjI3Yy0uMTU5LjM5MS0uMzExLjc2NS0uNDYxLDEuMTMxcy0uMy43MjQtLjQ0OCwxLjA3Ny0uMy43LS40NDgsMS4wNTMtLjMuNzA2LS40NjUsMS4wNjYtLjMyOS43MjktLjUwNiwxLjExMS0uMzYyLjc3OC0uNTYxLDEuMTkzYy0uMDI4LjA1Ny0uMDYxLjEyMy0uMDg5LjE4MUEyMS44NzIsMjEuODcyLDAsMCwwLDE2LjIsMTMuMTU2YTE0Ljg3OSwxNC44NzksMCwwLDEtMy45ODktMi4yNzZsLS4xNC4yODdjLS4wNjUuMTMzLS4xNDQuMjgzLS4yMTIuNDJsLS4xMDYuMjE5Yy0uODc4LDEuNzkzLTIuMDA2LDMuOTg0LTMuNTI0LDYuODIyLDMuNTUxLTIsNy4zODEtNC44ODcsMTQuMzM4LTIuNC0uMzQ5LS42NjEtLjY3LTEuMjgtLjk3MS0xLjg2M3MtLjU4MS0xLjEyOC0uODQxLTEuNjQ0LS41LTEtLjcyNS0xLjQ2My0uNDMzLS45LS42MjktMS4zMTMtLjM4LS44MTgtLjU1NC0xLjItLjMzOS0uNzU0LS41LTEuMTE4UzE4LjA0Nyw2LjksMTcuOSw2LjU0NnMtLjI5MS0uNzA5LS40MzQtMS4wNjZjLS4wMzYtLjA5MS0uMDczLS4xODYtLjEwOS0uMjc3QzE2Ljk0OSw0LjI0NywxNi41MzYsMy4yNTgsMTYuMDUxLDIuMTJaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcblx0XCJBc2NpaURvY1wiOiBgPHBhdGggZD1cIk0zMCwzMEgyVjJIMzBaXCIgc3R5bGU9XCJmaWxsOiNlNDAwNDZcIi8+PHBhdGggZD1cIk0yMy43MzEsMjQuODNhLjU4OS41ODksMCwwLDEtLjc2My0uMzM3TDE2LjcyNCw5LjI2OSwxMy45MywxNS45OWgxLjgzM2EuNTkuNTksMCwwLDEtLjAyNCwxLjE4SDguOWEuNTkuNTksMCwwLDEsLjAyNC0xLjE4aDMuNzI3bDAtLjAxM0wxNi4xODQsNy41YS41OTEuNTkxLDAsMCwxLC41MzMtLjM2M2gwYS41OTIuNTkyLDAsMCwxLC41NTcuMzY2bDYuNzg1LDE2LjU0Ni4wMDkuMDIxQS41OS41OSwwLDAsMSwyMy43MzEsMjQuODNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNC41MTYsMTguNzkxSDcuNjc5YS41OS41OSwwLDAsMC0uMDI0LDEuMThIMTFMOS4zMDksMjQuMDQzYS41OS41OSwwLDAsMCwxLjA4NS40NjRsMC0uMDExLDEuODc1LTQuNTA5LjAwNS0uMDE2aDIuMjE1YS41OS41OSwwLDAsMCwuMDIzLTEuMThaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJBU1AuTkVUIChDIylcIjogYDx0aXRsZT5maWxlX3R5cGVfYXNweDwvdGl0bGU+PHBvbHlnb24gcG9pbnRzPVwiMjIuNzUgMiA2LjM1IDIgNi4zNSAzMCAyOS42NSAzMCAyOS42NSA5IDIyLjc1IDJcIiBzdHlsZT1cImZpbGw6I2M1YzVjNVwiLz48cG9seWdvbiBwb2ludHM9XCIyNy4zNSAyNy43IDguNzUgMjcuNyA4Ljc1IDQuMyAyMC40NSA0LjMgMjAuNDUgMTEuMyAyNy40NSAxMS4zIDI3LjQ1IDI3LjcgMjcuMzUgMjcuN1wiIHN0eWxlPVwiZmlsbDojZjVmNWY1XCIvPjxwYXRoIGQ9XCJNMTIuMSwzMC45OTRBMTEuMDk0LDExLjA5NCwwLDEsMSwyMy4xOTQsMTkuOSwxMS4xMDYsMTEuMTA2LDAsMCwxLDEyLjEsMzAuOTk0Wm0wLTIwLjNBOS4yLDkuMiwwLDEsMCwyMS4zLDE5LjksOS4yMTYsOS4yMTYsMCwwLDAsMTIuMSwxMC43WlwiIHN0eWxlPVwiZmlsbDojMzNhOWRjXCIvPjxyZWN0IHg9XCIyLjA5OVwiIHk9XCIxOS40NTVcIiB3aWR0aD1cIjIwLjAwM1wiIGhlaWdodD1cIjAuODlcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz48cGF0aCBkPVwiTTEyLjMyNSwxNS43NjNhMzEuOTMsMzEuOTMsMCwwLDEtOC40ODQtMS4xMWwuMjQyLS44MDdhMzEuMzc0LDMxLjM3NCwwLDAsMCwxNS45OTIsMGwuMjM5LjgwN0EyOC4wNzYsMjguMDc2LDAsMCwxLDEyLjMyNSwxNS43NjNaXCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGM7c3Ryb2tlOiMzM2E5ZGM7c3Ryb2tlLW1pdGVybGltaXQ6MTBcIi8+PHBhdGggZD1cIk00LjEsMjUuNzI0bC0uMjM5LS44MDdhMzEuNjUyLDMxLjY1MiwwLDAsMSwxNi40NzIsMGwtLjI0Mi44MDdBMzEuMzgsMzEuMzgsMCwwLDAsNC4xLDI1LjcyNFpcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz48cGF0aCBkPVwiTTguNTM2LDI5LjA1NUEyNS40MzgsMjUuNDM4LDAsMCwxLDgsMTAuNjA4bC43NzYuMzMxYTI0LjU1OCwyNC41NTgsMCwwLDAsLjUzMywxNy43ODNaXCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGM7c3Ryb2tlOiMzM2E5ZGM7c3Ryb2tlLW1pdGVybGltaXQ6MTBcIi8+PHBhdGggZD1cIk0xNS42LDI5LjA1NWwtLjc3Ni0uMzMzYTI0LjU1OSwyNC41NTksMCwwLDAsLjUzMS0xNy43ODNsLjc3Ni0uMzMxQTI1LjQ0MywyNS40NDMsMCwwLDEsMTUuNiwyOS4wNTVaXCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGM7c3Ryb2tlOiMzM2E5ZGM7c3Ryb2tlLW1pdGVybGltaXQ6MTBcIi8+PHJlY3QgeD1cIjExLjY1NVwiIHk9XCI5Ljg5OFwiIHdpZHRoPVwiMC44ODlcIiBoZWlnaHQ9XCIyMC4zNzFcIiBzdHlsZT1cImZpbGw6IzMzYTlkYztzdHJva2U6IzMzYTlkYztzdHJva2UtbWl0ZXJsaW1pdDoxMFwiLz5gLFxuXHRcIkF1dG9Ib3RrZXlcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjU0LjYwNFwiIHkxPVwiMTY4LjM4OFwiIHgyPVwiNTQuNjA0XCIgeTI9XCIxOTQuODg1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTM4LjYwNCAtMTY1LjYzNilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNkOGQ4ZDhcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTNhM2EzXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiNjguNzU2XCIgeTE9XCIyMDkuMTUyXCIgeDI9XCI5MS42MzhcIiB5Mj1cIjIwOS4xNTJcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNTAuNjAxIC0xNTkuNDQ5KSBzY2FsZSgwLjgzMiAwLjgzNylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNkN2Q3ZDdcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiNlN2U3ZTdcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZDdkN2Q3XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfYXV0b2hvdGtleTwvdGl0bGU+PHJlY3QgeD1cIjJcIiB5PVwiMi44MjRcIiB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMjYuMzUzXCIgcng9XCIzLjA4OFwiIHJ5PVwiMy4wODhcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTI2Ljg1NiwyOS4xODFINS4xNDRBMy4xNDgsMy4xNDgsMCwwLDEsMiwyNi4wMzdWNS45NjNBMy4xNDgsMy4xNDgsMCwwLDEsNS4xNDQsMi44MTlIMjYuODU2QTMuMTQ4LDMuMTQ4LDAsMCwxLDMwLDUuOTYzVjI2LjAzN0EzLjE0OCwzLjE0OCwwLDAsMSwyNi44NTYsMjkuMTgxWk01LjE0NCwyLjk2M2EzLDMsMCwwLDAtMywzaDBWMjYuMDM3YTMsMywwLDAsMCwzLDNIMjYuODU2YTMsMywwLDAsMCwzLTNWNS45NjNhMywzLDAsMCwwLTMtM1pcIiBzdHlsZT1cImZpbGw6IzhkOGQ4ZFwiLz48cmVjdCB4PVwiNC4zMTNcIiB5PVwiNC42NDFcIiB3aWR0aD1cIjIzLjE2OVwiIGhlaWdodD1cIjIxLjk0XCIgcng9XCIyLjU3MVwiIHJ5PVwiMi41NzFcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTI0LjkxMSwyNi42NDFINi44ODRBMi42MzQsMi42MzQsMCwwLDEsNC4yNTMsMjQuMDFWNy4yMTJBMi42MzQsMi42MzQsMCwwLDEsNi44ODQsNC41ODFIMjQuOTExYTIuNjM0LDIuNjM0LDAsMCwxLDIuNjMxLDIuNjMxdjE2LjhBMi42MzQsMi42MzQsMCwwLDEsMjQuOTExLDI2LjY0MVpNNi44ODQsNC43QTIuNTE0LDIuNTE0LDAsMCwwLDQuMzczLDcuMjEydjE2LjhhMi41MTQsMi41MTQsMCwwLDAsMi41MTEsMi41MTFIMjQuOTExYTIuNTE0LDIuNTE0LDAsMCwwLDIuNTExLTIuNTExVjcuMjEyQTIuNTE0LDIuNTE0LDAsMCwwLDI0LjkxMSw0LjdaXCIgc3R5bGU9XCJmaWxsOiNmOGY4ZjhcIi8+PHBhdGggZD1cIk02LjE0NSwyMy45bDIuMzQzLTYuMWguODdsMi41LDYuMWgtLjkybC0uNzEyLTEuODQ4SDcuNjczTDcsMjMuOVpNNy45LDIxLjRIOS45NzRsLS42MzctMS43cS0uMjkxLS43Ny0uNDMzLTEuMjY1QTcuNzc2LDcuNzc2LDAsMCwxLDguNTc2LDE5LjZaXCIvPjxwYXRoIGQ9XCJNMTMuNjA3LDIzLjlWMTcuOGguODA3djIuNWgzLjE3MVYxNy44aC44MDd2Ni4xaC0uODA3VjIxLjAyMWgtMy4xN1YyMy45WlwiLz48cGF0aCBkPVwiTTIwLjQ3OCwyMy45VjE3LjhoLjgwN3YzLjAyNWwzLjAzLTMuMDI1aDEuMDk0TDIyLjg1LDIwLjI2NywyNS41MjIsMjMuOUgyNC40NTZsLTIuMTcyLTMuMDg4LTEsLjk3NFYyMy45WlwiLz5gLFxuXHRcIkF1dG9JdFwiOiBgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHI9XCIxMi41NTFcIiBzdHlsZT1cImZpbGw6IzVkODNhY1wiLz48cGF0aCBkPVwiTTIsMTZBMTQsMTQsMCwxLDEsMTYsMzAsMTQsMTQsMCwwLDEsMiwxNlpNMTYsNC43ODlBMTEuMjExLDExLjIxMSwwLDEsMCwyNy4yMTEsMTYsMTEuMjExLDExLjIxMSwwLDAsMCwxNiw0Ljc4OVpcIiBzdHlsZT1cImZpbGw6I2YwZjBmMFwiLz48cGF0aCBkPVwiTTI0LjU3NiwyMC4xNTZsLTYuNC05LjI2NGEzLjEzMSwzLjEzMSwwLDAsMC0uODE5LS44MTksMi4zNiwyLjM2LDAsMCwwLTIuNDQyLjAyMywzLjU0MywzLjU0MywwLDAsMC0uODEyLjhMNy41MzMsMjAuMTU2aDMuNzUybDQuODA4LTYuOCwxLjgzOCwyLjcxcS4yNi4zNjguNTQ0Ljc4OXQuNS43cS0uMzY4LS4wMzEtLjg2NS0uMDMxaC0zLjUzbC0xLjkxNCwyLjYzNFpcIiBzdHlsZT1cImZpbGw6I2YwZjBmMFwiLz5gLFxuXHRcIkF2cm8gSURMXCI6IGA8cGF0aCBkPVwiTTIsMTEuNjQ5aC4wMjVhNC43ODUsNC43ODUsMCwwLDAsMi45MTEsMS4zMzZjMi4zMDguMjIxLDQuNTktLjQ4NSw2LjktLjMyNmE3LjAzLDcuMDMsMCwwLDEsMi42OC42NjRjLjUtLjMxOS45ODktLjY2MiwxLjQ4Ni0uOTg5LjUuMzI3Ljk4NC42NzQsMS40ODguOTg5YTYuODM0LDYuODM0LDAsMCwxLDIuNDg3LS42NWMxLjk5NS0uMTY3LDMuOTY3LjMwOCw1Ljk1Ny4zNTlhNS4yLDUuMiwwLDAsMCw0LjAyNi0xLjM4M0gzMHYuMjM2Yy0uMTc4Ljc0Ny0uODgyLDEuMTc2LTEuMjg0LDEuNzlhNC45NDgsNC45NDgsMCwwLDEtLjczMS43OTEsMy44LDMuOCwwLDAsMS0uNTY1Ljc0OCwyLjU1MSwyLjU1MSwwLDAsMC0uNTk0LjU0MSwyLjE4MSwyLjE4MSwwLDAsMS0uOTYuNzQ5LDEuMTQ5LDEuMTQ5LDAsMCwxLS41NjUuNTYsNi42OSw2LjY5LDAsMCwxLTEuOTQuMTg0Yy43MjMuNTQ4LDEuNSwxLjAyLDIuMjQ2LDEuNTM1Ljc4Mi41MTMsMS41NCwxLjA2MSwyLjMyNiwxLjU2OEg0LjA4OWMxLjUtMS4wNTgsMy4wNTctMi4wMzUsNC41NS0zLjFBNi44LDYuOCwwLDAsMSw2LjcsMTcuMDY1YTEuMTU1LDEuMTU1LDAsMCwxLS41NjktLjU2MiwyLjI4LDIuMjgsMCwwLDEtMS4wNDMtLjg2Yy0uMjY4LS4zLS42Ny0uNDY2LS44NTMtLjg0My0uMi0uNDM2LS42NTgtLjY2NC0uOTA5LTEuMDY3LS40LS42NDItMS4xMzctMS4wNzYtMS4zMjctMS44NDZ2LS4yMzltMi45MzksOC41MjhxMTEuMDU5LjAwOSwyMi4xMiwwYy0zLjY2OC0yLjUxLTcuMzc2LTQuOTYxLTExLjA1OS03LjQ0OC0zLjY4NCwyLjQ4Ny03LjM5Miw0Ljk0MS0xMS4wNjEsNy40NDlNNC4xNjcsMTMuMmE3Ljg0Miw3Ljg0MiwwLDAsMCwyLjg0LjczMWMxLjE2My4xMjMsMi4zNDEuMDQ2LDMuNS4yMzZhMi43LDIuNywwLDAsMSwxLjYwNy43ODFjLjY1OS0uNDUyLDEuMzMyLS44ODUsMS45ODctMS4zNDJsLjAxMi0uMDY0YTUuMjk0LDUuMjk0LDAsMCwwLTEuODc3LS41Yy0yLjY5My0uMzE2LTUuMzg3LjcxMi04LjA2Ny4xNm0xMy42NTIuMzU2Yy42ODguNDY2LDEuMzgyLjkyNSwyLjA3LDEuMzkyYTIuNDg4LDIuNDg4LDAsMCwxLDEuMy0uNzE5LDE5Ljg1OSwxOS44NTksMCwwLDEsMy4xMzctLjI0OCw5LjEwNSw5LjEwNSwwLDAsMCwzLjUtLjc2OGMtMi41ODIuNS01LjE2OC0uNDA5LTcuNzYxLS4yYTYuMjU2LDYuMjU2LDAsMCwwLTIuMjQ1LjU0NU0zLjMzOSwxMy4xNjZhNy4yNjQsNy4yNjQsMCwwLDAsMi43MjMsMS4zYy0uMjE5LS4xNTMtLjM3Ni0uNDE2LS42NTctLjQ1N2E3Ljk1NSw3Ljk1NSwwLDAsMS0yLjA2Ni0uODQ0bTIzLjMzMy44MjVjLS4zMTcuMDIzLS41LjMtLjczMy40NzNhNy4yMzIsNy4yMzIsMCwwLDAsMi43MjQtMS4zLDguMTA2LDguMTA2LDAsMCwxLTEuOTkxLjgyNG0tMjIuNS4xMjZhNS4xMjEsNS4xMjEsMCwwLDAsMi41ODksMS4xYy0uMTE1LS4xMjgtLjIwOS0uMzEyLS40LS4zMzRhMTAuNDU5LDEwLjQ1OSwwLDAsMS0yLjE5LS43NzFtMjEuNDY3Ljc2OGMtLjE4OS4wMjItLjI4NC4yLS4zOTQuMzM2YTUuMTg3LDUuMTg3LDAsMCwwLDIuNi0xLjEwOSwxMC40NzcsMTAuNDc3LDAsMCwxLTIuMi43NzNNNi4zLDE0LjIwNmEzLjI0MywzLjI0MywwLDAsMCwyLjQ0NS4zNTJjLS4xLS4wOC0uMTgxLS4yMTUtLjMyNS0uMjA2cS0xLjA2My0uMDQtMi4xMi0uMTQ2bTE3LjM1MS4xMzljLS4xNzEtLjAxOS0uMjkxLjEtLjQwNi4yMTFhMy4xMDgsMy4xMDgsMCwwLDAsMi40Mi0uMzUycS0xLC4xMTItMi4wMTQuMTQxbS0xNi43NDEuNTM4YTMuNjY5LDMuNjY5LDAsMCwwLDIuNDgyLjMxOSwxLjEwNywxLjEwNywwLDAsMC0uMjgxLS4zNzYsNS4xNTgsNS4xNTgsMCwwLDEtMi4yLjA1N20xNS43LjMxOGEzLjY3OCwzLjY3OCwwLDAsMCwyLjQ4Ny0uMzE5LDUuMTI3LDUuMTI3LDAsMCwxLTIuMi0uMDU3LDEuMSwxLjEsMCwwLDAtLjI4My4zNzZNNC44MzgsMTQuOTc3YTQuMTEsNC4xMSwwLDAsMCwyLjEzMy44NDFjLS4wNTctLjA4NC0uMTE0LS4xNjgtLjE3MS0uMjU0YTYuOTQ4LDYuOTQ4LDAsMCwxLTEuOTYyLS41ODdtMjAuMzYxLjU4OS0uMTY5LjI1M2E0LjE0MSw0LjE0MSwwLDAsMCwyLjEzNi0uODQzLDcuMDE1LDcuMDE1LDAsMCwxLTEuOTY3LjU5bS0xOC4xLS4xM2EuOC44LDAsMCwwLC41MzQuMzEsNy41NzksNy41NzksMCwwLDAsMi4wMzctLjA3M2MtLjAwOS0uMDMtLjAyNy0uMDktLjAzNi0uMTItLjQ1Ny0uMDUxLS45MjMuMDc0LTEuMzg1LjA0N0E3LjA1NCw3LjA1NCwwLDAsMSw3LjEsMTUuNDM3bTE2LjE5MS4xNTFhNi4yOCw2LjI4LDAsMCwwLS45MTMtLjA0MWwtLjA0Mi4xMjZhNy40MTYsNy40MTYsMCwwLDAsMi4wNDUuMDcyLjcuNywwLDAsMCwuNTIyLS4zMzEsNC4zNDksNC4zNDksMCwwLDEtMS42MTMuMTc0bS0xNy41Mi4zMjdhMy4xMiwzLjEyLDAsMCwwLDEuNzU0LjQ4MWMtLjA2NS0uMjQtLjMzNC0uMi0uNTIzLS4yMzYtLjQxOS0uMDQxLS44MTYtLjE4Ni0xLjIzMS0uMjQ2TTI1LDE2LjE2M2MtLjE4OC4wNDEtLjQ1Mi0uMDA2LS41MjEuMjMyYTIuODc0LDIuODc0LDAsMCwwLDEuNzMyLS40ODJjLS40LjA3OS0uOC4yMDctMS4yMTEuMjUxTTcuNzM1LDE2LjExOWExLDEsMCwwLDAsLjc4OS4yNzUsOS4zMzEsOS4zMzEsMCwwLDAsMS4zMjUtLjE1OGMtLjAyMS0uMDkzLS4wMDktLjI3OC0uMTYzLS4yMjhhOS45ODMsOS45ODMsMCwwLDEtMS45NTEuMTExbTE0LjQxNS4xMThhOC4xNTcsOC4xNTcsMCwwLDAsMS40MTIuMTU0LjkuOSwwLDAsMCwuNy0uMjc0LDkuMzg3LDkuMzg3LDAsMCwxLTEuOTM0LS4xMWMtLjE2LS4wNi0uMTU1LjEzMi0uMTc2LjIzbS0xNS40MzguNDRhMS45NjIsMS45NjIsMCwwLDAsMS4zLjE4MWwtLjA5MS0uMTI2Yy0uNC4wMDYtLjgwNy0uMDIyLTEuMjA5LS4wNTVtMS42MTUuMDQzYTEuMDMsMS4wMywwLDAsMCwuNzE2LjI5NGMuMTc5LS4xMjUuMzU4LS4yNTIuNTMxLS4zODZhNS43NDcsNS43NDcsMCwwLDEtMS4yNDcuMDkybTE0LjEtLjA5M2MuMjM3LjE0NC40NjcuNDc3Ljc4Mi4zNDUuMTY2LS4wNS4zNjktLjA4OS40NjEtLjI1N2E1LjI3MSw1LjI3MSwwLDAsMS0xLjI0My0uMDg4bTEuNzEzLjI2M2EyLjAwNywyLjAwNywwLDAsMCwxLjE0NS0uMjEzLDEwLjI2OSwxMC4yNjksMCwwLDEtMS4xNDQuMDQ5QzIzLjk5MywxNi42NjcsMjMuOTg0LDE2Ljk2MSwyNC4xMzgsMTYuODlaXCIgc3R5bGU9XCJmaWxsOiMwMDQwZmZcIi8+PHBhdGggZD1cIk03LjQzNSwxOC44ODZRMTEuNzE5LDE2LjAxMywxNiwxMy4xMzdsOS4zLDYuMjQ0Yy4yMjEuMTQ3LjQzOS4zLjY0OC40NjRxLTkuOTQ3LS4wMS0xOS44OTQsMGMuNDQzLS4zNDQuOTItLjY0LDEuMzgzLS45NThtOC4yNTUtNS4wNjZjLS40NTcsMS44NTktLjkwNywzLjcxOS0xLjM3NSw1LjU3Ni41Mi4wMTUsMS4wNDEuMDEyLDEuNTYyLDBxLS4wMTMtMi44NDEsMC01LjY4bC0uMTg0LjFtLTIuNSwxLjY4NGMuMjU1Ljg1OS40OCwxLjcyOC43NjMsMi41NzkuMjg5LTEuMjM4LjYtMi40NzEuOS0zLjcwNy0uNTUuMzg2LTEuMTE0Ljc1LTEuNjY4LDEuMTI5bTMuMzU3LS44NzNjLS4wMDYuNjgyLDAsMS4zNjQsMCwyLjA0NmEyLjEsMi4xLDAsMCwwLDEuMDE0LS4yNTRjLjE5My0uMTQ1LjEtLjQwOS4wMTEtLjU4NmE0LjI3Niw0LjI3NiwwLDAsMC0xLjAyNC0xLjIwN00xOC4zMjcsMTYuNGMtLjEuNTQ0LS42NjYuNzkyLTEuMTUxLjkuNDc0LjcuOTYsMS4zODksMS40MTYsMi4xLjQ2OS4wMjQuOTQuMDExLDEuNDExLjAwOWExLjYzMSwxLjYzMSwwLDAsMSwuMTYtMi45NzZjLS44MzQtLjYtMS43LTEuMTQtMi41NDQtMS43MjcuMzQ5LjUuODMxLDEuMDM3LjcwOCwxLjdtLTYuODIyLjI0MmMuMjY3LjkyMS41MjksMS44NDUuNzk0LDIuNzY3LjQ0LDAsLjg4LjAwOCwxLjMyMS0uMDA3LS4zMzktMS4xNjEtLjY4NS0yLjMxOS0xLjAwOS0zLjQ4NC0uMzg1LjIxNS0uNzM3LjQ4Mi0xLjEuNzI0bTguOC40NTJhLjk0Ni45NDYsMCwwLDAsLjA1NywxLjdjLjUzMy4wOS44NTUtLjUzMy43NzktLjk5LS4wMjYtLjQtLjQtLjg2MS0uODM2LS43MTRNNy40LDE5LjRxMS4zMjQuMDE4LDIuNjUsMGMuMjU2LS43LjQxMy0xLjQ2OC42MjktMi4yLTEuMS43MTUtMi4xODcsMS40NjEtMy4yNzksMi4xOTRtMTQuMzc3LTEuOWExLjYxNiwxLjYxNiwwLDAsMS0uODc2LDEuOWMxLjIzMy4wMTgsMi40NjUuMDE1LDMuNywwLS45MzQtLjY0NC0xLjg4My0xLjI2Ni0yLjgyMi0xLjltLTUuMjIzLjExNWMtLjAxLjYsMCwxLjIsMCwxLjguNDE1LDAsLjgzMSwwLDEuMjQ4LDAtLjQxOS0uNi0uOC0xLjIxOS0xLjI0My0xLjc5NG0tNS41NDYuOTQxaC4zNDZjLS4wNTUtLjE4Ny0uMTA4LS4zNzYtLjE2Ni0uNTYyYTMuNzUxLDMuNzUxLDAsMCwwLS4xODEuNTYzbS0uMTguNjkzYy0uMDE1LjA0LS4wNDUuMTE5LS4wNjEuMTU5LjI3NS0uMDI2LjU5LjA3MS44NDItLjA1QzExLjQ1MywxOS4xMTIsMTEuMDc0LDE5LjI3NSwxMC44MjYsMTkuMjQ0WlwiIHN0eWxlPVwiZmlsbDojMDA0MGZmXCIvPmAsXG5cdFwiQVdLXCI6IGA8cGF0aCBkPVwiTTI2LjkyNSwyNy43MzdDMjMuNDMxLDI2LjEsMjQuNjA2LDE0LjU4OCwxMy44MSw4LjMxOSwxNC4wODksNS43OTIsMTQuNzU4LS41LDcuOTYxLDMsNi44NDUsMy4xMjgsNC45MDcsMi4zMzEsNCw0LjgzMXYuMTE0QzE2LjkxOCwzLjkuMDg4LDEwLjUzLDE2Ljc1LDI1Ljg0NGMtLjM3My4xNzYtLjY3NC0uMzI1LTEuOTcuMWwtLjAxNC4wMTZjLTEuNzIyLDEuMTM1LDEuOTMzLjc2OCw0LjE1NCwxLjI3NC0xLjYxMS40MTctNS41OTQtMS4xMzctNi4zLDEuNjQ1Ljg3Ny0uMzcsMSwuMzI5LDEuMDc2LDEuMDc3QTI2LjI3NywyNi4yNzcsMCwwLDEsMjIuMzc5LDI3LjVjMS4xLjI4NSw0LjExOCwyLjA0OSw1LjEyMi41NTFDMjcuNTE5LDI3LjkzLDI3LjIyMSwyNy44NzYsMjYuOTI1LDI3LjczN1pcIi8+PHBhdGggZD1cIk0xMC40NDYsMi45N2wtLjEyMS4wODhhLjI2Ni4yNjYsMCwwLDAtLjAxMS4zNzcuMjExLjIxMSwwLDAsMCwuMDQ1LjAzOS40MTYuNDE2LDAsMCwwLC41MjEtLjA2My4yNjMuMjYzLDAsMCwwLC4wNzgtLjM2NGwtLjAxLS4wMTRjLS4wNzYtLjE0My0uMTYzLS4xNzctLjM0LS4xMjdDMTAuNTUzLDIuOTI1LDEwLjUsMi45NDYsMTAuNDQ2LDIuOTdaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOCwyNi4zNjhjLjE1MS0uMDQxLjMxOC0uODI4LjE3NC0uOTQ5QTYuMjksNi4yOSwwLDAsMCwxOS40LDI2LjQ4NWMxLjAyMywxLjAwNywyLjY2NS0uMDMyLDMuNDgyLjc1OWExMC43MzYsMTAuNzM2LDAsMCwwLDEuOTU3LDEuMDI3Yy0uMTM5LS4xNTEtLjAyOS0uMTQ0LjE3OS0uMDExLS4xMy0uMzM4LTQuNDIxLTUuMTU2LTUuMjI2LTcuMTguMDk1LjI5My0xLjYwOC0uODI0LTIuMDc2LTEuNDE5LS4wMjguMDU2LS4wOTItLjI1MS0uMjI4LS40MzQtLjA0MS4wNS0uMi0uNDMzLS4zLS43MjguMDM3LjE4Ny0uNDYyLS41LS42NS0uODE4LS4wNTYuMDktLjcxOS4zNzItLjgwOS4yODYtLjcyOS0uNCwyLjUyOSw0LjA2Ni4xMjIsMi41NTkuNjc2LjY4My42MTQuNC0xLjA5NS0uODUyLjM2NC40NTItLjMxNy4zMTItMS41NTMtMS41MjMuMTg2LjItLjIxOC0uNTc2LS4yMTgtLjU3NmEyLjY5MiwyLjY5MiwwLDAsMC0uMTMzLS40ODNjLS4wNTYtLjMyLS4yNDEtLjcyMy0uMTItLjY1LTEuNDQ0LTEuNTU2LDEuMzE0LTMuMy43MTktMy42NzEtLjExMSwwLS4wMjcuMDE3LS4xNTEtLjEwNi0uMDksMC0uNDY4LjI4NS0uNTg3LS4yMzQuMDA2LjEzMi0uMDM0LjQwNi0uMTUzLS4xLS4wMjMuMDUyLjAxNS4xLS4wMy4xNDUtLjIyNS0uNTc2LS43NzItMS42LTEuMjE3LTIuNTM5LS4xNTguMTU1LS4xMzgtLjA3Ni0uMTkzLTEuMDkyLjA1My4xNDQtLjIyNSwxLjkyMS0uMi4xMy0uMTI4LjAwNy4xMDgsMS4yNTgtLjM0My4yMS0uMTQxLjA1LS4zMDUtLjM2My0uMzQxLTEuMTc4LS4wNDguNjIzLS4yOS4xODctLjUtLjkyMy0uMjY5LjUwOC0xLjYsMS43NDMtLjMzMyw3LjYyMi0uMDUzLS4zMTMuMTg2LjM0MS43NTUsMi40MjcuMDIxLS4wMzktLjAyMi0uMDgzLjAzOC0uMTMxYTYuMzI0LDYuMzI0LDAsMCwwLC42NzcsMS4zNjVjLjU0NC42NTguOTk1LDIuMDc0LjgsMS4yNzdhMTEuODY3LDExLjg2NywwLDAsMCwyLjU1NCwzLjI0OUEzNC40MjMsMzQuNDIzLDAsMCwwLDE4LDI2LjM2OFpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTEwLjgyMywyLjU1N2EuMjkxLjI5MSwwLDAsMC0uMDUxLS4wMjJjLS4yMjEtLjA0LS40MjkuMTUzLS42NTQuMDMyLS4xNDUuMDg1LS4yNTctLjAzNi0uMzc1LS4wNzNhLjIyNC4yMjQsMCwwLDAtLjIuMDE0LDUuODIzLDUuODIzLDAsMCwwLS44MTQuNTgyLDEuMDM3LDEuMDM3LDAsMCwwLS4yNzMuNDQ5Yy0uMDIxLjA0OC0uMDM3LjEyNi4wNS4xMzdhMi4zLDIuMywwLDAsMCwuNjgyLjA0NWMuMTc3LS4wMjguMjc3LS4xNTIuNDE4LS4yMjFhMS4yLDEuMiwwLDAsMCwuNTkyLS42OGMuMDY0LS4xNzUuMTYxLS4xNjcuMjgtLjJTMTAuNywyLjYyLDEwLjgyMywyLjU1N1pcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTEwLjMyNSwzLjA1OGwuMTIxLS4wODhhLjExNy4xMTcsMCwwLDEsLjEyLjA2NGMuMDQ0LjEuMTA2LjExMi4xOTMuMDQ3LjAzMy0uMDI1LjA3MS0uMDU4LjExOC0uMDI3YS4xMTkuMTE5LDAsMCwxLC4wNDEuMTI4LjI3Ni4yNzYsMCwwLDEtLjE4Ny4yNDguMjY2LjI2NiwwLDAsMS0uMy0uMDNDMTAuMzQxLDMuMzA4LDEwLjI2LDMuMiwxMC4zMjUsMy4wNThaXCIvPmAsXG5cdFwiQmF0Y2hcIjogYDxwYXRoIGQ9XCJNMjkuNCwyNy42SDIuNVY0LjVIMjkuNFptLTI1LjktMUgyOC40VjUuNUgzLjVaXCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi4wNzcgMTkuMzE2IDUuNTIyIDE4LjQ4NCAxMC4zNjYgMTUuMjU1IDUuNDc5IDExLjE4NCA2LjEyIDEwLjQxNiAxMi4wMzUgMTUuMzQ0IDYuMDc3IDE5LjMxNlwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxyZWN0IHg9XCIxMi43XCIgeT1cIjE4LjJcIiB3aWR0aD1cIjcuOFwiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cmVjdCB4PVwiMi41XCIgeT1cIjUuNVwiIHdpZHRoPVwiMjYuOVwiIGhlaWdodD1cIjEuOVwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPmAsXG5cdFwiQyNcIjogYDx0aXRsZT5maWxlX3R5cGVfY3NoYXJwPC90aXRsZT48cGF0aCBkPVwiTTE5Ljc5Miw3LjA3MWgyLjU1M1Y5LjYyNEgyNC45VjcuMDcxaDIuNTUyVjkuNjI0SDMwdjIuNTUyaC0yLjU1djIuNTUxSDMwVjE3LjI4SDI3LjQ0OXYyLjU1MkgyNC45di0yLjU1bC0yLjU1LDAsMCwyLjU1MkgxOS43OTN2LTIuNTVsLTIuNTUzLDBWMTQuNzI1aDIuNTUzVjEyLjE3OUgxNy4yNFY5LjYyMmgyLjU1NFptMi41NTMsNy42NThIMjQuOVYxMi4xNzZIMjIuMzQ1WlwiIHN0eWxlPVwiZmlsbDojMzY4ODMyXCIvPjxwYXRoIGQ9XCJNMTQuNjg5LDI0LjAxM2ExMC4yLDEwLjIsMCwwLDEtNC42NTMuOTE1LDcuNiw3LjYsMCwwLDEtNS44OS0yLjMzNkE4LjgzOSw4LjgzOSwwLDAsMSwyLDE2LjM2Nyw5LjQzNiw5LjQzNiwwLDAsMSw0LjQxMiw5LjY0OGE4LjE4MSw4LjE4MSwwLDAsMSw2LjI1OS0yLjU3NywxMS4xLDExLjEsMCwwLDEsNC4wMTguNjM4djMuNzQ1YTYuODEsNi44MSwwLDAsMC0zLjcyMy0xLjAzNiw0Ljc5Myw0Ljc5MywwLDAsMC0zLjcsMS41MjksNS44NzksNS44NzksMCwwLDAtMS40MDcsNC4xNDIsNS43NzQsNS43NzQsMCwwLDAsMS4zMjgsMy45OTIsNC41NTEsNC41NTEsMCwwLDAsMy41NzUsMS40ODcsNy4yODgsNy4yODgsMCwwLDAsMy45MjctMS4xMDhaXCIgc3R5bGU9XCJmaWxsOiMzNjg4MzJcIi8+YCxcblx0XCJDXCI6IGA8dGl0bGU+ZmlsZV90eXBlX2M8L3RpdGxlPjxwYXRoIGQ9XCJNMTAuNjc2LDE1Ljk3M2ExMC4wNTIsMTAuMDUyLDAsMCwwLDEuMTc1LDUuMTUxLDUuNDQ2LDUuNDQ2LDAsMCwwLDYuMzA2LDIuNDA4LDQuMjg0LDQuMjg0LDAsMCwwLDMuMDktMy42Yy4xMDctLjYuMTA5LS42MS4xMDktLjYxLDEuNzM3LjI1MSw0LjUzNy42NTgsNi4yNzQuOTA2bC0uMTEuNDRhMTEuMjU2LDExLjI1NiwwLDAsMS0yLjcsNS4zOSw5LjQzOSw5LjQzOSwwLDAsMS01LjM2NiwyLjY4OCwxNC42MSwxNC42MSwwLDAsMS04LjI3Ny0uODE5QTEwLjE1MSwxMC4xNTEsMCwwLDEsNS40LDIxLjY4N2ExNi4yMjUsMTYuMjI1LDAsMCwxLC4wMTktMTEuNDUsMTAuNTM4LDEwLjUzOCwwLDAsMSw4Ljk2My03LjA1NCwxMy4zNTMsMTMuMzUzLDAsMCwxLDYuNjY2LjU1NSw5LjU3MSw5LjU3MSwwLDAsMSw2LjE2Nyw2LjljLjA5NC4zNTIuMTE0LjQxNy4xMTQuNDE3LTEuOTMyLjM1MS00LjMxOS44LTYuMjM4LDEuMjE1LS4zNjItMS45MTUtMS4yNjUtMy40MjgtMy4yLTMuOWE1LjI2Myw1LjI2MywwLDAsMC02LjYxNiwzLjU3LDEwLjQ5LDEwLjQ5LDAsMCwwLS4zODUsMS40MzlBMTIuMzEsMTIuMzEsMCwwLDAsMTAuNjc2LDE1Ljk3M1pcIiBzdHlsZT1cImZpbGw6IzAwNWY5MVwiLz5gLFxuXHRcIkMrK1wiOiBgPHRpdGxlPmZpbGVfdHlwZV9jcHA8L3RpdGxlPjxwYXRoIGQ9XCJNMTQuNzQyLDI0LjA0N2ExMC4yNDIsMTAuMjQyLDAsMCwxLTQuNjczLjkxOUE3LjYyOCw3LjYyOCwwLDAsMSw0LjE1NSwyMi42Miw4Ljg3Niw4Ljg3NiwwLDAsMSwyLDE2LjM2OSw5LjQ3Niw5LjQ3NiwwLDAsMSw0LjQyMiw5LjYyMWE4LjIxNiw4LjIxNiwwLDAsMSw2LjI4NS0yLjU4OCwxMS4xNTEsMTEuMTUxLDAsMCwxLDQuMDM1LjY0MXYzLjc2MUE2LjgzOSw2LjgzOSwwLDAsMCwxMSwxMC4zOTUsNC44MTMsNC44MTMsMCwwLDAsNy4yODgsMTEuOTNhNS45LDUuOSwwLDAsMC0xLjQxMyw0LjE1OUE1LjgsNS44LDAsMCwwLDcuMjA5LDIwLjFhNC41Nyw0LjU3LDAsMCwwLDMuNTksMS40OTMsNy4zMTksNy4zMTksMCwwLDAsMy45NDMtMS4xMTNaXCIgc3R5bGU9XCJmaWxsOiM5ODRjOTNcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTcuMTEyIDE0LjgyOSAxNy4xMTIgMTIuNDg1IDE5LjQ1NiAxMi40ODUgMTkuNDU2IDE0LjgyOSAyMS44IDE0LjgyOSAyMS44IDE3LjE3MiAxOS40NTYgMTcuMTcyIDE5LjQ1NiAxOS41MTUgMTcuMTEyIDE5LjUxNSAxNy4xMTIgMTcuMTcyIDE0Ljc3IDE3LjE3MiAxNC43NyAxNC44MjggMTcuMTEyIDE0LjgyOVwiIHN0eWxlPVwiZmlsbDojOTg0YzkzXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI1LjMxMyAxNC44MjkgMjUuMzEzIDEyLjQ4NSAyNy42NTcgMTIuNDg1IDI3LjY1NyAxNC44MjkgMzAgMTQuODI5IDMwIDE3LjE3MiAyNy42NTcgMTcuMTcyIDI3LjY1NyAxOS41MTUgMjUuMzEzIDE5LjUxNSAyNS4zMTMgMTcuMTcyIDIyLjk3MSAxNy4xNzIgMjIuOTcxIDE0LjgyOCAyNS4zMTMgMTQuODI5XCIgc3R5bGU9XCJmaWxsOiM5ODRjOTNcIi8+YCxcblx0XCJDbG9qdXJlXCI6IGA8cGF0aCBkPVwiTTE2LDJBMTQsMTQsMCwxLDAsMzAsMTYsMTQuMDE2LDE0LjAxNiwwLDAsMCwxNiwyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNS40ODgsMTYuMjUyYy0uMTI2LjI3My0uMjY1LjU3OS0uNDA4LjlBMjIuOTYzLDIyLjk2MywwLDAsMCwxMy44LDIwLjYwNWE1LjE4MSw1LjE4MSwwLDAsMC0uMTE5LDEuMTU1YzAsLjE3NC4wMDkuMzU2LjAyNC41NDJhNi42NTgsNi42NTgsMCwwLDAsNC40MTMuMDY3LDMuOTY2LDMuOTY2LDAsMCwxLS40NC0uNDY2Yy0uOS0xLjE0Ni0xLjQtMi44MjctMi4xOTQtNS42NTJcIiBzdHlsZT1cImZpbGw6IzkxZGM0N1wiLz48cGF0aCBkPVwiTTEyLjE2OSwxMC41NTZhNi42NzcsNi42NzcsMCwwLDAtLjA3NywxMC44ODFjLjQxMS0xLjcxLDEuNDQtMy4yNzYsMi45ODMtNi40MTUtLjA5Mi0uMjUyLS4yLS41MjctLjMxMy0uODE3YTEwLjIwNywxMC4yMDcsMCwwLDAtMS42LTIuODgyLDQuNDM5LDQuNDM5LDAsMCwwLTEtLjc2N1wiIHN0eWxlPVwiZmlsbDojOTFkYzQ3XCIvPjxwYXRoIGQ9XCJNMjEuODQsMjMuN2ExMC44NzcsMTAuODc3LDAsMCwxLTIuMjU3LS40NzFBOC4wMzYsOC4wMzYsMCwwLDEsMTAuNzE2LDkuOTgyYTUuOSw1LjksMCwwLDAtMS40LS4xNzFjLTIuMzU4LjAyMi00Ljg0OCwxLjMyNy01Ljg4NCw0Ljg1MmE2LjYwNiw2LjYwNiwwLDAsMC0uMDc0LDEuMzYxLDEyLjY0OSwxMi42NDksMCwwLDAsMjMsNy4yNzQsMTQuNzM3LDE0LjczNywwLDAsMS0zLjQ0OC40NTlBOC44ODEsOC44ODEsMCwwLDEsMjEuODQsMjMuN1wiIHN0eWxlPVwiZmlsbDojNjNiMTMyXCIvPjxwYXRoIGQ9XCJNMTkuNDYzLDIxLjI0NGEzLjUzLDMuNTMsMCwwLDAsLjUuMTcyQTYuNjksNi42OSwwLDAsMCwyMi43LDE2LjAyM2gwYTYuNjgxLDYuNjgxLDAsMCwwLTguNzktNi4zNDhjMS4zNTgsMS41NDgsMi4wMTEsMy43NjEsMi42NDMsNi4xODF2MHMuMi42NzMuNTQ3LDEuNTYyYTE1LjQzNCwxNS40MzQsMCwwLDAsMS4zNjMsMi43ODgsMi45MjQsMi45MjQsMCwwLDAsMSwxLjAzNlwiIHN0eWxlPVwiZmlsbDojOTBiNGZlXCIvPjxwYXRoIGQ9XCJNMTYuMDEzLDMuMzcyQTEyLjYzMiwxMi42MzIsMCwwLDAsNS43MzEsOC42NTZhNi40MjUsNi40MjUsMCwwLDEsMy40OC0xLjAwOSw2LjgsNi44LDAsMCwxLDMuMTgyLjc3MmMuMTM0LjA3Ny4yNjEuMTYuMzg2LjI0NmE4LjAzOCw4LjAzOCwwLDAsMSwxMS4yNzMsNy4zNThoMGE4LjAxMyw4LjAxMywwLDAsMS0yLjM5MSw1LjcxOSw5Ljg3MSw5Ljg3MSwwLDAsMCwxLjE0My4wNjQsNi4yNCw2LjI0LDAsMCwwLDQuMDUxLTEuMjYzLDUuMzQ4LDUuMzQ4LDAsMCwwLDEuNy0yLjkwNkExMi42MzIsMTIuNjMyLDAsMCwwLDE2LjAxMywzLjM3MlwiIHN0eWxlPVwiZmlsbDojNTg4MWQ4XCIvPmAsXG5cdFwiQ01ha2VcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjkuOTU1XCIgeTE9XCI5LjA5NlwiIHgyPVwiMTYuNjhcIiB5Mj1cIjIzLjMyNFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAzMilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMxMDExYTFcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNjk2OWUxXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiMTYuMjMxXCIgeTE9XCIxOS42NTVcIiB4Mj1cIjI1LjYxOFwiIHkyPVwiMy43ODJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgMzIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjYjQwZTBlXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmNTk1OVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIjIxLjY2M1wiIHkxPVwiNC44MjNcIiB4Mj1cIjguMzgxXCIgeTI9XCI1LjkzOFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAzMilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMwMWEzMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMDFkZjAwXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiMTQuNjQzXCIgeTE9XCI4LjM2OFwiIHgyPVwiMTQuNDcyXCIgeTI9XCIxNC4xNDVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgMzIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjODQ4NDg0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2QyZDJkMlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2NtYWtlPC90aXRsZT48cGF0aCBkPVwiTTE3LjI1NywxNi45MTksMi4yNDYsMjkuNzQ5LDE1Ljk5NCwyLjI4M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTIuMjYyLDI5Ljc2OGwtLjAzOC0uMDNMMTYuMDEyLDIuMTkzbC4wMDguMDg4TDE3LjI4MywxNi45M2wtLjAxLjAwOFpNMTUuOTc3LDIuMzc0LDIuMzI0LDI5LjY0OSwxNy4yMywxNi45MDhaXCIvPjxwYXRoIGQ9XCJNMTcuOTUyLDI0LjkzMSwxNiwyLjI4LDI5Ljc2NywyOS43NTFaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0yOS44MTgsMjkuOGwtLjA2MS0uMDI1TDE3LjkyOSwyNC45NDhsMC0uMDE1TDE1Ljk3NSwyLjI4MmwuMDQ3LS4wMTNaTTE3Ljk3NiwyNC45MTMsMjkuNzE1LDI5LjcsMTYuMDM2LDIuNDA4WlwiLz48cGF0aCBkPVwiTTExLjE2LDIyLjA5NGwxOC42MjEsNy42NTRIMi4yNVpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTI5Ljc4MSwyOS43NzNIMi4xODNsLjA1MS0uMDQ0LDguOTIxLTcuNjY1LjAxNC4wMDYsMTguNjIyLDcuNjU1Wm0tMjcuNDY0LS4wNUgyOS42NTRsLTE4LjQ4OS03LjZaXCIvPjxwYXRoIGQ9XCJNMTEuMTg5LDIyLjExMmw2LjA1OS01LjE2OC44NDMsNy45OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTE4LjE0OSwyNWwtLjA3Ny0uMDMyLTYuOTc4LTIuODQyLDYuMTk0LTUuMjgzLjAxLjA5NFptLTYuODY1LTIuOSw2Ljc0OCwyLjc0OS0uODI0LTcuOFpcIi8+PHBhdGggZD1cIk0yOS43LDI5LjkxMUgyLjI4NWEuMjIxLjIyMSwwLDAsMS0uMTgyLS4wODguMjIyLjIyMiwwLDAsMSwuMDIyLS4yTDE1Ljg2NCwyLjE4N2EuMTY5LjE2OSwwLDAsMSwuMTQtLjFoMGEuMTU0LjE1NCwwLDAsMSwuMTMuMDg1TDI5Ljg2NywyOS42MDdhLjIzOC4yMzgsMCwwLDEsLjAyLjIyNkEuMjExLjIxMSwwLDAsMSwyOS43LDI5LjkxMVptLTI3LjQ2OC0uMTZhLjQ4NC40ODQsMCwwLDAsLjA1Ny4wMTFoMjcuNGwuMDczLS4wMDlhLjIyMS4yMjEsMCwwLDAtLjAyOC0uMDc3TDE2LDIuMjQ4LDE2LDIuMjYsMi4yNjEsMjkuNjg0YS4yNzkuMjc5LDAsMCwwLS4wMjUuMDY3WlwiLz5gLFxuXHRcIkNPQk9MXCI6IGA8cGF0aCBkPVwiTTIyLjI0LDYuNTQ2YTQuNDQ5LDQuNDQ5LDAsMCwwLDEuNzY1LTIuNTIyLDQuNjM2LDQuNjM2LDAsMCwxLS4wMTgsMi4xNTdjLS4yMjMuNTgyLS41NjcsMS4xMDctLjgzNCwxLjY2OWEyMS43NzIsMjEuNzcyLDAsMCwxLDQuNTU5LTIuOTM4QzI3LjIzLDYuNCwyNS44OTEsNy4zLDI0LjkwNyw4LjQ0MmMuMTkuNDA5LjI4Ljk4OS44LDEuMTA5YTUuMDM2LDUuMDM2LDAsMCwwLDIuNS4xNTVjLjkxMi0uMzEzLDEuMzQ1LTEuMjU4LDEuOC0yLjAzNVY5LjE0YTE1LjczOCwxNS43MzgsMCwwLDEtLjU4MiwxLjc0OGMuMi41NDcuNDA5LDEuMDkyLjU4MiwxLjY0N3YuOTUyYy0uMjE0LjM2OC0uNDQyLjcyNi0uNjYzLDEuMDg5YTUuMjkzLDUuMjkzLDAsMCwwLTEuMDY4LTEuMTYyLDQuMDMsNC4wMywwLDAsMC0xLjg1MS0uMTI1LDMuMjEyLDMuMjEyLDAsMCwwLDIuNDEzLDEuNDdjLS4zNTkuMzctLjY2My45MTItMS4yMy45NjktMS42NDEuMjQ3LTMuMjA3LS41MDUtNC44MzktLjUtLjI4Mi4wMi0uNzA3LjAyNC0uNzg1LjM3MiwwLC43MzUuMjE3LDEuNDUzLjE5LDIuMTg4LS4wNTksMS4yNTgtLjUxMiwyLjQ2Ni0uNTI5LDMuNzI2YTEzLjc4NSwxMy43ODUsMCwwLDAsLjgzOCwzLjQ0OGMtLjUyMy0uMDc3LTEuMDQ0LS4xNjYtMS41NjItLjI2LS4xLjIwOC0uMTg0LjQyLS4yNi42MzRBNC41MTQsNC41MTQsMCwwLDAsMjEuOCwyNi41MzFjLS4wNjEuMTI3LS4xODIuMzgxLS4yNDEuNTA4bC0uNTczLjEzOGMtLjEzMS4yNDctLjI2My40OTItLjQuNzM5YTQuNDIxLDQuNDIxLDAsMCwwLTIuMi4wNjFjLS40NjYtLjE4Ni0uOTI4LS4zNzYtMS4zODktLjU2N2E1LjkzOSw1LjkzOSwwLDAsMCwuNDA3LTIuMzE1Yy0uMjgyLS45ODItMS42LS45ODQtMi0xLjg3N2E2LjIzMyw2LjIzMywwLDAsMS0xLjAyMi0yLjg1MWMtLjgyMy0uNDMzLTEuNDU1LTEuMjIxLTIuNC0xLjQtLjA0OC40MDktLjA4My44Mi0uMTUzLDEuMjI3QTYuMDE1LDYuMDE1LDAsMCwxLDEwLjQ4MSwyMi42Yy4wMzkuNDIyLjA3OS44NDIuMTIsMS4yNjUuMzQ2LjMyNC42OTEuNjQ4LDEuMDMzLjk3NGE5Ljc1Miw5Ljc1MiwwLDAsMS0xLjQyNi43MTMsMTEuMTE0LDExLjExNCwwLDAsMS0xLjY4Ny4wNzdjLS4yNTgtLjI1NC0uNTE4LS41MDgtLjc3Ny0uNzY0YTQuODcxLDQuODcxLDAsMCwwLC4xMTQtMi42MDhjLjE3MS0uNC4zMjYtLjgxMi40NzUtMS4yMjFhNS41NjUsNS41NjUsMCwwLDEtMy4wMS4yMDYsNS4xMiw1LjEyLDAsMCwxLTMuMjktNC4zMywzLjg1OSwzLjg1OSwwLDAsMSwxLjQwNy0zLjI2OEE2LjQxLDYuNDEsMCwwLDAsMy4yLDE2LjI1OWEzLjAzOCwzLjAzOCwwLDAsMCwyLjUsMi40NjYsMy40NjIsMy40NjIsMCwwLDAsMS45Ni0uNjQzLDcuNDgsNy40OCwwLDAsMSwuMzYzLTQuMTMzLDUuNTI0LDUuNTI0LDAsMCwxLDMuNTg2LTIuNjYsNC4yMzUsNC4yMzUsMCwwLDAsMi4wMTEtMS41NjYsMTAuNjcsMTAuNjcsMCwwLDEsMS41MjktMS4zM2MtLjIyOC0uMjE5LS40NTMtLjQ0LS42OC0uNjU5QTIuMTU0LDIuMTU0LDAsMCwwLDE1LjksNi4wMjNjMS4yODQtLjMsMi41NTEtLjY2MSwzLjgyLTEuMDExYTMuNzkzLDMuNzkzLDAsMCwwLDEuNDE1LjYwNmMuMzE3LjM0Ni40OTQsMS4xNTcsMS4xLjkyOE0xOC40NTgsMTkuOTA4Yy4wNDIuNzY4LS4wNDgsMS42NjUuNjc0LDIuMTU1LDAtLjc1NS0uMDQ2LTEuNTA3LS4xLTIuMjZaXCIgc3R5bGU9XCJmaWxsOiMwMDVjYTVcIi8+YCxcblx0XCJDb2ZmZWVTY3JpcHRcIjogYDxwYXRoIGQ9XCJNMTMuMTE0LDUuNzI4Yy4wMjUuMTUzLS4wNTEuMjgtLjMwNi40MDhhMy40NTcsMy40NTcsMCwwLDAtMS42My0uMjI5Yy0uNjM3LjA1MS0xLjE3Mi4yNTUtMS4xLjY4OC4xLjQzMy43MTMuNjg4LDEuODA4LjU4NiwyLjY3NC0uMjI5LDIuNjQ5LTIuMDM4LDYuNTcxLTIuMzk0LDMuMDU2LS4yOCw0Ljc2My42NjIsNC45OTIsMS44MDguMTc4Ljg5MS0uNTYsMS43NTctMi43NzYsMS45MzYtMS45NjEuMTc4LTMuMTA3LS4zNTctMy4yMDktLjg5MS0uMDUxLS4yOC4xLS42ODgsMS4wNDQtLjc5LjEuNDMzLjYzNy44OTEsMS45MS43NjRDMjEuMzQxLDcuNTM2LDIyLjEsNy4yLDIyLDYuN2MtLjEtLjUzNS0xLjA3LS44NC0yLjYtLjcxMy0zLjEwNy4yOC0zLjg3MSwxLjk4Ny02LjUyLDIuMjE2QzExLDguMzc2LDkuNDcyLDcuNjg5LDkuMjY4LDYuNjdjLS4wNzYtLjM4Mi0uMDc2LTEuMjczLDEuOTEtMS40NTIsMS4wMTktLjA3NiwxLjgzNC4xLDEuOTM2LjUwOVpNMy4xODEsMTYuMzc0QTUuMjc5LDUuMjc5LDAsMCwwLDIuMDEsMTkuOTlhNC4yMDYsNC4yMDYsMCwwLDAsMS42NTUsMy4wNTYsNCw0LDAsMCwwLDMuMzYyLjc5LDExLjQzNCwxMS40MzQsMCwwLDAsMS41LS40ODQsNC4yMzgsNC4yMzgsMCwwLDEtMi43NTEtMS4wMTksNC4xMyw0LjEzLDAsMCwxLTEuNzMyLTIuODI3QTMuNzksMy43OSwwLDAsMSw0LjY1OCwxNi41LDMuOTc3LDMuOTc3LDAsMCwxLDcuNDA5LDE1YTQuODA2LDQuODA2LDAsMCwxLDMuMjA5Ljk0Miw2Ljk1LDYuOTUsMCwwLDAtLjg2Ni0uODY2LDQuMSw0LjEsMCwwLDAtMy40NjQtLjY4OCw1LjIsNS4yLDAsMCwwLTMuMTA3LDEuOTg3Wk0xNi44MzMsMTAuNDlBNDAuODM3LDQwLjgzNywwLDAsMSw4LjUsOS43QzYuMjM3LDkuMTQsNS4wNCw4LjUyOSw1LjA0LDcuNzRjMC0uMzMxLjE1My0uNjExLjYxMS0uOTQyLTEuNDI2LjU2LTIuMTksMS4wMTktMi4xOSwxLjczMi4wNzYuNzksMS4zNSwxLjU3OSwzLjk0OCwyLjE5YTM5LjQ0MywzOS40NDMsMCwwLDAsOS4zNDcuOTQyQTM4Ljk5MywzOC45OTMsMCwwLDAsMjYuMSwxMC43MmMyLjYtLjYxMSwzLjg0Ni0xLjQyNiwzLjg0Ni0yLjE5LDAtLjU2LS41Ni0xLjEtMS41NzktMS41YS44NjIuODYyLDAsMCwxLC40MDguNjg4YzAsLjc5LTEuMTcyLDEuNDI2LTMuNTQsMS45NjFBMzkuMzI0LDM5LjMyNCwwLDAsMSwxNi44MzMsMTAuNDlabTkuMzczLDIuMTlhNDIuMzE1LDQyLjMxNSwwLDAsMS05LjM0Ny45NDIsNDQuMTQ0LDQ0LjE0NCwwLDAsMS05LjQyNC0uOTQyYy0yLjE5LS41Ni0zLjM2Mi0xLjE3Mi0zLjc2OS0xLjgwOGEyMy4xODYsMjMuMTg2LDAsMCwwLDIuNiw3LjY0MWMuOTQyLDEuNDI2LDEuODg1LDIuNjc0LDIuODI3LDQuMDI0YTkuODgzLDkuODgzLDAsMCwxLC44NjYsMi4zNjksNC41NTksNC41NTksMCwwLDAsMi42LDEuNzMyLDEwLjYxMSwxMC42MTEsMCwwLDAsNC4xNzcuNjExaC4xNTNhMTEuODM5LDExLjgzOSwwLDAsMCw0LjMtLjYxMSw0Ljg2OSw0Ljg2OSwwLDAsMCwyLjUyMS0xLjczMmguMDc2YTkuNTkyLDkuNTkyLDAsMCwxLC43OS0yLjM2OWMuOTQyLTEuMzUsMS44ODUtMi42LDIuODI3LTQuMDI0QTI0LjYyLDI0LjYyLDAsMCwwLDMwLDEwLjg3MkMyOS40OTEsMTEuNTg1LDI4LjMxOSwxMi4yLDI2LjIwNSwxMi42ODFaXCIgc3R5bGU9XCJmaWxsOiM2ZjRlMzdcIi8+YCxcblx0XCJDcnlzdGFsXCI6IGA8cGF0aCBkPVwiTTI5Ljk0MSwxOS44MTYsMTkuOCwyOS45MjhjLS4wMjguMDI4LS4wODUuMDI4LS4xNjkuMDI4TDUuOCwyNi4yNjdjLS4wMjgsMC0uMDg0LS4wMjgtLjExMy0uMTEzTDIsMTIuMzUyYS40MTkuNDE5LDAsMCwxLC4wMjgtLjE2OUwxMi4xNjgsMi4wNzJjLjAyOC0uMDI4LjA4NC0uMDI4LjE2OS0uMDI4bDEzLjgzLDMuNzE4Yy4wMjgsMCwuMDg0LjAyOC4xMTMuMTEzbDMuNjksMTMuOEMzMC4wMjYsMTkuNzMyLDMwLDE5Ljc4OCwyOS45NDEsMTkuODE2Wk0xNi4zOTMsOC44MzIsMi44MTcsMTIuNDkzcS0uMDQyLDAsMCwuMDg0TDEyLjc2LDIyLjUyYy4wMjguMDI4LjAyOCwwLC4wODQsMEwxNi41MDYsOC45NzJDMTYuNDQ5LDguODMyLDE2LjM5Myw4LjgzMiwxNi4zOTMsOC44MzJaXCIgc3R5bGU9XCJmaWxsOiNjOGM4YzhcIi8+YCxcblx0XCJDU1NcIjogYDxwb2x5Z29uIHBvaW50cz1cIjUuOTAyIDI3LjIwMSAzLjY1NiAyIDI4LjM0NCAyIDI2LjA5NSAyNy4xOTcgMTUuOTg1IDMwIDUuOTAyIDI3LjIwMVwiIHN0eWxlPVwiZmlsbDojMTU3MmI2XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2IDI3Ljg1OCAyNC4xNyAyNS41OTMgMjYuMDkyIDQuMDYxIDE2IDQuMDYxIDE2IDI3Ljg1OFwiIHN0eWxlPVwiZmlsbDojMzNhOWRjXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2IDEzLjE5MSAyMC4wOSAxMy4xOTEgMjAuMzcyIDEwLjAyNiAxNiAxMC4wMjYgMTYgNi45MzUgMTYuMDExIDYuOTM1IDIzLjc1IDYuOTM1IDIzLjY3NiA3Ljc2NCAyMi45MTcgMTYuMjgyIDE2IDE2LjI4MiAxNiAxMy4xOTFcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIxNi4wMTkgMjEuMjE4IDE2LjAwNSAyMS4yMjIgMTIuNTYzIDIwLjI5MiAxMi4zNDMgMTcuODI3IDEwLjY3IDE3LjgyNyA5LjI0IDE3LjgyNyA5LjY3MyAyMi42OCAxNi4wMDQgMjQuNDM4IDE2LjAxOSAyNC40MzQgMTYuMDE5IDIxLjIxOFwiIHN0eWxlPVwiZmlsbDojZWJlYmViXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE5LjgyNyAxNi4xNTEgMTkuNDU1IDIwLjI5IDE2LjAwOCAyMS4yMiAxNi4wMDggMjQuNDM2IDIyLjM0NCAyMi42OCAyMi4zOTEgMjIuMTU4IDIyLjkyOCAxNi4xNTEgMTkuODI3IDE2LjE1MVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2LjAxMSA2LjkzNSAxNi4wMTEgOC44NTUgMTYuMDExIDEwLjAxOCAxNi4wMTEgMTAuMDI2IDguNTU1IDEwLjAyNiA4LjU1NSAxMC4wMjYgOC41NDUgMTAuMDI2IDguNDgzIDkuMzMxIDguMzQyIDcuNzY0IDguMjY4IDYuOTM1IDE2LjAxMSA2LjkzNVwiIHN0eWxlPVwiZmlsbDojZWJlYmViXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2IDEzLjE5MSAxNiAxNS4xMTEgMTYgMTYuMjc0IDE2IDE2LjI4MiAxMi42MTEgMTYuMjgyIDEyLjYxMSAxNi4yODIgMTIuNjAxIDE2LjI4MiAxMi41MzkgMTUuNTg3IDEyLjM5OSAxNC4wMiAxMi4zMjUgMTMuMTkxIDE2IDEzLjE5MVwiIHN0eWxlPVwiZmlsbDojZWJlYmViXCIvPmAsXG5cdFwiQ1NWXCI6IGA8cGF0aCBkPVwiTTIyLjAzOCwySDYuMzc1YTEuNzU1LDEuNzU1LDAsMCwwLTEuNzUsMS43NXYyNC41QTEuNzU1LDEuNzU1LDAsMCwwLDYuMzc1LDMwaDE5LjI1YTEuNzU1LDEuNzU1LDAsMCwwLDEuNzUtMS43NVY2Ljg1NlptLjUyNSwyLjg0NCwxLjY2MywxLjUzMUgyMi41NjNaTTYuMzc1LDI4LjI1VjMuNzVIMjAuODEzVjguMTI1aDQuODEzVjI4LjI1WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxNS4wOTdcIiB3aWR0aD1cIjEzLjA3NlwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMjQuNDM5XCIgd2lkdGg9XCI5Ljc2MlwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMTkuNzYzXCIgd2lkdGg9XCIxNS43NVwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMTAuMjNcIiB3aWR0aD1cIjE1Ljc1XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPmAsXG5cdFwiRFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTg1LjQ1NVwiIHkxPVwiMTYwMS42NDFcIiB4Mj1cIjE4MS45NTVcIiB5Mj1cIjE2MzAuMjI0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTYyLjUyMyAtNjY2LjY0Nikgc2NhbGUoMC40MjcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCIxNzYuMTM2XCIgeTE9XCIxNjAwLjVcIiB4Mj1cIjE3Mi42MzZcIiB5Mj1cIjE2MjkuMDgzXCIgeGxpbms6aHJlZj1cIiNhXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2RsYW5nPC90aXRsZT48cGF0aCBkPVwiTTMuOTc4LDE1LjQ2MiwzLjk2OSw4LjUwOUEuNTg4LjU4OCwwLDAsMSw0LjUsNy45NDdhLjY1OC42NTgsMCwwLDEsLjA3NiwwbDYuMDc0LS4wMDlhMTUuNywxNS43LDAsMCwxLDYuMDY3Ljk1LDguOSw4LjksMCwwLDEsMi4yNDQsMS4zNTksNC40NjksNC40NjksMCwwLDEsMi45NDYtMS4wODMsNC4xMSw0LjExLDAsMCwxLDQuMjc2LDMuOTJBNC4xMSw0LjExLDAsMCwxLDIxLjkwNywxN2MtLjA4OSwwLS4xNzctLjAwOC0uMjY1LS4wMTJhNi42MTcsNi42MTcsMCwwLDEtLjIzMi45NTMsODUuMzgzLDg1LjM4MywwLDAsMSw4LjU5LDIuNlYySDJWMTUuNFEyLjk5MiwxNS40MiwzLjk3OCwxNS40NjJabTIyLjgtNy45NDRhMS4zMiwxLjMyLDAsMCwxLDEuMzc0LDEuMjU5LDEuMzc5LDEuMzc5LDAsMCwxLTIuNzQ3LDBBMS4zMiwxLjMyLDAsMCwxLDI2Ljc4LDcuNTE3WlwiIHN0eWxlPVwiZmlsbDojYjAzOTMxXCIvPjxwYXRoIGQ9XCJNMTcuODYxLDE1Ljc4N2E0LjExNCw0LjExNCwwLDAsMC0xLjc0OC0zLjQ1OCw1LjgxNCw1LjgxNCwwLDAsMC0xLjUwOC0uODIyLDcuMzU0LDcuMzU0LDAsMCwwLTEuNjI5LS40MzgsMjEuNjI5LDIxLjYyOSwwLDAsMC0yLjU4OC0uMWwtMi42MTksMCwuMDA2LDQuNzM3YTg4LjgyNyw4OC44MjcsMCwwLDEsOS45MSwxLjQwOEE0LjkxOSw0LjkxOSwwLDAsMCwxNy44NjEsMTUuNzg3WlwiIHN0eWxlPVwiZmlsbDojYjAzOTMxXCIvPjxwYXRoIGQ9XCJNMjAuOTkzLDE4Ljk3OWE3LjkwNiw3LjkwNiwwLDAsMS0yLjEyOCwyLjU4Miw5LjczOSw5LjczOSwwLDAsMS0zLjI1NiwxLjcxLDExLjU1OCwxMS41NTgsMCwwLDEtMS45NzEuNDcyaC0uMDE1YTMxLjg1NywzMS44NTcsMCwwLDEtMy4zMjYuMTExbC01LjYyNS4wMjJhLjYxNi42MTYsMCwwLDEtLjY4Ni0uNjgxbC0uMDEtNy43MzRRMi45OTIsMTUuNDIsMiwxNS40VjMwSDMwVjIwLjU0NGE4NS4zODMsODUuMzgzLDAsMCwwLTguNTktMi42QTYuOTg1LDYuOTg1LDAsMCwxLDIwLjk5MywxOC45NzlaXCIgc3R5bGU9XCJmaWxsOiNiMDM5MzFcIi8+PHBhdGggZD1cIk0yMC45OTMsMTguOTc5YTcuOTA2LDcuOTA2LDAsMCwxLTIuMTI4LDIuNTgyLDkuNzM5LDkuNzM5LDAsMCwxLTMuMjU2LDEuNzEsMTEuNTU4LDExLjU1OCwwLDAsMS0xLjk3MS40NzJoLS4wMTVhMzEuODU3LDMxLjg1NywwLDAsMS0zLjMyNi4xMTFsLTUuNjI1LjAyMmEuNjE2LjYxNiwwLDAsMS0uNjg2LS42ODFsLS4wMS03LjczNFEyLjk5MiwxNS40MiwyLDE1LjRWMzBIMzBWMjAuNTQ0YTg1LjM4Myw4NS4zODMsMCwwLDAtOC41OS0yLjZBNi45ODUsNi45ODUsMCwwLDEsMjAuOTkzLDE4Ljk3OVpcIiBzdHlsZT1cIm9wYWNpdHk6MC4zMDAwMDAwMTE5MjA5Mjk7aXNvbGF0aW9uOmlzb2xhdGU7ZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTAuNDc3LDIwLjgzNWExNi4wMTQsMTYuMDE0LDAsMCwwLDIuODc3LS4yLDcuNjMzLDcuNjMzLDAsMCwwLDEuNjI4LS41LDUuNjI4LDUuNjI4LDAsMCwwLDEuMTg3LS43NDgsNC40NTcsNC40NTcsMCwwLDAsMS41MTgtMi4yNzEsODguNjkxLDg4LjY5MSwwLDAsMC05LjkxLTEuNDA4bC4wMDYsNS4xMzNaXCIgc3R5bGU9XCJmaWxsOiNiMDM5MzFcIi8+PHBhdGggZD1cIk0xMC40NzcsMjAuODM1YTE2LjAxNCwxNi4wMTQsMCwwLDAsMi44NzctLjIsNy42MzMsNy42MzMsMCwwLDAsMS42MjgtLjUsNS42MjgsNS42MjgsMCwwLDAsMS4xODctLjc0OCw0LjQ1Nyw0LjQ1NywwLDAsMCwxLjUxOC0yLjI3MSw4OC42OTEsODguNjkxLDAsMCwwLTkuOTEtMS40MDhsLjAwNiw1LjEzM1pcIiBzdHlsZT1cIm9wYWNpdHk6MC4zMDAwMDAwMTE5MjA5Mjk7aXNvbGF0aW9uOmlzb2xhdGU7ZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMjAuMzgzLDExLjc0NmE2Ljk5Myw2Ljk5MywwLDAsMSwxLjM2LDQuMTQ4LDYuNjE4LDYuNjE4LDAsMCwxLS4xLDEuMWMuMDg4LDAsLjE3Ni4wMTIuMjY1LjAxMmE0LjExLDQuMTEsMCwwLDAsNC4yNzYtMy45Miw0LjExLDQuMTEsMCwwLDAtNC4yNzYtMy45Miw0LjQ3LDQuNDcsMCwwLDAtMi45NDYsMS4wODNBOC4xMjMsOC4xMjMsMCwwLDEsMjAuMzgzLDExLjc0NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48ZWxsaXBzZSBjeD1cIjI2Ljc4XCIgY3k9XCI4Ljc3N1wiIHJ4PVwiMS4zNzRcIiByeT1cIjEuMjU5XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk00LjY3MywyMy44NzdsNS42MjUtLjAyMmEzMS44NzEsMzEuODcxLDAsMCwwLDMuMzI2LS4xMTFoLjAxNWExMS40OSwxMS40OSwwLDAsMCwxLjk3MS0uNDcyLDkuNzM5LDkuNzM5LDAsMCwwLDMuMjU2LTEuNzEsNy45MDYsNy45MDYsMCwwLDAsMi4xMjgtMi41ODIsNi45ODUsNi45ODUsMCwwLDAsLjQxNy0xLjAzNCw3LjA1Niw3LjA1NiwwLDAsMCwuMzMyLTIuMDUxLDYuOTkyLDYuOTkyLDAsMCwwLTEuMzYtNC4xNDgsOC4xLDguMSwwLDAsMC0xLjQyMS0xLjUsOC44NzgsOC44NzgsMCwwLDAtMi4yNDQtMS4zNTksMTUuNjg2LDE1LjY4NiwwLDAsMC02LjA2Ny0uOTVsLTYuMDc0LjAwOWEuNjU4LjY1OCwwLDAsMC0uMDc2LDAsLjU4OC41ODgsMCwwLDAtLjUzMi41NjJsLjAwOSw2Ljk1Mi4wMSw3LjczNEEuNjE2LjYxNiwwLDAsMCw0LjY3MywyMy44NzdabTMuMS0xMi45MDgsMi42MTksMGEyMS42MjMsMjEuNjIzLDAsMCwxLDIuNTg4LjEsNy4zNTQsNy4zNTQsMCwwLDEsMS42MjkuNDM4LDUuODE0LDUuODE0LDAsMCwxLDEuNTA4LjgyMiw0LjExNiw0LjExNiwwLDAsMSwxLjc0OCwzLjQ1OCw0LjkwNSw0LjkwNSwwLDAsMS0uMTc1LDEuMzI3LDQuNDU3LDQuNDU3LDAsMCwxLTEuNTE4LDIuMjcxLDUuNjEzLDUuNjEzLDAsMCwxLTEuMTg3Ljc0OCw3LjY2Niw3LjY2NiwwLDAsMS0xLjYyOC41LDE2LjAwOSwxNi4wMDksMCwwLDEtMi44NzcuMmwtMi42OTQsMC0uMDA2LTUuMTMzWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiRGFydFwiOiBgPHBhdGggZD1cIk0xNi43MzksMi4wMzdhMS4zMTQsMS4zMTQsMCwwLDAtLjkxNi4zNzdsLS4wMTMuMDFMNy4yMiw3LjM4OWw4LjU2Niw4LjU2NnYuMDA2bDEwLjMsMTAuMywxLjk2My0zLjUzNkwyMC45NjgsNS43MjhsLTMuMy0zLjNhMS4zMDcsMS4zMDcsMCwwLDAtLjkyNy0uMzg4WlwiIHN0eWxlPVwiZmlsbDojNjZjM2ZhXCIvPjxwYXRoIGQ9XCJNNy4yNSw3LjM1LDIuMjg4LDE1LjkzMWwtLjAxLjAxM2ExLjMyMiwxLjMyMiwwLDAsMC0uMzc4LjkxOSwxLjMsMS4zLDAsMCwwLC4zODcuOTI0TDYuNCwyMS45bDE2LjA4NCw2LjMyNywzLjYzNi0yLjAyLS4xLS4xLS4wMjUsMC0xMC4wODMtMTAuMUgxNS45TDcuMjUsNy4zNVpcIiBzdHlsZT1cImZpbGw6IzIxNTg5NlwiLz48cGF0aCBkPVwiTTcuMTkyLDcuMzYybDguNzY0LDguNzczaC4wMTNsMTAuMDg3LDEwLjEsMy44MzktLjczMkwyOS45LDE0LjE0bC00LjA1NC0zLjk3M2E2LjUyMSw2LjUyMSwwLDAsMC0zLjYyNC0xLjYxNmwwLS4wNDRMNy4xOTIsNy4zNjJaXCIgc3R5bGU9XCJmaWxsOiMyMzU5OTdcIi8+PHBhdGggZD1cIk03LjI1Niw3LjQxMWw4Ljc2OCw4Ljc2OHYuMDEzTDI2LjExNiwyNi4yODRsLS43MzQsMy44MzlIMTQuMDIybC0zLjk3MS00LjA1NmE2LjUyMiw2LjUyMiwwLDAsMS0xLjYxNC0zLjYyNWwtLjA0NCwwTDcuMjU2LDcuNDExWlwiIHN0eWxlPVwiZmlsbDojNThiNmYwXCIvPmAsXG5cdFwiRGhhbGxcIjogYDxwYXRoIGQ9XCJNMTYsMi4wN0ExMy45MywxMy45MywwLDEsMSwyLDE2LDEzLjkzLDEzLjkzLDAsMCwxLDE2LDIuMDdaTTEzLjI4LDIyLjMyYTEuNDksMS40OSwwLDEsMS0xLDEuODNBMS40OSwxLjQ5LDAsMCwxLDEzLjI4LDIyLjMyWm04LTE1LjY4YS41My41MywwLDAsMSwuMzguNjYuNTIuNTIsMCwwLDEtLjY1LjM4bC0uNS0uMTNhNDIuNjcsNDIuNjcsMCwwLDAtLjM3LDcuMDdDMTguMDYsMTYuNDUsMTQuMzksMjIsMTQuMzksMjJsMS45My03LjE4YTEsMSwwLDAsMCwuODktLjY1LjkxLjkxLDAsMCwwLTEuNzUtLjQ3LDEsMSwwLDAsMCwuNDUsMUwxNCwyMS44NWE2OC4zOCw2OC4zOCwwLDAsMC0xLjM0LTkuMjUsMzQuMjgsMzQuMjgsMCwwLDAsMy4yMS02LjMxbC0uNS0uMTNBLjU1LjU1LDAsMCwxLDE1LDUuNWEuNTMuNTMsMCwwLDEsLjY2LS4zOGw1LjY4LDEuNTJaXCIgc3R5bGU9XCJmaWxsOiNiN2I3Yjc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+YCxcblx0XCJEaWZmXCI6IGA8cmVjdCB4PVwiNi45NzVcIiB5PVwiM1wiIHdpZHRoPVwiMTguMDVcIiBoZWlnaHQ9XCI2LjAxN1wiIHN0eWxlPVwiZmlsbDojYzAwMDAwXCIvPjxwYXRoIGQ9XCJNMTIuOTkyLDEwLjk1djYuMDE3SDYuOTc1djYuMDE3aDYuMDE3VjI5aDYuMDE3VjIyLjk4M2g2LjAxN1YxNi45NjdIMTkuMDA4VjEwLjk1WlwiIHN0eWxlPVwiZmlsbDpncmVlblwiLz5gLFxuXHRcIkRqYW5nby9KaW5qYTJcIjogYDxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD1cImFcIiBjeD1cIjE2XCIgY3k9XCItMTE5LjI4M1wiIHI9XCIxMy41XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTAuOTQ1LCAwLCAtOTYuNzM1KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzU3NTc1N1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMyZjJmMmZcIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9qaW5qYTwvdGl0bGU+PHBhdGggZD1cIk0yOS4zNCwzLjI0MWEzOC4yNzEsMzguMjcxLDAsMCwxLTkuNDUxLDMuMDRjLTQuMjQxLjU1LTEyLjMyOSwxLjEtMTMuOTM1LjcxMkEyMy4zLDIzLjMsMCwwLDEsMy4yLDYuMTUxbC4zMzQsMS4xMzJMMi41LDguMTg4bC4xODMuMzIzLjQyNC4wMzIsMS4zLjE2Mi4xODMuNTgyLjcyNy4wNjYuMzY0LDEuMjI4czEuNTQ0LjEzLDIsLjEzLDEuMzYzLS4wNjQsMS4zNjMtLjA2NGwuMDMuNDg1LjMzNC4wNjR2LjU1bC0uNzI4LjY0OC4xODMuMDMydi4yMjVhMTUuODE2LDE1LjgxNiwwLDAsMS0yLjMuMDM0Yy0uNjY2LS4xLS43ODgtLjEtLjc4OC0uMWwtLjA2LjA2NC0uMDMuMjkxaC4xNTFsLjA2LDEuMjYyLDMuMzYzLS4xMy0uMjQzLDQuMzY1LS4wMy41NDktMi44NDgtLjE2Mi0uMDMtMS4xNjRoLjYzNWwuMDYxLS40NTMuNTc1LS4xMy4wOTEtLjEyOC0yLjE1MS0uNTE4LTEuNjM2LjQ4NS4yNzMuMjI3aC4yNzNsLjAzLjM4OS41NzUuMDMyVjE4LjdsLS42MzUuMTYyLjEyMS4yNTcuMTUxLjF2Ljg3M2guMzk0djQuMDQxbC0uNjM3LjEuMDkxLDEuMTY0LjM5My4wNjYtLjA2LDIuNjUxLDEuNzI3LjAzMi0uMzY0LTIuNjE5LDIuNjA1LS4wNjQtLjE4MSwxLjQyMi0uMjQzLDEsMi42MzUuMDMyLjAzLTIuNTg2LDEuODE3LS4xNjItLjA5LDEuNjQ5LS4wNjEuOTY5aDEuNTQ2bC0uMDYxLTIuNjUxLjIxMy4wMzQuMDYtMS4yNjJoLS4yNDNsLS4wOS0uNTE4TDEzLjgsMjEuOWwuMDYtMS43MTNoLjMzM1YxOS4xNDlsLS40MjQuMDMyLjA2MS0xLjIyLjQ5My0uMDQ5LjAyMy0uNC4yOC0uMDQxLjI4Ny0uMjE4TDEzLjE4NywxNi45bC0xLjcxMi4zNzkuMTY3LjI3NC4xODEtLjAxNS4yMTEtLjAwOC4wMzkuNS40NzctLjAyMy4wMDksMS4wODItMi4wNTMtLjA0Ny4wNjktMS4xNTYuMDY3LTEuMDUxVjE1LjQ1NUwxMC43LDE0bDQuMTExLS4yMSw0Ljg5Mi0uMjgyLjA0Ni45MjktLjE3NCwyLjIzMUwxOS41LDE4Ljc0NGwtMS44LS4wMzItLjAwOS0xLjQ1NS42NjctLjAyNC4wMy0uNDExLjI3My0uMDQxLS4wMTQtLjA4MS4yNzMtLjAxNS4xNTEtLjJMMTcuMDM0LDE2LDE1LDE2LjQ0bC4xNDQuMjUxLjIyNy0uMDE3di4xMTRoLjI4di40NmwuNi4wMDgtLjAwNywxLjI3N2gtLjYwNWwtLjAwOS4yOTEuMjEzLjAyNC0uMDIzLDEuMTA4LjQ0Ny4wMjQtLjA1Myw0LjM5LS41OTEuMTIuMDA3LjIxaC4yMDZ2MS4xMjRoLjM0bC0uMDksMS41MzZMMTUuOTc0LDI4LjdsMi4xNTEuMDU2LS4wNjktMS4xNjQtLjE1OC0uOTY5LS4wMzEtLjg0MSwxLjgyNi0uMDMyLS4wNTMsMS4zLS4wMDksMS4zNzQsMS4wMzEuMDgxLDEuNC0uMDU2LjQ0LS4xMy0uMjQzLS43MzYtLjA2LTEuMTU2LS4xMTQtLjgyNCwxLjc0Mi0uMDY0LS4wNzYsMS4wMS0uMDA3LDEuNTg1LjcuMDY0LjY5LS4wMTUuMzMzLS4xMDUtLjItMS41TDI1LjIsMjUuNDQ1bC4zLS4wMzJMMjUuNSwyNC40bC4wODMtLjAxNy0uMDE0LS4yMThoLS4zNDFsLS4wNjktLjc0NEwyNS4xMywyMC4ybC4yNTctLjAwOFYxOS4xMzNsLjEwNy4wMTd2LS4yMWwtLjM4LS4wMzQuMDA5LTEuMjI4LjYzNS0uMDU2LS4wMzctLjQxMy4yOC0uMDI0LS4wMTYtLjA4MS4zNzEtLjE4Ni0xLjg4Ni0uMzc5LTEuOTE2LjM4OS4xMjEuMjI2LjMtLjAyNC4wMTYuMWguMjVsLjAxNC40ODUuNjIxLS4wMDguMDUzLDEuMTg4LTIuMi0uMDE3LS4yNTctMS43ODYtLjIwNi0uOTQ2LS4xNjYtMS43LjEtLjk5Myw0LjM3Ny0uMzMyLjAxNC0xLjQ3OS4yMi0uMDU2LS4wMTQtLjIyNS0uMTY3LS4xcy0yLjM5My4zNTUtMy4xNTEuNDM2bC0uMzcxLjA0LS4wMjMtLjI3NC0uOTA1LS40NzQuMDExLS41NTIuMzExLS4wMDkuMDIzLS43NTlhMjQuODA3LDI0LjgwNywwLDAsMCwyLjU0NC0uMjgzYy42ODktLjE2MiwxLjY2Ni0uMzIzLDEuNjY2LS4zMjNMMjYuMiw3LjgwOWwuOTE3LS4yNjcuMDc2LS4yMSwyLjA3NC0uNTc0LjIzNi0uMTk0LS43ODgtMS43MjIuMDc2LS4zODkuNC0uMjEuMjg4LS44ODFaTTE5LjM3NCw5LjhsLS4wMTEuNjI2LjQ3LjAyLS4wMy41OTQtLjkyMS42LS4wNTcuMTc0LjM3MSwwLDAsLjE0Ni0yLjgxNC4xMzcuMDE5LS40MTYuMTI4LS4yMDcuMDA5LS4xMzMsMC0uMjg2LjA4LS4xOS4wMy0uMTU0di0uMTFsLjEyMS0uNDg1Wm0tNS44ODUuNTMzLS4wNjkuNDIxLjIyLjI1OS0uMDE0LjQ1My4yLjMxNS0uMDUzLjM3Mi4xNTEuMjE4LTIuODcxLjExMy0uMDA3LS4xLjMzMy0uMDQxLjAxNi0uMTIyLS43MjctLjM5NS0uMDM5LS42MzEuMzQ4LS4wMTcuMDMtLjY4Wm00LjI0OSw5LjcsMS43NDIuMTEzTDE5LjQyLDIyLjVsLjIyNywxLjkyM0wxNy44LDI0LjM1NFptLTExLjY2My4xLDIuNzg4LjE0NUw4LjYyLDIxLjl2MS4zNTlsLjIuNzU5LTIuNzI3LjEzWm0xNy44NDMuMDE1djQuMDFsLTEuNzcyLjEzLS4wNjEtMi4xMTgtLjItMS45NzNaTTEwLjUsMjAuMjRsMi4wNi4wMDguMDIxLDMuNzE4TDEwLjY1NywyNGwtLjEtMS4yMDUtLjAwNy0xLjJaXCIgc3R5bGU9XCJzdHJva2U6cmVkO3N0cm9rZS13aWR0aDowLjVweDtmaWxsOnVybCgjYSlcIi8+YCxcblx0XCJEb2NrZXJcIjogYDxwYXRoIGQ9XCJNMTYuNTQsMTIuNjYzSDE5LjR2Mi45MjRoMS40NDZhNi4yNzIsNi4yNzIsMCwwLDAsMS45ODgtLjMzMyw1LjA5MSw1LjA5MSwwLDAsMCwuOTY2LS40MzYsMy41ODQsMy41ODQsMCwwLDEtLjY3LTEuODQ5LDMuOTA3LDMuOTA3LDAsMCwxLC43LTIuNzUzbC4zLS4zNDguMzU4LjI4OGE0LjU1OCw0LjU1OCwwLDAsMSwxLjc5NSwyLjg5Miw0LjM3NSw0LjM3NSwwLDAsMSwzLjMxOS4zMDlsLjM5My4yMjYtLjIwNy40YTQuMTQxLDQuMTQxLDAsMCwxLTQuMTU3LDEuOTgzYy0yLjQ4LDYuMTY4LTcuODcxLDkuMDg4LTE0LjQwOSw5LjA4OC0zLjM3OCwwLTYuNDc2LTEuMjYzLTguMjQxLTQuMjU5bC0uMDI5LS4wNDlMMi43LDIwLjIyN2E4LjMxNiw4LjMxNiwwLDAsMS0uNjU5LTQuMjA4bC4wNC0uNDMzSDQuNTI2VjEyLjY2M0g3LjM4N1Y5LjhoNS43MjFWNi45NDJIMTYuNTR2NS43MjFaXCIgc3R5bGU9XCJmaWxsOiMwMDk2ZTZcIi8+PHBhdGggZD1cIk0xMi4wMDYsMjQuNTY3YTYuMDIyLDYuMDIyLDAsMCwxLTMuMTQtMy4wODksMTAuMzI5LDEwLjMyOSwwLDAsMS0yLjI2NC4zNDNxLS41LjAyOC0xLjA0NS4wMjgtLjYzMiwwLTEuMzMxLS4wMzdhOS4wNTEsOS4wNTEsMCwwLDAsNywyLjc2OVExMS42MTgsMjQuNTgxLDEyLjAwNiwyNC41NjdaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk03LjA4LDEzLjM0NmguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdINi43VjEzLjM0NlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNjgsMGguMnYyLjA2N2gtLjJWMTMuMzQ2Wk01LDEzLjE0SDcuNDgydjIuNDc5SDVabTIuODU5LTIuODYxaDIuNDh2Mi40NzlINy44NjNabTIuMDc3LjIwN2guMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlYxMC40ODZabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNjgsMGguMnYyLjA2NmgtLjJabS0uMjA3LDIuNjUzaDIuNDh2Mi40OEg3Ljg2M1YxMy4xNFptMi4wNzcuMjA3aC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yVjEzLjM0NlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM2OCwwaC4ydjIuMDY3aC0uMlptMi42NTQtLjIwN0gxMy4ydjIuNDhoLTIuNDhWMTMuMTRabTIuMDc2LjIwN0gxM3YyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM2OCwwaC4ydjIuMDY3aC0uMlptLS4yMDYtMy4wNjdIMTMuMnYyLjQ3OWgtMi40OFYxMC4yNzlabTIuMDc2LjIwN0gxM3YyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM2OCwwaC4ydjIuMDY2aC0uMlptMi42NTQsMi42NTNoMi40Nzl2Mi40OGgtMi40OFYxMy4xNFptMi4wNzYuMjA3aC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzY4LDBoLjE5MnYyLjA2N2gtLjJWMTMuMzQ2Wm0tLjIwNi0zLjA2N2gyLjQ3OXYyLjQ3OWgtMi40OFYxMC4yNzlabTIuMDc2LjIwN2guMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM2OCwwaC4xOTJ2Mi4wNjZoLS4yVjEwLjQ4NlptLS4yMDYtMy4wNjdoMi40NzlWOS45aC0yLjQ4VjcuNDE5Wm0yLjA3Ni4yMDZoLjJWOS42OTFoLS4yWm0tLjM3NiwwaC4yVjkuNjkxaC0uMlptLS4zNzYsMGguMlY5LjY5MWgtLjJabS0uMzc2LDBoLjJWOS42OTFoLS4yWm0tLjM3NiwwaC4yVjkuNjkxaC0uMlptLS4zNjgsMGguMTkyVjkuNjkxaC0uMlY3LjYyNVptMi42NTQsNS41MTRoMi40Nzl2Mi40OGgtMi40OFYxMy4xNFptMi4wNzYuMjA3aC4xOTV2Mi4wNjdoLS4yVjEzLjM0NlptLS4zNzYsMGguMjA2djIuMDY3aC0uMjA2Wm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yMDVWMTMuMzQ2Wm0tLjM2OCwwaC4ydjIuMDY3aC0uMTk0VjEzLjM0NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTEwLjE4OCwxOS42MzhhLjY4NC42ODQsMCwxLDEtLjY4NC42ODRBLjY4NC42ODQsMCwwLDEsMTAuMTg4LDE5LjYzOFptMCwuMTk0YS40ODkuNDg5LDAsMCwxLC4xNzcuMDMzLjIuMiwwLDEsMCwuMjc1LjI2OS40OS40OSwwLDEsMS0uNDUzLS4zWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiRE9UIChHcmFwaHZpeilcIjogYDxwb2x5Z29uIHBvaW50cz1cIjIzLjk0MiAzMCAxMi42NzkgMzAgMS40MTcgMzAgMS40MTcgMTYgMS40MTcgMiAxMi42NzkgMiAyMy45NDIgMiAyMy45NDIgMTYgMjMuOTQyIDMwXCIgc3R5bGU9XCJmaWxsOiNlNmU2ZTZcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjMuMjAyXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCI3LjQyXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxMS42MzhcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjE1Ljg1NlwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjAuMDc0XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyNC4yOTNcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjI4LjUxMVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMlwiIHk9XCIzLjIwMlwiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS41NzNcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiNi4yMThcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjEwLjQzNlwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTQuNjU1XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxOC44NzNcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIzLjA5MVwiIHk9XCIzLjIwMlwiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS41NzNcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48ZyBzdHlsZT1cIm9wYWNpdHk6MC41XCI+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjI3LjQ1NlwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjYuNDAyXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyNS4zNDdcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjIzLjIzOFwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjIuMTg0XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyMS4xMjlcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjE5LjAyXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxNy45NjVcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjE2LjkxMVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTQuODAyXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxMy43NDdcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjEyLjY5M1wiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTAuNTgzXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCI5LjUyOVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiOC40NzRcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjYuMzY1XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCI1LjMxMVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiNC4yNTZcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PC9nPjxnIHN0eWxlPVwib3BhY2l0eTowLjVcIj48cmVjdCB4PVwiMjIuMDM2XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyMC45ODJcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjE5LjkyN1wiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTcuODE4XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxNi43NjRcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjE1LjcwOVwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTMuNlwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTIuNTQ1XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxMS40OTFcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjkuMzgyXCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCI4LjMyN1wiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiNy4yNzNcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjUuMTY0XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCI0LjEwOVwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMy4wNTVcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PC9nPjxwYXRoIGQ9XCJNMTMsOC45NzZjLTIuMzA4LDAtNC4xMzEtMS4yNzQtNC4xOTMtMi45NjloMGEyLjc3NSwyLjc3NSwwLDAsMSwxLjI1My0yLjMyLDUuMyw1LjMsMCwwLDEsMi45NDMtLjk2Myw1LjI5NCw1LjI5NCwwLDAsMSwzLjAwNi43NDMsMi43NzUsMi43NzUsMCwwLDEsMS40MjEsMi4yMjFjLjA2NSwxLjc1Mi0xLjc3OSwzLjE5NC00LjIsMy4yODNDMTMuMTU4LDguOTc0LDEzLjA4LDguOTc2LDEzLDguOTc2Wm0uMjMyLTUuMnEtLjA5NSwwLS4xOSwwYTQuMjM4LDQuMjM4LDAsMCwwLTIuMzU0Ljc1NiwxLjc2MSwxLjc2MSwwLDAsMC0uODI4LDEuNDM1QzkuOSw3LjA5LDExLjQyOCw3Ljk3OCwxMy4yLDcuOTE3czMuMjIzLTEuMDY5LDMuMTgxLTIuMTkxYTEuNzYxLDEuNzYxLDAsMCwwLS45MzItMS4zNjlBNC4xNjUsNC4xNjUsMCwwLDAsMTMuMjM0LDMuNzczWlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNNi40LDI5LjI4MUE1LjIzOCw1LjIzOCwwLDAsMSwzLjYsMjguNTE5YTIuNzc1LDIuNzc1LDAsMCwxLTEuNDEtMi4yMjljLS4wNTYtMS43NTIsMS44LTMuMTg1LDQuMjEzLTMuMjYyczQuMzU2LDEuMjM2LDQuNDEyLDIuOTg4QTIuNzc1LDIuNzc1LDAsMCwxLDkuNTQ4LDI4LjMzYTUuMyw1LjMsMCwwLDEtMi45NDguOTQ4UTYuNSwyOS4yODEsNi40LDI5LjI4MVptLjE4Ni01LjItLjE1NiwwYy0xLjc2Ni4wNTYtMy4yMjksMS4wNTItMy4xOTMsMi4xNzRhMS43NjEsMS43NjEsMCwwLDAsLjkyNCwxLjM3NCw0LjIzNSw0LjIzNSwwLDAsMCwyLjQuNTkzLDQuMjM1LDQuMjM1LDAsMCwwLDIuMzU3LS43NDQsMS43NjEsMS43NjEsMCwwLDAsLjgzNS0xLjQzQzkuNzI0LDI0Ljk2MSw4LjI5LDI0LjA4LDYuNTkxLDI0LjA4WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTkuMjYxLDI5LjI2YTUuMjM4LDUuMjM4LDAsMCwxLTIuODA3LS43NjIsMi43NzUsMi43NzUsMCwwLDEtMS40MS0yLjIyOWgwYy0uMDU1LTEuNzUyLDEuOC0zLjE4NSw0LjIxMy0zLjI2MmE1LjMsNS4zLDAsMCwxLDMsLjc1OUEyLjYsMi42LDAsMCwxLDIyLjQsMjguMzFhNS4zLDUuMywwLDAsMS0yLjk0OC45NDhRMTkuMzU4LDI5LjI2LDE5LjI2MSwyOS4yNlpNMTYuMSwyNi4yMzZhMS43NjEsMS43NjEsMCwwLDAsLjkyNCwxLjM3NCw0LjU3LDQuNTcsMCwwLDAsNC43NTctLjE1MSwxLjU1OCwxLjU1OCwwLDAsMC0uMDg5LTIuOCw0LjIyNiw0LjIyNiwwLDAsMC0yLjQtLjU5M2MtMS43NjYuMDU2LTMuMjI4LDEuMDUyLTMuMTkzLDIuMTc0WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNNi4yLDIzLjQ3N0EyNy40LDI3LjQsMCwwLDEsOS43NjksOC45ODZsLjY4Ny4zOTFBMjYuNjA5LDI2LjYwOSwwLDAsMCw2Ljk4NiwyMy40NVpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTEwLjg1Myw3Ljk1N2E3LjE3MSw3LjE3MSwwLDAsMC0uMDc1LDIuMzJsLS43NTgtLjkzLTEuMTc4LS4yM0E3LjE2NSw3LjE2NSwwLDAsMCwxMC44NTMsNy45NTdaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xOS44NTQsMjMuNDc3bC0uNzktLjAyN2EyNi41OSwyNi41OSwwLDAsMC0uOTE1LTcuODg0LDI2LjYyNCwyNi42MjQsMCwwLDAtMi41NTQtNi4xODlsLjY4Ny0uMzkxYTI3LjQyMywyNy40MjMsMCwwLDEsMi42Myw2LjM3M0EyNy4zNzIsMjcuMzcyLDAsMCwxLDE5Ljg1NCwyMy40NzdaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xNS4yLDcuOTU3YTcuMTcxLDcuMTcxLDAsMCwwLDIuMDExLDEuMTU5bC0xLjE3OC4yMy0uNzU4LjkzQTcuMTY1LDcuMTY1LDAsMCwwLDE1LjIsNy45NTdaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHJlY3QgeD1cIjExLjM0OFwiIHk9XCI5Ljk0NVwiIHdpZHRoPVwiMy41MTVcIiBoZWlnaHQ9XCIwLjc5MVwiIHRyYW5zZm9ybT1cIm1hdHJpeCgwLjAxNiwgLTEsIDEsIDAuMDE2LCAyLjU1NywgMjMuMjc5KVwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTMuMDU0LDEzLjUyOWE3LjE3MSw3LjE3MSwwLDAsMC0xLjEtMi4wNDZsMS4xMjIuNDI2LDEuMTM1LS4zOUE3LjE2NSw3LjE2NSwwLDAsMCwxMy4wNTQsMTMuNTI5WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxyZWN0IHg9XCI3LjgwOVwiIHk9XCIyMC4wODFcIiB3aWR0aD1cIjQuNzU3XCIgaGVpZ2h0PVwiMC43OTFcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTEyLjU2IDE4LjEwOCkgcm90YXRlKC01Ny42MDMpXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk04LjE0NywyMy42OTRhNy4xNzEsNy4xNzEsMCwwLDAsLjEzMy0yLjMxN2wuNzM0Ljk0OSwxLjE3MS4yNkE3LjE2NSw3LjE2NSwwLDAsMCw4LjE0NywyMy42OTRaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHJlY3QgeD1cIjE1LjQxOFwiIHk9XCIxOC4wNTFcIiB3aWR0aD1cIjAuNzkxXCIgaGVpZ2h0PVwiNC45MTlcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTguMjU3IDEwLjk1MSkgcm90YXRlKC0zMC43MDgpXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xNy44LDIzLjg1NmE3LjE3MSw3LjE3MSwwLDAsMC0yLjAwNi0xLjE2OGwxLjE3OS0uMjI1Ljc2Mi0uOTI3QTcuMTY1LDcuMTY1LDAsMCwwLDE3LjgsMjMuODU2WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTMuMDI0LDE5LjEyNWE1LjIzOCw1LjIzOCwwLDAsMS0yLjgwNy0uNzYyLDIuNzc1LDIuNzc1LDAsMCwxLTEuNDEtMi4yMjksMi43NzUsMi43NzUsMCwwLDEsMS4yNjYtMi4zMTQsNS4zLDUuMywwLDAsMSwyLjk0OC0uOTQ4LDYuNzEyLDYuNzEyLDAsMCwxLDIuMTM0LjMxM2wtLjMzMSwxYTUuNjY4LDUuNjY4LDAsMCwwLTEuNzY5LS4yNjEsNC4yMzgsNC4yMzgsMCwwLDAtMi4zNTguNzQ0LDEuNzYxLDEuNzYxLDAsMCwwLS44MzUsMS40MywxLjc2MSwxLjc2MSwwLDAsMCwuOTI0LDEuMzc0LDQuMjQyLDQuMjQyLDAsMCwwLDIuNC41OTMsNS43LDUuNywwLDAsMCwxLjY3OC0uMzc4bC4zNzguOTg1YTYuODQ0LDYuODQ0LDAsMCwxLTIuMDIyLjQ0OFExMy4xMjEsMTkuMTI1LDEzLjAyNCwxOS4xMjVaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xNS40MzUsMTIuODc2YTQuMzM4LDQuMzM4LDAsMCwwLS45ODQsMS42MjIsMi4wNjQsMi4wNjQsMCwwLDEtLjAxNiwyLjgwNiw0LjQsNC40LDAsMCwwLC45ODIsMS42LDMuOTMyLDMuOTMyLDAsMCwwLC4wNzgtNS45ODZDMTUuNDc2LDEyLjksMTUuNDU0LDEyLjg5MywxNS40MzUsMTIuODc2WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTkuNTI1LDE1LjI3OGEyNy45MzEsMjcuOTMxLDAsMCwwLTEuMjYzLTMuNzQyLDQuMzc2LDQuMzc2LDAsMCwwLTEuNzc3LjUxNywyNi4wNjMsMjYuMDYzLDAsMCwxLDEuMjUzLDMuNjg1LDI2LjAzOCwyNi4wMzgsMCwwLDEsLjczNCw0LjUzNCw0LjM0Nyw0LjM0NywwLDAsMCwxLjgyNS0uMzUxQTI3LjksMjcuOSwwLDAsMCwxOS41MjUsMTUuMjc4WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTYuMTUzLDEyLjIyOUE0LjQzNyw0LjQzNywwLDEsMCwyMi4zLDEzLjUsNC40MzcsNC40MzcsMCwwLDAsMTYuMTUzLDEyLjIyOVptNC44MTIsNy4zMzJhNC4zNDYsNC4zNDYsMCwxLDEsMS4yNDktNi4wMThBNC4zNDYsNC4zNDYsMCwwLDEsMjAuOTY1LDE5LjU2MVpcIiBzdHlsZT1cImZpbGw6IzJjMjkyOFwiLz48cGF0aCBkPVwiTTIyLjAxNSwxOS4xODZhLjgyMi44MjIsMCwwLDAtLjE5Mi0uMjA5LDQuMzQ3LDQuMzQ3LDAsMCwxLS4zMzMuMzE5LDQuNTIyLDQuNTIyLDAsMCwxLS40NDYuMzM3LDQuNzMsNC43MywwLDAsMS0uOTQuNDc3LjY2OS42NjksMCwwLDAsLjAzMS4xLjY0LjY0LDAsMCwwLC4wNDcuMDk0bC40ODcuOEwyMi41LDE5Ljk4NFpcIiBzdHlsZT1cImZpbGw6IzI4MjgyOFwiLz48cmVjdCB4PVwiMjAuNzkzXCIgeT1cIjIwLjc4NFwiIHdpZHRoPVwiMi4xNDdcIiBoZWlnaHQ9XCIwLjQ0XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC03Ljc0IDE0LjQ2NSkgcm90YXRlKC0zMS4zOTQpXCIgc3R5bGU9XCJmaWxsOiMyODI4MjhcIi8+PHJlY3QgeD1cIjIyLjg2OFwiIHk9XCIyMC45NlwiIHdpZHRoPVwiMi4xNDdcIiBoZWlnaHQ9XCI2Ljg4N1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtOS4yMDcgMTYuMDQ0KSByb3RhdGUoLTMxLjM5NClcIiBzdHlsZT1cImZpbGw6IzI4MjgyOFwiLz48cGF0aCBkPVwiTTI3LjA1NCwyNy40NDNsLS4yMzYtLjM4Ny0xLjgzMywxLjExOS4yMzYuMzg3YS45MjQuOTI0LDAsMCwwLDEuMjc5LjE1OWwuMTEtLjA2N0EuOTI0LjkyNCwwLDAsMCwyNy4wNTQsMjcuNDQzWlwiIHN0eWxlPVwiZmlsbDojMjgyODI4XCIvPjxwYXRoIGQ9XCJNMjAuNjgsMTQuODQ1YS4zMTUuMzE1LDAsMCwxLC4zMzguMDI3LDEuMDc4LDEuMDc4LDAsMCwxLC4yOTQuNTc4LDEuMSwxLjEsMCwwLDEsLjAyOS42NTQuMzI3LjMyNywwLDAsMS0uMjc4LjIuNDY4LjQ2OCwwLDAsMS0uMzctLjEuOTIyLjkyMiwwLDAsMS0uMjYyLS41Ljk1NS45NTUsMCwwLDEtLjAxLS41ODVBLjQ2Ni40NjYsMCwwLDEsMjAuNjgsMTQuODQ1Wm0uMDYuMjI3YS4xNDkuMTQ5LDAsMCwwLS4wNzQuMDYzLjI0Ny4yNDcsMCwwLDAtLjAyNy4xMzIsMS42MjYsMS42MjYsMCwwLDAsLjA2NC4zNTUsMS41OTIsMS41OTIsMCwwLDAsLjExMi4zMjkuMjY4LjI2OCwwLDAsMCwuMDk0LjExLjE0Mi4xNDIsMCwwLDAsLjA5NC4wMTUuMTIxLjEyMSwwLDAsMCwuMDc4LS4wNDguMjExLjIxMSwwLDAsMCwuMDI4LS4xMjgsMi42NDMsMi42NDMsMCwwLDAtLjE4Ni0uNzIyLjIzNS4yMzUsMCwwLDAtLjA5My0uMTA3QS4xMTYuMTE2LDAsMCwwLDIwLjczOSwxNS4wNzJaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yMS42OTQsMTQuNGEuMy4zLDAsMCwxLC4zNDYuMDU3LDEuNDkzLDEuNDkzLDAsMCwxLC4zMjUuNywxLjUyMSwxLjUyMSwwLDAsMSwuMDYuNzcxLjMxLjMxLDAsMCwxLS4yNy4yMjguNDQ2LjQ0NiwwLDAsMS0uMzc5LS4xMzcsMS4zMSwxLjMxLDAsMCwxLS4yOTItLjYxNywxLjM0MSwxLjM0MSwwLDAsMS0uMDQxLS43QS40NDEuNDQxLDAsMCwxLDIxLjY5NCwxNC40Wm0uMDcyLjI3M2EuMTM2LjEzNiwwLDAsMC0uMDcyLjA2OS4zMTUuMzE1LDAsMCwwLS4wMjEuMTU1LDIuMzUxLDIuMzUxLDAsMCwwLC4wODQuNDI3LDIuMzEsMi4zMSwwLDAsMCwuMTMxLjQuMzQ3LjM0NywwLDAsMCwuMS4xMzUuMTMuMTMsMCwwLDAsLjEuMDIxLjExLjExLDAsMCwwLC4wNzYtLjA1NC4yNzUuMjc1LDAsMCwwLC4wMjItLjE1LDMuNzczLDMuNzczLDAsMCwwLS4yMjQtLjg2Mi4zMTEuMzExLDAsMCwwLS4xLS4xMzJBLjEuMSwwLDAsMCwyMS43NjYsMTQuNjc0WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjMuNDcyLDE1LjkzNGwtLjI2OS4wMzgtLjM3OS0xLjQzOWEuOTU1Ljk1NSwwLDAsMS0uMjU3LjM5MmwtLjA4Ny0uMzMxYS44NDEuODQxLDAsMCwwLC4xNjktLjI2Ljg3NC44NzQsMCwwLDAsLjA3NS0uMzgzbC4yLS4wODlaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNC40NTUsMTUuNzk0bC0uMjY5LjAzOC0uNDI5LTEuNjI1YTEsMSwwLDAsMS0uMjQ3LjQyOWwtLjEtLjM3NmEuODc0Ljg3NCwwLDAsMCwuMTYyLS4yODQsMS4wMjgsMS4wMjgsMCwwLDAsLjA2NC0uNDI0bC4yLS4wODlaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNC42MzYsMTMuMTE3Yy4xMjctLjA1NS4yNDktLjAwOC4zNjkuMTQ0YTMuMTEsMy4xMSwwLDAsMSwuNDE2LDEuMDM0LDMuMTQzLDMuMTQzLDAsMCwxLC4xNTEsMS4xMWMtLjAyOS4xOS0uMTExLjI5NC0uMjQ3LjMxMnMtLjI3Mi0uMDU5LS40LS4yMzFhMi44NTUsMi44NTUsMCwwLDEtLjM4MS0uOTUsMi44NzEsMi44NzEsMCwwLDEtLjEzMi0xLjAzOUEuNDM3LjQzNywwLDAsMSwyNC42MzYsMTMuMTE3Wm0uMTA3LjRhLjEyNC4xMjQsMCwwLDAtLjA2Ny4wODguNTg0LjU4NCwwLDAsMCwwLC4yMjEsNS4yMTgsNS4yMTgsMCwwLDAsLjEzOS42MzUsNS4xNTMsNS4xNTMsMCwwLDAsLjE4NC42LjY2LjY2LDAsMCwwLC4xMi4yMDguMTE4LjExOCwwLDAsMCwuMS4wNC4xLjEsMCwwLDAsLjA3MS0uMDcyLjUyOC41MjgsMCwwLDAsMC0uMjE2LDUuNDQyLDUuNDQyLDAsMCwwLS4xNDQtLjY1Myw1LjQ0Nyw1LjQ0NywwLDAsMC0uMTg5LS42MTkuNjEyLjYxMiwwLDAsMC0uMTE5LS4yMDVBLjA5My4wOTMsMCwwLDAsMjQuNzQzLDEzLjUyMlpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI2LjYzOCwxNS40ODhsLS4yNjkuMDM4LS41NC0yLjAzOUExLjE1MSwxLjE1MSwwLDAsMSwyNS42LDE0bC0uMTI2LS40NzVhLjk5Ljk5LDAsMCwwLC4xNDgtLjMzNywxLjQzNiwxLjQzNiwwLDAsMCwuMDM5LS41MTVsLjItLjA4OFpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI2LjY2NiwxMi4yMzZjLjEyNy0uMDU1LjI1NS4wMTIuMzg1LjJhNC41ODQsNC41ODQsMCwwLDEsLjQ3OCwxLjI2OCw0LjYyLDQuNjIsMCwwLDEsLjIxMywxLjM0M2MtLjAxOC4yMjktLjEuMzUyLS4yMzIuMzdzLS4yNzgtLjA4MS0uNDIxLS4zYTQuMjg0LDQuMjg0LDAsMCwxLS40NDMtMS4xNzksNC4yODMsNC4yODMsMCwwLDEtLjE5NC0xLjI3MkMyNi40NjgsMTIuNDM4LDI2LjUzOSwxMi4yOTEsMjYuNjY2LDEyLjIzNlptLjEzMS41cS0uMDQ2LjAxOC0uMDY0LjFhLjgyOS44MjksMCwwLDAsLjAwOS4yNjYsNy44NTYsNy44NTYsMCwwLDAsLjE3OC43NzlxLjE0My41NDEuMjIxLjczOGEuOTQ3Ljk0NywwLDAsMCwuMTM0LjI1OC4xMTkuMTE5LDAsMCwwLC4xLjA1MnEuMDQ4LS4wMDkuMDY4LS4wODVhLjc2Mi43NjIsMCwwLDAtLjAwOC0uMjYyLDguMTE3LDguMTE3LDAsMCwwLS4xODItLjhxLS4xNDgtLjU1Ny0uMjI3LS43NTdhLjg5Mi44OTIsMCwwLDAtLjEzMy0uMjU2UTI2Ljg0MywxMi43MTQsMjYuOCwxMi43MzJaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNy42ODEsMTEuOGMuMTI3LS4wNTUuMjU3LjAyMy4zOTMuMjM0YTUuNDMxLDUuNDMxLDAsMCwxLC41MDksMS4zODUsNS40NjcsNS40NjcsMCwwLDEsLjI0NCwxLjQ2Yy0uMDEzLjI0OS0uMDg4LjM4MS0uMjI0LjRzLS4yODEtLjA5Mi0uNDMtLjMyOGE1LjExLDUuMTEsMCwwLDEtLjQ3My0xLjI5NCw1LjEsNS4xLDAsMCwxLS4yMjUtMS4zODhDMjcuNDg2LDEyLjAwOCwyNy41NTUsMTEuODUxLDI3LjY4MSwxMS44Wm0uMTQ0LjU0MnEtLjA0Ni4wMTgtLjA2Mi4xMDZhLjk3Ljk3LDAsMCwwLC4wMTUuMjg5cS4wNC4yNTkuMi44NTF0LjI0LjgwN2ExLjExMiwxLjExMiwwLDAsMCwuMTQuMjg0cS4wNTcuMDY3LjEwNi4wNTl0LjA2Ni0uMDkxYS45LjksMCwwLDAtLjAxNC0uMjg0cS0uMDQtLjI2LS4yLS44Njd0LS4yNDUtLjgyN2ExLjA1MywxLjA1MywwLDAsMC0uMTQtLjI4MVEyNy44NzEsMTIuMzIsMjcuODI1LDEyLjMzOFpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI5LjkxNSwxNS4wMzRsLS4yNy4wMzctLjcwNi0yLjY2MWExLjQ3OCwxLjQ3OCwwLDAsMS0uMTkyLjYzNmwtLjE2Ni0uNjI1QTEuMjQ4LDEuMjQ4LDAsMCwwLDI4LjcwOCwxMmEyLjIxNCwyLjIxNCwwLDAsMCwwLS42NTNsLjItLjA4OFpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI5LjcxMiwxMC45MjFjLjEyNy0uMDU0LjI2My4wNDMuNDA5LjI5NGE3LjM0NSw3LjM0NSwwLDAsMSwuNTcyLDEuNjE5QTcuMzgyLDcuMzgyLDAsMCwxLDMxLDE0LjUyN2MwLC4yODgtLjA3Mi40NC0uMjA5LjQ1OHMtLjI4Ni0uMTE0LS40NDctLjM5M2E2Ljk4NCw2Ljk4NCwwLDAsMS0uNTM1LTEuNTI0LDYuOTQ0LDYuOTQ0LDAsMCwxLS4yODctMS42MjFDMjkuNTIzLDExLjE1MSwyOS41ODYsMTAuOTc1LDI5LjcxMiwxMC45MjFabS4xNjguNjMzcS0uMDQ2LjAxOC0uMDU5LjExOWExLjI4NywxLjI4NywwLDAsMCwuMDI3LjMzNHEuMDUxLjMuMjM1Ljk5NHQuMjc3Ljk0NmExLjQ4NCwxLjQ4NCwwLDAsMCwuMTU0LjMzNHEuMDYuMDguMTA5LjA3MXQuMDYzLS4xYTEuMiwxLjIsMCwwLDAtLjAyNi0uMzNxLS4wNTEtLjMtLjIzOS0xLjAxMXQtLjI4Mi0uOTY1YTEuNDIsMS40MiwwLDAsMC0uMTUzLS4zMzJRMjkuOTI2LDExLjUzNiwyOS44OCwxMS41NTNaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yMS4xNjcsMTYuMzYyYS40MjIuNDIyLDAsMCwxLC4zMTguMTg1LDEuMDA1LDEuMDA1LDAsMCwxLS4yNzcsMS4wMy40Mi40MiwwLDAsMS0uMzY2LDAsLjU5LjU5LDAsMCwxLS4zMTEtLjI2MS44MDguODA4LDAsMCwxLC4yNTQtLjg5M0EuNTYxLjU2MSwwLDAsMSwyMS4xNjcsMTYuMzYyWm0tLjA1MS4xODlhLjE3NS4xNzUsMCwwLDAtLjE5Mi4wODcsMS40ODcsMS40ODcsMCwwLDAtLjE1NS41NjcuMjE2LjIxNiwwLDAsMCwuMDM5LjEyNC4xOTEuMTkxLDAsMCwwLC4wODQuMDU4LjE0NS4xNDUsMCwwLDAsLjE4OC0uMDY5LDEuNjY2LDEuNjY2LDAsMCwwLC4xNjQtLjYuMTg5LjE4OSwwLDAsMC0uMDQtLjEyMUEuMTYzLjE2MywwLDAsMCwyMS4xMTcsMTYuNTUxWlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjIuMzc2LDE2LjU0OGEuMzgyLjM4MiwwLDAsMSwuMzExLjIxMiwxLjAyNCwxLjAyNCwwLDAsMS0uMDE5LjY2LDEuMDIyLDEuMDIyLDAsMCwxLS4zMTUuNTgxLjM4LjM4LDAsMCwxLS4zNzMuMDI1LjUzMy41MzMsMCwwLDEtLjMtLjI5LDEuMTg5LDEuMTg5LDAsMCwxLC4zMDktMS4xQS41LjUsMCwwLDEsMjIuMzc2LDE2LjU0OFptLS4wNjIuMjNhLjE2Ny4xNjcsMCwwLDAtLjEuMDEzLjIzNS4yMzUsMCwwLDAtLjEuMSwyLjIxOSwyLjIxOSwwLDAsMC0uMTg5LjY5NC4yNjkuMjY5LDAsMCwwLC4wMzMuMTQ3LjE2Ny4xNjcsMCwwLDAsLjA4My4wNjQuMTQzLjE0MywwLDAsMCwuMSwwLC4yMDYuMjA2LDAsMCwwLC4wOTQtLjEsMi40MzYsMi40MzYsMCwwLDAsLjItLjcyNy4yNC4yNCwwLDAsMC0uMDM0LS4xNDRBLjE0MS4xNDEsMCwwLDAsMjIuMzE0LDE2Ljc3OFpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTIzLjM3LDE4LjU0MWwtLjI4MS0uMTEuMzI4LTEuMjI1YTEsMSwwLDAsMS0uNDQyLjE1MmwuMDc1LS4yODFhLjg4MS44ODEsMCwwLDAsLjI5Mi0uMS42OC42OCwwLDAsMCwuMjU5LS4yMzhsLjI0Mi4wMzdaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNC43OTMsMTYuOTE5YS4zNDguMzQ4LDAsMCwxLC4zLjI2NiwxLjc1MSwxLjc1MSwwLDAsMS0uMDc1Ljg3LDEuNzQ5LDEuNzQ5LDAsMCwxLS4zNzEuNzkxLjM0NS4zNDUsMCwwLDEtLjM4OC4wNzguNDg4LjQ4OCwwLDAsMS0uMjg4LS4zNDgsMS41ODcsMS41ODcsMCwwLDEsLjA2Ny0uNzksMS41NzcsMS41NzcsMCwwLDEsLjM1NC0uNzI3QS40NTcuNDU3LDAsMCwxLDI0Ljc5MywxNi45MTlabS0uMDg0LjMxMmEuMTQzLjE0MywwLDAsMC0uMTA3LjAyNS4zNTMuMzUzLDAsMCwwLS4xMDYuMTQxLDQuMTI2LDQuMTI2LDAsMCwwLS4yNTcuOTQ4LjQwOC40MDgsMCwwLDAsLjAyMS4xOTIuMTQzLjE0MywwLDAsMCwuMDguMDc1LjEyLjEyLDAsMCwwLC4xLS4wMTEuMzE4LjMxOCwwLDAsMCwuMTA1LS4xMzcsNC40MTgsNC40MTgsMCwwLDAsLjI2Ni0uOTgxLjM3NC4zNzQsMCwwLDAtLjAyMi0uMTg5QS4xMTkuMTE5LDAsMCwwLDI0LjcxLDE3LjIzMVpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI1LjY0OSwxOS40M2wtLjI4MS0uMTEuNDI4LTEuNmExLjAzMywxLjAzMywwLDAsMS0uNDYyLjIyN2wuMS0uMzcxYS45LjksMCwwLDAsLjMtLjE1MS45My45MywwLDAsMCwuMjgxLS4zMjFsLjI0Mi4wMzdaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNy4yMTEsMTcuMjkxYS4zNDQuMzQ0LDAsMCwxLC4yODIuMzE5LDIuNjkyLDIuNjkyLDAsMCwxLS4xMzEsMS4wOCwyLjY5LDIuNjksMCwwLDEtLjQyNywxLC4zNC4zNCwwLDAsMS0uNC4xMy40ODcuNDg3LDAsMCwxLS4yNzMtLjQwNSwyLjQ5NCwyLjQ5NCwwLDAsMSwuMTIyLTEsMi40NywyLjQ3LDAsMCwxLC40MS0uOTM3QS40NTEuNDUxLDAsMCwxLDI3LjIxMSwxNy4yOTFabS0uMTA2LjM5NGEuMTMzLjEzMywwLDAsMC0uMTEuMDM2LjUwOS41MDksMCwwLDAtLjExNy4xODIsNi42MjIsNi42MjIsMCwwLDAtLjMyNSwxLjIuNTkxLjU5MSwwLDAsMCwuMDA5LjIzNy4xMzMuMTMzLDAsMCwwLC4wNzcuMDg2LjExLjExLDAsMCwwLC4xMDctLjAyMy40NjUuNDY1LDAsMCwwLC4xMTYtLjE3OCw0LjYzOSw0LjYzOSwwLDAsMCwuMi0uNjE5LDQuNjU4LDQuNjU4LDAsMCwwLC4xMzYtLjYxNS41NTIuNTUyLDAsMCwwLS4wMS0uMjM1QS4xMS4xMSwwLDAsMCwyNy4xMDUsMTcuNjg1WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjcuOTI3LDIwLjMybC0uMjgxLS4xMS41MjgtMS45NzFhMS4xMzQsMS4xMzQsMCwwLDEtLjQ4Mi4zbC4xMjMtLjQ2YS45NzIuOTcyLDAsMCwwLC4zMTctLjIsMS4yNDgsMS4yNDgsMCwwLDAsLjMtLjRsLjI0Mi4wMzdaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yOC45NTMsMjAuNzIxbC0uMjgxLS4xMS41NzMtMi4xMzlhMS4yLDEuMiwwLDAsMS0uNDkxLjMzNmwuMTM0LS41YTEuMDIsMS4wMiwwLDAsMCwuMzIzLS4yMiwxLjQxMywxLjQxMywwLDAsMCwuMzE0LS40NGwuMjQyLjAzN1pcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTMwLjcxNywxNy44M2MuMTUxLjAyMy4yMzguMTU1LjI2Mi40YTQuNDM2LDQuNDM2LDAsMCwxLS4yMTMsMS4zODUsNC40MzQsNC40MzQsMCwwLDEtLjUwOSwxLjMwN2MtLjE0LjE5NS0uMjguMjYzLS40MjIuMjA3cy0uMjI2LS4yMi0uMjUtLjQ4OWE0LjE5NCw0LjE5NCwwLDAsMSwuMi0xLjMsNC4xNDMsNC4xNDMsMCwwLDEsLjQ5Mi0xLjI0MUMzMC40MiwxNy45LDMwLjU2NiwxNy44MDcsMzAuNzE3LDE3LjgzWm0tLjEzNy41MTNhLjEzMi4xMzIsMCwwLDAtLjExNS4wNTMuOC44LDAsMCwwLS4xMzMuMjQxLDcuNTg3LDcuNTg3LDAsMCwwLS4yNDQuNzkxLDcuNTM5LDcuNTM5LDAsMCwwLS4xOC43NzkuOTMuOTMsMCwwLDAtLjAwOS4zLjEzMS4xMzEsMCwwLDAsLjA3My4xLjEwOC4xMDgsMCwwLDAsLjExMS0uMDM5Ljc0Mi43NDIsMCwwLDAsLjEzMi0uMjM3LDcuOCw3LjgsMCwwLDAsLjI0OC0uODA2LDcuODM1LDcuODM1LDAsMCwwLC4xODUtLjguODg0Ljg4NCwwLDAsMCwuMDA4LS4zUTMwLjYzMywxOC4zNTMsMzAuNTgsMTguMzQzWlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPmAsXG5cdFwiRWRpdG9yQ29uZmlnXCI6IGA8cGF0aCBkPVwiTTguNzA5LDE4LjM1MWExLjI2NywxLjI2NywwLDAsMCwuNTMyLTEuMzc5QzguNjkyLDE3LjIwNyw4LjcxOCwxNy43NDksOC43MDksMTguMzUxWlwiIHN0eWxlPVwiZmlsbDojZTNlM2Y4XCIvPjxwYXRoIGQ9XCJNMTQuOTI0LDE5Ljg1MmEuODcxLjg3MSwwLDAsMCwuNjItMS4xMzVBMS40MywxLjQzLDAsMCwwLDE0LjkyNCwxOS44NTJaXCIgc3R5bGU9XCJmaWxsOiNlM2UzZjhcIi8+PHBhdGggZD1cIk0yLjcxMywyNy4wNzlhMS41MzgsMS41MzgsMCwwLDAsLjUyNCwxLjM1M2MxLjQxNC43OTQsNi4zNzIuMTc1LDguMDU2LS4yYTE0Ljk5NCwxNC45OTQsMCwwLDAsMi40MjYtMS4yMTMsMjIuNjQzLDIyLjY0MywwLDAsMCw0LjcxMy0yLjU1N2MxLjA4Mi0uNzk0LDIuOC0zLjAyOSwyLjk4NS00LjM2NGwtMS40NzUtLjMzMmMtLjAzNSwxLjUtLjM3NSwxLjg0Mi0xLjcxMSwyLjE5MWExMC42NjIsMTAuNjYyLDAsMCwxLTMuNTcuMTQsMy4zNjIsMy4zNjIsMCwwLDEtMi4zMTMtMS41NjJjLTEuMDY1LTEuNDE0LjIzNi0yLjQtMS40NDktMi41LTEuNzcyLDIuMTczLTQuOS42MTEtNi4yNjcuMzkzYTMwLjA2NiwzMC4wNjYsMCwwLDAtMS45MzgsNy42LDIuNzQ4LDIuNzQ4LDAsMCwxLDIuMTM4LjMyM2MyLjY4OCwxLjAzOS4zNCwxLjk1NS0uNzMzLDEuNjg1QzMuMzY4LDI3Ljg2NCwzLjE0MSwyNy4zODQsMi43MTMsMjcuMDc5WlwiIHN0eWxlPVwiZmlsbDojZmRmZGZkXCIvPjxwYXRoIGQ9XCJNNi4yMzEsMTQuNTM3YTExLjUzOSwxMS41MzksMCwwLDEsMi45ODUsMS4xMjZjMS41MS43NTEsMS43ODEuNjQ2LDEuOTIsMS42OTMuMDE3LjE5Mi0uMDE3LjMuNTMyLjQ3MS45MjUuMjg4LS41MzItLjIyNywxLjk0Ni0uMjE4QTE2LjY0LDE2LjY0LDAsMCwxLDE5LjU1OSwxOC45Yy40NTQuMjg4LjM2Ny42NTUsMS45LjYxMWExOC43NjcsMTguNzY3LDAsMCwwLTEuMi02LjE2MmMtLjg2NC0yLjAwNy0yLjAwNy0yLjMxMy00LjMzOC0zLjA2NC0xLjM2Mi0uNDM2LTUuMzU5LS45MTYtNi42LS4xNDgtMS4xNjEuNzI0LTEuMzc5LDEuNTg5LTIuNDYxLDMuMTA3QTUuMzY2LDUuMzY2LDAsMCwwLDYuMjMxLDE0LjUzN1pcIiBzdHlsZT1cImZpbGw6I2ZkZmRmZFwiLz48cGF0aCBkPVwiTTE1Ljg0LDE4LjI0NmMuODczLjM1OC0uMDQ0LDIuNjcxLTEuMjU3LDIuMTEyLS4zOTMtMS4xMDguNTQxLTEuNzM3Ljc5NC0yLjIzNGE4LjUxLDguNTEsMCwwLDAtMi40NjEtLjE0OGMtLjU3Ni4yMTgtLjcwNywxLjQ0OS0uNDEsMi4wMjUsMS40LDIuNzQxLDcuNTY3LDIuMTU2LDYuOTEzLjAyNi0uMjYyLS44NjQtLjUwNi0xLTEuMzg4LTEuM0E2Ljg4NSw2Ljg4NSwwLDAsMCwxNS44NCwxOC4yNDZaXCIgc3R5bGU9XCJmaWxsOiNmZGZkZmRcIi8+PHBhdGggZD1cIk00Ljg2OSwxNy45NDFjLjcuNjcyLDIuMjc4Ljc3NywzLjMuODI5QzguMywxNy40MTcsOC40MTMsMTYuNCw5LjUsMTYuNDgzYTEuNiwxLjYsMCwwLDEtLjMwNSwyLjEzLDEuMzg2LDEuMzg2LDAsMCwwLDEuMzYyLTEuNzYzLDE0LjU0MiwxNC41NDIsMCwwLDAtNC40Ni0xLjg5NEE5LjUwNiw5LjUwNiwwLDAsMCw0Ljg2OSwxNy45NDFaXCIgc3R5bGU9XCJmaWxsOiNmZGZkZmRcIi8+PHBhdGggZD1cIk0zLjIyOCwyNi41ODFjLjU3Ni0uMDUyLDIuMDc3LjM4NCwyLjIuODczQzQuNDk0LDI3LjU2OCwzLjMwNywyNy40OCwzLjIyOCwyNi41ODFabS0uNTE1LjVjLjQyOC4zMDUuNjU1Ljc4NiwxLjM4OC45NiwxLjA3NC4yNzEsMy40MjEtLjY0Ni43MzMtMS42ODVBMi43NDgsMi43NDgsMCwwLDAsMi43LDI2LjAzMmEzMC4wNjYsMzAuMDY2LDAsMCwxLDEuOTM4LTcuNmMxLjM3LjIxOCw0LjQ5NSwxLjc4MSw2LjI2Ny0uMzkzLDEuNjg1LjEuMzg0LDEuMDgyLDEuNDQ5LDIuNUEzLjM2MiwzLjM2MiwwLDAsMCwxNC42NjIsMjIuMWExMC42NjIsMTAuNjYyLDAsMCwwLDMuNTctLjE0YzEuMzM1LS4zNDksMS42NzYtLjY5LDEuNzExLTIuMTkxbDEuNDc1LjMzMmMtLjE4MywxLjMzNS0xLjksMy41Ny0yLjk4NSw0LjM2NGEyMi42NDMsMjIuNjQzLDAsMCwxLTQuNzEzLDIuNTU3LDE0Ljk5NCwxNC45OTQsMCwwLDEtMi40MjYsMS4yMTNjLTEuNjg1LjM3NS02LjY0MiwxLTguMDU2LjJBMS41MzgsMS41MzgsMCwwLDEsMi43MTMsMjcuMDc5Wm0xMi4yMTEtNy4yMjdhMS40MywxLjQzLDAsMCwxLC42Mi0xLjEzNUEuODcxLjg3MSwwLDAsMSwxNC45MjQsMTkuODUyWm0uOTE2LTEuNjA2YTYuODg1LDYuODg1LDAsMCwxLDIuMTkxLjQ4Yy44ODIuMywxLjEyNi40MzYsMS4zODgsMS4zLjY1NSwyLjEzLTUuNTE2LDIuNzE0LTYuOTEzLS4wMjYtLjMtLjU3Ni0uMTY2LTEuODA3LjQxLTIuMDI1YTguNTEsOC41MSwwLDAsMSwyLjQ2MS4xNDhjLS4yNTMuNS0xLjE4NywxLjEyNi0uNzk0LDIuMjM0QzE1LjgsMjAuOTE3LDE2LjcxMywxOC42LDE1Ljg0LDE4LjI0NlptLTcuMTMxLjFjLjAwOS0uNi0uMDE3LTEuMTQzLjUzMi0xLjM3OUExLjI2NywxLjI2NywwLDAsMSw4LjcwOSwxOC4zNTFabS0zLjg0LS40MWE5LjUwNiw5LjUwNiwwLDAsMSwxLjIyMi0yLjk4NSwxNC41NDIsMTQuNTQyLDAsMCwxLDQuNDYsMS44OTRBMS4zODYsMS4zODYsMCwwLDEsOS4xOSwxOC42MTNhMS42LDEuNiwwLDAsMCwuMzA1LTIuMTNjLTEuMDgyLS4wNzktMS4yLjkzNC0xLjMyNywyLjI4N0M3LjE0NywxOC43MTcsNS41NjcsMTguNjEzLDQuODY5LDE3Ljk0MVpNNCwxNy4yNDJjLS4zMjMtLjg5LS4zMjMtMi4yNzgsMS4wNDctMi4zOTJsLS43LDEuOTQ2QzQuMTYyLDE3LjIxNiw0LjE2MiwxNy4xMiw0LDE3LjI0MlptMi4yMzQtMi43MDZhNS4zNjYsNS4zNjYsMCwwLDEsLjYyOC0xLjI5MmMxLjA4Mi0xLjUxOSwxLjMtMi4zODMsMi40NjEtMy4xMDcsMS4yMzktLjc2OCw1LjIzNy0uMjg4LDYuNi4xNDgsMi4zMy43NTEsMy40NzQsMS4wNTYsNC4zMzgsMy4wNjRhMTguNzY3LDE4Ljc2NywwLDAsMSwxLjIsNi4xNjJjLTEuNTM2LjA0NC0xLjQ0OS0uMzIzLTEuOS0uNjExYTE2LjY0LDE2LjY0LDAsMCwwLTUuOTQ0LTEuMjkyYy0yLjQ3OS0uMDA5LTEuMDIxLjUwNi0xLjk0Ni4yMTgtLjU1LS4xNzUtLjUxNS0uMjc5LS41MzItLjQ3MS0uMTQtMS4wNDctLjQxLS45NDMtMS45Mi0xLjY5M0ExMS41MzksMTEuNTM5LDAsMCwwLDYuMjMxLDE0LjUzN1ptMTUuNDQ5LS40MjhjLS4xNjYtLjU1LjE0LS41MTUuNjcyLS44OWE5LjAyMSw5LjAyMSwwLDAsMSwuOTI1LS42NTVjMS40MDUtLjc4Niw0LjAyNC0uOTE2LDUuMTQxLjAxN0EyLjQ3OSwyLjQ3OSwwLDAsMSwyOS41LDE0LjY1YTUuODM4LDUuODM4LDAsMCwxLTIuNjE4LDMuODMyLDUuMjEzLDUuMjEzLDAsMCwxLTQuNzgzLDEuMmMtLjE1Ny0uMzg0LS4wMzUtMi44MTktLjIxOC0zLjcxOC0uMTY2LS44LS4wNzktLjg5LjM4NC0xLjM3LDEuMzYyLTEuNDE0LDQuMzEyLTIuNDQ0LDUuOTg4LTEuMjMxLjcwNy41MjQuNTA2LjcyNC44NzMsMS4xMjYuNDU0LS40ODktLjM5My0yLjEzLTMuNTE3LTIuMDI1QzIzLjQ4NiwxMi41MjksMjIuNTcsMTQuMTg3LDIxLjY4LDE0LjEwOVpNOC45NzEsOS4xNDNhOC4wOTQsOC4wOTQsMCwwLDEsMi4yNzgtNC42QzEyLjYsMy41LDE0LjAxNiwyLjUwOSwxNi4wOTQsMy42ODdjLjUxNS4yODguNDg5LjQzNi41NDEsMS4xNTJhMy4zMTIsMy4zMTIsMCwwLDEtLjE5MiwxLjVjLTEuMzc5LDQuNDUxLTIuNTMxLDEuODk0LTYuOTQ4LDIuOTVhNi4zNzQsNi4zNzQsMCwwLDEsMi4xMjEtMy40MTNjMS4yLTEuMTYxLDIuMDYtMS45MTEsMy44NTgtMS42NjdhMS44NDIsMS44NDIsMCwwLDEtLjA1MiwyLjMyMmMtLjgsMS4yOTItMSwxLjIxMy0uODgyLDIuMDk1LjYyOC0uMTU3LjgyLS43NjgsMS4xMDgtMS4zNzksMS43NTQtMy42NjYtLjc5NC00LjExMS0yLjM1Ny0zLjQzOUExMC4zNzIsMTAuMzcyLDAsMCwwLDkuNzY2LDcuNTU0Yy0uMTIyLjI0NC0uMjUzLjU1OS0uMzY3LjgyOVptNi45MTMuMTgzQzE2LjA2Nyw4LjIzNSwxNy4xNSw3Ljk2NCwxNy4xNSw0LjZjMC0xLjQ0OS0xLjc4MS0yLjc0OS00LjExMS0xLjc4MS0yLC44Mi0yLjMsMS40NDktMy4zNjksMy4wNTUtMSwxLjUxOS0uOTY5LDMuMTg2LTEuODMzLDQuNTkxLS4yNTMuNC0uNDguNTQxLS43NTkuOTQzLS4yLjMtLjM0OS42NzItLjU1LDEuMDIxQTEyLjk0LDEyLjk0LDAsMCwwLDUuMzY3LDE0LjRjLTEuMDQ3LjAyNi0xLjkyOS4wNDQtMi4wMzQsMS4xMjYtLjE0LDEuNDg0LjU1OSwxLjg1LjU1OSwyLjQwOS0uMDA5LjYtMi40NTMsNi42NzctMS43NzIsMTAuMy4xOTIsMSwuODQ3LDEsMS44OTQsMS4xMjZhMTcuOTMsMTcuOTMsMCwwLDAsOC4wNTYtLjcwN2w0LjEtMS45NjRhMTguODUsMTguODUsMCwwLDAsMy41NjEtMi41LDEyLjM4MywxMi4zODMsMCwwLDAsMS4zMDktMS43MTksMy4yMTMsMy4yMTMsMCwwLDAsLjgtMi4yMDgsOC40NzMsOC40NzMsMCwwLDEsMi45ODUsMWMtLjA2MS42LS4zNTguMzE0LS4zNTguODU1YTEuMzU1LDEuMzU1LDAsMCwwLDEuMDQ3LS44OWMtLjM1OC0uNTI0LS43MzMtLjQzNi0xLjI0OC0uODU1YTguMjEyLDguMjEyLDAsMCwxLDEuNzE5LS43MDdjMS4yMjItLjUwNiwzLjMwOC0yLjA0MiwzLjgyMy0zLjQzOWE0LjQ0OSw0LjQ0OSwwLDAsMC0uNTU5LTMuNzM2LDUuNDQ0LDUuNDQ0LDAsMCwwLTMuNjQ4LTEuMTYxYy0xLjU4LDAtMy4yMTIsMS4xMzUtNC40ODYsMS42MjMtLjQ4OS0uNDI4LS41MjQtLjkxNi0uODgyLTEuMzg4QTEyLjI4MSwxMi4yODEsMCwwLDAsMTUuODg0LDkuMzI2WlwiIHN0eWxlPVwiZmlsbDojMDIwMjAyXCIvPjxwYXRoIGQ9XCJNMjEuNjgsMTQuMTA5Yy44OS4wNzksMS44MDctMS41OCwzLjkyOC0xLjY1LDMuMTI1LS4xLDMuOTcxLDEuNTM2LDMuNTE3LDIuMDI1LS4zNjctLjQtLjE2Ni0uNi0uODczLTEuMTI2LTEuNjc2LTEuMjEzLTQuNjI2LS4xODMtNS45ODgsMS4yMzEtLjQ2My40OC0uNTUuNTY3LS4zODQsMS4zNy4xODMuOS4wNjEsMy4zMzQuMjE4LDMuNzE4YTUuMjEzLDUuMjEzLDAsMCwwLDQuNzgzLTEuMkE1LjgzOCw1LjgzOCwwLDAsMCwyOS41LDE0LjY1YTIuNDc5LDIuNDc5LDAsMCwwLTEuMDgyLTIuMDY5Yy0xLjExNy0uOTM0LTMuNzM2LS44LTUuMTQxLS4wMTdhOS4wMjEsOS4wMjEsMCwwLDAtLjkyNS42NTVDMjEuODE5LDEzLjU5NCwyMS41MTQsMTMuNTU5LDIxLjY4LDE0LjEwOVpcIiBzdHlsZT1cImZpbGw6I2ZkZjJmMlwiLz48cGF0aCBkPVwiTTguOTcxLDkuMTQzLDkuNCw4LjM4M2MuMTEzLS4yNzEuMjQ0LS41ODUuMzY3LS44MjlBMTAuMzcyLDEwLjM3MiwwLDAsMSwxMy4yOTIsMy44MWMxLjU2Mi0uNjcyLDQuMTExLS4yMjcsMi4zNTcsMy40MzktLjI4OC42MTEtLjQ4LDEuMjIyLTEuMTA4LDEuMzc5LS4xMjItLjg4Mi4wNzktLjguODgyLTIuMDk1YTEuODQyLDEuODQyLDAsMCwwLC4wNTItMi4zMjJjLTEuOC0uMjQ0LTIuNjYyLjUwNi0zLjg1OCwxLjY2N0E2LjM3NCw2LjM3NCwwLDAsMCw5LjUsOS4yOTFjNC40MTYtMS4wNTYsNS41NjksMS41LDYuOTQ4LTIuOTVhMy4zMTIsMy4zMTIsMCwwLDAsLjE5Mi0xLjVjLS4wNTItLjcxNi0uMDI2LS44NjQtLjU0MS0xLjE1Mi0yLjA3Ny0xLjE3OC0zLjQ5MS0uMTkyLTQuODQ0Ljg1NUE4LjA5NCw4LjA5NCwwLDAsMCw4Ljk3MSw5LjE0M1pcIiBzdHlsZT1cImZpbGw6I2ZlZjNmM1wiLz48cGF0aCBkPVwiTTQsMTcuMjQyYy4xNjYtLjEyMi4xNjYtLjAyNi4zNDktLjQ0NWwuNy0xLjk0NkMzLjY3MywxNC45NjQsMy42NzMsMTYuMzUyLDQsMTcuMjQyWlwiIHN0eWxlPVwiZmlsbDojZWZlZmVmXCIvPjxwYXRoIGQ9XCJNNS40MjgsMjcuNDU0Yy0uMTIyLS40ODktMS42MjMtLjkyNS0yLjItLjg3M0MzLjMwNywyNy40OCw0LjQ5NCwyNy41NjgsNS40MjgsMjcuNDU0WlwiIHN0eWxlPVwiZmlsbDojZmFmMWYxXCIvPmAsXG5cdFwiRUpTXCI6IGA8cGF0aCBkPVwiTTIsMTcuNjcyVjE0LjMyOGwxMS44Ni02LjJWMTEuMkw1LjEsMTUuOTM5bDguNzYyLDQuODM1djMuMVptMjcuODE0LTguODhMMTkuNDY1LDIzLjIyOUgxNS45MTJMMjYuMjgxLDguNzkxWk0yNi45NDcsMjEuNWEuNzk0Ljc5NCwwLDAsMCwuNjE5LS4yNzgsMS4wNjEsMS4wNjEsMCwwLDAsLjI0OC0uNzMyLDEuMTQxLDEuMTQxLDAsMCwwLS4yNDgtLjc1My43NjguNzY4LDAsMCwwLTEuMjE3LDAsMS4xNDEsMS4xNDEsMCwwLDAtLjI0OC43NTMsMS4wOSwxLjA5LDAsMCwwLC4yMzcuNzMyQS43NjMuNzYzLDAsMCwwLDI2Ljk0NywyMS41Wm0yLjE4NiwxLjA0MmEzLjIzNywzLjIzNywwLDAsMS00LjM1Mi0uMDEsMi44NjQsMi44NjQsMCwwLDEsMC00LjEsMy4yMjMsMy4yMjMsMCwwLDEsNC4zNTIsMEEyLjc3MywyLjc3MywwLDAsMSwzMCwyMC40ODYsMi43NCwyLjc0LDAsMCwxLDI5LjEzNCwyMi41MzhaTTE4LjgyMSwxMy4wNjFhLjc5NC43OTQsMCwwLDAsLjYxOS0uMjc4LDEuMDYxLDEuMDYxLDAsMCwwLC4yNDgtLjczMiwxLjE0MSwxLjE0MSwwLDAsMC0uMjQ4LS43NTMuNzY5Ljc2OSwwLDAsMC0xLjIxNywwLDEuMTQxLDEuMTQxLDAsMCwwLS4yNDguNzUzLDEuMDksMS4wOSwwLDAsMCwuMjM3LjczMkEuNzYzLjc2MywwLDAsMCwxOC44MjEsMTMuMDYxWk0yMS4wMDcsMTQuMWEzLjIzNywzLjIzNywwLDAsMS00LjM1Mi0uMDEsMi44NjQsMi44NjQsMCwwLDEsMC00LjEsMy4yMjMsMy4yMjMsMCwwLDEsNC4zNTIsMCwyLjc3MywyLjc3MywwLDAsMSwuODY2LDIuMDYzQTIuNzQsMi43NCwwLDAsMSwyMS4wMDcsMTQuMVpcIiBzdHlsZT1cImZpbGw6IzkwYTkzYVwiLz5gLFxuXHRcIkVsaXhpclwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTcuMjQ5XCIgeTE9XCItMzM1LjU5N1wiIHgyPVwiMTQuOTczXCIgeTI9XCItMzA5Ljk5NFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAtMzA2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wMVwiIHN0b3AtY29sb3I9XCIjZjdmNmY4XCIgc3RvcC1vcGFjaXR5PVwiMC4wNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjA5XCIgc3RvcC1jb2xvcj1cIiNhYTljYjNcIiBzdG9wLW9wYWNpdHk9XCIwLjM5XCIvPjxzdG9wIG9mZnNldD1cIjAuMlwiIHN0b3AtY29sb3I9XCIjNmY1NjdlXCIgc3RvcC1vcGFjaXR5PVwiMC42NlwiLz48c3RvcCBvZmZzZXQ9XCIwLjMyXCIgc3RvcC1jb2xvcj1cIiM0NTI0NTlcIiBzdG9wLW9wYWNpdHk9XCIwLjg2XCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMmQwODQzXCIgc3RvcC1vcGFjaXR5PVwiMC45N1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMyNjAwM2RcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9lbGl4aXI8L3RpdGxlPjxwYXRoIGQ9XCJNMTcuOCw4LjU5MWMyLjA3OSw0LjU4NCw3LjY0LDYuNSw3LjE0MSwxMi40NzQtLjU4Miw3LjAxNy01LjU1MSw4Ljc4NC04LjMxNiw4LjkwOWE4LjgxNSw4LjgxNSwwLDAsMS05LjQtNy40ODVDNS42MTgsMTUuMDQ2LDEyLjY1NSwzLjYzMiwxNi43MDksMkExNS4wODMsMTUuMDgzLDAsMCwwLDE3LjgsOC41OTFabS0uMTY2LDE4Ljg1N2EuNDIzLjQyMywwLDAsMC0uMDU3LS4zMjdjLS41OTMtMS4xLTUuODEtMS42NDUtNi45MDctMS43NTJhOC4yNzIsOC4yNzIsMCwwLDAsMS42MzUsMS4zLDcuNzY2LDcuNzY2LDAsMCwwLDIuODE0LDEuMDQxQzE1LjkyMiwyNy44MzEsMTcuNDY3LDI3LjkzMywxNy42MzUsMjcuNDQ3WlwiIHN0eWxlPVwiZmlsbDojN2M2NDhmXCIvPjxnIHN0eWxlPVwib3BhY2l0eTowLjI1XCI+PHBhdGggZD1cIk0xOC4yNDgsMTAuNjE4YzQuNDcsNC44MjMsNi40NDUsNC45NzksNi4yMzcsMTAuNDc4LS4yNDksNi40NzYtNC41NDMsOC4xOTEtNy4wNTgsOC40Mi00LjIuNTUxLTcuNDk1LTEuNTI4LTguMzU4LTUuNjg2QzcuMzEyLDE3LjA2MywxMi45NzgsNi4wMjMsMTYuNjM3LDQuMzZBMTUuMzIzLDE1LjMyMywwLDAsMCwxOC4yNTgsMTAuNlpcIiBzdHlsZT1cImZpbGw6IzI2MDAzZFwiLz48L2c+PGcgc3R5bGU9XCJvcGFjaXR5OjAuNzVcIj48cGF0aCBkPVwiTTE3LjM4NSw5LjkyMUMyMC4zNjksMTQsMjQuMzE5LDEzLjcsMjUsMTkuNjQxYy4wOTQsNi45MjMtMy42LDkuMjgzLTYuMjM3LDkuOTQ4LTQuNSwxLjI3OS04LjUxNC0uNjQ1LTEwLjA5NC01LTMuMDM1LTcsMi42NTEtMTguNTE0LDYuMzEtMjAuOTE1YTE1LjA4MywxNS4wODMsMCwwLDAsMi4zNyw2LjIzN1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48L2c+YCxcblx0XCJFbG1cIjogYDxwYXRoIGQ9XCJNMTYsMTYuNzY4LDIuNzY4LDMwSDI5LjIzMlpcIiBzdHlsZT1cImZpbGw6IzVmYjRjYlwiLz48cGF0aCBkPVwiTTI0LjEzLDIzLjM2MiwzMCwyOS4yMzJWMTcuNDkyWlwiIHN0eWxlPVwiZmlsbDojZWVhNDAwXCIvPjxwYXRoIGQ9XCJNMTUuMjMyLDE2LDIsMi43NjhWMjkuMjMyWlwiIHN0eWxlPVwiZmlsbDojNTk2Mjc3XCIvPjxwYXRoIGQ9XCJNMzAsMTQuNDQ4VjJIMTcuNTUyWlwiIHN0eWxlPVwiZmlsbDojNWZiNGNiXCIvPjxwYXRoIGQ9XCJNMjMuMzkyLDkuMzc2bDYuNTk0LDYuNTk0LTYuNjI0LDYuNjI0TDE2Ljc2OCwxNlpNMi43NjgsMiw4Ljg2Myw4LjFIMjIuMTExTDE2LjAxNiwyWlwiIHN0eWxlPVwiZmlsbDojOGNkNjM2XCIvPjxwYXRoIGQ9XCJNMTYsMTUuMjMybDYuMDUxLTYuMDUxSDkuOTQ5WlwiIHN0eWxlPVwiZmlsbDojZWVhNDAwXCIvPmAsXG5cdFwiRVJCXCI6IGA8cGF0aCBkPVwiTTcuMjUsMjQuNzVoMTcuNUwxMi41LDEyLjUsNy4yNSwxNy43NVpNMiwzMEgzMFYySDE2TDIsMTZabTI1LjM3NS0yLjYyNUg0LjYyNXYtMTAuNWwxMi4yNS0xMi4yNWgxMC41WlwiIHN0eWxlPVwiZmlsbDojOTIxYTFlXCIvPmAsXG5cdFwiRXJsYW5nXCI6IGA8cGF0aCBkPVwiTTYuMzg4LDIzLjg2N2ExMS4wMTIsMTEuMDEyLDAsMCwxLTMuNDQxLTguMjM0LDEwLjc2NSwxMC43NjUsMCwwLDEsMi44NjQtNy41SDJ2MTUuNzNabTIwLjA2NiwwYTE2LjQ0LDE2LjQ0LDAsMCwwLDIuNTM3LTMuMTM2bC00LjIxOC0xLjg3M2E4LjMwNiw4LjMwNiwwLDAsMS02LjY0MSw0LjEyYy00LjM1OS0uMDE0LTYuMDcyLTMuMzI5LTYuMDYzLTcuNTg0SDI4LjM2YTYuNDY1LDYuNDY1LDAsMCwwLDAtLjkzNSw5LjA1Nyw5LjA1NywwLDAsMC0yLjAyOS02LjMyNkgzMHYxNS43M0gyNi40NTZaTTEyLjMzMiwxMS43NDJhMy43MjMsMy43MjMsMCwwLDEsMy45LTMuMjMsMy4yOSwzLjI5LDAsMCwxLDMuNTMyLDMuMjNaXCIgc3R5bGU9XCJmaWxsOiNhMjAwM2VcIi8+YCxcblx0XCJGI1wiOiBgPHBhdGggZD1cIk0yLDE2LDE1LjI4OCwyLjcxMlY5LjM1Nkw4LjY0NCwxNmw2LjY0NCw2LjY0NHY2LjY0NFpcIiBzdHlsZT1cImZpbGw6IzM3OGJiYVwiLz48cGF0aCBkPVwiTTEwLjU0MiwxNmw0Ljc0Ni00Ljc0NnY5LjQ5MlpcIiBzdHlsZT1cImZpbGw6IzM3OGJiYVwiLz48cGF0aCBkPVwiTTMwLDE2LDE2LjIzNywyLjcxMlY5LjM1NkwyMi44ODEsMTZsLTYuNjQ0LDYuNjQ0djYuNjQ0WlwiIHN0eWxlPVwiZmlsbDojMzBiOWRiXCIvPmAsXG5cdFwiRmlyZXN0b3JlIHNlY3VyaXR5IHJ1bGVzXCI6IGA8cGF0aCBkPVwiTTUuOCwyNC42bC4xNy0uMjM3TDEzLjk5LDkuMTQ5bC4wMTctLjE2MS0zLjUzNS02LjY0YS42NTYuNjU2LDAsMCwwLTEuMjI3LjIwN1pcIiBzdHlsZT1cImZpbGw6I2ZmYzI0YVwiLz48cGF0aCBkPVwiTTUuOSwyNC40MmwuMTI4LS4yNUwxMy45NjUsOS4xMTQsMTAuNDM5LDIuNDQ4YS42LjYsMCwwLDAtMS4xMzMuMjA2WlwiIHN0eWxlPVwiZmlsbDojZmZhNzEyXCIvPjxwYXRoIGQ9XCJNMTYuNTg0LDE0LjAxbDIuNjMyLTIuN0wxNi41ODMsNi4yODlhLjY3OC42NzgsMCwwLDAtMS4xOTUsMEwxMy45ODEsOC45NzFWOS4yWlwiIHN0eWxlPVwiZmlsbDojZjRiZDYyXCIvPjxwYXRoIGQ9XCJNMTYuNTM3LDEzLjksMTkuMSwxMS4yOCwxNi41MzcsNi40YS41ODkuNTg5LDAsMCwwLTEuMDc0LS4wNDdMMTQuMDQ5LDkuMDgybC0uMDQyLjEzOVpcIiBzdHlsZT1cImZpbGw6I2ZmYTUwZVwiLz48cG9seWdvbiBwb2ludHM9XCI1LjgwMiAyNC42MDEgNS44NzkgMjQuNTIzIDYuMTU4IDI0LjQxIDE2LjQxOCAxNC4xODggMTYuNTQ4IDEzLjgzNCAxMy45ODkgOC45NTYgNS44MDIgMjQuNjAxXCIgc3R5bGU9XCJmaWxsOiNmNjgyMGNcIi8+PHBhdGggZD1cIk0xNi45MTIsMjkuNzU2LDI2LjIsMjQuNTc3LDIzLjU0Niw4LjI0NkEuNjM1LjYzNSwwLDAsMCwyMi40NzEsNy45TDUuOCwyNC42bDkuMjMzLDUuMTU1YTEuOTI3LDEuOTI3LDAsMCwwLDEuODc4LDBcIiBzdHlsZT1cImZpbGw6I2ZkZTA2OFwiLz48cGF0aCBkPVwiTTI2LjExNSwyNC41MzQsMjMuNDgzLDguMzI2YS41NTcuNTU3LDAsMCwwLS45NjctLjM1M0w1LjksMjQuNTY5bDkuMTMxLDUuMWExLjkxMiwxLjkxMiwwLDAsMCwxLjg2MywwWlwiIHN0eWxlPVwiZmlsbDojZmNjYTNmXCIvPjxwYXRoIGQ9XCJNMTYuOTEyLDI5LjZhMS45MjcsMS45MjcsMCwwLDEtMS44NzgsMEw1Ljg3NiwyNC41MjIsNS44LDI0LjZsOS4yMzMsNS4xNTVhMS45MjcsMS45MjcsMCwwLDAsMS44NzgsMEwyNi4yLDI0LjU3N2wtLjAyMy0uMTRaXCIgc3R5bGU9XCJmaWxsOiNlZWFiMzdcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjMuMjAxIDEzIDE1LjQwNSAxNi41MzQgMTUuNDA1IDI3LjYwMyAyMS42MjUgMjQuNzg1IDIxLjYyNSAzMSAzMSAyNi43NDMgMzEgMTYuNTM0IDIzLjIwMSAxM1wiIHN0eWxlPVwiZmlsbDojMjUyNTI1XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIzLjIwMSAxNC43MyAxNi45ODUgMTcuNTQ5IDE2Ljk4NSAyMC4zMjcgMjMuMjAxIDE3LjUwNyAyOS40MjEgMjAuMzI3IDI5LjQyMSAxNy41NDkgMjMuMjAxIDE0LjczXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjMuMjAxIDE5LjU2NCAxNi45ODUgMjIuMzgxIDE2Ljk4NSAyNS4xNTggMjMuMjAxIDIyLjMzNyAyOS40MjEgMjUuMTU4IDI5LjQyMSAyMi4zODEgMjMuMjAxIDE5LjU2NFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI4LjYwNiAyNi4wOTggMjUuNTUxIDI0LjcxMiAyMy4yMDEgMjUuNzc4IDIzLjIwMSAyOC41NDggMjguNjA2IDI2LjA5OFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiRmxvd1wiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTY3LjkwN1wiIHkxPVwiLTMwOC41NTFcIiB4Mj1cIi02Ny44NTdcIiB5Mj1cIi0zMDguNTY0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoODcuODIyLCAwLCAwLCAtODguNTMzLCA1OTg0LjUzMiwgLTI3MjkwLjYxNylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmQ0NDFcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZiMDQ3XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTY3LjY3NFwiIHkxPVwiLTMxMC4xMjFcIiB4Mj1cIi02Ny42NDdcIiB5Mj1cIi0zMTAuMDYzXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoODcuODIyLCAwLCAwLCAtODguNTMzLCA1OTY0LjY2NywgLTI3NDQzKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZDc1NFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmI1MzJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItNjcuMDI5XCIgeTE9XCItMzEwLjkxXCIgeDI9XCItNjcuMDI5XCIgeTI9XCItMzEwLjg2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoODcuODIyLCAwLCAwLCAtODguNTMzLCA1OTAyLjgsIC0yNzUxOC43MzMpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZkNjQyXCIvPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZDQ0MVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmI1MzJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCItNjYuMjUyXCIgeTE9XCItMzEwLjM3N1wiIHgyPVwiLTY2LjMyXCIgeTI9XCItMzEwLjM2MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEwNi4xOTgsIDAsIDAsIC04OC41NTEsIDcwNDguNDI4LCAtMjc0NzQuMTY3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZDQ0MVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmE4MjlcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9mbG93PC90aXRsZT48cGF0aCBkPVwiTTIzLjQyNiwyOS40MVYyMi4xNzJoLTcuMThsNy4xOCw3LjIzOFwiIHN0eWxlPVwiZmlsbDojZmZkZjUxO2ZpbGwtb3BhY2l0eTowLjY5OTk5OTk4ODA3OTA3MVwiLz48cGF0aCBkPVwiTTI0LjIzMSwyNS4zMDZWMTcuNDc3SDE2LjQ2Nmw3Ljc2Niw3LjgyOVwiIHN0eWxlPVwiZmlsbDojZmY4OTAwO2ZpbGwtb3BhY2l0eTowLjY5OTk5OTk4ODA3OTA3MVwiLz48cGF0aCBkPVwiTTE5LjUxNSwyMi4xNzFWMzBoNy43NjZsLTcuNzY2LTcuODI5XCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzE7ZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjIuNjA4LDE4VjExLjgwOUgxNi40NjZMMjIuNjA4LDE4XCIgc3R5bGU9XCJmaWxsOiNmZmRmNGY7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwYXRoIGQ9XCJNMjUuNTI0LDE2LjUyNVY4LjdIMTcuNzU5bDcuNzY2LDcuODI5XCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC43OTk5OTk5NTIzMTYyODQ7ZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTIuMjg4LDJWOS44MjloNy43NjZMMTIuMjg4LDJcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjgwMDAwMDAxMTkyMDkyOTtmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0xNC4xMSwxNC4yNjJWNi40MzNINC43MTlsNy43MzIsNy44MywxLjY1OSwwXCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC44Nzk5OTk5OTUyMzE2Mjg7ZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMTQuMTEsMjkuOTU4VjIwLjQ4N0g0LjcxOWw5LjM5MSw5LjQ3MVwiIHN0eWxlPVwiZmlsbDojZmZiNzAwO2ZpbGwtb3BhY2l0eTowLjY5OTk5OTk4ODA3OTA3MVwiLz48cGF0aCBkPVwiTTE0LjExMiwyMi4xMTRWMTQuMjg1SDYuMzQ2bDcuNzY2LDcuODI5XCIgc3R5bGU9XCJmaWxsOiNmZmI3MDA7ZmlsbC1vcGFjaXR5OjAuNVwiLz48cGF0aCBkPVwiTTE2LjQ2NSwxMS44MDl2Ny44MjloNy43NjZsLTcuNzY2LTcuODI5XCIgc3R5bGU9XCJmaWxsOiNmZmNkMjU7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwYXRoIGQ9XCJNMTQuMDkyLDEyLjY5MVY0Ljg2Mkg2LjMyNmw3Ljc2Niw3LjgyOVwiIHN0eWxlPVwiZmlsbDojZmY4OTAwO2ZpbGwtb3BhY2l0eTowLjcwMDAwMDA0NzY4MzcxNlwiLz48cGF0aCBkPVwiTTE2LjI0NiwyMi4xNzFWMzBoNy43NjZsLTcuNzY2LTcuODI5XCIgc3R5bGU9XCJmaWxsOiNmZjg5MDA7ZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIxLjEyMiAyMi4xNzIgMTguNjA5IDE5LjYzOCAxNi40NjUgMTkuNjM4IDE2LjQ2NiAxMS44MDkgMjAuODQ3IDExLjgwOSAxOC44ODIgOS44MjkgMTQuMDkyIDkuODI5IDE0LjExIDE0LjI2MiAxNC4xMSAyMC40ODcgMTQuMTEgMzAgMTYuMjQ2IDMwIDE2LjI0NiAyMi4xNzIgMjEuMTIyIDIyLjE3MlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiRm9ydHJhblwiOiBgPGcgaWQ9XCJnMzc2OFwiPjxyZWN0IGlkPVwicmVjdDg4MVwiIHg9XCIyLjM0XCIgeT1cIjIuMzRcIiB3aWR0aD1cIjI3LjMzXCIgaGVpZ2h0PVwiMjcuMzNcIiByeD1cIjUuMDhcIiBzdHlsZT1cImZpbGw6IzczNGY5NlwiLz48cGF0aCBpZD1cInBhdGgxNDEyXCIgZD1cIk02LjA2LDI1LjVjMC0xLjA5LDAtMS4xOS4xLTEuMTlsMS4yNS0uMDZjMSwwLDEuMTgtLjA2LDEuNDItLjE5YS43NC43NCwwLDAsMCwuMzktLjM3Yy4xMi0uMjMuMTItLjI5LjEyLTcuNzIsMC03LDAtNy41LS4xLTcuNjdhMS4wNiwxLjA2LDAsMCwwLS42My0uNSwxMC4yMywxMC4yMywwLDAsMC0xLjM4LS4xbC0xLjE3LDBWNS4zMkgyNS45NHY4LjgySDI0Ljg5YTguNTYsOC41NiwwLDAsMS0xLjItLjA1Yy0uMTQsMC0uMTUtLjA1LS4yMi0uOTVhMTIuNzMsMTIuNzMsMCwwLDAtLjM1LTIuNDMsMy4yMiwzLjIyLDAsMCwwLTIuNjMtMi44MWMtLjU3LS4xLTMuMS0uMi01LjE5LS4ySDEzLjg3djYuNjNsLjc1LDBBNi4zMyw2LjMzLDAsMCwwLDE2LjQ5LDE0YTEuODgsMS44OCwwLDAsMCwuODktLjkxLDUuODYsNS44NiwwLDAsMCwuMzktMS43NWMwLS4zMy4wOC0uNjYuMS0uNzNzMC0uMTMsMS4xOC0uMTNIMjAuMlYyMS4wNkgxNy44NWwwLS42MWE3Ljg1LDcuODUsMCwwLDAtLjU0LTIuNjZjLS4zNi0uNjgtMS4wNS0xLTIuNDUtMS4wOGwtLjc2LS4wNy0uMiwwLDAsMy4zNGMwLDMuNTEsMCwzLjY1LjMsMy45NHMuNDMuMzIsMy4yMi40MmMuMDUsMCwuMDcuMjguMDcsMS4xOXYxLjE4SDYuMDZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PC9nPmAsXG5cdFwiRnJlZU1hcmtlciBUZW1wbGF0ZSBMYW5ndWFnZVwiOiBgPHBhdGggZD1cIk0yNC4wMjMsMjAuOSwyNS40MDgsMjNsNC42MTUtN0wyNS40MDgsOWwtMS4zODUsMi4xTDI3LjI1NSwxNlpcIiBzdHlsZT1cImZpbGw6IzAwNTBiMlwiLz48cGF0aCBkPVwiTTcuOTc3LDExLjEsNi41OTIsOSwxLjk3NywxNmw0LjYxNSw3LDEuMzg1LTIuMUw0Ljc0NSwxNlpcIiBzdHlsZT1cImZpbGw6IzAwNTBiMlwiLz48cGF0aCBkPVwiTTEzLjAzNSw5aDIuOGwtLjQ5NCwyLjhoMi44TDE4LjYzNSw5aDIuOGwtLjQ5NCwyLjhoMi44bC0uNDk1LDIuOGgtMi44bC0uNDkzLDIuOGgyLjhsLS40OTQsMi44aC0yLjhMMTguOTY3LDIzaC0yLjhsLjQ5My0yLjgtMi44LDBMMTMuMzc1LDIzSDEwLjU2N2wuNDkzLTIuOC0yLjgsMCwuNDk0LTIuOGgyLjhsLjQ5My0yLjc5M2gtMi44TDkuNzQxLDExLjhoMi44Wm0xLjMxOSw4LjRoMi44bC40OTQtMi44aC0yLjhaXCIgc3R5bGU9XCJmaWxsOiMwMDUwYjJcIi8+YCxcblx0XCJHYW1lTWFrZXIgTGFuZ3VhZ2VcIjogYDxwYXRoIGQ9XCJNMTQuMjE2LDI0LjE2N2gtLjk4OWEzLjI0LDMuMjQsMCwwLDEtMi44MTEtMS42NDlMNi42NjcsMTZsNC42ODEtOC4xNjdIMTYuMmwtNC4zNCw4LjE3Ni4wNTcuMDMyTDEzLjkzNiwxOS41SDE2LjgyWk04LjQ1NSwxMC41MzVsLTEuMjctMi4yMWExLDEsMCwwLDAtLjg1OS0uNDkySDJsNCw2Ljk5MlpNMjEuNTQsOS40ODJhMy4yMzksMy4yMzksMCwwLDAtMi44MTItMS42NDlIMTcuNTIzTDE1LjA0NSwxMi41SDE4LjAyTDIwLjA4MywxNmwtNC41MzEsOC4xNjdoNS4wNTZMMjUuMzMzLDE2Wk0yNiwxNy4xNzJsLTIuNDcsNC4yNywxLjI4MywyLjIzM2ExLDEsMCwwLDAsLjg1OS40OTJIMzBaXCIgc3R5bGU9XCJmaWxsOiM4YmMzNGFcIi8+YCxcblx0XCJHLWNvZGVcIjogYDxwYXRoIGQ9XCJNMTcuMzMzLDE2LjM1NmgwTDE3LjMwOSwyMC44bC0yLjEtMS4wMTguMDIzLTQuNDM3aDBsMTAuNTU4LTMuMDM4LDIuMTA2LDEuMDEzWlwiIHN0eWxlPVwiZmlsbDojOGUwMDAwXCIvPjxwYXRoIGQ9XCJNMjQuNDkyLDE4LjU3NmExNC45MDksMTQuOTA5LDAsMCwxLTEuMzQzLDMuMDc0LDcuODYsNy44NiwwLDAsMS0xLjM5LDEuODI5LDYuOCw2LjgsMCwwLDEtMS43LDEuMzI0LDcuNDA1LDcuNDA1LDAsMCwxLTIuMDA2Ljg1NSw2LDYsMCwwLDEtMy4wNzIuMjNBNC42NjgsNC42NjgsMCwwLDEsMTIuNDQsMjQuNjRhNS4zMjIsNS4zMjIsMCwwLDEtLjYzNi0uNjI5bC0uNTA4LS4yNDRhNC43MTcsNC43MTcsMCwwLDAsLjQ1Ny4xODEsNS41Miw1LjUyLDAsMCwxLTEuMDE1LTEuNzU4LDguMTM1LDguMTM1LDAsMCwxLS40My0xLjUzM2MtLjAyMy0uMTMxLS4wNDMtLjIzOS0uMDYxLS4zNGE3LjI5Miw3LjI5MiwwLDAsMCwuMzc3LDEuMzU0LDUuODM2LDUuODM2LDAsMCwwLDEuNjE0LDIuMzE5Yy4wNi4wNTQuMTI3LjEuMTkuMTQ4LjA0LjAwOC4wNzguMDIyLjExOS4wMjlhNi40NTQsNi40NTQsMCwwLDAsMi45MjgtLjIxOSw4LjQsOC40LDAsMCwwLDEuOTEtLjgwNyw3LjY1OCw3LjY1OCwwLDAsMCwxLjU4OS0xLjIyNyw4LjY2Miw4LjY2MiwwLDAsMCwxLjI5LTEuNjksMTIuNjY3LDEyLjY2NywwLDAsMCwxLjAxOS0yLjE5NEwyMy4zLDE5Yy4wNTYtLjE1My4wOTEtLjI1NC4wOTEtLjI1NFpcIiBzdHlsZT1cImZpbGw6IzhlMDAwMFwiLz48cGF0aCBkPVwiTTI0LjUyNCw0LjAxM2ExMS42LDExLjYsMCwwLDAtNi41ODgtMS45OTQsMTMuOCwxMy44LDAsMCwwLTkuMzczLDQuODRBMTguMjQzLDE4LjI0MywwLDAsMCw0LDE4LjhjLjAyMSwzLjg1MSwxLjQ4MSw3LjgwNiw1LjExMiw5LjU3NWExMy41NjMsMTMuNTYzLDAsMCwwLDQuMTU5LDEuNTY0LDEyLjExNCwxMi4xMTQsMCwwLDAsNi44NjktMS41MjljLTIuNzM0LDEuMzMzLTYuMTIsMS45OTMtOC44OTQuNC0yLjY4OS0xLjU0My0zLjk4My00LjcyNC00LjIyMS03LjctLjUxMi02LjQsMy4xLTEzLjY0LDkuMTMyLTE2LjI4MSwzLjUxMi0xLjUzNyw3LjMwNy0xLjU4NSwxMC4yMzksMS4xQzI2LjcyNyw1LjI0NCwyNSw0LjMwNSwyNC41MjQsNC4wMTNabS0xNC4zNTksMjQuOC0uMTM4LS4wOTNaXCIgc3R5bGU9XCJmaWxsOiM4ZTAwMDBcIi8+PHBhdGggZD1cIk0yMi41MjksMjYuNzg4Yy0zLjA0NCwyLjU4Mi03LjkyLDQuMTQ5LTExLjU1NCwxLjg1N0M3LjI0LDI2LjI4OSw2LjUzLDIxLjA4OSw3LjIxMiwxNy4wODNhMTcuMjE4LDE3LjIxOCwwLDAsMSw2LjctMTAuOTdjMy43NzEtMi42MzYsOC44OC0zLjQ5LDEyLjQ4OS0uMTgybC0yLjI3LDMuMjkxYy0yLjUxLTIuMzU1LTYuMy0xLjk1Ni04Ljk0NS0uMDUyQTEyLjQzNCwxMi40MzQsMCwwLDAsMTAuNSwxNi4yYy0uNjYyLDIuNjIzLS41LDYuMDExLDEuNSw4LjA0NywyLjA4OCwyLjEyOSw1LjExMiwyLjExNiw3LjY1Ni44QTEwLjMzNCwxMC4zMzQsMCwwLDAsMjQuNSwxOC42MzZMMTcuMzA3LDIwLjhsLjAyMi00LjQzOEwyNy44OSwxMy4zMTlsLjEuODA2aDBBMTYuNjI1LDE2LjYyNSwwLDAsMSwyMi41MjksMjYuNzg4WlwiIHN0eWxlPVwiZmlsbDojYmEwMDAwXCIvPmAsXG5cdFwiR0RTY3JpcHRcIjogYDxwYXRoIGQ9XCJNMjguMTY2LDIxLjAyOXYxLjY1MmEuMzc0LjM3NCwwLDAsMS0uMjYuMzU3bC0yLjYuODQxYS4zNjcuMzY3LDAsMCwxLS4zMzUtLjA1NC4zNzQuMzc0LDAsMCwxLS4xNTUtLjN2LTEuOGwtMi40MzguNDY0VjI0LjAyYS4zNzUuMzc1LDAsMCwxLS4zMjUuMzcxbC0zLjUyNS40ODNjLS4wMTYsMC0uMDM0LDAtLjA1MSwwQS4zNzQuMzc0LDAsMCwxLDE4LjEsMjQuNVYyMi41NTdsLTEuODE5LjAwOGgtLjI2N2wtMS44MTktLjAwOFYyNC41YS4zNzUuMzc1LDAsMCwxLS4zNzUuMzc2Yy0uMDE3LDAtLjAzNCwwLS4wNTIsMGwtMy41MjUtLjQ4M2EuMzc1LjM3NSwwLDAsMS0uMzI0LS4zNzFWMjIuMTg0bC0yLjQzOS0uNDY0djEuOGEuMzc0LjM3NCwwLDAsMS0uMTU0LjMuMzcuMzcsMCwwLDEtLjMzNi4wNTRsLTIuNi0uODQxYS4zNzQuMzc0LDAsMCwxLS4yNTktLjM1N1YyMS4wMjlsLTEuNjA4LS41NDFhNC41NTgsNC41NTgsMCwwLDAtLjEyNCwxLjA0YzAsNC4zMTcsNi4wODIsNy42NSwxMy42LDcuNjc0aC4wMTljNy41MTctLjAyNCwxMy42LTMuMzU2LDEzLjYtNy42NzRhNC41NCw0LjU0LDAsMCwwLS4xLS45NVpcIiBmaWxsPVwiIzQ3OGNiZlwiLz48cGF0aCBkPVwiTTMuNzExLDEzLjM3M1YyMC4xbC45MDcuMzA2YS4zNzQuMzc0LDAsMCwxLC4yNTYuMzU1djEuNjVsMS44NTUuNlYyMS4yNjdhLjM3Ni4zNzYsMCwwLDEsLjQ0NS0uMzY5bDMuMTg5LjYwOWEuMzc0LjM3NCwwLDAsMSwuMzA1LjM2OHYxLjgxOGwyLjc3NS4zNzl2LTEuODlhLjM3NC4zNzQsMCwwLDEsLjM3Ni0uMzc1aDBsMi4zMjcuMDA5LDIuMzI2LS4wMDlhLjM3NC4zNzQsMCwwLDEsLjM3Ny4zNzV2MS44OWwyLjc3NS0uMzc5VjIxLjg3NGEuMzczLjM3MywwLDAsMSwuMy0uMzY4bDMuMTg5LS42MDlhLjM3Ny4zNzcsMCwwLDEsLjQ0Ni4zNjl2MS43NDFsMS44NTUtLjZWMjAuNzZhLjM3NC4zNzQsMCwwLDEsLjI1NS0uMzU1bC42MTgtLjIwOFYxMy4zNzNoLjAxN0EyNi43OTIsMjYuNzkyLDAsMCwwLDMwLDEwLjkzMWExOS4wMiwxOS4wMiwwLDAsMC0yLjUwOS0zLjI4OEEyNC41MDcsMjQuNTA3LDAsMCwwLDI1LDkuMDkxYTEzLjAxLDEzLjAxLDAsMCwwLTEuMjc5LTEuMDUyLDE1LjM2NSwxNS4zNjUsMCwwLDAtMS4zNzUtLjg5NCwyOC4zNTMsMjguMzUzLDAsMCwwLC4yMzItMy4wNzFBMTUuOTY4LDE1Ljk2OCwwLDAsMCwxOC44NDcsMi44YTI2LjQ0LDI2LjQ0LDAsMCwwLTEuMzg1LDIuNyw5LjQ2LDkuNDYsMCwwLDAtMS40NTMtLjExNmgtLjAxOGE5LjQ1Nyw5LjQ1NywwLDAsMC0xLjQ1NC4xMTYsMjYuMjc1LDI2LjI3NSwwLDAsMC0xLjM4NS0yLjdBMTUuOTYxLDE1Ljk2MSwwLDAsMCw5LjQyMiw0LjA3NWEyOC4xNDIsMjguMTQyLDAsMCwwLC4yMzIsMy4wNzEsMTUuMzEyLDE1LjMxMiwwLDAsMC0xLjM3Ni44OTRBMTMuMDYsMTMuMDYsMCwwLDAsNyw5LjA5MWEyNC41NTMsMjQuNTUzLDAsMCwwLTIuNDktMS40NDhBMTkuMDIsMTkuMDIsMCwwLDAsMiwxMC45MzFhMjYuNzkyLDI2Ljc5MiwwLDAsMCwxLjY5NCwyLjQ0M1pcIiBmaWxsPVwiIzQ3OGNiZlwiLz48cGF0aCBkPVwibTEyLjQ2MiAxNi42YTIuNzM5IDIuNzM5IDAgMSAxLTIuNzQtMi43MzggMi43MzkgMi43MzkgMCAwIDEgMi43NCAyLjczOFwiIGZpbGw9XCIjZmZmXCIvPjxwYXRoIGQ9XCJtMTEuOCAxNi43NjRhMS44MTkgMS44MTkgMCAxIDEtMS44MTktMS44MTkgMS44MTcgMS44MTcgMCAwIDEgMS44MTkgMS44MTlcIiBmaWxsPVwiIzQxNDA0MlwiLz48cGF0aCBkPVwiTTE2LjE2NiwxOS41OWEuODQ0Ljg0NCwwLDAsMS0uODgyLS44VjE2LjI2N2EuODg2Ljg4NiwwLDAsMSwxLjc2NCwwdjIuNTIyYS44NDUuODQ1LDAsMCwxLS44ODMuOFwiIGZpbGw9XCIjZmZmXCIvPjxwYXRoIGQ9XCJtMTkuODcxIDE2LjZhMi43MzkgMi43MzkgMCAxIDAgMi43NC0yLjczOCAyLjczOSAyLjczOSAwIDAgMC0yLjc0IDIuNzM4XCIgZmlsbD1cIiNmZmZcIi8+PHBhdGggZD1cIm0yMC41MzEgMTYuNzY0YTEuODE4IDEuODE4IDAgMSAwIDEuODE3LTEuODE5IDEuODE3IDEuODE3IDAgMCAwLTEuODE3IDEuODE5XCIgZmlsbD1cIiM0MTQwNDJcIi8+YCxcblx0XCJHaXRcIjogYDxwYXRoIGQ9XCJNMjkuNDcyLDE0Ljc1MywxNy4yNDcsMi41MjhhMS44LDEuOCwwLDAsMC0yLjU1LDBMMTIuMTU4LDUuMDY3bDMuMjIsMy4yMmEyLjE0MSwyLjE0MSwwLDAsMSwyLjcxMiwyLjczbDMuMSwzLjFhMi4xNDMsMi4xNDMsMCwxLDEtMS4yODUsMS4yMWwtMi44OTUtMi44OTV2Ny42MTdhMi4xNDEsMi4xNDEsMCwxLDEtMS43NjQtLjA2MlYxMi4zYTIuMTQ2LDIuMTQ2LDAsMCwxLTEuMTY1LTIuODE0TDEwLjkxMSw2LjMxNCwyLjUyOCwxNC43YTEuOCwxLjgsMCwwLDAsMCwyLjU1MUwxNC43NTMsMjkuNDcyYTEuOCwxLjgsMCwwLDAsMi41NSwwTDI5LjQ3MiwxNy4zYTEuOCwxLjgsMCwwLDAsMC0yLjU1MVwiIHN0eWxlPVwiZmlsbDojZGQ0YzM1XCIvPjxwYXRoIGQ9XCJNMTIuMTU4LDUuMDY3bDMuMjIsMy4yMmEyLjE0MSwyLjE0MSwwLDAsMSwyLjcxMiwyLjczbDMuMSwzLjFhMi4xNDMsMi4xNDMsMCwxLDEtMS4yODUsMS4yMWwtMi44OTUtMi44OTV2Ny42MTdhMi4xNDEsMi4xNDEsMCwxLDEtMS43NjQtLjA2MlYxMi4zYTIuMTQ2LDIuMTQ2LDAsMCwxLTEuMTY1LTIuODE0TDEwLjkxMSw2LjMxNFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiR0xTTFwiOiBgPHBhdGggZD1cIk03Ljc3OSwxOC45MjNBMi4zMzMsMi4zMzMsMCwwLDEsNS40LDE3LjE2Yy4zMDYsMS40NjIsMS45NjEsMi44OTIsNy4xODMsMy41MjlhMTQuMjI4LDE0LjIyOCwwLDAsMCw5LjIzMi0xLjYxMnMuNzMzLS4zMjIuMjkzLjE3NmMwLDAtMy4xMDcsMi44NzMtOS4yLDIuOVMxLjk3LDE5LjEwNywyLDE2Yy0uMDI5LTMuMTA3LDQuODA2LTYuMTg1LDEwLjktNi4xNTVzOS4yLDIuOSw5LjIsMi45Yy40NC41LS4yOTMuMTc2LS4yOTMuMTc2LTEuMDg0LS43LTQuMjg2LTIuMDg5LTkuMjMyLTEuNjEyLTQuODY2LjQ2OS02LjQ1MywyLjEyMi02Ljk4MSwzLjIzNWEzLjI1NCwzLjI1NCwwLDAsMC0uMzE4LDEuMjQsMi40MjQsMi40MjQsMCwwLDEsMi41LTIuMzE2QTIuNTA3LDIuNTA3LDAsMCwxLDEwLjMsMTYuMTk1LDIuNTA2LDIuNTA2LDAsMCwxLDcuNzc5LDE4LjkyWm0xOS42NDctMS4wNzRIMzB2LjkzN0gyNi4zNDRWMTMuNjA5aDEuMDgydjQuMjRaTTIzLjQ1NCwxNmgyLjE2M3YyLjc5MUgyNC45bC0uMTA4LS42NDlhMS45LDEuOSwwLDAsMS0xLjYxNC43ODYsMi40MTQsMi40MTQsMCwwLDEtMi4zNzktMi43MTEsMi40ODUsMi40ODUsMCwwLDEsMi41MzEtMi43NEEyLjA1MywyLjA1MywwLDAsMSwyNS42LDE1LjIxN0gyNC41MTVhMS4xMzYsMS4xMzYsMCwwLDAtMS4xMzItLjg1MWMtLjc3MSwwLTEuNDg1LjUzNC0xLjQ4NSwxLjg2LDAsMS40MTMuNzcxLDEuNzgxLDEuNTA2LDEuNzgxYTEuMjgsMS4yOCwwLDAsMCwxLjI1NC0xLjEzOWgtMS4yVjE2Wk03Ljc4MSwxNC4xYTEuODYsMS44NiwwLDAsMC0xLjgsMi4xMDUsMS44NiwxLjg2LDAsMCwwLDEuOCwyLjEwNSwxLjg2LDEuODYsMCwwLDAsMS44LTIuMTA1QTEuODYsMS44NiwwLDAsMCw3Ljc4MSwxNC4xWm0yLjkxMSwxLjM4M2guNTI1di40NjhoLjAxM2ExLjEyLDEuMTIsMCwwLDEsLjk4Ny0uNTYzLDEuNTY1LDEuNTY1LDAsMCwxLDEuNTA2LDEuNjc3LDEuNjc1LDEuNjc1LDAsMCwxLTEuNTgzLDEuODI0LDEsMSwwLDAsMS0uODgtLjQ0M2gtLjAxM1YyMC4xaC0uNTU3VjE1LjQ3OVpNMTIuMSwxOC40Yy42MDgsMCwxLjAxOS0uNTI3LDEuMDE5LTEuMjU0LDAtLjQyNC0uMTcxLTEuMjY0LTEuMDMyLTEuMjY0LS44LDAtLjg5My44NjctLjg5MywxLjQwNiwwLC44OC41NTEsMS4xMTQuOTA1LDEuMTE0Wm01LS42NTJhMS4zNzgsMS4zNzgsMCwwLDEtMS40ODgsMS4xMzMsMS40ODcsMS40ODcsMCwwLDEtMS40ODItMS42NThjMC0xLjAyNS40OTQtMS44NDIsMS41ODgtMS44NDIuOTU2LDAsMS40MjQuNzYsMS40MjQsMS45MzFIMTQuNzIxYzAsLjY5LjMyMywxLjA4OS45NjIsMS4wODlhLjg0MS44NDEsMCwwLDAsLjg1NC0uNjUySDE3LjFabS0uNTktLjg4Yy0uMDMyLS41MTMtLjI0Ny0uOTg3LS45MjQtLjk4N2EuOTcyLjk3MiwwLDAsMC0uOTE4Ljk4N2gxLjg0MlptMy43MTMsMS45MTdoLS41NTdWMTYuNzUxYzAtLjU3Ni0uMTY1LS44NjctLjcwOS0uODY3LS4zMTcsMC0uODc0LjItLjg3NCwxLjF2MS44aC0uNTU3VjE1LjQ3OWguNTI1di40NjhoLjAxM2ExLjIsMS4yLDAsMCwxLDEtLjU2MywxLjA0NiwxLjA0NiwwLDAsMSwxLjE1OCwxLjE1MnYyLjI1M1wiIHN0eWxlPVwiZmlsbDojNDM4NmI1XCIvPmAsXG5cdFwiR28gbW9kdWxlXCI6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI1NC41IDIyNVwiPjx0aXRsZT5maWxlX3R5cGVfZ29fcGFja2FnZTwvdGl0bGU+PHBhdGggZD1cIk02MS45NDksMTMuMDY4YzE2LjA2LS4xNDcsMzIuMTQzLDAsNDguMjExLS4wNjItMy44MSwxNi40MDgtNy40NjYsMzIuODYyLTExLjI2MSw0OS4yNzdIMjUuNTQ4Yy0yLjMxOSwwLTQuNjM3LjA3Ny02Ljk1Ni0uMDkzQzMzLDQ1Ljc3NSw0Ny41NjYsMjkuNSw2MS45NDksMTMuMDY4WlwiIHN0eWxlPVwiZmlsbDojZjJlNmM5XCIvPjxwYXRoIGQ9XCJNMTQzLjUwOSwxMy4wMTRoNDguMDcyYzE0LjQzNywxNi40MzEsMjkuMDEzLDMyLjcyMyw0My40MTEsNDkuMTc3LTkuMjc0LjE5My0xOC41NDksMC0yNy44MjMuMDg1SDE1NC42NTRDMTUxLjAwNiw0NS44MzcsMTQ3LjExMSwyOS40NiwxNDMuNTA5LDEzLjAxNFpcIiBzdHlsZT1cImZpbGw6I2YyZTZjOVwiLz48cGF0aCBkPVwiTTExMC4xNiwxMy4wMTRoMzMuMzQ5YzMuNiwxNi40NDYsNy40ODksMzIuODIzLDExLjE2LDQ5LjI1NEg5OC45QzEwMi42OTQsNDUuODY4LDEwNi4zNSwyOS40MjIsMTEwLjE2LDEzLjAxNFpcIiBzdHlsZT1cImZpbGw6I2VmYzc1ZVwiLz48cGF0aCBkPVwiTTE4LjU5Miw2Mi4xODNjMi4zMTkuMTcsNC42MzcuMDg1LDYuOTU2LjA5M0g5OC45cTAsMjYuMDI2LjA1NCw1Mi4wNTJhMTguODU3LDE4Ljg1NywwLDAsMCwxLjk3OS4xMzloNTIuMTE0YTE0LjY5MywxNC42OTMsMCwwLDAsMS41NDYtLjEwOGMuMTQ3LTE3LjM2NiwwLTM0LjczMi4wNy01Mi4xaDUyLjUxNmM5LjI3NC0uMDQ2LDE4LjU0OS4xMDgsMjcuODIzLS4wODVWMjEyLjYySDE4LjZRMTguNTkyLDEzNy40MDUsMTguNTkyLDYyLjE4M1pcIiBzdHlsZT1cImZpbGw6I2U3YmY1NVwiLz48cGF0aCBkPVwiTTk4LjksNjIuMjkxaDU1Ljc2OWMtLjA2MiwxNy4zNjYuMDg1LDM0LjczMi0uMDcsNTIuMS0uNTE4LjA1NC0xLjAzNi4wOTMtMS41NDYuMTA4SDEwMC45NGExOC44NTcsMTguODU3LDAsMCwxLTEuOTcxLS4xMzFDOTguODYxLDk2Ljk5Myw5OC45NjksNzkuNjM0LDk4LjksNjIuMjkxWlwiIHN0eWxlPVwiZmlsbDojZGJiNTUxXCIvPjxyZWN0IHg9XCIzNC4zODlcIiB5PVwiMTYzLjY4MlwiIHdpZHRoPVwiNzIuNDE3XCIgaGVpZ2h0PVwiMjcuODg1XCIgc3R5bGU9XCJmaWxsOiNmMmYyZjJcIi8+PHBhdGggZD1cIk02MS40MjIsMTM3LjA4NWMtLjM4OCwwLS40ODctLjE5NC0uMjkxLS40ODdsMi4wNDEtMi42MjVhMS4zOTMsMS4zOTMsMCwwLDEsMS4wNjktLjQ4N2gzNC43Yy4zODgsMCwuNDg3LjI5MS4yOTEuNTg0TDk3LjU4MiwxMzYuNmExLjQ4MSwxLjQ4MSwwLDAsMS0uOTcyLjU4NFpcIiBzdHlsZT1cImZpbGw6I2NlMzI2MlwiLz48cGF0aCBkPVwiTTQ2Ljc0LDE0Ni4wMjhjLS4zODgsMC0uNDg3LS4xOTQtLjI5MS0uNDg3bDIuMDQxLTIuNjI1YTEuMzkzLDEuMzkzLDAsMCwxLDEuMDY5LS40ODdIOTMuODlhLjQ0Ny40NDcsMCwwLDEsLjQ4Ny41ODRsLS43NzgsMi4zMzNhLjg1Ljg1LDAsMCwxLS44NzUuNTg0WlwiIHN0eWxlPVwiZmlsbDojY2UzMjYyXCIvPjxwYXRoIGQ9XCJNNzAuMjY0LDE1NC45NzFjLS4zODgsMC0uNDg3LS4yOTEtLjI5MS0uNTg0bDEuMzU3LTIuNDNhMS4yODksMS4yODksMCwwLDEsLjk3Mi0uNTg0SDkxLjc0N2MuMzg4LDAsLjU4NC4yOTEuNTg0LjY4MWwtLjE5NCwyLjMzM2EuNzMxLjczMSwwLDAsMS0uNjgxLjY4MVpcIiBzdHlsZT1cImZpbGw6I2NlMzI2MlwiLz48cGF0aCBkPVwiTTE3MS4xNjMsMTM1LjMzNWMtNi4xMjQsMS41NTYtMTAuMywyLjcyMi0xNi4zMyw0LjI4LTEuNDYyLjM4OC0xLjU1Ni40ODctMi44MTktLjk3MmExMy4wMTEsMTMuMDExLDAsMCwwLTQuNTY5LTMuNjk0Yy02LjEyNC0zLjAxMy0xMi4wNTQtMi4xMzgtMTcuNTk0LDEuNDYyYTIwLjY3MSwyMC42NzEsMCwwLDAtOS45MTgsMTguNDY5LDE1LjI0MiwxNS4yNDIsMCwwLDAsMTMuMTIzLDE1LjI2MWM2LjYxLjg3NSwxMi4xNTEtMS40NjIsMTYuNTI1LTYuNDE1Ljg3NS0xLjA2OSwxLjY1My0yLjIzNiwyLjYyNS0zLjZIMTMzLjQ0NmMtMi4wNDEsMC0yLjUyOC0xLjI2My0xLjg0Ny0yLjkxNiwxLjI2My0zLjAxMywzLjYtOC4wNjgsNC45NTgtMTAuNmEyLjYyNSwyLjYyNSwwLDAsMSwyLjQzLTEuNTU2aDM1LjM4NGMtLjE5NCwyLjYyNS0uMTk0LDUuMjQ5LS41ODQsNy44NzRhNDEuNDU2LDQxLjQ1NiwwLDAsMS03Ljk2NywxOS4wNDJjLTYuOTk1LDkuMjM0LTE2LjEzNiwxNC45Ny0yNy43LDE2LjUyNS05LjUyNiwxLjI2My0xOC4zNzQtLjU4NC0yNi4xNDgtNi40MTVBMzAuNTMzLDMwLjUzMywwLDAsMSw5OS42MjUsMTYwLjUxYy0xLjI2My0xMC42LDEuODQ3LTIwLjEyMiw4LjI2Mi0yOC40ODFBNDMuMTM3LDQzLjEzNywwLDAsMSwxMzUuMSwxMTUuMjEyYzkuMTM3LTEuNjUzLDE3Ljg4Ni0uNTg0LDI1Ljc2LDQuNzYzQTMwLjQ3MSwzMC40NzEsMCwwLDEsMTcyLjE0LDEzMy42OEMxNzIuNzE5LDEzNC41NTgsMTcyLjMzLDEzNS4wNDQsMTcxLjE2MywxMzUuMzM1WlwiIHN0eWxlPVwiZmlsbDojY2UzMjYyXCIvPjxwYXRoIGQ9XCJNMjAzLjMzOCwxODkuMDljLTguODQ2LS4xOTQtMTYuOTEzLTIuNzIyLTIzLjcxOS04LjU1NGEzMC40ODUsMzAuNDg1LDAsMCwxLTEwLjUtMTguNzYxYy0xLjc1LTEwLjk4NCwxLjI2My0yMC43LDcuODc0LTI5LjM1Niw3LjEtOS4zMzEsMTUuNjUxLTE0LjE5MiwyNy4yMTgtMTYuMjMzLDkuOTE4LTEuNzUsMTkuMjQ3LS43NzgsMjcuNyw0Ljk1OCw3LjY4LDUuMjQ5LDEyLjQ0MiwxMi4zNDUsMTMuNzA2LDIxLjY3NiwxLjY1MywxMy4xMjMtMi4xMzgsMjMuODE2LTExLjE3OSwzMi45NTNhNDQuNTQyLDQ0LjU0MiwwLDAsMS0yMy4zMjksMTIuNDQyQzIwOC40OSwxODguNywyMDUuODY2LDE4OC44LDIwMy4zMzgsMTg5LjA5Wm0yMy4xMzUtMzkuMjcxYTI3Ljk3OCwyNy45NzgsMCwwLDAtLjI5MS0zLjIwOCwxNi4wMTMsMTYuMDEzLDAsMCwwLTE4LjM3NS0xMy4yMzVxLS43MzQuMTE5LTEuNDU0LjMwNmMtOS4wNCwyLjA0MS0xNC44NzMsNy43NzctMTcuMDExLDE2LjkxM2ExNi4wMDksMTYuMDA5LDAsMCwwLDguOTQzLDE4LjM3NCwxNy44MiwxNy44MiwwLDAsMCwxNS44NDUtLjU4NGM3LjY3OS0zLjk4NSwxMS44NTktMTAuMjA2LDEyLjM0OC0xOC41NjZaXCIgc3R5bGU9XCJmaWxsOiNjZTMyNjJcIi8+PC9zdmc+YCxcblx0XCJHb1wiOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNTQuNSAyMjVcIj48dGl0bGU+ZmlsZV90eXBlX2dvPC90aXRsZT48cGF0aCBkPVwiTS00Ni45MjYsODljLS42MjEsMC0uNzc3LS4zMTEtLjQ2Ni0uNzc3bDMuMjYyLTQuMTk0YTIuMjI1LDIuMjI1LDAsMCwxLDEuNzA4LS43NzdIMTMuMDI2Yy42MjEsMCwuNzc3LjQ2Ni40NjYuOTMybC0yLjY0LDQuMDM4YTIuMzY3LDIuMzY3LDAsMCwxLTEuNTUzLjkzMlpcIiBzdHlsZT1cImZpbGw6IzAwYWNkN1wiLz48cGF0aCBkPVwiTS03MC4zNzksMTAzLjI4NWMtLjYyMSwwLS43NzctLjMxMS0uNDY2LS43NzdsMy4yNjItNC4xOTRhMi4yMjUsMi4yMjUsMCwwLDEsMS43MDgtLjc3N0g0Ljk1YS43MTQuNzE0LDAsMCwxLC43NzcuOTMyTDQuNDg0LDEwMi4yYTEuMzU4LDEuMzU4LDAsMCwxLTEuNC45MzJaXCIgc3R5bGU9XCJmaWxsOiMwMGFjZDdcIi8+PHBhdGggZD1cIk0tMzIuNzkyLDExNy41NzRjLS42MjEsMC0uNzc3LS40NjYtLjQ2Ni0uOTMybDIuMTc0LTMuODgzYTIuMDYsMi4wNiwwLDAsMSwxLjU1My0uOTMySDEuNTMzYy42MjEsMCwuOTMyLjQ2Ni45MzIsMS4wODdsLS4zMTEsMy43MjhhMS4xNjcsMS4xNjcsMCwwLDEtMS4wODcsMS4wODdaXCIgc3R5bGU9XCJmaWxsOiMwMGFjZDdcIi8+PHBhdGggZD1cIk0xMjguNDI2LDg2LjJjLTkuNzg1LDIuNDg1LTE2LjQ2NCw0LjM0OS0yNi4wOTMsNi44MzQtMi4zMy42MjEtMi40ODUuNzc3LTQuNS0xLjU1My0yLjMzLTIuNjQtNC4wMzgtNC4zNDktNy4zLTUuOS05Ljc4NS00LjgxNS0xOS4yNTktMy40MTctMjguMTEyLDIuMzMtMTAuNTYxLDYuODM0LTE2LDE2LjkyOS0xNS44NDIsMjkuNTEuMTU1LDEyLjQyNSw4LjcsMjIuNjc2LDIwLjk2OCwyNC4zODUsMTAuNTYxLDEuNCwxOS40MTQtMi4zMywyNi40LTEwLjI1MSwxLjQtMS43MDgsMi42NC0zLjU3Miw0LjE5NC01Ljc0N0g2OC4xNjNjLTMuMjYyLDAtNC4wMzgtMi4wMTktMi45NTEtNC42NTksMi4wMTktNC44MTUsNS43NDctMTIuODkxLDcuOTIxLTE2LjkyOWE0LjE5NCw0LjE5NCwwLDAsMSwzLjg4My0yLjQ4NWg1Ni41MzVjLS4zMTEsNC4xOTQtLjMxMSw4LjM4Ny0uOTMyLDEyLjU4MWE2Ni4yMzksNjYuMjM5LDAsMCwxLTEyLjczNiwzMC40NDJDMTA4LjcsMTU5LjUxLDk0LjEsMTY4LjY3Myw3NS42MTgsMTcxLjE1OGMtMTUuMjIxLDIuMDE5LTI5LjM1NS0uOTMyLTQxLjc4LTEwLjI1MWE0OC43ODUsNDguNzg1LDAsMCwxLTE5LjcyNS0zNC40OGMtMi4wMTktMTYuOTI5LDIuOTUxLTMyLjE1LDEzLjItNDUuNTA4QzM4LjM0Miw2Ni40NzUsNTIuOTQyLDU3LjMxMiw3MC44LDU0LjA1YzE0LjYtMi42NCwyOC41NzgtLjkzMiw0MS4xNTksNy42MWE0OC42ODYsNDguNjg2LDAsMCwxLDE4LjAxNywyMS45QzEzMC45MTEsODQuOTU4LDEzMC4yODksODUuNzM1LDEyOC40MjYsODYuMlpcIiBzdHlsZT1cImZpbGw6IzAwYWNkN1wiLz48cGF0aCBkPVwiTTE3OS44MzUsMTcyLjA5Yy0xNC4xMzQtLjMxMS0yNy4wMjUtNC4zNDktMzcuOS0xMy42NjhhNDguNzExLDQ4LjcxMSwwLDAsMS0xNi43NzQtMjkuOTc2Yy0yLjgtMTcuNTUxLDIuMDE5LTMzLjA4MiwxMi41ODEtNDYuOTA1LDExLjMzOC0xNC45MSwyNS4wMDYtMjIuNjc2LDQzLjQ4OC0yNS45MzgsMTUuODQyLTIuOCwzMC43NTMtMS4yNDMsNDQuMjY1LDcuOTIxLDEyLjI3LDguMzg3LDE5Ljg4LDE5LjcyNSwyMS45LDM0LjYzNSwyLjY0LDIwLjk2OC0zLjQxNywzOC4wNTItMTcuODYxLDUyLjY1MmE3MS4xNyw3MS4xNywwLDAsMS0zNy4yNzYsMTkuODhDMTg4LjA2NywxNzEuNDY5LDE4My44NzQsMTcxLjYyNCwxNzkuODM1LDE3Mi4wOVpNMjE2LjgsMTA5LjM0M2E0NC43LDQ0LjcsMCwwLDAtLjQ2Ni01LjEyNWMtMi44LTE1LjM3Ni0xNi45MjktMjQuMDc0LTMxLjY4NC0yMC42NTctMTQuNDQ0LDMuMjYyLTIzLjc2MywxMi40MjUtMjcuMTgsMjcuMDI1YTI1LjU3OSwyNS41NzksMCwwLDAsMTQuMjg5LDI5LjM1NWM4LjU0MiwzLjcyOCwxNy4wODUsMy4yNjIsMjUuMzE3LS45MzJDMjA5LjM0NSwxMzIuNjQsMjE2LjAyNCwxMjIuNywyMTYuOCwxMDkuMzQzWlwiIHN0eWxlPVwiZmlsbDojMDBhY2Q3XCIvPjwvc3ZnPmAsXG5cdFwiR3JhZGxlXCI6IGA8cGF0aCBkPVwiTTEzLjUsNi45NjVoNy45MjNsNCw2Ljg4N0gyOS45OEExNC4xLDE0LjEsMCwwLDAsMTEuMDI0LDIuOTMyTDEzLjUsNi45NjVcIiBzdHlsZT1cImZpbGw6IzAwNjUzM1wiLz48cGF0aCBkPVwiTTI1LjYyOCwxOGwtNC4yMDksNy4yNTJIMTAuODA2TDUuNSwxNi4xMDgsOS43MzksOC44LDcuNCw0Ljk4MUExNC4wMywxNC4wMywwLDEsMCwzMCwxOEgyNS42MjhcIiBzdHlsZT1cImZpbGw6IzgyYjgxNlwiLz48cGF0aCBkPVwiTTIxLjA2MSwxNS45NjNhNS4wMjYsNS4wMjYsMCwxLDEtNS4wMjYtNSw1LjAxMyw1LjAxMywwLDAsMSw1LjAyNiw1XCIgc3R5bGU9XCJmaWxsOiMwMDY1MzJcIi8+YCxcblx0XCJHcmFwaFFMXCI6IGA8cmVjdCB4PVwiLTAuNDNcIiB5PVwiMTIuNTM0XCIgd2lkdGg9XCIyMi45MDFcIiBoZWlnaHQ9XCIxLjE4N1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNS44NTggMTYuMTA3KSByb3RhdGUoLTU5Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiNC41NDVcIiB5PVwiMjEuMTYyXCIgd2lkdGg9XCIyMi45MDJcIiBoZWlnaHQ9XCIxLjE4N1wiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCIxMC40M1wiIHk9XCIxOC4wMDhcIiB3aWR0aD1cIjEuMTg3XCIgaGVpZ2h0PVwiMTMuMjI3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0xNS44MTIgMjEuODU3KSByb3RhdGUoLTU5Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiMjAuMzgxXCIgeT1cIjAuNzcxXCIgd2lkdGg9XCIxLjE4N1wiIGhlaWdodD1cIjEzLjIyN1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSg0LjA5MiAyMS44NTYpIHJvdGF0ZSgtNTkuOTk5KVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCI0LjQxMlwiIHk9XCI2Ljc4N1wiIHdpZHRoPVwiMTMuMjI3XCIgaGVpZ2h0PVwiMS4xODdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTIuMjEzIDYuNTAyKSByb3RhdGUoLTMwLjAwMSlcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiMjAuMzg5XCIgeT1cIjEuNjc3XCIgd2lkdGg9XCIxLjE4N1wiIGhlaWdodD1cIjIyLjkwMVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMy43NTMgMTIuMjUpIHJvdGF0ZSgtMzAuMDAxKVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCI1LjQ1NFwiIHk9XCI5LjM4NlwiIHdpZHRoPVwiMS4xODdcIiBoZWlnaHQ9XCIxMy4yMjhcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiMjUuMzZcIiB5PVwiOS4zODZcIiB3aWR0aD1cIjEuMTg3XCIgaGVpZ2h0PVwiMTMuMjI4XCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjE1LjIyMlwiIHk9XCIyNC4wOTdcIiB3aWR0aD1cIjExLjUwNFwiIGhlaWdodD1cIjEuMDM3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC05LjQ5OCAxMy43ODUpIHJvdGF0ZSgtMzAuMDAxKVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxwYXRoIGQ9XCJNMjguMTIsMjNhMi41LDIuNSwwLDEsMS0uOTE1LTMuNDExQTIuNSwyLjUsMCwwLDEsMjguMTIsMjNcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cGF0aCBkPVwiTTguMiwxMS41YTIuNSwyLjUsMCwxLDEtLjkxNS0zLjQxMUEyLjUsMi41LDAsMCwxLDguMiwxMS41XCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHBhdGggZD1cIk0zLjg4LDIzYTIuNSwyLjUsMCwxLDEsMy40MTEuOTE1QTIuNSwyLjUsMCwwLDEsMy44OCwyM1wiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxwYXRoIGQ9XCJNMjMuOCwxMS41YTIuNSwyLjUsMCwxLDEsMy40MTEuOTE1QTIuNSwyLjUsMCwwLDEsMjMuOCwxMS41XCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHBhdGggZD1cIk0xNiwzMGEyLjUsMi41LDAsMSwxLDIuNS0yLjVBMi40OTMsMi40OTMsMCwwLDEsMTYsMzBcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cGF0aCBkPVwiTTE2LDYuOTkxYTIuNSwyLjUsMCwxLDEsMi41LTIuNSwyLjQ5MywyLjQ5MywwLDAsMS0yLjUsMi41XCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+YCxcblx0XCJHcm9vdnlcIjogYDxwYXRoIGQ9XCJNNy40NTMsMjkuODY1YzAtLjA3NC40OTQtMS43MTcsMS4xLTMuNjUxQTIxLjgwOCwyMS44MDgsMCwwLDAsOS41LDIyLjZjLS4wNzktLjA1Ni0uMzUuMDQ1LS42LjIyNC0uNzY0LjUzOC0uOTIuNC0xLjQ5MS0xLjM1Ni0uNjE3LTEuOS0uNjM5LTIuMDkxLS4zMTctMi44MS4yMS0uNDcuMi0uNTc5LS4xNDctMS4yNzdhMy43NSwzLjc1LDAsMCwxLS4zNzctMS4wNDRjMC0uMjYtMS40MTMtMS40MzgtMy42NDctMy4wNEEzLjg0NSwzLjg0NSwwLDAsMSwyLDEyLjVhMTAuNDc3LDEwLjQ3NywwLDAsMSwyLjM3OC0uMDM5bDIuMzc4LjEuMjMyLS43NDFjLjk4MS0zLjEzLDIuNDYzLTUuOTU3LDMuMTIyLTUuOTU3LjEzNywwLC40MTYuMjY1LjYxOS41ODguMzMxLjUyNy4zNzYuODUzLjQzNSwzLjEyNmEyMy4wMTMsMjMuMDEzLDAsMCwwLC4xNjUsMi43MzljLjA1NS4xMS4yMjgtLjAzNS4zODUtLjMyMi4yLS4zNjcuNDEyLS40NjcuNzEtLjMzNXMuNDg1LjA0My42NDYtLjM0NWMuMjQyLS41ODIsMS40NTUtNC41MTMsMS40NTUtNC43MTcsMC0uMDY5LjI0LS45LjUzNC0xLjg0NnMuNjMxLTIuMDM2Ljc1MS0yLjQyNGMuMjEzLS42ODguMjQ2LS42MDcsMS41MjQsMy43MjYsMS4zMiw0LjQ3NCwyLjAzLDYuMTI0LDIuMzg1LDUuNTQ0LjI0OC0uNCwxLjU1LS40MjgsMS45MTQtLjAzNC4yMDcuMjI0LjMzOC4yMjEuNDUzLS4wMS4yMzctLjQ4LjgtLjQuOTUzLjE0LjExNy40MjMuMTQ3LjQyMy4zMiwwYS44MTIuODEyLDAsMCwxLC42OTItLjQ2NmMuMzg5LDAsLjUzOC4xNjQuNjY2LjczNWwuMTY1LjczNSwyLjU1OC0uMTgzQTExLjUyMSwxMS41MjEsMCwwLDEsMzAsMTIuNDY4YTIwLjc5LDIwLjc5LDAsMCwxLTIuMzIxLDEuODg5Yy0xLjI3Ny45Ni0yLjM0MiwxLjc3NS0yLjM2OCwxLjgxYTE3LjYwNywxNy42MDcsMCwwLDAsLjEyOCwxLjg2NywxMS4wNzUsMTEuMDc1LDAsMCwxLS41NDQsNS43MTMsNC4zMDgsNC4zMDgsMCwwLDEtMS4wMjEsMS40OWMtLjI3OC4xODYtLjUwNi40LS41MDYuNDg2cy4zLDEuMDc3LjY2LDIuMjEyQTkuNjgyLDkuNjgyLDAsMCwxLDI0LjU2OCwzMGMtLjEwOSwwLTIuNzU3LTIuMDctNi44NzYtNS4zNzNhMTEuMTQzLDExLjE0MywwLDAsMC0xLjY0My0xLjE4NGMtLjE3MSwwLTEuNjQ5LDEuMTMzLTUuOTg0LDQuNTg4LTIuNTE0LDItMi42MTIsMi4wNzMtMi42MTIsMS44MzVabTUuMTU4LTQuNzI3YzEuMzM3LTEuMDUxLDIuNjY0LTIuMDc4LDIuOTQ3LTIuMjgyLjQ4OC0uMzUxLjY1MS0uMjYzLDMuMDIxLDEuNjMxLDEuMzc4LDEuMSwyLjczNywyLjE3NCwzLjAyMSwyLjM4NHMuODY4LjY2NiwxLjMsMS4wMTNjLjQ5MS40Ljc0Mi40OTIuNjc0LjI1Ni0uNzctMi42MzQtLjc5My0yLjY3OC0xLjMyNy0yLjQ3Ni0uNjQ0LjI0NC0xLjA0My0uMDA2LTEuMjQ5LS43ODNhMS43MzksMS43MzksMCwwLDEsLjI0LTEuNDUxLDIuMzc3LDIuMzc3LDAsMCwwLS4yMjEtMi43MzEsNC4yODksNC4yODksMCwwLDEtLjY4Ni0xLjUzbC0uMjQxLTEuMDIzLS41MTcuNzFjLS42MzYuODczLTEuNDExLjkxOC0yLjA1OS4xMTlsLS40NzctLjU4OC0uNTU0Ljc2MmMtLjU1NS43NjMtMS4xOTQuODYyLTEuODQ0LjI4NC0uMTc5LS4xNTktLjI1OC0uMS0uMjU4LjJhMS4yNCwxLjI0LDAsMCwxLS4zNzUuNzc3Yy0uNjE5LjU3LTEuMjIzLjQxOS0xLjYzMy0uNDA5TDEyLDE5LjI0OWwtLjMuNzc1YTcuMDMyLDcuMDMyLDAsMCwxLS44NTMsMS40NzksMTMuODkxLDEzLjg5MSwwLDAsMC0xLjQ1NSwzLjY2M2MtLjUsMS42MjctLjksMy4wNDItLjksMy4xNDNzLjM4MS0uMTQxLjg0Ny0uNTM4LDEuOTQyLTEuNTgyLDMuMjc5LTIuNjMzWm0xMS4zNDMtMS4xMzFjMS4wMTUtMS4xNTQsMS4yNS0zLjI4OC44LTcuMjcxLS4zNzUtMy4zMjktLjU2Mi00LjQxOS0uNzg0LTQuNTY1LS4xNTQtLjEtLjE3Ny4wMS0uMDkxLjQyNi41NjIsMi43LjU5Myw0LjA1My4xLDQuNDM0LS4zMzcuMjYyLS42OTUtLjcxOS0uOTc2LTIuNjc1LS4yMTgtMS41MTUtLjQ0NS0yLjItLjYxNy0xLjg1YTMuMzU5LDMuMzU5LDAsMCwwLC4xNiwxLjA3LDI2LjcxOCwyNi43MTgsMCwwLDEsLjM5NCwzLjM4MSwyMS43NTcsMjEuNzU3LDAsMCwwLC4zNzUsMy4xNTFjLjMwOS45ODUuOC43NDcsMS4xMTgtLjU0cy4zNS0uNDI1LjA0NCwxLjA1NWMtLjMxNywxLjUzNi0xLjI2LDItMi4zNTIsMS4xNS0uMTc1LS4xMzYtLjIzNCwwLS4yMzQuNTU1YTQuOTg4LDQuOTg4LDAsMCwxLS4zLDEuNWwtLjMuNzY1LjQwOC4xMzlBMi4yNDcsMi4yNDcsMCwwLDAsMjMuOTU0LDI0LjAwN1pNOS4zNDYsMjEuNDY4YzIuMTE4LTEuMjMyLDIuNS0yLjY2OCwxLjc5My02LjgwNWEyMS45NDEsMjEuOTQxLDAsMCwxLS4zLTIuM2MwLTEuMDI5LS4yNTYtLjU1NC0uNDQ4LjgzMi0uMjU0LDEuODMyLTEuMDE2LDMuMzg5LTEuNjU3LDMuMzgzLS41NTctLjAwNS0uNzM4LS4yMS0uOTY4LTEuMDk0LS40MTMtMS41ODUuMDM3LTQuMDE4LDEuMTg0LTYuNDA2Ljg0LTEuNzQ5LDEuMy0xLjkwOCwxLjMtLjQ0OCwwLDIuMjc2LS43NzYsNS42MjUtMS4xODQsNS4xMTVhMy44MTQsMy44MTQsMCwwLDEsLjA2NS0yLjJjLjItLjcyLjE1Ny0xLjgxOC0uMDY2LTEuODE4LS4yNTksMC0uNzczLDEuOTEtLjg0MSwzLjEyNy0uMDYsMS4wNzYtLjAyMiwxLjMzOC4yMzEsMS42MTIuODg4Ljk2MiwyLjA1Mi0xLjk3MywyLjExMS01LjMyMy4wMzEtMS43NTktLjEzOC0yLjI1NC0uNjc0LTEuOTgyLS43ODEuNC0yLjg4Myw1Ljg4My0yLjg4Myw3LjUyMywwLDEuMjgzLjMxOSwyLjE4Ni44OCwyLjQ5MS45NTQuNTE5LDEuODc2LS40LDIuNTI5LTIuNTMxbC4yNzUtLjg5NFYxNC45N2MwLDEuNzU5LS41NjcsMi42ODYtMi4zNTcsMy44NTJhOC44OTMsOC44OTMsMCwwLDAtLjg1Mi42LDkuNzU4LDkuNzU4LDAsMCwwLC44OTIsMi41MzQsNS4yODMsNS4yODMsMCwwLDAsLjk2OS0uNDg0Wm0xMi43NjQtMi4xODRjLjIxMy0uNDc1LjI1LS45OTIuMi0yLjgxNy0uMDUtMS45ODYtLjEtMi4zMzctLjQ4Ni0zLjE0NC0uNjkxLTEuNDU4LTEuNTQ0LTEuMDg2LTEuMDQ1LjQ1NS4yNjUuODIuNTg5LjY4LjQ3NS0uMjA1LS4wOTEtLjcuMDc5LS43MjMuMzc1LS4wNDEuNTU2LDEuMjgxLjQxNiwzLjA1NS0uMjQyLDMuMDU1LS40NSwwLS41OS0uMzktLjg4My0yLjQ1OWE2Ljc1Miw2Ljc1MiwwLDAsMC0uMzYyLTEuNzE0Yy0uMjE3LDAtLjMxNC4zODgtLjE3OS43MThhMjguMjMsMjguMjMsMCwwLDEsLjQ1MiwyLjg1OWMuNDQxLDMuNTA3LDEuMDU3LDQuNzA3LDEuNjksMy4yOTNabS04LjM4LjA1NmEzLjM4NSwzLjM4NSwwLDAsMCwuMDk1LTEuMzNjLS4wNi0xLjAwOC0uMDk0LTEuMDgxLS4zNjQtLjc5LS4zODcuNDE5LS44LS4zNzUtLjk0NC0xLjgtLjEwNy0xLjA4Mi0uMTQtMS4wNjEuNjQtLjQxNS4xLjA4MS4zNDYtLjE5NC41NTMtLjYxMS4zNzctLjc2My41LTEuNjguMjI4LTEuNjgtLjA4MSwwLS4xNDcuMTM0LS4xNDcuMywwLC40MjktLjQuMzY4LS40OTQtLjA3NS0uMDUzLS4yNTgtLjE2Ni0uMTY3LS4zNjcuMy0uMTYuMzY5LS4zNTYuNjcxLS40MzQuNjcxcy0uMTg1LS4zLS4yMzctLjY3MWMtLjA5LS42NDYtLjEtLjY1LS4zLS4xMTNhLjk1MS45NTEsMCwwLDAtLjAxLjk2NCwxOC44MTgsMTguODE4LDAsMCwxLC41MjEsMy43OTFjMCwxLjE3NC44LDIuMSwxLjI2NywxLjQ2M1ptMi42ODgtMS41NTZhNy4wNTUsNy4wNTUsMCwwLDAsLjQxNi00LjI1OWMtLjIzNi0xLjE0MS0uNjQ1LTEuNTY4LTEuMjIyLTEuMjc1LS40MjkuMjE4LTEuMDgyLDIuNzQ2LTEuMDg0LDQuMiwwLDIuMjYyLDEuMDYsMy4wMTUsMS44OSwxLjMzN1ptLTEuMDA3LTEuNzkyYTMuNzcsMy43NywwLDAsMS0uMjktMS40MTZjMC0uNzQ1LjAyMi0uNzcyLjItLjMuMjIuNTg2LjYxMS42ODguNzYxLjJhMS4wMzUsMS4wMzUsMCwwLDAtLjA2NS0uNjU2Yy0uMjMyLS40NjktLjItMS4xMDcuMDQ5LTEuMTA3LjI4LDAsLjY3MiwxLjE1NC42NzIsMS45ODIsMCwuNjA5LS42MTMsMS44OTMtLjksMS44OTMtLjA3LDAtLjI2LS4yNjgtLjQyMi0uNlpNMTkuMzQ4LDE3LjdhNi40NDcsNi40NDcsMCwwLDAtLjE0MS00LjkxOGMtLjM1OC0uNzczLTEuMTUzLS45MDYtMS40NzktLjI0OGExMS42MDcsMTEuNjA3LDAsMCwwLS40ODksMy44OTVDMTcuNDc3LDE4LjM0OCwxOC43MTYsMTkuMSwxOS4zNDgsMTcuN1pNMTguMSwxNS41MjdhMi40OTIsMi40OTIsMCwwLDEtLjMxOC0xLjU2NWMuMDA4LS45MDkuMDMxLS45OTEuMTM1LS40NzIuMTUzLjc2NC40NzMsMS4wNTIuNzUzLjY3OS4xNzQtLjIzMS4xNjYtLjM0MS0uMDUtLjY3Ni0uMjg4LS40NDctLjM0NC0xLjA3OS0uMS0xLjA3OWE1LjAzNyw1LjAzNywwLDAsMSwxLjAxNywyLjI1YzAsLjQ4LS41NjQsMS4zMjctLjg4NCwxLjMyN0MxOC41MjcsMTUuOTkxLDE4LjI3NiwxNS43ODIsMTguMSwxNS41MjdabTguNjYyLTEuMzE4LDEuNTQ3LTEuMTc1LTEuNjU4LS4wMTJjLTEuNDg0LS4wMTEtMS42NTguMDQzLTEuNjU2LjUxYTExLjUzMiwxMS41MzIsMCwwLDAsLjIsMS44NTdjLjAxMSwwLC43MTYtLjUzNCwxLjU2Ny0xLjE4Wk02LjUzNSwxNGwuMTU4LS45NDlMNS4zLDEyLjk1NmMtLjc2NC0uMDUyLTEuMzg5LS4wMTItMS4zODkuMDg4YTE0LjEsMTQuMSwwLDAsMCwyLjQ0NywxLjkzNEM2LjM3MSwxNC45NjEsNi40NDgsMTQuNTIxLDYuNTM1LDE0Wm05LjUyNi0yLjk0MWExLjYyNCwxLjYyNCwwLDAsMSwuODE5LjZjLjE5Mi4zNDkuMjc2LjMyNi41NzMtLjE2My4xOTEtLjMxNS40NC0uNTcyLjU1My0uNTcycy4yLS4wNjYuMi0uMTQ2YzAtLjI3OC0yLjEyMi03LjMwNi0yLjItNy4zcy0yLjI3LDcuMzg2LTIuMzM3LDcuOTI1Yy0uMDI4LjIyNi4wNi4zMDkuMjMxLjIxOS4xNTItLjA4MS4zNjMuMDYzLjQ2OC4zMTkuMTcuNDE1LjI0LjM4Mi42NDQtLjMwNi4zODQtLjY1NC41NDQtLjc0MiwxLjA0OC0uNTc5WlwiIHN0eWxlPVwiZmlsbDojMzMzXCIvPjxwYXRoIGQ9XCJNMTQuNSwxMi4xNzVhLjg1Ljg1LDAsMCwxLS4xMTUtLjIuNzM3LjczNywwLDAsMC0uMTk0LS4yOS4yODEuMjgxLDAsMCwwLS4zLS4wNjFjLS4wODcuMDM1LS4xMTEuMDM5LS4xNS4wMjQtLjA2NS0uMDI2LS4wODktLjEwNi0uMDctLjI0Mi4wMjMtLjE2OS4yLS44MjUuNTQ4LTIuMDU0LjcxMS0yLjUsMS42NjYtNS42NDYsMS43NzItNS44MzkuMDEyLS4wMjEuMDEyLS4wMjEuMDI0LDAsLjA2My4xMTQuNDMyLDEuMjY2LjkzNywyLjkyMi42ODIsMi4yNCwxLjI1LDQuMjEsMS4yNSw0LjMzOSwwLC4wNzktLjA2LjEyNy0uMTg2LjE0Ny0uMTU3LjAyNi0uMzM5LjIxMi0uNTg3LjZhMS42NzQsMS42NzQsMCwwLDEtLjIyNi4zMWMtLjA0OC4wNDYtLjA1Mi4wNDgtLjEuMDQ4cy0uMDU2LDAtLjEtLjA0M2EuOTU4Ljk1OCwwLDAsMS0uMS0uMTQ0LDEuMjY4LDEuMjY4LDAsMCwwLS40MTQtLjQyMiwxLjUyNSwxLjUyNSwwLDAsMC0uNzM4LS4yODEuNDM0LjQzNCwwLDAsMC0uNC4xNTYsMi43MTgsMi43MTgsMCwwLDAtLjQxNi42Yy0uMjU3LjQyNS0uMzQ4LjUxMy0uNDQxLjQyNlpcIiBzdHlsZT1cImZpbGw6IzYzOThhYVwiLz48cGF0aCBkPVwiTTYuMjUyLDE0LjkyOGExOS4wNTUsMTkuMDU1LDAsMCwxLTIuMy0xLjgzOGMtLjAzMS0uMDM4LS4wMzQtLjA0NC0uMDI1LS4wNTdhMi43LDIuNywwLDAsMSwxLjE0LS4wODVjLjIzLjAxMiwxLjYxOS4xLDEuNjIxLjEwOHMtLjMsMS43NzktLjMyMSwxLjg4MUM2LjM1NywxNC45ODEsNi4zMzcsMTQuOTc5LDYuMjUyLDE0LjkyOFpcIiBzdHlsZT1cImZpbGw6IzYzOThhYVwiLz48cGF0aCBkPVwiTTI1LjE3NywxNS4zNUExNC4yMzksMTQuMjM5LDAsMCwxLDI1LDEzLjU2YS41NTMuNTUzLDAsMCwxLC4wNDQtLjI5Yy4wODEtLjE1MS4yNDUtLjIwNS43LS4yMy4yMjgtLjAxMywxLjI4MS0uMDE1LDIuMDI1LDBsLjUyMS4wMDhMMjcuMDI5LDE0Yy0xLjE0NC44NjctMS44MSwxLjM2OS0xLjgzNCwxLjM4Mi0uMDA2LDAtLjAxMi0uMDA2LS4wMTgtLjAyN2gwWlwiIHN0eWxlPVwiZmlsbDojNjM5OGFhXCIvPjxwYXRoIGQ9XCJNOC41MDYsMjguMjgxYzAtLjA3MS4xNDktLjYuNTI3LTEuODc4LjkwNS0zLjA1NywxLjMxOS00LjE2NSwxLjgyNy00Ljg5MmE3LjY2NCw3LjY2NCwwLDAsMCwuOTY5LTEuNzkyTDEyLDE5LjI5MmwuMjI1LjQ0OGMuMzk0Ljc4NC42MzIsMS4wMTEsMS4wNjIsMS4wMTZhMS4yMzksMS4yMzksMCwwLDAsMS4xLTEuMTM3YzAtLjEyNC4wNDQtLjI1MS4wODYtLjI1MWExLjExOSwxLjExOSwwLDAsMSwuMjI2LjE0LDEuMjcxLDEuMjcxLDAsMCwwLC42NjYuMy44NzkuODc5LDAsMCwwLC42MDktLjE0OCwyLjQ3LDIuNDcsMCwwLDAsLjcxMS0uNzY0Yy4xODctLjI1Mi4zNDctLjQ1OS4zNTQtLjQ1OXMuMTQzLjE1OS4zLjM1MmE1LjA5MSw1LjA5MSwwLDAsMCwuNDIyLjQ2NywxLjA0OSwxLjA0OSwwLDAsMCwxLjU0OS0uMDgsNi4xMTEsNi4xMTEsMCwwLDAsLjQ2Ny0uNTcyYy4xNjgtLjIyOC4zMDctLjQxLjMxLS40cy4wNjYuMjY5LjE0MS41ODQuMTY5LjY3LjIwOS43ODlhMy44MjYsMy44MjYsMCwwLDAsLjY0MiwxLjIzNCwyLjE3LDIuMTcsMCwwLDEsLjQ2NiwxLjI0NiwzLjA1MSwzLjA1MSwwLDAsMS0uMzUyLDEuNDQ3LDIuMDcsMi4wNywwLDAsMC0uMjY3LjkzNCwyLjAxNywyLjAxNywwLDAsMCwuMjEzLjg1MS43NzMuNzczLDAsMCwwLDEuMDY5LjQxMywxLjM1MSwxLjM1MSwwLDAsMSwuMzE2LS4wNjhjLjIsMCwuMzE1LjE5My41NDIuODgxLjE1Ny40NzQuNSwxLjYzNy41LDEuNjk1LDAsLjAzLS4wMTYuMDUxLS4wMzkuMDUxYTEuNDg2LDEuNDg2LDAsMCwxLS40MDctLjIyNGMtLjItLjE0NC0yLjYxMi0yLjAyOS0zLjQwOC0yLjY2My0yLjEyOC0xLjY5My0yLjgyOC0yLjIzMy0zLjE3MS0yLjQ0Ni0uMzctLjIzLS42MjItLjI4NS0uODI3LS4xNzctLjI1NC4xMzMtMy43MjYsMi44NDctNS43NTEsNC41QTEwLjg0NiwxMC44NDYsMCwwLDEsOC42NSwyOC4yNTFjLS4xNDkuMDgzLS4xNDMuMDgxLS4xNDMuMDNaXCIgc3R5bGU9XCJmaWxsOiM2Mzk4YWFcIi8+YCxcblx0XCJIYW1sXCI6IGA8cGF0aCBkPVwiTTE1LjMxMSwxNi4wNDMsMTMuNCwyOS43MjZhNi4zMjIsNi4zMjIsMCwwLDEtNS45NTYtMS4yNWwzLjEtMTMuMjY2TDQuNjksMy4zNGE4LjAzMSw4LjAzMSwwLDAsMSwzLjc5LS42NDZsNS4xNDQsOS43LDguOTE0LTcuNTgxczMsMS4wNDEsMy4yNywyLjA0MWwtMTAuNSw5LjE4NFpcIiBzdHlsZT1cImZpbGw6I2VjZGZhN1wiLz48cGF0aCBkPVwiTTI3LjAxNiwxNy40MTFhNC4yNDQsNC4yNDQsMCwwLDAtLjU0MS0uODEyLDUuNyw1LjcsMCwwLDAtMS40NTgtMS4xODcsNy4zMzEsNy4zMzEsMCwwLDAtMS42ODctLjc5MWwtLjIyOS0uMDYyLS4xODctLjA2MmMtLjEyNS0uMDQyLS4yMjktLjEtLjMzMy0uMTQ2YTEuMjgyLDEuMjgyLDAsMCwxLS40NTgtLjQxN0ExLjc1NCwxLjc1NCwwLDAsMSwyMiwxMi42NDJhMi41MTgsMi41MTgsMCwwLDEsLjEtLjM3NWMuMDQyLS4xMjUuMDgzLS4yNS4xMjUtLjRhMi42OTEsMi42OTEsMCwwLDAsLjA2Mi0uNmwuMS0uMDgzLDEuMjUtMS4wNDFjLjIyOS0uMTg3LjQ1OC0uNC42ODctLjU4M2EyLjIsMi4yLDAsMCwxLC4yMjkuMTQ2cy42NDYuMDYyLDEtLjkxNmwtLjE4Ny0uMTI1LjEyNS0uMS4zMTItLjI3MWEuNjEzLjYxMywwLDAsMCwuMjI5LS4zNzUuNTI5LjUyOSwwLDAsMC0uNDE3LjEyNWwtLjMzMy4yNS0uMjI5LjE2N0wyMi4xODQsNi40NzhjLjE0Ni0uMTI1LjI3MS0uMjI5LjQxNy0uMzU0bC42LS41NDEuMDYyLS4wNjJjLjA2Mi4wNDIuMS4wODMuMTY3LjEyNS4xNDYuMS4zMTIuMjA4LjQ1OC4yOTJsLjkxNi41Yy4yOTIuMTY3LjYuMzMzLjkxNi40NzlhMy4zMjMsMy4zMjMsMCwwLDAsLjQ3OS4yMDhjLjA4My4wMjEuMTY3LjA2Mi4yNS4wODMuMDQyLDAsLjEuMDIxLjE0Ni4wMjFoLjFhLjE1MS4xNTEsMCwwLDAsLjEyNS0uMDgzVjcuMTIzYS4wNzcuMDc3LDAsMCwxLC4wMjEtLjA2MlY2Ljk3N2EuMTA4LjEwOCwwLDAsMC0uMDQyLS4wODNjLS4wMjEtLjA0Mi0uMDYyLS4wODMtLjA4My0uMTI1YTEuNTksMS41OSwwLDAsMC0uMTg3LS4xODdjLS4xMjUtLjEyNS0uMjcxLS4yMjktLjQtLjMzMy0uMjcxLS4yMDgtLjU2Mi0uNC0uODU0LS41ODNhNy41NDUsNy41NDUsMCwwLDAtLjktLjUsMy4zMjMsMy4zMjMsMCwwLDAtLjQ3OS0uMjA4Yy0uMDgzLS4wMjEtLjE2Ny0uMDYyLS4yNzEtLjA4My0uMDQyLDAtLjEtLjAyMS0uMTY3LS4wMjFhLjMxLjMxLDAsMCwwLS4xMjUuMDIxLjUyMi41MjIsMCwwLDAtLjE2Ny4xLDEuNiwxLjYsMCwwLDAtLjM3NS4yMDhsLS42MjUuMzU0Yy0uMTg3LjE0Ni0uNC4zMTItLjU4My40NThsLS4yMDgtLjE0NnMtLjg3NS4wODMtLjU4My42NDZsLjA4My4wODNjLS44MzMuNjg3LTEuNjQ1LDEuNC0yLjQ1NywyLjA4My0uODMzLjcwOC0xLjY0NSwxLjQxNi0yLjQ3OCwyLjE0NWwtMS4yMjksMS4wODNhMS44NzgsMS44NzgsMCwwLDEtLjIwOC4xODdjLS4wNDItLjEyNS0uMS0uMjI5LS4xNDYtLjMzM2wtLjI5Mi0uNjI1LS41NjItMS4yNWMtLjM3NS0uODMzLS43NS0xLjY2Ni0xLjE0NS0yLjVMMTEuMjA5LDQuODk1bC0uMTg3LS4zNzVoLjI1cy4wODMtLjY4Ny0uNDE3LS44MTJhMS40LDEuNCwwLDAsMC0uMjA4LjAyMWMtLjE4Ny0uMzc1LS4zNTQtLjc1LS41NDEtMS4xMjVoMGwtLjA4My0uMzEyQS4zMy4zMywwLDAsMCw5LjksMi4xYS4zNTIuMzUyLDAsMCwwLS4xLS4wNDJjLS4wNjItLjAyMS0uMS0uMDIxLS4xNjctLjA0MkExLjI4MSwxLjI4MSwwLDAsMCw5LjM1NSwyYTQuMDU3LDQuMDU3LDAsMCwwLS41MjEuMDQyLDguNzY3LDguNzY3LDAsMCwwLTEuMDIuMTg3Yy0uMzMzLjA4My0uNjY2LjE2Ny0xLC4yNzFhMy4yNzIsMy4yNzIsMCwwLDAtLjQ3OS4xODdsLS4yNS4xMjVjLS4wNDIuMDIxLS4wODMuMDYyLS4xMjUuMDgzTDUuOSwyLjk1OGMtLjAyMS4wMjEtLjAyMS4wNDItLjA0Mi4wNjJ2LjA2MmgwVjMuMWEuMTY0LjE2NCwwLDAsMCwuMS4xMjVjLjA0Mi4wMjEuMDYyLjA0Mi4wODMuMDQyYTEuMzI3LDEuMzI3LDAsMCwxLC4xNDYuMDQyLDEuMTg4LDEuMTg4LDAsMCwwLC4yNzEuMDIxLDQuMzg0LDQuMzg0LDAsMCwwLC41MjEtLjA0MmMuMzMzLS4wNDIuNjg3LS4wODMsMS4wMi0uMTQ2bDEuMDItLjE2N2MuMTY3LS4wMjEuMzMzLS4wNjIuNTIxLS4xLjE0Ni4yOTIuMjkyLjYuNDM3LjktLjk1OC4wODMtMi40NTcuMjA4LTMuMzk1LjMxMi0uMS0uMTg3LS4xODctLjM1NC0uMjkyLS41NDFhLjEyNy4xMjcsMCwwLDAtLjE0Ni0uMDYyLjEwOC4xMDgsMCwwLDAtLjA2Mi4xNDZjLjA2Mi4xNjcuMTI1LjMxMi4xODcuNDc5YTEuMTY3LDEuMTY3LDAsMCwwLS41LjEyNUExLjgyOCwxLjgyOCwwLDAsMCw2LjQsNS42NDVhMy41NjcsMy41NjcsMCwwLDEsLjQ1OC0uMTI1bC40MzcsMSwxLjI1LDIuODMyLDEuMjcsMi44MzJjLjQxNy45MzcuODU0LDEuODc0LDEuMjkxLDIuODMyaDBhLjAyLjAyLDAsMCwwLC4wMjEuMDIxbC0uMTg3LjYyNS0uNSwxLjc0OWMtLjMxMiwxLjE2Ni0uNiwyLjM1My0uOSwzLjUyTDkuMTA1LDIyLjdsLS40MTcsMS43N2MtLjI5MiwxLjE4Ny0uNTYyLDIuMzUzLS45LDMuNTJhLjEyNS4xMjUsMCwwLDAsLjAyMS4wODMsMy4wNzYsMy4wNzYsMCwwLDAsLjYuNTYyLDYuMDQ4LDYuMDQ4LDAsMCwwLC42ODcuNDE3LDkuNCw5LjQsMCwwLDAsMS41LjYsNi45NzIsNi45NzIsMCwwLDAsMS42MjQuMjcxLDMuNzI4LDMuNzI4LDAsMCwwLC44MzMtLjA0Miw2LjU0Nyw2LjU0NywwLDAsMCwuODMzLS4xNjcuMjU0LjI1NCwwLDAsMCwuMTY3LS4xODd2LS4wMjFjLjIyOS0xLjE0NS40MTctMi4zMTIuNjI1LTMuNDU3bC41ODMtMy40NzhjLjE4Ny0xLjE2Ni40LTIuMzEyLjU4My0zLjQ3OC4wMjEtLjEyNS4wNDItLjI3MS4wNjItLjQuMDQyLjA0Mi4wNjIuMS4xLjE0NmE0LjEzNyw0LjEzNywwLDAsMCwuNzA4LjY0Niw3LjIxMiw3LjIxMiwwLDAsMCwxLjU4My44MzMsMTEuNzc0LDExLjc3NCwwLDAsMCwxLjY2Ni41LDEwLjE4MiwxMC4xODIsMCwwLDAsMS4xLjE4NywyLjYyMSwyLjYyMSwwLDAsMC0uMjUsMS4yMDguMTE1LjExNSwwLDAsMCwuMDYyLjFoLjAyMWE1LjE2NCw1LjE2NCwwLDAsMCwxLjI3LjQ3OSw0LjMzMyw0LjMzMywwLDAsMCwxLjM3NS4wNjIsMi42MjcsMi42MjcsMCwwLDAsMS4zMzMtLjU2MiwyLjgyNCwyLjgyNCwwLDAsMCwuODEyLTEuMTY2bC4wMjEtLjAyMVYyMS4xbC4wNjItLjU2MnYtLjAyMWE1LjQyNyw1LjQyNywwLDAsMCwuNjI1LS40MTcsMi43MSwyLjcxLDAsMCwwLC42NDYtLjcyOSwxLjgzMywxLjgzMywwLDAsMCwuMjUtMSwyLjU2MywyLjU2MywwLDAsMC0uMjkyLS45NThabS0uNC0xMC41Wm0tMS40NzktMS4xYTcuMTIsNy4xMiwwLDAsMSwuODMzLjU0MWMuMTI1LjEuMjcxLjE4Ny40LjMxMmExLjI1NywxLjI1NywwLDAsMSwuMTY3LjE2N2wuMDQyLjA0MmgtLjA0MmMtLjA4My0uMDIxLS4xNDYtLjA0Mi0uMjI5LS4wNjItLjE0Ni0uMDYyLS4zMTItLjEyNS0uNDU4LS4xODdhNy4xMzIsNy4xMzIsMCwwLDEtLjg3NS0uNDc5QTUuNjEsNS42MSwwLDAsMSwyNC4yLDUuNTJhMi41LDIuNSwwLDAsMS0uMjI5LS4yNWwuMzEyLjEyNWE2LjQsNi40LDAsMCwxLC44NTQuNDE3Wm0tMS40MTYtLjkxNi4wMjEuMDIxdi4wNDJhLjAyLjAyLDAsMCwwLS4wMjEtLjAyMVY0Ljg5NVpNOC44NzYsMi41NjJhNS4wMjEsNS4wMjEsMCwwLDEtLjkzNy4zMzMsNS4zNDcsNS4zNDcsMCwwLDEtLjk3OS4xNjcsNC4wMTMsNC4wMTMsMCwwLDEtLjUuMDIxLjc4MS43ODEsMCwwLDEtLjIyOS0uMDIxSDYuMTY5Yy4wMjEsMCwuMDIxLS4wMjEuMDQyLS4wMjEuMDYyLS4wNDIuMTQ2LS4wNjIuMjA4LS4xLjE0Ni0uMDYyLjMxMi0uMS40NTgtLjE2Ny4zMTItLjA4My42NDYtLjE2Ny45NzktLjIyOWE4LjQsOC40LDAsMCwxLC45NzktLjEyNUExLjU3NiwxLjU3NiwwLDAsMCw5LjE0NywyLjRhMS41MzYsMS41MzYsMCwwLDEtLjI3MS4xNjdabTE0LjQ1Myw3LjEtMS4yOTEsMS0xLjI5MSwxLjAyYy0uMzU0LjI5Mi0uNzA4LjU4My0xLjA2Mi44NTQuMDIxLS4wMjEuMDQyLS4wNjIuMDYyLS4wODMuMTY3LS4yMjkuMzMzLS40MzcuNS0uNjQ2LjM1NC0uNDE3LjY4Ny0uODU0LDEuMDYyLTEuMjVzLjc3MS0uNzkxLDEuMTY2LTEuMTQ1YTQuODcyLDQuODcyLDAsMCwxLC42NDYtLjVsLjE4Ny0uMTI1Yy4xODcuMTQ2LjQuMjkyLjU4My40MzctLjE2Ny4xNDYtLjM3NS4yOTItLjU2Mi40MzdaTTguMDY0LDcuMWwuMS4xYTUuNjMsNS42MywwLDAsMSwuNTgzLjY0NiwyLjIxLDIuMjEsMCwwLDEsLjM3NS43MjkuOTIxLjkyMSwwLDAsMS0uMDYyLjYyNWwtLjAyMS0uMDYyTDguMDY0LDcuMVptMS4wMiwyLjE2NmEuNzIuNzIsMCwwLDAsLjE0Ni0uMjUuODY2Ljg2NiwwLDAsMCwuMDQyLS40NThBMS43LDEuNywwLDAsMCw4LjksNy43MjdhNC4wMTUsNC4wMTUsMCwwLDAtLjk3OS0uOWwtLjIyOS0uNDc5Yy0uMTQ2LS4zMTItLjI5Mi0uNjI1LS40NTgtLjkxNi4zMTItLjA4My42ODctLjIwOCwxLjEtLjMxMkEyMC4zMTMsMjAuMzEzLDAsMCwxLDkuMzU1LDdhNy45NjMsNy45NjMsMCwwLDEsLjc3MSwyLjU0MWMuMDIxLjIwOCwwLC40MzcsMCwuNjY2czAsLjQ1OC4wMjEuNjg3YTcuNjA5LDcuNjA5LDAsMCwwLC4xNDYuOTU4TDkuMDg0LDkuMjY4Wk0xNCwyNi4yNDJhLjkuOSwwLDAsMS0uMTg3LjIwOC40LjQsMCwwLDEtLjMzMy4xLjM1OC4zNTgsMCwwLDEtLjIyOS0uMjI5Ljk4MS45ODEsMCwwLDEtLjA4My0uMzU0LDIuMjc1LDIuMjc1LDAsMCwxLC4wNDItLjc1LDIuODE2LDIuODE2LDAsMCwxLC4yMjktLjcwOCwxLjQ3OCwxLjQ3OCwwLDAsMSwuMjA4LS4yOTIuMzQxLjM0MSwwLDAsMSwuMjkyLS4xMjVjLjEsMCwuMjA4LjEuMjcxLjIwOGEuNzQuNzQsMCwwLDEsLjA4My4xODdsLS4yNSwxLjQ3OWMtLjAyMS4xLS4wMjEuMTg3LS4wNDIuMjcxWm0xLjIyOS03LjE4NS0uMzc1LDIuMTg3YTMuMzI5LDMuMzI5LDAsMCwwLS4xLS40MzdjLS4xLS40LS4yMjktLjc3MS0uMzU0LTEuMTQ1YTE1LjUzNywxNS41MzcsMCwwLDAtLjk1OC0yLjE2NmMuMjI5Ljc3MS41LDEuNS43NzEsMi4yNDkuMTQ2LjM3NS4yNzEuNzUuNCwxLjFsLjE4Ny41NjJjMCwuMDIxLjAyMS4wNjIuMDIxLjA4My0uMDYyLjMzMy0uMTI1LjY2Ni0uMTY3LDEuMDJsLS4zMTIsMS45Yy0uMDIxLS4wNDItLjAyMS0uMDgzLS4wNDItLjEyNWEuNDg2LjQ4NiwwLDAsMC0uMzEyLS4yOTIuNTI1LjUyNSwwLDAsMC0uNDE3LjEyNSwxLjk0NCwxLjk0NCwwLDAsMC0uMjcxLjMxMiwyLjAzNiwyLjAzNiwwLDAsMC0uMjcxLjc1LDIuMTMxLDIuMTMxLDAsMCwwLDAsLjgxMiwxLjAyMSwxLjAyMSwwLDAsMCwuMTQ2LjQuNDg2LjQ4NiwwLDAsMCwuMzMzLjI3MS40MjguNDI4LDAsMCwwLC4zNzUtLjE2N2MuMDQyLS4wNDIuMDgzLS4xLjEyNS0uMTQ2LS4xNDYuOTc5LS4zMTIsMS45NTgtLjQ1OCwyLjk1N2EyLjcyNywyLjcyNywwLDAsMS0uNTYyLjEyNWMtLjI1LjA0Mi0uNS4wNjItLjc1LjA4M2E1LjUzMSw1LjUzMSwwLDAsMS0xLjU0MS0uMTQ2LDcuODQ2LDcuODQ2LDAsMCwxLTEuNS0uNDc5LDMuNjI1LDMuNjI1LDAsMCwxLTEuMjI5LS44NTRjLjMxMi0xLjE0NS42NjYtMi4yOTEsMS4wMi0zLjQzNmwuNTQxLTEuNzI5LjUyMS0xLjc0OWMuMzU0LTEuMTY2LjcwOC0yLjMzMywxLjA0MS0zLjUuMTY3LS41ODMuMzEyLTEuMTY2LjQ3OS0xLjc0OWEzLjYyNiwzLjYyNiwwLDAsMCwuMTg3LTEuODMzdi0uMDIxYy0uMDIxLS4wMjEtLjA0Mi0uMDIxLS4wNDIsMGEzLjEwOSwzLjEwOSwwLDAsMC0uMjUuMjkyYy0uMjI5LS41MjEtLjQ3OS0xLjAyLS43MDgtMS41NDFhNC43NjUsNC43NjUsMCwwLDEtLjE2Ny0uNTgzLDcuMTY1LDcuMTY1LDAsMCwxLS4yMDgtMS4zMTJjLS4wMjEtLjIyOS0uMDIxLS40MzctLjAyMS0uNjY2cy4wMjEtLjQ1OCwwLS42ODdhNy42MjUsNy42MjUsMCwwLDAtLjgzMy0yLjYsMTIuNTg3LDEyLjU4NywwLDAsMC0xLjEtMS44MzNjLjY4Ny0uMTg3LDEuNDE2LS4zNzUsMi0uNDc5LjA4My4xODcuMTg3LjM1NC4yNzEuNTQxTDExLjkzOCw3LjZsMS4yNSwyLjQzNy42MjUsMS4yMDguMzEyLjZjLjA4My4xMjUuMTI1LjI3MS4yMDguMzc1bC0uODEyLjc1YS4wNjkuMDY5LDAsMCwwLDAsLjEuMDczLjA3MywwLDAsMCwuMS4wMjFjLjQzNy0uMzEyLjg3NS0uNjQ2LDEuMzEyLS45NzlsMS4zMTItMWMuODc1LS42NjYsMS43MjktMS4zMzMsMi41ODItMnMxLjcwOC0xLjM1NCwyLjU2Mi0yLjA0MWwuMDIxLS4wMjFhMjQuMzE2LDI0LjMxNiwwLDAsMCwxLjg3NCwxLjY0NSw2LjE2Miw2LjE2MiwwLDAsMC0uODc1LjU0MSw4Ljk0Myw4Ljk0MywwLDAsMC0xLjIyOSwxLjEyNSwxMi4yNzksMTIuMjc5LDAsMCwwLTEuMDQxLDEuMjkxLDExLjc3OCwxMS43NzgsMCwwLDAtLjY0NiwxYy0xLjI3LDEuMDQxLTIuNTIsMi4xLTMuNzI4LDMuMjA3YS4xMjguMTI4LDAsMCwwLS4wMjEuMTQ2LjEzOC4xMzgsMCwwLDAsLjE0Ni4wNDIsOS4xMzQsOS4xMzQsMCwwLDAtLjMxMiwxLjI1Yy0uMTI1LjU4My0uMjUsMS4xNjYtLjM1NCwxLjc0OVptOS4yMDUsMi43OTFhMi41MjcsMi41MjcsMCwwLDEtMS4wMi40NTgsMy43NjcsMy43NjcsMCwwLDEtMS4xODcuMDQyLDcuMzYxLDcuMzYxLDAsMCwxLTEuMTQ1LS4yMDgsMi4wMzcsMi4wMzcsMCwwLDEsLjE2Ny0xLjA0MWMuMTQ2LjAyMS4yNzEuMDIxLjQxNy4wNDJhLjExNC4xMTQsMCwwLDAsLjEyNS0uMDgzLjEyNC4xMjQsMCwwLDAtLjA4My0uMTY3aDBjLS4xLS4wNDItLjE4Ny0uMDYyLS4yOTItLjFhMi43NzEsMi43NzEsMCwwLDEsLjI5Mi0uNGMuMTI1LS4xMjUuMjUtLjI1LjM3NS0uMzU0YTMuOTkyLDMuOTkyLDAsMCwwLC44NTQuNCwyLjg4MSwyLjg4MSwwLDAsMCwxLjEyNS4xLDEuNTUsMS41NSwwLDAsMCwxLjAyLS41NDEsMS41MjQsMS41MjQsMCwwLDAsLjM1NC0uOTE2Ljg1Ljg1LDAsMCwxLC4wMjEuNCw0LjUxMSw0LjUxMSwwLDAsMS0uMDgzLjUyMWwtLjA2Mi4zMTJMMjUsMjAuNDk0YS45MTkuOTE5LDAsMCwwLS4zMzMuMzU0Ljc1MS43NTEsMCwwLDAsLjQ3OSwwYy4wMjEsMCwuMDIxLS4wMjEuMDQyLS4wMjEtLjAyMS4wNjItLjAyMS4xLS4wNDIuMTY3YTIuNTUyLDIuNTUyLDAsMCwxLS43MDguODU0Wk0yNi41LDE5LjExOWEyLjIsMi4yLDAsMCwxLS40NTguNjI1LDIuNjM4LDIuNjM4LDAsMCwxLS4yNzEuMjI5LDIuNTg1LDIuNTg1LDAsMCwwLS4wNjItLjU2MiwxLjUzNCwxLjUzNCwwLDAsMC0uMDgzLS4yOTIuNTMxLjUzMSwwLDAsMC0uMTg3LS4yNWgwYy0uMDIxLDAtLjA0MiwwLS4wNDIuMDIxaDBhMS45NSwxLjk1LDAsMCwxLS41NjIuNzcxLDEuNDI5LDEuNDI5LDAsMCwxLS44MTIuMjkyLDIuODU3LDIuODU3LDAsMCwxLS45MTYtLjEyNWMtLjMxMi0uMDgzLS42MjUtLjE4Ny0uOTM3LS4yOTJsLS4wNDItLjAyMWEuMi4yLDAsMCwwLS4xODcuMDQyYy0uMTY3LjIwOC0uMjkyLjQtLjQzNy42LS4xLjE2Ny0uMTg3LjMxMi0uMjcxLjQ3OS0uMzc1LS4xNDYtLjcyOS0uMjcxLTEuMS0uNDE3LS41MjEtLjIwOC0xLjA0MS0uNDE3LTEuNTItLjY2NmE3LjY0OCw3LjY0OCwwLDAsMS0xLjQtLjgxMiwyLjk0OSwyLjk0OSwwLDAsMS0uOTc5LTEuMDYydi0uMDIxYS40MDkuNDA5LDAsMCwwLS4xODctLjE4N2MwLS4wNDIuMDIxLS4xLjAyMS0uMTQ2YTcuMzcsNy4zNywwLDAsMCwuMS0xLjUyYzEuNjg3LTEuMTg3LDMuMzMyLTIuNDM3LDQuOTU3LTMuNzI4bC0uMDYyLjE4N2EzLjI3LDMuMjcsMCwwLDAtLjE0NiwxLjAyQTIuMDg5LDIuMDg5LDAsMCwwLDIyLjEyMiwxNS4xYTIuODI1LDIuODI1LDAsMCwwLC40NzkuMTg3bC4yNS4wNjIuMjA4LjA0MmE2LjY0NSw2LjY0NSwwLDAsMSwxLjU0MS42MjUsNi4xNTYsNi4xNTYsMCwwLDEsMS4zMTIuOTc5LDIuMjc1LDIuMjc1LDAsMCwxLC43MDgsMS4zMzMsMS41MSwxLjUxLDAsMCwxLS4xMjUuNzkxWlwiIHN0eWxlPVwiZmlsbDojM2YzZTI5XCIvPjxwYXRoIGQ9XCJNMTIuNjY3LDIzLjkwOWEyLjE2MSwyLjE2MSwwLDAsMC0uMzU0Ljc3MSwxLjU1NiwxLjU1NiwwLDAsMC0uMDYyLjQxN2wtLjAyMS40MTdhNC41MzMsNC41MzMsMCwwLDAsLjE0NiwxLjY2Niw3LjY0Nyw3LjY0NywwLDAsMCwuNjY2LDEuNTJjLS4wODMtLjI3MS0uMTg3LS41MjEtLjI3MS0uNzcxcy0uMTY3LS41MjEtLjIyOS0uNzkxYTUuODksNS44OSwwLDAsMS0uMS0xLjZsLjAyMS0uNDE3YTIuNTUyLDIuNTUyLDAsMCwxLC4wNDItLjQsMy4xMzcsMy4xMzcsMCwwLDEsLjI5Mi0uNzI5LDIuOTY3LDIuOTY3LDAsMCwxLC41MjEtLjYyNSwyLjU5MSwyLjU5MSwwLDAsMSwuNjY2LS40NzksMi43NiwyLjc2LDAsMCwwLTEuMzEyLDEuMDJaXCIgc3R5bGU9XCJmaWxsOiMzZjNlMjlcIi8+YCxcblx0XCJIYW5kbGViYXJzXCI6IGA8cGF0aCBkPVwiTTEyLjMsMTMuMWE0LjIzOCw0LjIzOCwwLDAsMSwyLjcyOC45QTQuNTkyLDQuNTkyLDAsMCwxLDE2LDE1LjEyN2E0LjE0NCw0LjE0NCwwLDAsMSwyLjAzOS0xLjc0Nyw0Ljc1Nyw0Ljc1NywwLDAsMSwzLjI4Ni4wMTksNy44MzMsNy44MzMsMCwwLDEsMi40NDMsMS41NThjLjU2OC41LDEuMDk0LDEuMDUsMS42NzksMS41MzNhMy40LDMuNCwwLDAsMCwxLjAxOS42MTQsMS40MiwxLjQyLDAsMCwwLDEuNDYtLjM3OS45NjUuOTY1LDAsMCwwLS4wNTUtMS4zMjMuNTQ1LjU0NSwwLDAsMC0uOC4xMDguNjU5LjY1OSwwLDAsMCwuMDUuNjg2LDEuMjIyLDEuMjIyLDAsMCwxLS42LS45MjYsMS4wMjIsMS4wMjIsMCwwLDEsLjY5MS0xLjAzMiwyLjAwNSwyLjAwNSwwLDAsMSwyLjMxMi42NjEsMy4yNTgsMy4yNTgsMCwwLDEsLjQ0LDIuMzA4LDIuNzYyLDIuNzYyLDAsMCwxLTEuMTM3LDEuODcyLDUuMDUxLDUuMDUxLDAsMCwxLTMuMDEzLjgsOC40ODgsOC40ODgsMCwwLDEtMi45MzItLjYzYy0xLjU1OC0uNjI2LTMuMDE2LTEuNDkyLTQuNjI1LTEuOTkyYTEzLjk3NywxMy45NzcsMCwwLDAtMS43LS4zNjNjLS40My4wMDctLjg2MS0uMDE1LTEuMjkuMDE1YTUuNjkyLDUuNjkyLDAsMCwwLTEuNTM0LjM0OWMtMS42MzYuNTA5LTMuMTE2LDEuNC00LjcsMi4wMjRhNy42MjUsNy42MjUsMCwwLDEtNC4yNDkuNDc0LDMuNzQsMy43NCwwLDAsMS0yLjEyNS0xLjE0QTIuODU2LDIuODU2LDAsMCwxLDIsMTYuNjY4YTIuNzIyLDIuNzIyLDAsMCwxLC41NTUtMS44NzQsMS45OTQsMS45OTQsMCwwLDEsMS42ODctLjY4LDEuNDI1LDEuNDI1LDAsMCwxLDEuMDYzLjUyLDEuMDQsMS4wNCwwLDAsMSwuMTIyLjkxMSwxLjQ1NywxLjQ1NywwLDAsMS0uNTU2LjY0NC42NDMuNjQzLDAsMCwwLC4wNTEtLjY4MS41NDcuNTQ3LDAsMCwwLS44MzEtLjA3OS45NzUuOTc1LDAsMCwwLS4xNTEsMS4xMSwxLjMzMSwxLjMzMSwwLDAsMCwxLjAzMi42MjMsMi4zMzIsMi4zMzIsMCwwLDAsMS42LS43QTI4LjUyNiwyOC41MjYsMCwwLDEsOS40LDE0LjA1Myw1LjI1MSw1LjI1MSwwLDAsMSwxMi4zLDEzLjFaXCIgc3R5bGU9XCJmaWxsOiNjMTk3NzBcIi8+YCxcblx0XCJIYXNrZWxsXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIwLjk5NlwiIHkxPVwiLTIwNi4wNTdcIiB4Mj1cIjAuOTUxXCIgeTI9XCItMjA2LjA1N1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDI1OS45NDEsIDAsIDAsIC0xODMuNDg3LCAtMjM3Ljk0MSwgLTM3NzkyLjc4OClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmYWJhMDlcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYjQyYzAxXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfaGFza2VsbDI8L3RpdGxlPjxwYXRoIGQ9XCJNMiwyNS44ODIsOC41ODgsMTYsMiw2LjExOEg2Ljk0MUwxMy41MjksMTYsNi45NDEsMjUuODgyWm02LjU4OCwwTDE1LjE3NywxNiw4LjU4OCw2LjExOGg0Ljk0MUwyNi43MDYsMjUuODgySDIxLjc2NWwtNC4xMTctNi4xNzYtNC4xMTgsNi4xNzZaTTI0LjUxLDIwLjExOGwtMi4yLTMuMjk0SDMwdjMuMjk0Wm0tMy4yOTQtNC45NDEtMi4yLTMuMjk0SDMwdjMuMjk0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPmAsXG5cdFwiSGF4ZVwiOiBgPHBhdGggZD1cIk0xNiw1LjUsNS41LDE2LDE2LDI2LjUsMjYuNSwxNiwxNiw1LjVcIiBzdHlsZT1cImZpbGw6I2Y2ODcxMlwiLz48cGF0aCBkPVwiTTIsMiwxNiw1LjUsNS41LDE2LDIsMlwiIHN0eWxlPVwiZmlsbDojZmFiMjBiXCIvPjxwYXRoIGQ9XCJNMzAsMiwyNi41LDE2LDE2LDUuNSwzMCwyXCIgc3R5bGU9XCJmaWxsOiNmNDcyMTZcIi8+PHBhdGggZD1cIk0zMCwzMCwxNiwyNi41LDI2LjUsMTYsMzAsMzBcIiBzdHlsZT1cImZpbGw6I2YyNWMxOVwiLz48cGF0aCBkPVwiTTIsMzAsNS41LDE2LDE2LDI2LjUsMiwzMFwiIHN0eWxlPVwiZmlsbDojZjg5YzBlXCIvPjxwYXRoIGQ9XCJNMTYsNS41LDIsMkg5bDcsMy41XCIgc3R5bGU9XCJmaWxsOiNmYmM3MDdcIi8+PHBhdGggZD1cIk0xNiw1LjUsMzAsMkgyM0wxNiw1LjVcIiBzdHlsZT1cImZpbGw6I2ZiYzcwN1wiLz48cGF0aCBkPVwiTTE2LDI2LjUsMzAsMzBIMjNsLTctMy41XCIgc3R5bGU9XCJmaWxsOiNmNjg3MTJcIi8+PHBhdGggZD1cIk0xNiwyNi41LDIsMzBIOWw3LTMuNVwiIHN0eWxlPVwiZmlsbDojZjI1YzE5XCIvPjxwYXRoIGQ9XCJNNS41LDE2LDIsMzBWMjNsMy41LTdcIiBzdHlsZT1cImZpbGw6I2ZmZjIwMFwiLz48cGF0aCBkPVwiTTUuNSwxNiwyLDJWOWwzLjUsN1wiIHN0eWxlPVwiZmlsbDojZmZmMjAwXCIvPjxwYXRoIGQ9XCJNMjYuNSwxNiwzMCwyVjlsLTMuNSw3XCIgc3R5bGU9XCJmaWxsOiNmMTQ3MWRcIi8+PHBhdGggZD1cIk0yNi41LDE2LDMwLDMwVjIzbC0zLjUtN1wiIHN0eWxlPVwiZmlsbDojZjE0NzFkXCIvPmAsXG5cdFwiSExTTFwiOiBgPHBvbHlnb24gcG9pbnRzPVwiOS41MjUgMjEuOTQ3IDcuNTYgMjEuOTQ3IDcuNTYgMTcuMSAzLjk1OCAxNy4xIDMuOTU4IDIxLjk0NyAyIDIxLjk0NyAyIDEwLjA0NCAzLjk1OCAxMC4wNDQgMy45NTggMTQuNzkyIDcuNTYgMTQuNzkyIDcuNTYgMTAuMDQ0IDkuNTI1IDEwLjA0NCA5LjUyNSAyMS45NDdcIiBzdHlsZT1cImZpbGw6Ymx1ZVwiLz48cG9seWdvbiBwb2ludHM9XCIxNi42OTIgMjEuOTQ3IDExLjUxMyAyMS45NDcgMTEuNTEzIDEwLjA0NCAxMy40NzIgMTAuMDQ0IDEzLjQ3MiAxOS43NzMgMTYuNjkyIDE5Ljc3MyAxNi42OTIgMjEuOTQ3XCIgc3R5bGU9XCJmaWxsOmJsdWVcIi8+PHBhdGggZD1cIk0xNy40NjIsMjEuNDkxVjE4LjgzNGEzLjY3NiwzLjY3NiwwLDAsMCwxLjE0Ni45MDksMi44MDksMi44MDksMCwwLDAsMS4yNDkuMywyLjA1LDIuMDUsMCwwLDAsLjY0Ni0uMDkyLDEuMzA5LDEuMzA5LDAsMCwwLC40NjEtLjI1MiwxLjAyOSwxLjAyOSwwLDAsMCwuMjc2LS4zODIsMS4yMzEsMS4yMzEsMCwwLDAsLjA5MS0uNDc4LDEuMywxLjMsMCwwLDAtLjE0NS0uNjIzLDEuOTA3LDEuOTA3LDAsMCwwLS40LS41MDYsNC4wNzcsNC4wNzcsMCwwLDAtLjYtLjQ0OHEtLjM0Ni0uMjE1LS43NDYtLjQzOWE0LjA0NSw0LjA0NSwwLDAsMS0xLjUxOS0xLjQxOSwzLjg4NCwzLjg4NCwwLDAsMS0uNS0yLjAyNiw0LjIzMiw0LjIzMiwwLDAsMSwuMjczLTEuNiwzLjAyLDMuMDIsMCwwLDEsLjc0NC0xLjEsMi45MzgsMi45MzgsMCwwLDEsMS4wODgtLjYzNCw0LjE2Nyw0LjE2NywwLDAsMSwxLjMxLS4yLDUuODE2LDUuODE2LDAsMCwxLDEuMi4xMTEsMy44LDMuOCwwLDAsMSwuOTY3LjM0NXYyLjQ4MmEyLjg1OSwyLjg1OSwwLDAsMC0uNDc2LS4zNjUsMy4yMTIsMy4yMTIsMCwwLDAtLjUzLS4yNjJBMy4xLDMuMSwwLDAsMCwyMS40NiwxMmEyLjc5NCwyLjc5NCwwLDAsMC0uNTEyLS4wNSwxLjk5NCwxLjk5NCwwLDAsMC0uNjA2LjA4NywxLjM0NywxLjM0NywwLDAsMC0uNDYxLjI0NSwxLjA5MiwxLjA5MiwwLDAsMC0uMjkxLjM3NywxLjE0NCwxLjE0NCwwLDAsMC0uMS40OTQsMS4yLDEuMiwwLDAsMCwuMTE1LjUzNiwxLjY1NywxLjY1NywwLDAsMCwuMzI4LjQ0OCwzLjQ2MSwzLjQ2MSwwLDAsMCwuNTE1LjQxNWMuMi4xMzYuNDMuMjc1LjY4Ni40MTlhNy4wOTQsNy4wOTQsMCwwLDEsLjkzNi42MzUsMy43MTIsMy43MTIsMCwwLDEsLjcxMy43NTksMy4yNjksMy4yNjksMCwwLDEsLjQ1NS45NjcsNC41NzMsNC41NzMsMCwwLDEsLjE1OCwxLjI2Niw0LjQzOSw0LjQzOSwwLDAsMS0uMjc3LDEuNjcyLDIuODg4LDIuODg4LDAsMCwxLS43NDksMS4xLDIuODIzLDIuODIzLDAsMCwxLTEuMS42LDQuNzQyLDQuNzQyLDAsMCwxLTEuMzI1LjE4Miw1LjQ3Niw1LjQ3NiwwLDAsMS0xLjM2MS0uMTY2QTMuNDEsMy40MSwwLDAsMSwxNy40NjIsMjEuNDkxWlwiIHN0eWxlPVwiZmlsbDpibHVlXCIvPjxwb2x5Z29uIHBvaW50cz1cIjMwIDIxLjk0NyAyNC44MjIgMjEuOTQ3IDI0LjgyMiAxMC4wNDQgMjYuNzggMTAuMDQ0IDI2Ljc4IDE5Ljc3MyAzMCAxOS43NzMgMzAgMjEuOTQ3XCIgc3R5bGU9XCJmaWxsOmJsdWVcIi8+YCxcblx0XCJIVE1MXCI6IGA8cG9seWdvbiBwb2ludHM9XCI1LjkwMiAyNy4yMDEgMy42NTUgMiAyOC4zNDUgMiAyNi4wOTUgMjcuMTk3IDE1Ljk4NSAzMCA1LjkwMiAyNy4yMDFcIiBzdHlsZT1cImZpbGw6I2U0NGYyNlwiLz48cG9seWdvbiBwb2ludHM9XCIxNiAyNy44NTggMjQuMTcgMjUuNTkzIDI2LjA5MiA0LjA2MSAxNiA0LjA2MSAxNiAyNy44NThcIiBzdHlsZT1cImZpbGw6I2YxNjYyYVwiLz48cG9seWdvbiBwb2ludHM9XCIxNiAxMy40MDcgMTEuOTEgMTMuNDA3IDExLjYyOCAxMC4yNDIgMTYgMTAuMjQyIDE2IDcuMTUxIDE1Ljk4OSA3LjE1MSA4LjI1IDcuMTUxIDguMzI0IDcuOTgxIDkuMDgzIDE2LjQ5OCAxNiAxNi40OTggMTYgMTMuNDA3XCIgc3R5bGU9XCJmaWxsOiNlYmViZWJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYgMjEuNDM0IDE1Ljk4NiAyMS40MzggMTIuNTQ0IDIwLjUwOSAxMi4zMjQgMTguMDQ0IDEwLjY1MSAxOC4wNDQgOS4yMjEgMTguMDQ0IDkuNjU0IDIyLjg5NiAxNS45ODYgMjQuNjU0IDE2IDI0LjY1IDE2IDIxLjQzNFwiIHN0eWxlPVwiZmlsbDojZWJlYmViXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljk4OSAxMy40MDcgMTUuOTg5IDE2LjQ5OCAxOS43OTUgMTYuNDk4IDE5LjQzNyAyMC41MDcgMTUuOTg5IDIxLjQzNyAxNS45ODkgMjQuNjUzIDIyLjMyNiAyMi44OTYgMjIuMzcyIDIyLjM3NCAyMy4wOTggMTQuMjM3IDIzLjE3NCAxMy40MDcgMjIuMzQxIDEzLjQwNyAxNS45ODkgMTMuNDA3XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuOTg5IDcuMTUxIDE1Ljk4OSA5LjA3MSAxNS45ODkgMTAuMjM1IDE1Ljk4OSAxMC4yNDIgMjMuNDQ1IDEwLjI0MiAyMy40NDUgMTAuMjQyIDIzLjQ1NSAxMC4yNDIgMjMuNTE3IDkuNTQ4IDIzLjY1OCA3Ljk4MSAyMy43MzIgNy4xNTEgMTUuOTg5IDcuMTUxXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJIVFRQXCI6IGA8ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9XCJhXCIgY3g9XCIxMi4yNzhcIiBjeT1cIjI0LjU1N1wiIHI9XCIxOC4zNzFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgLTAuMDAxLCAzNC4wMDEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZDNlOWZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMTU1XCIgc3RvcC1jb2xvcj1cIiNkM2U5ZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC43NVwiIHN0b3AtY29sb3I9XCIjNDA3NGFlXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzM2NDg2Y1wiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImJcIiBjeD1cIjEwLjY1N1wiIGN5PVwiMjYuNzQ2XCIgcj1cIjI2LjY2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIC0wLjAwMSwgMzQuMDAxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwLjE2NVwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImNcIiBjeD1cIi00NS4wNVwiIGN5PVwiOS4yODVcIiByPVwiNC4xMTVcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMjEuOTcxIDQxLjk0Mikgcm90YXRlKDE0My43MzQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJkXCIgY3g9XCItNDEuNDU2XCIgY3k9XCIzMi4xNTRcIiByPVwiNC4xMTVcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgzLjU3MSA4Ny4wNzUpIHJvdGF0ZSgxNDMuNzM0KSBzY2FsZSgxLjI5NylcIiB4bGluazpocmVmPVwiI2NcIi8+PHJhZGlhbEdyYWRpZW50IGlkPVwiZVwiIGN4PVwiLTQ4LjQ4NVwiIGN5PVwiMTMuMjM5XCIgcj1cIjQuMTE1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTIzLjA4NCA1NS40MTMpIHJvdGF0ZSgxNDMuNzM0KVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48cmFkaWFsR3JhZGllbnQgaWQ9XCJmXCIgY3g9XCItNDAuODgzXCIgY3k9XCIxNi4wMzZcIiByPVwiNC4xMTVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtMC44NywgMC42MzksIC0wLjYzOCwgLTAuODcsIC05LjM1MSwgNDcuNzA2KVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJnXCIgeDE9XCItNjYuNTAyXCIgeTE9XCIyLjIxOVwiIHgyPVwiLTY0LjYyNlwiIHkyPVwiNi43NDlcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjkzOSwgLTAuODc5LCAtMC42ODMsIC0wLjczLCA4NC44MSwgLTMzLjYyOClcIiB4bGluazpocmVmPVwiI2NcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiaFwiIHgxPVwiLTI2Ljc5MVwiIHkxPVwiMzkuMTU5XCIgeDI9XCItMjQuOTk5XCIgeTI9XCI0NC42ODNcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLjEzMSwgMC42MTMsIDAuNDc3LCAtMC44NzksIDIxLjY0OCwgNjkuMDcxKVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJpXCIgeDE9XCItNjMuMzg0XCIgeTE9XCI4LjE3N1wiIHgyPVwiLTYzLjU3XCIgeTI9XCI0LjY5XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC45MTgsIC0wLjg1OSwgLTAuNjY4LCAtMC43MTMsIDc3Ljg1NywgLTM2LjQ5MylcIiB4bGluazpocmVmPVwiI2NcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwialwiIHgxPVwiLTk5LjI1OVwiIHkxPVwiODkuNTQ1XCIgeDI9XCItOTguODI1XCIgeTI9XCI5My4wMjNcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtMS4yOCwgLTAuMTI2LCAtMC4wOTgsIDAuOTk1LCAtMTAxLjYzNywgLTkzLjAxNSlcIiB4bGluazpocmVmPVwiI2NcIi8+PHJhZGlhbEdyYWRpZW50IGlkPVwia1wiIGN4PVwiLTIwLjcxMlwiIGN5PVwiNTcuNjFcIiByPVwiMi44MzZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLCAtMC44NDMsIC0wLjcyMSwgMCwgMjYuNjI1LCAtMjEuNjk2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzcyOWZjZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzYjYxYTZcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJsXCIgY3g9XCItMjAuNzEyXCIgY3k9XCIzOS44NThcIiByPVwiMi44MzZcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyNi42MjUgNjMuMDk2KSByb3RhdGUoOTApIHNjYWxlKDAuODQzIDAuNzIxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzcyOWZjZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM1MDllMmZcIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9odHRwPC90aXRsZT48cGF0aCBkPVwiTTI4LjAyNiwxNC4yQTExLjg3NywxMS44NzcsMCwxLDEsMTYuMTQ5LDIuMzI1LDExLjg3OCwxMS44NzgsMCwwLDEsMjguMDI2LDE0LjJaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xNi4xNDksMjYuMzg2QTEyLjE4MywxMi4xODMsMCwxLDEsMjguMzMzLDE0LjIsMTIuMiwxMi4yLDAsMCwxLDE2LjE0OSwyNi4zODZabTAtMjMuNzU0QTExLjU3MSwxMS41NzEsMCwxLDAsMjcuNzIsMTQuMiwxMS41ODQsMTEuNTg0LDAsMCwwLDE2LjE0OSwyLjYzMlpcIiBzdHlsZT1cImZpbGw6IzM5Mzk2Y1wiLz48cGF0aCBkPVwiTTI3LjY5MywxMi40MjRoMGwtLjMyOC4zNzFhNyw3LDAsMCwwLS42NTYtLjY0NGwtLjUuMDc0LS40Ni0uNTE5di42NDNsLjM5NC4zLjI2Mi4zLjM1LS40Yy4wODguMTY1LjE3NS4zMy4yNjMuNXYuNDk1bC0uMzk0LjQ0NS0uNzIyLjUtLjU0Ni41NDUtLjM1LS40LjE3NS0uNDQ1LS4zNS0uNC0uNTkxLTEuMjYyLS41LS41NjlMMjMuNiwxMi4xbC4yLjcxOC4zNzEuNDIxYTE3LjA2OSwxNy4wNjksMCwwLDAsLjcsMS43ODMsOS45NzksOS45NzksMCwwLDAsMS4yNjgtLjF2LjM0N2wtLjUyNSwxLjI4Ny0uNDgxLjU0NC0uMzk0Ljg0M1YxOS4zM2wuMTMyLjU0NS0uMjE5LjI0Ny0uNDgyLjMtLjUuNDIxLjQxNi40Ny0uNTY5LjUuMTA5LjMyMS0uODUzLjk2NkgyMi4ybC0uNDgxLjNoLS4zMDd2LS40bC0uMTMtLjc5M2MtLjE2OS0uNS0uMzQ2LS45OTEtLjUyNS0xLjQ4NCwwLS4zNjQuMDIyLS43MjUuMDQ0LTEuMDg5bC4yMTktLjQ5NS0uMzA3LS41OTUuMDIyLS44MTctLjQxNi0uNDcuMjA4LS42OC0uMzM4LS4zODRIMTkuNmwtLjItLjIyMy0uNTkxLjM3Mi0uMjQtLjI3My0uNTQ3LjQ3TDE2LjkxMSwxNS4yN2wtLjQzNy0xLjA0LjM5NC0uNTkzLS4yMTktLjI0Ny40ODEtMS4xMzljLjM5NS0uNDkxLjgwNy0uOTYzLDEuMjI1LTEuNDM2bC43NDQtLjIuODMxLS4xLjU2OS4xNDkuODA5LjgxNi4yODQtLjMyMS4zOTMtLjA0OS43NDQuMjQ3SDIzLjNsLjM5NC0uMzQ3LjE3NS0uMjQ3LS4zOTQtLjI0Ny0uNjU2LS4wNDlhNi42LDYuNiwwLDAsMC0uNTY4LS43NDNsLS4yMTkuMS0uMDg4LjY0NC0uMzk0LS40NDUtLjA4Ny0uNS0uNDM3LS4zNDZoLS4xNzZsLjQzOC40OTUtLjE3NS40NDUtLjM1LjEuMjE5LS40NDUtLjM5NC0uMi0uMzQ5LS40LS42NTcuMTQ4LS4wODcuMi0uMzk0LjI0OC0uMjE5LjU0NS0uNTQ2LjI3Mi0uMjQxLS4yNzJIMTcuODNWOS40MjhsLjU2OS0uM2guNDM3bC0uMDg4LS4zNDZMMTguNCw4LjQzOGwuNTktLjEyNC4zMjgtLjM3MS4yNjItLjQ0NmguNDgybC0uMTMyLS4zNDYuMzA3LS4ydi40bC42NTYuMTQ4LjY1Ni0uNTQ0LjA0NC0uMjQ4LjU2OC0uNGE0LjM1Myw0LjM1MywwLDAsMC0uNjEyLjFWNS45NjNsLjIxOS0uNWgtLjIxOWwtLjQ4LjQ0NS0uMTMyLjI0OC4xMzIuMzQ3LS4yMTkuNTkzLS4zNS0uMi0uMzA2LS4zNDYtLjQ4Mi4zNDYtLjE3NS0uNzkyLjgzMS0uNTQ0di0uM2wuNTI1LS4zNDYuODMxLS4yLjU2OS4yLDEuMDQ5LjItLjI2Mi4zSDIyLjUxbC41NjkuNTk0LjQzNy0uNDk1LjEzMy0uMjE4YTE1LjUzLDE1LjUzLDAsMCwxLDIuNjM1LDMuMTQ3QTExLjQ1MiwxMS40NTIsMCwwLDEsMjcuNjkzLDEyLjQyNFpcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTYuODYxLDUuNTE3bC0uMDQ0LjMuMzA3LjIuNTI0LS4zNDYtLjI2Mi0uMy0uMzUuMi0uMTc0LS4wNVwiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xNy4zNDMsMy40ODhsLTEuMTM4LS40NDYtMS4zMTIuMTQ4LTEuNjE5LjQ0NS0uMzA2LjMsMS4wMDYuNjkzdi40bC0uMzk0LjQuNTI1LDEuMDQuMzQ5LS4yLjQzOC0uNjkzYTE1LjA1MywxNS4wNTMsMCwwLDAsMS45MjQtLjc0M2wuNTI1LTEuMzM3XCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTE4LjUyNCw3LjY0NywxOC4zNDksNy4ybC0uMzA3LjEuMDg4LjU0NC4zOTQtLjJcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTguNyw3LjU0N2wtLjA4OC41OTUuNDgxLS4xLjM1LS4zNDYtLjMwNi0uM2MtLjEtLjI3NC0uMjIxLS41MjktLjM1LS43OTJoLS4yNjJ2LjNsLjE3NC4ydi40NDVcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTIuMjI1LDE2Ljk1M2wtLjM1LS42OTMtLjY1Ni0uMTQ4LS4zNS0uOTQtLjg3NS4xLS43NDMtLjU0NC0uNzg4LjY5M3YuMTA5YTMsMywwLDAsMS0uNzQzLS4yMDlsLS4xNzUtLjQ5NVYxNC4yOGwtLjUyNS4wNDlxLjA2Ni0uNTIuMTMxLTEuMDM5SDYuODQ1bC0uMzA2LjQtLjMwNi4xNDhMNS44LDEzLjU4N2wtLjA0NC0uNTQ1LjA4OC0uNTk0LjY1Ni0uNDk1SDcuMDJsLjA4Ny0uMy42NTYuMTQ4LjQ4MS41OTUuMDg4LS45OTEuODMxLS42OTMuMzA2LS43NDMuNjEyLS4yNDcuMzUtLjQ5NS43ODctLjE0OS4zOTQtLjU5M0gxMC40MzJsLjc0NC0uMzQ3SDExLjdsLjc0NC0uMjQ4LjA4OC0uMy0uMjYzLS4yNDgtLjMwNi0uMS4wODgtLjMtLjIxOS0uNDQ1LS41MjUuMi4wODgtLjQtLjYxMi0uMzQ3TDEwLjMsNi44bC4wNDQuMy0uNDgxLjItLjMwNi42NDMtLjEzMS0uNTk0TDguNTk0LDdsLS4xMzEtLjQ0NSwxLjA5NC0uNjQ0LjQ4MS0uNDQ1LjA0NC0uNTQ0LS4yNjItLjE0OS0uMzUtLjA1LS4yMTkuNTQ1cy0uMzY2LjA3Mi0uNDYuMDk1QTEyLjUsMTIuNSwwLDAsMCw0LjYsMTMuMzcxYTYuNzg5LDYuNzg5LDAsMCwwLC40MDkuNzExbC45MTguNTQ0LjkxOC4yNDguMzk0LjUuNjEyLjQ0NS4zNS0uMDQ5LjI2Mi4xMTh2LjA4bC0uMzUuOTQtLjI2My40LjA4OC4yLS4yMTkuNzQyLjc4NywxLjQzNi43ODcuNjkzLjM1LjQ5NUw5LjYsMjEuOWwuMjYzLjU5M0w5LjYsMjMuNjM3cy0uMDIxLS4wMDcuMDEzLjEwN2E1LjI3OCw1LjI3OCwwLDAsMCwxLjQ4OC44MDlsLjE2MS0uMTIzLS4wODctLjI0Ny4zNS0uMzQ3LjEzMS0uMzQ3LjU2OS0uMi40MzctMS4wODktLjEzMS0uMy4zMDYtLjQ0NS42NTYtLjE0OS4zNS0uNzkyLS4wODgtLjk5LjUyNS0uNzQzLjA4OC0uNzQzYy0uNzE4LS4zNTYtMS40My0uNzIzLTIuMTQzLTEuMDg5XCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTExLjI2Myw1LjcxNWwuNDM3LjNoLjM1VjUuNjY2bC0uNDM3LS4yLS4zNS4yNDdcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTAuMTI2LDUuMzE5bC0uMjE5LjU0NGguNDM4bC4yMTktLjVjLjE4OS0uMTMzLjM3Ni0uMjY4LjU2OC0uNGwuNDM4LjE0OS44NzUuNTk0LjQzOC0uNC0uNDgyLS4yLS4yMTktLjQ0Ni0uODMxLS4xLS4wNDQtLjI0OC0uMzk0LjEtLjE3NS4zNDYtLjIxOS0uNDQ2LS4wODcuMi4wNDQuNS0uMzUuM1wiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xMS43LDQuMDgxbC4yMTktLjIuNDM4LS4xYTYuOSw2LjksMCwwLDEsLjkxOC0uMzQ3bC0uMTc0LS4zLS41NjUuMDgxLS4yNjcuMjY2LS40NC4wNjQtLjM5MS4xODQtLjE5LjA5Mi0uMTE2LjE1NS41NjguMVwiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xMi40NDQsOC43ODVsLjI2My0uNC0uMzk0LS4zLjEzMS42OTNcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTYuMTQ5LDI1Ljc4M0ExMS41OCwxMS41OCwwLDEsMSwyNy43MjksMTQuMiwxMS41OTMsMTEuNTkzLDAsMCwxLDE2LjE0OSwyNS43ODNabTAtMjIuNTQ4QTEwLjk2OCwxMC45NjgsMCwxLDAsMjcuMTE3LDE0LjIsMTAuOTgsMTAuOTgsMCwwLDAsMTYuMTQ5LDMuMjM1WlwiIHN0eWxlPVwib3BhY2l0eTowLjM5NTYwNDQwMTgyNjg1ODU7aXNvbGF0aW9uOmlzb2xhdGU7ZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNNS41NDEsMTAuMjQxYTQuMTE1LDQuMTE1LDAsMSwwLDYuNjM2LTQuODY2aDBBNC4xMTUsNC4xMTUsMCwwLDAsNS41NCwxMC4yNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTcuODM2LDguNTU4YTEuMjY4LDEuMjY4LDAsMSwwLDIuMDQ2LTEuNWgwYTEuMjY4LDEuMjY4LDAsMCwwLTIuMDQ2LDEuNVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE3Ljk1MiwyNC44YTUuMzM3LDUuMzM3LDAsMSwwLDguNjA3LTYuMzEydjBBNS4zMzcsNS4zMzcsMCwwLDAsMTcuOTUsMjQuOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTIwLjkyOCwyMi42MTZhMS42NDUsMS42NDUsMCwxLDAsMi42NTMtMS45NDZoMGExLjY0NSwxLjY0NSwwLDAsMC0yLjY1MywxLjk0NlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTQuODU5LDE4LjQ5M0E0LjExNSw0LjExNSwwLDEsMCwxMS41LDEzLjYyNmgwYTQuMTE1LDQuMTE1LDAsMCwwLTYuNjM2LDQuODY2WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxwYXRoIGQ9XCJNNy4xNTQsMTYuODA5YTEuMjY4LDEuMjY4LDAsMSwwLDIuMDQ2LTEuNWgwYTEuMjY4LDEuMjY4LDAsMCwwLTIuMDQ2LDEuNVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTEyLjQwOCwxMC4yNjlBNC40NDEsNC40NDEsMCwxLDAsMTkuNTcsNS4wMTZoMGE0LjQ0MSw0LjQ0MSwwLDEsMC03LjE2Miw1LjI1M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48cGF0aCBkPVwiTTE0Ljg4NSw4LjQ1MmExLjM2OSwxLjM2OSwwLDEsMCwyLjIwOC0xLjYxOWgwYTEuMzY5LDEuMzY5LDAsMSwwLTIuMjA4LDEuNjE5WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTIuNjgsMjYuMjM4YTMuODMsMy44MywwLDAsMS0yLjkwOS0xLjA4N2MtMS4xMzMtMS4yMS0xLjItMy4yNTUtLjItNS43NTdhMjEuNTQyLDIxLjU0MiwwLDAsMSw1LjMwNy03LjMyNkMyMC4wNjQsNy4yMTUsMjUuOTQ1LDUuMzU2LDI4LjI3LDcuODM5YzEuMTMzLDEuMjExLDEuMiwzLjI1NS4yLDUuNzU3YTIxLjU1MywyMS41NTMsMCwwLDEtNS4zMDgsNy4zMjZBMjEuNTUxLDIxLjU1MSwwLDAsMSwxNS41LDI1LjczMyw5LjIyOSw5LjIyOSwwLDAsMSwxMi42OCwyNi4yMzhaTTI1LjM0Miw3LjI4Yy0yLjcsMC02LjYsMS45MDgtMTAuMSw1LjE4M0EyMSwyMSwwLDAsMCwxMC4wNzEsMTkuNmMtLjkyMSwyLjMtLjg4Nyw0LjEzOC4wOTQsNS4xODdzMi44MTcsMS4yLDUuMTY5LjQzN2EyMSwyMSwwLDAsMCw3LjQ2LTQuNjkyLDIxLDIxLDAsMCwwLDUuMTc1LTcuMTMyYy45MjEtMi4zLjg4OC00LjEzOC0uMDk1LTUuMTg3QTMuMzQsMy4zNCwwLDAsMCwyNS4zNDIsNy4yOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNnKVwiLz48cGF0aCBkPVwiTTIxLjY4MSwyMi4wOTRhMjAuNjMzLDIwLjYzMywwLDAsMS05LjMzOS0yLjc1OUM2LjEsMTUuOTUsMi40NzMsMTAuOTU3LDQuMDk0LDcuOTY4Yy43OS0xLjQ1OCwyLjctMi4xNzUsNS40LTIuMDEyQTIxLjU0MiwyMS41NDIsMCwwLDEsMTguMTIsOC42NzRhMjEuNTQ1LDIxLjU0NSwwLDAsMSw2Ljk4Nyw1Ljc0NmMxLjYsMi4xNjcsMi4wNTEsNC4xNjMsMS4yNjEsNS42MjFDMjUuNjIyLDIxLjQxNiwyMy45MTUsMjIuMDk0LDIxLjY4MSwyMi4wOTRaTTguNzU5LDYuNDc0Yy0yLjEsMC0zLjU3Mi42MTItNC4xOSwxLjc1MUMzLjExNywxMC45LDYuNzIsMTUuNjc0LDEyLjYsMTguODZzMTEuODQzLDMuNiwxMy4yOTQuOTI0Yy42ODUtMS4yNjMuMjUxLTMuMDU0LTEuMjItNS4wNDJhMjEsMjEsMCwwLDAtNi44MS01LjU5M0EyMSwyMSwwLDAsMCw5LjQ1OSw2LjVROS4xLDYuNDc0LDguNzU5LDYuNDc0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2gpXCIvPjxwYXRoIGQ9XCJNMTAsMjQuMDc4YTMuNzU3LDMuNzU3LDAsMCwxLTIuODUxLTEuMDY1Yy0xLjExLTEuMTg3LTEuMTgxLTMuMTg5LS4yLTUuNjM5YTIxLjA2MiwyMS4wNjIsMCwwLDEsNS4xODktNy4xNjNjNS4wNzMtNC43NDcsMTAuODMtNi41NjMsMTMuMS00LjEzMmgwYzIuMjc1LDIuNDMxLjA4Myw4LjA1My00Ljk5LDEyLjhhMjEuMDU5LDIxLjA1OSwwLDAsMS03LjQ5MSw0LjdBOS4wMjQsOS4wMjQsMCwwLDEsMTAsMjQuMDc4Wk0yMi4zNzMsNS41NTNjLTIuNjMsMC02LjQzOSwxLjg2NC05Ljg1Niw1LjA2MkEyMC41LDIwLjUsMCwwLDAsNy40NjMsMTcuNThjLS45LDIuMjM5LS44NjYsNC4wMzQuMDksNS4wNTVzMi43NDUsMS4xNzIsNS4wMzguNDI0YTIwLjUxMywyMC41MTMsMCwwLDAsNy4yODQtNC41ODJjNC43NjYtNC40Niw2Ljk5NC05Ljg1Myw0Ljk2NS0xMi4wMmgwQTMuMjU2LDMuMjU2LDAsMCwwLDIyLjM3Myw1LjU1M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNpKVwiLz48cGF0aCBkPVwiTTE3LjUxMiwxOS40MTNjLS44NiwwLTEuNzQ4LS4wNDMtMi42NTktLjEzM0M3Ljc4NCwxOC41ODQsMi41MDcsMTUuMzg4LDIuODQsMTJoMGMuMzMzLTMuMzgzLDYuMTMzLTUuNDksMTMuMi00Ljc5MXMxMi4zNDUsMy44OTIsMTIuMDEyLDcuMjc1QzI3Ljc2MywxNy40MzYsMjMuMzI0LDE5LjQxMywxNy41MTIsMTkuNDEzWk0zLjM3OCwxMi4wNTdjLS4zLDMuMDMxLDQuODczLDYuMDMsMTEuNTI4LDYuNjg2czEyLjMxMi0xLjI3NywxMi42MTEtNC4zMDhTMjIuNjQ0LDguNDA2LDE1Ljk4OCw3Ljc1LDMuNjc3LDkuMDI3LDMuMzc4LDEyLjA1N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNqKVwiLz48cGF0aCBkPVwiTTYuMjUxLDI5Ljk2Nmg2LjY3NFYyMC44MDloMi45ODFMOS41NDgsMTEuNDM0LDMuMjk1LDIwLjc4MmwyLjk1OC4wMzFaXCIgc3R5bGU9XCJmaWxsOnVybCgjaylcIi8+PHBhdGggZD1cIk0xMi45MjQsMzAuMDQ1SDYuMjUxYS4wNDkuMDQ5LDAsMCwxLS4wMzktLjAyM2MtLjAxLS4wMTUtLjAxNi0zLjEzNS0uMDE2LTMuMTU2bDAtNS45NzUtMi45LS4wM2EuMDYuMDYsMCwwLDEtLjA1MS0uMDQ4LjEuMSwwLDAsMSwuMDExLS4wODVMOS41MDgsMTEuMzhhLjA1Ni4wNTYsMCwwLDEsLjA0MS0uMDI1LjA1LjA1LDAsMCwxLC4wNC4wMjRsNi4zNTcsOS4zNzVhLjEuMSwwLDAsMSwuMDExLjA4Ni4wNTkuMDU5LDAsMCwxLS4wNTEuMDQ4SDEyLjk4djkuMDc4QzEyLjk4LDMwLjAxLDEyLjk1NSwzMC4wNDUsMTIuOTI0LDMwLjA0NVptLTYuNjE4LS4xNThoNi41NjJWMjAuODA5YzAtLjA0NC4wMjUtLjA3OS4wNTYtLjA3OWgyLjg1TDkuNTQ5LDExLjU0OSwzLjQyNCwyMC43bDIuODMuMDNjLjAzMSwwLC4wNTUuMDM2LjA1NS4wNzlaXCIgc3R5bGU9XCJmaWxsOiMxODM4NjhcIi8+PHBhdGggZD1cIk0xOS4wNTMsMjAuNTg3bC0yLjk1OC4wMzEsNi4yNTQsOS4zNDgsNi4zNTctOS4zNzVIMjUuNzI0VjExLjQzNEgxOS4wNTFaXCIgc3R5bGU9XCJmaWxsOnVybCgjbClcIi8+PHBhdGggZD1cIk0yNS43OCwxMS40MzR2OS4wNzhoMi45MjVhLjA1OS4wNTksMCwwLDEsLjA1MS4wNDguMS4xLDAsMCwxLS4wMTEuMDg2bC02LjM1Nyw5LjM3NWEuMDUuMDUsMCwwLDEtLjA0LjAyNC4wNTYuMDU2LDAsMCwxLS4wNDEtLjAyNWwtNi4yNTQtOS4zNDhhLjEuMSwwLDAsMS0uMDExLS4wODUuMDYuMDYsMCwwLDEsLjA1MS0uMDQ4bDIuOS0uMDMsMC01Ljk3NWMwLS4wMjEuMDA2LTMuMTQxLjAxNi0zLjE1NmEuMDQ5LjA0OSwwLDAsMSwuMDM5LS4wMjNoNi42NzRDMjUuNzU1LDExLjM1NSwyNS43OCwxMS4zOSwyNS43OCwxMS40MzRabS02LjY3Miw5LjE1M2MwLC4wNDMtLjAyNS4wNzktLjA1NS4wNzlsLTIuODMuMDMsNi4xMjUsOS4xNTYsNi4yMjYtOS4xODFoLTIuODVjLS4wMzEsMC0uMDU2LS4wMzUtLjA1Ni0uMDc5VjExLjUxM0gxOS4xMDdaXCIgc3R5bGU9XCJmaWxsOiMxODM4NjhcIi8+YCxcblx0XCJJZHJpc1wiOiBgPHBhdGggZD1cIk0xMy4zNzYsNi4yYzMuNiwxLjEsNC41LDIsNS44LDUuMi0uMy00LTEuOS01LjYtNS44LTUuMlpcIiBzdHlsZT1cImZpbGw6IzhhMDgxOVwiLz48cGF0aCBkPVwiTTguMzc2LDEyLjRjMi4zLjcsNSwxLjMsNiw1LjcuNC01LjUtMi4yLTUuOC02LTUuN1pcIiBzdHlsZT1cImZpbGw6IzhhMDgxOVwiLz48cGF0aCBkPVwiTTkuOTc2LDguOGMzLjUuNyw1LjcsMS43LDcsNi4yLjMtNS44LTIuOS02LjQtNy02LjJaXCIgc3R5bGU9XCJmaWxsOiM4YTA4MTlcIi8+PHBhdGggZD1cIk0xNC41NzYsMmMxOS4xLDEyLjQtNC4yLDEyLjcuOCwyNy4xbDMsLjljLTguMy0xMS4yLDE4LjQtMTctMy44LTI4WlwiIHN0eWxlPVwiZmlsbDojOGEwODE5XCIvPmAsXG5cdFwiSW5pXCI6IGA8cGF0aCBkPVwiTTIzLjI2NSwyNC4zODFsLjktLjg5NGM0LjE2NC4xMzYsNC4yMjgtLjAxLDQuNDExLS40MzhsMS4xNDQtMi43ODVMMjkuODA1LDIwbC0uMDkzLS4yMzFjLS4wNDktLjEyMi0uMi0uNDg2LTIuOC0yLjk2NVYxNS41YzMtMi44OSwyLjkzNi0zLjAzOCwyLjc2NS0zLjQ2MUwyOC41MzgsOS4yMjVjLS4xNzEtLjQyMi0uMjM2LS41ODctNC4zNy0uNDc0bC0uOS0uOTNhMjAuMTY2LDIwLjE2NiwwLDAsMC0uMTQxLTQuMTA2bC0uMTE2LS4yNjMtMi45NzQtMS4zYy0uNDM4LS4yLS41OTItLjI3Mi0zLjQsMi43ODZsLTEuMjYyLS4wMTljLTIuODkxLTMuMDg2LTMuMDI4LTMuMDMtMy40NjEtMi44NTVMOS4xNDksMy4xODJjLS40MzMuMTc1LS41ODYuMjM3LS40MTgsNC40MzdsLS44OTMuODljLTQuMTYyLS4xMzYtNC4yMjYuMDEyLTQuNDA3LjQzOEwyLjI4NSwxMS43MzMsMi4xOTUsMTJsLjA5NC4yMzJjLjA0OS4xMi4xOTQuNDgsMi44LDIuOTYybDAsMS4zYy0zLDIuODktMi45MzUsMy4wMzgtMi43NjMsMy40NjJsMS4xMzgsMi44MTdjLjE3NC40MzEuMjM2LjU4NCw0LjM2OS40NzZsLjkuOTM1YTIwLjI0MywyMC4yNDMsMCwwLDAsLjEzNyw0LjFsLjExNi4yNjUsMi45OTMsMS4zMDhjLjQzNS4xODIuNTg2LjI0NywzLjM4Ni0yLjhsMS4yNjIuMDE2YzIuODk1LDMuMDksMy4wNDMsMy4wMywzLjQ2NiwyLjg1OWwyLjc1OS0xLjExNUMyMy4yODgsMjguNjQ0LDIzLjQ0LDI4LjU4MywyMy4yNjUsMjQuMzgxWk0xMS40MDcsMTcuODU3YTQuOTU3LDQuOTU3LDAsMSwxLDYuNDg4LDIuODI0QTUuMDE0LDUuMDE0LDAsMCwxLDExLjQwNywxNy44NTdaXCIgc3R5bGU9XCJmaWxsOiM5OWI4YzRcIi8+YCxcblx0XCJJb1wiOiBgPHBhdGggZD1cIk0yLDIuODg3SDcuMDc1VjcuNTFIMlptLjA1Miw2LjgzSDcuMDRWMjguNjI2SDIuMDUyWlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMTMuMjcxLDI2LjQ1NGE5Ljc5MSw5Ljc5MSwwLDAsMS0yLjYxNi03LjE3OCwxMC4xNDgsMTAuMTQ4LDAsMCwxLDIuNjE2LTcuMzQzLDkuMzIxLDkuMzIxLDAsMCwxLDcuMDQ3LTIuNzIsOS4zNCw5LjM0LDAsMCwxLDcuMDc1LDIuNzJBMTAuMTY4LDEwLjE2OCwwLDAsMSwzMCwxOS4yNzZhOS44MDksOS44MDksMCwwLDEtMi42MDcsNy4xNzgsOS40NTYsOS40NTYsMCwwLDEtNy4wNzUsMi42NTlBOS40MzYsOS40MzYsMCwwLDEsMTMuMjcxLDI2LjQ1NFptMTAuNDM2LTIuOTcyYTYuNyw2LjcsMCwwLDAsMS4xNjYtNC4yNTgsNi45NDMsNi45NDMsMCwwLDAtMS4xNjYtNC4zNTQsNC4wNDcsNC4wNDcsMCwwLDAtMy4zODktMS40ODYsNC4wMjIsNC4wMjIsMCwwLDAtMy4zOCwxLjQ4Niw2Ljk5MSw2Ljk5MSwwLDAsMC0xLjE1Niw0LjM1NCw2Ljc0NCw2Ljc0NCwwLDAsMCwxLjE1Niw0LjI1OCw0LjA1Myw0LjA1MywwLDAsMCwzLjM4LDEuNDZBNC4wNzgsNC4wNzgsMCwwLDAsMjMuNzA3LDIzLjQ4MlpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz5gLFxuXHRcIkphdmFcIjogYDxwYXRoIGQ9XCJNMTIuMzI1LDIzLjY1NHMtMS4wNy42MjIuNzYxLjgzM2ExNi4wMjMsMTYuMDIzLDAsMCwwLDUuOC0uMjQ2LDEwLjA4OCwxMC4wODgsMCwwLDAsMS41NDEuNzUyYy01LjQ4MSwyLjM0OS0xMi40MDUtLjEzNi04LjEtMS4zMzlcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTExLjY1NiwyMC41ODhzLTEuMi44ODguNjMzLDEuMDc4YTIyLjYxOCwyMi42MTgsMCwwLDAsNy40ODEtLjM1OSwzLjMyLDMuMzIsMCwwLDAsMS4xNTIuN2MtNi42MjcsMS45MzgtMTQuMDA5LjE1My05LjI2Ni0xLjQyMVwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMTcuMywxNS4zODhhMi4wNTEsMi4wNTEsMCwwLDEtLjM1NSwyLjk1NHMzLjQyOS0xLjc3LDEuODU0LTMuOTg3Yy0xLjQ3MS0yLjA2Ny0yLjYtMy4wOTUsMy41MDgtNi42MzYsMCwwLTkuNTg2LDIuMzk0LTUuMDA3LDcuNjY5XCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+PHBhdGggZD1cIk0yNC41NTIsMjUuOTIxcy43OTIuNjUyLS44NzIsMS4xNTdjLTMuMTY0Ljk1OC0xMy4xNjgsMS4yNDgtMTUuOTQ4LjAzOC0xLS40MzUuODc0LTEuMDM4LDEuNDY0LTEuMTY0YTMuOCwzLjgsMCwwLDEsLjk2Ni0uMTA4Yy0xLjExMS0uNzgzLTcuMTgxLDEuNTM3LTMuMDgzLDIuMiwxMS4xNzYsMS44MTIsMjAuMzcyLS44MTYsMTcuNDczLTIuMTI0XCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+PHBhdGggZD1cIk0xMi44NCwxNy40MTJzLTUuMDg5LDEuMjA5LTEuOCwxLjY0OGEzOC4yMjUsMzguMjI1LDAsMCwwLDYuNzMxLS4wNzJjMi4xMDYtLjE3OCw0LjIyMS0uNTU1LDQuMjIxLS41NTVhOC45MzQsOC45MzQsMCwwLDAtMS4yOC42ODVjLTUuMTY4LDEuMzU5LTE1LjE1MS43MjctMTIuMjc3LS42NjNhOS42MjksOS42MjksMCwwLDEsNC40MDctMS4wNDJcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTIxLjk2OSwyMi41MTVjNS4yNTMtMi43MywyLjgyNC01LjM1MywxLjEyOS01YTMuOTMyLDMuOTMyLDAsMCwwLS42LjE2MS45NTcuOTU3LDAsMCwxLC40NDktLjM0NmMzLjM1NC0xLjE3OSw1LjkzMywzLjQ3OC0xLjA4Myw1LjMyMmEuNDU4LjQ1OCwwLDAsMCwuMTA2LS4xMzhcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTE4LjgsMnMyLjkwOSwyLjkxLTIuNzU5LDcuMzg2Yy00LjU0NiwzLjU5LTEuMDM3LDUuNjM3LDAsNy45NzUtMi42NTMtMi4zOTQtNC42LTQuNS0zLjI5NC02LjQ2M0MxNC42NjQsOC4wMTksMTkuOTc2LDYuNjIzLDE4LjgsMlwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMTMuMzU2LDI5LjkxMmM1LjA0Mi4zMjMsMTIuNzg2LS4xNzksMTIuOTY5LTIuNTY1LDAsMC0uMzUzLjktNC4xNjcsMS42MjNhNDEuNDU4LDQxLjQ1OCwwLDAsMS0xMi43Ni4ycy42NDUuNTMzLDMuOTU5Ljc0NlwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPmAsXG5cdFwiSmF2YVNjcmlwdFwiOiBgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyOFwiIHN0eWxlPVwiZmlsbDojZjVkZTE5XCIvPjxwYXRoIGQ9XCJNMjAuODA5LDIzLjg3NWEyLjg2NiwyLjg2NiwwLDAsMCwyLjYsMS42YzEuMDksMCwxLjc4Ny0uNTQ1LDEuNzg3LTEuMywwLS45LS43MTYtMS4yMjItMS45MTYtMS43NDdsLS42NTgtLjI4MmMtMS45LS44MDktMy4xNi0xLjgyMi0zLjE2LTMuOTY0LDAtMS45NzMsMS41LTMuNDc2LDMuODUzLTMuNDc2YTMuODg5LDMuODg5LDAsMCwxLDMuNzQyLDIuMTA3TDI1LDE4LjEyOEExLjc4OSwxLjc4OSwwLDAsMCwyMy4zMTEsMTdhMS4xNDUsMS4xNDUsMCwwLDAtMS4yNTksMS4xMjhjMCwuNzg5LjQ4OSwxLjEwOSwxLjYxOCwxLjZsLjY1OC4yODJjMi4yMzYuOTU5LDMuNSwxLjkzNiwzLjUsNC4xMzMsMCwyLjM2OS0xLjg2MSwzLjY2Ny00LjM2LDMuNjY3YTUuMDU1LDUuMDU1LDAsMCwxLTQuNzk1LTIuNjkxWm0tOS4yOTUuMjI4Yy40MTMuNzMzLjc4OSwxLjM1MywxLjY5MywxLjM1My44NjQsMCwxLjQxLS4zMzgsMS40MS0xLjY1M1YxNC44NTZoMi42MzF2OC45ODJjMCwyLjcyNC0xLjYsMy45NjQtMy45MjksMy45NjRhNC4wODUsNC4wODUsMCwwLDEtMy45NDctMi40WlwiLz5gLFxuXHRcIkpTT05cIjogYDxwYXRoIGQ9XCJNNC4wMTQsMTQuOTc2YTIuNTEsMi41MSwwLDAsMCwxLjU2Ny0uNTE4QTIuMzc3LDIuMzc3LDAsMCwwLDYuMzg2LDEzLjEsMTUuMjYxLDE1LjI2MSwwLDAsMCw2LjYsMTAuMTU2cS4wMTItMi4wODUuMDc1LTIuNzQ3YTUuMjM2LDUuMjM2LDAsMCwxLC40MTgtMS42ODYsMy4wMjUsMy4wMjUsMCwwLDEsLjc1NS0xLjAxOEEzLjA0NiwzLjA0NiwwLDAsMSw5LDQuMTI1LDYuNzYyLDYuNzYyLDAsMCwxLDEwLjU0NCw0aC43VjUuOTZoLS4zODdhMi4zMzgsMi4zMzgsMCwwLDAtMS43MjMuNDY4QTMuNCwzLjQsMCwwLDAsOC43MDksOC41MmEzNi4wNTQsMzYuMDU0LDAsMCwxLS4xMzcsNC4xMzMsNC43MzQsNC43MzQsMCwwLDEtLjc2OCwyLjA2QTQuNTY3LDQuNTY3LDAsMCwxLDYuMSwxNmEzLjgwOSwzLjgwOSwwLDAsMSwxLjk5MiwxLjc1NCw4Ljg2MSw4Ljg2MSwwLDAsMSwuNjE4LDMuODY1cTAsMi40MzUuMDUsMi45QTEuNzU1LDEuNzU1LDAsMCwwLDkuMjY0LDI1LjdhMi42MzksMi42MzksMCwwLDAsMS41OTIuMzM3aC4zODdWMjhoLS43YTUuNjU1LDUuNjU1LDAsMCwxLTEuNzczLS4yLDIuOTcsMi45NywwLDAsMS0xLjMyNC0uOTMsMy4zNTMsMy4zNTMsMCwwLDEtLjY4MS0xLjYzQTI0LjE3NSwyNC4xNzUsMCwwLDEsNi42LDIyLjAwNiwxNi40NjksMTYuNDY5LDAsMCwwLDYuMzg2LDE4LjlhMi40MDgsMi40MDgsMCwwLDAtLjgwNS0xLjM2MSwyLjQ4OSwyLjQ4OSwwLDAsMC0xLjU2Ny0uNTI0WlwiIHN0eWxlPVwiZmlsbDojZjVkZTE5XCIvPjxwYXRoIGQ9XCJNMjcuOTg2LDE3LjAxMWEyLjQ4OSwyLjQ4OSwwLDAsMC0xLjU2Ny41MjQsMi40MDgsMi40MDgsMCwwLDAtLjgwNSwxLjM2MSwxNi40NjksMTYuNDY5LDAsMCwwLS4yMTIsMy4xMDksMjQuMTc1LDI0LjE3NSwwLDAsMS0uMTY5LDMuMjM0LDMuMzUzLDMuMzUzLDAsMCwxLS42ODEsMS42MywyLjk3LDIuOTcsMCwwLDEtMS4zMjQuOTMsNS42NTUsNS42NTUsMCwwLDEtMS43NzMuMmgtLjdWMjYuMDRoLjM4N2EyLjYzOSwyLjYzOSwwLDAsMCwxLjU5Mi0uMzM3LDEuNzU1LDEuNzU1LDAsMCwwLC41MDYtMS4xODZxLjA1LS40NjIuMDUtMi45YTguODYxLDguODYxLDAsMCwxLC42MTgtMy44NjVBMy44MDksMy44MDksMCwwLDEsMjUuOSwxNmE0LjU2Nyw0LjU2NywwLDAsMS0xLjctMS4yODYsNC43MzQsNC43MzQsMCwwLDEtLjc2OC0yLjA2LDM2LjA1NCwzNi4wNTQsMCwwLDEtLjEzNy00LjEzMywzLjQsMy40LDAsMCwwLS40MjUtMi4wOTIsMi4zMzgsMi4zMzgsMCwwLDAtMS43MjMtLjQ2OGgtLjM4N1Y0aC43QTYuNzYyLDYuNzYyLDAsMCwxLDIzLDQuMTI1YTMuMDQ2LDMuMDQ2LDAsMCwxLDEuMTQ5LjU4MSwzLjAyNSwzLjAyNSwwLDAsMSwuNzU1LDEuMDE4LDUuMjM2LDUuMjM2LDAsMCwxLC40MTgsMS42ODZxLjA2Mi42NjIuMDc1LDIuNzQ3YTE1LjI2MSwxNS4yNjEsMCwwLDAsLjIxMiwyLjk0NywyLjM3NywyLjM3NywwLDAsMCwuODA1LDEuMzU1LDIuNTEsMi41MSwwLDAsMCwxLjU2Ny41MThaXCIgc3R5bGU9XCJmaWxsOiNmNWRlMTlcIi8+YCxcblx0XCJKU09ONVwiOiBgPHBhdGggZD1cIk0xMi44MTUsMTUuMTY3bC42OC01LjY3Nmg2LjQ4OXYyaC00LjRMMTUuMzI5LDEzLjdhMi40LDIuNCwwLDAsMSwuMjUyLS4xMjIsMi45NjIsMi45NjIsMCwwLDEsLjM3NC0uMTMsMi45LDIuOSwwLDAsMSwuNDU4LS4xMDYsMi44MzQsMi44MzQsMCwwLDEsLjUxMi0uMDQ2LDMuOTgzLDMuOTgzLDAsMCwxLDEuNDY2LjI1MiwyLjczNiwyLjczNiwwLDAsMSwxLjA3Ni43MjMsMy4xNjcsMy4xNjcsMCwwLDEsLjY2NCwxLjE2OCw1LDUsMCwwLDEsLjIyOCwxLjU4OCw0LjE1Nyw0LjE1NywwLDAsMS0uMjM2LDEuMzg3LDMuMzA3LDMuMzA3LDAsMCwxLTEuOSwyLjAyOSw0LjMsNC4zLDAsMCwxLTEuNzE1LjMxMiw0Ljc1LDQuNzUsMCwwLDEtMS40NTgtLjIyOCw0LjA1NCw0LjA1NCwwLDAsMS0xLjI1Mi0uNjU2LDMuMzU5LDMuMzU5LDAsMCwxLS44NzgtMS4wNDYsMi43ODcsMi43ODcsMCwwLDEtLjMyLTEuMzgySDE1LjE4YTEuNDU4LDEuNDU4LDAsMCwwLC4zOS45NywxLjM4MywxLjM4MywwLDAsMCwxLjU1OC4yMDYsMS4wODksMS4wODksMCwwLDAsLjQtLjQxMiwxLjc0OSwxLjc0OSwwLDAsMCwuMjA2LS42MTgsNC4zLDQuMywwLDAsMCwuMDYyLS43NCwyLjcwOSwyLjcwOSwwLDAsMC0uMDkyLS43NCwxLjUwNiwxLjUwNiwwLDAsMC0uMjgyLS41NTgsMS4yMjksMS4yMjksMCwwLDAtLjUtLjM0OSwxLjc4LDEuNzgsMCwwLDAtLjcxOC0uMTMsMi4xMjEsMi4xMjEsMCwwLDAtLjUuMDU0LDEuODA1LDEuODA1LDAsMCwwLS4zODIuMTM4LDEuMzE4LDEuMzE4LDAsMCwwLS4yNzQuMTksMS4yOCwxLjI4LDAsMCwwLS4xOS4ybC0yLjA0OC0uNDgyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk01Ljk4NSwyMy4zNDNhNC40NSw0LjQ1LDAsMCwxLTEuMzExLS41OCwzLjIsMy4yLDAsMCwxLS44NDgtLjgyNCwzLjAxMiwzLjAxMiwwLDAsMS0uNDU4LTEuMDA4LDQuODc5LDQuODc5LDAsMCwxLS4xMy0xLjE0M3YtMS41NWEyLjMsMi4zLDAsMCwwLS4wNzYtLjYxOCwxLjE4NCwxLjE4NCwwLDAsMC0uMjIyLS40NjYuOTY5Ljk2OSwwLDAsMC0uMzgyLS4zMDZBMS4zMjQsMS4zMjQsMCwwLDAsMiwxNi43NDRWMTUuMDEyYTEuMDc0LDEuMDc0LDAsMCwwLC45MzctLjQsMS44NDEsMS44NDEsMCwwLDAsLjMtMS4xdi0xLjU1YTQuODc5LDQuODc5LDAsMCwxLC4xMy0xLjE0MywzLjAzNywzLjAzNywwLDAsMSwuNDU4LTEuMDA4QTMuMTcsMy4xNywwLDAsMSw0LjY3MSw5YTQuNDgyLDQuNDgyLDAsMCwxLDEuMzExLS41OGwuNDgsMS4zNDRhMS4yMjIsMS4yMjIsMCwwLDAtLjQ4OC4zMjgsMS43NDIsMS43NDIsMCwwLDAtLjMwNi41LDIuNTI0LDIuNTI0LDAsMCwwLS4xNi42MzQsNS44MjcsNS44MjcsMCwwLDAtLjA0Ni43NHYxLjU1QTIuODQ0LDIuODQ0LDAsMCwxLDUuMTI2LDE0LjlhMi4zNywyLjM3LDAsMCwxLTEuMDc2Ljk4MywyLjM1NiwyLjM1NiwwLDAsMSwxLjA3Ni45OTIsMi44MDgsMi44MDgsMCwwLDEsLjMzNiwxLjM3NHYxLjU1YTUuODI3LDUuODI3LDAsMCwwLC4wNDYuNzQsMi41ODYsMi41ODYsMCwwLDAsLjE2LjYzNCwxLjY4NCwxLjY4NCwwLDAsMCwuMzA2LjVBMS4yMjIsMS4yMjIsMCwwLDAsNi40NjIsMjJjMC0uMDA1LS40NzcsMS4zNDQtLjQ3NywxLjM0NFwiIHN0eWxlPVwiZmlsbDojOTk5XCIvPjxwYXRoIGQ9XCJNOC4yMTUsMTkuMzkzYTEuMjg5LDEuMjg5LDAsMCwxLC4xLS41MTIsMS4yMTIsMS4yMTIsMCwwLDEsLjI5LS40LDEuMzczLDEuMzczLDAsMCwxLC40NS0uMjc0LDEuNjM3LDEuNjM3LDAsMCwxLC41OC0uMSwxLjU1NSwxLjU1NSwwLDAsMSwuNTcyLjEsMS4yNjksMS4yNjksMCwwLDEsLjQ1LjI3NCwxLjA3NywxLjA3NywwLDAsMSwuMjkuNCwxLjI5NCwxLjI5NCwwLDAsMSwwLDEuMDI0LDEuMTUxLDEuMTUxLDAsMCwxLS4yOS40MTIsMS4zODgsMS4zODgsMCwwLDEtLjQ1LjI2OCwxLjYxMywxLjYxMywwLDAsMS0uNTcyLjEsMS41NzgsMS41NzgsMCwwLDEtLjU4LS4xLDEuNDA5LDEuNDA5LDAsMCwxLS40NS0uMjY4LDEuMjI5LDEuMjI5LDAsMCwxLS4zOS0uOTI0bTAtNi4wODhhMS4yODksMS4yODksMCwwLDEsLjEtLjUxMiwxLjIxMiwxLjIxMiwwLDAsMSwuMjktLjQsMS4zNzMsMS4zNzMsMCwwLDEsLjQ1LS4yNzQsMS42MzcsMS42MzcsMCwwLDEsLjU4LS4xLDEuNTU1LDEuNTU1LDAsMCwxLC41NzIuMSwxLjI2OSwxLjI2OSwwLDAsMSwuNDUuMjc0LDEuMDc3LDEuMDc3LDAsMCwxLC4yOS40LDEuMjk0LDEuMjk0LDAsMCwxLDAsMS4wMjQsMS4xNTEsMS4xNTEsMCwwLDEtLjI5LjQxMiwxLjM4OCwxLjM4OCwwLDAsMS0uNDUuMjY4LDEuNjEzLDEuNjEzLDAsMCwxLS41NzIuMSwxLjU3OCwxLjU3OCwwLDAsMS0uNTgtLjEsMS40MDksMS40MDksMCwwLDEtLjQ1LS4yNjgsMS4yMjksMS4yMjksMCwwLDEtLjM5LS45MjRcIiBzdHlsZT1cImZpbGw6Izk5OVwiLz48cGF0aCBkPVwiTTI0LjI0LDIwLjI5M2EzLjY0OCwzLjY0OCwwLDAsMS0uMTIyLjkyOSw0LjUzNCw0LjUzNCwwLDAsMS0uMzM2Ljg5MSw0LjcwNiw0LjcwNiwwLDAsMS0uNS44MDcsNC4wMDUsNC4wMDUsMCwwLDEtLjYxLjY2NGwtMS4zLS42MWMuMDgxLS4xNzMuMTY4LS4zNDkuMjYtLjUyNmE0Ljg0Niw0Ljg0NiwwLDAsMCwuMjY4LS41NTgsNC40NDMsNC40NDMsMCwwLDAsLjIwNi0uNjU2LDMuNDA2LDMuNDA2LDAsMCwwLC4wODQtLjhWMTguNjU2aDIuMDU5bC0uMDA4LDEuNjM2XCIgc3R5bGU9XCJmaWxsOiM5OTlcIi8+PHBhdGggZD1cIk0yNS41MzgsMjEuOTk0YTEuMjUxLDEuMjUxLDAsMCwwLC40ODgtLjMyOCwxLjcwNywxLjcwNywwLDAsMCwuMzA2LS41LDIuNTI1LDIuNTI1LDAsMCwwLC4xNi0uNjM0LDUuODI2LDUuODI2LDAsMCwwLC4wNDYtLjc0di0xLjU1YTIuODQ0LDIuODQ0LDAsMCwxLC4zMzYtMS4zODIsMi4zNjQsMi4zNjQsMCwwLDEsMS4wODQtLjk4MywyLjM2NCwyLjM2NCwwLDAsMS0xLjA4NC0uOTgzLDIuODQ0LDIuODQ0LDAsMCwxLS4zMzYtMS4zODJ2LTEuNTVhNS44MjcsNS44MjcsMCwwLDAtLjA0Ni0uNzQsMi41ODYsMi41ODYsMCwwLDAtLjE2LS42MzQsMS42ODQsMS42ODQsMCwwLDAtLjMwNi0uNSwxLjIyMiwxLjIyMiwwLDAsMC0uNDg4LS4zMjhsLjQ4LTEuMzM4QTQuNDUsNC40NSwwLDAsMSwyNy4zMjksOWEzLjA5MiwzLjA5MiwwLDAsMSwuODQ4LjgxNSwyLjg5MiwyLjg5MiwwLDAsMSwuNDUsMS4wMDgsNC42MDYsNC42MDYsMCwwLDEsLjEzOCwxLjE0M3YxLjU1YTIuNjU1LDIuNjU1LDAsMCwwLC4wNjguNjI2LDEuNDQ4LDEuNDQ4LDAsMCwwLC4yMjIuNDc0LDEuMDM3LDEuMDM3LDAsMCwwLC4zODIuMywxLjM3NiwxLjM3NiwwLDAsMCwuNTY0LjEwNnYxLjczMWExLjA3NywxLjA3NywwLDAsMC0uOTQ2LjQxMiwxLjgyOCwxLjgyOCwwLDAsMC0uMjksMS4wODR2MS41NWE0LjYwNiw0LjYwNiwwLDAsMS0uMTM4LDEuMTQzLDIuOTE1LDIuOTE1LDAsMCwxLS40NSwxLjAwOCwzLjE1NywzLjE1NywwLDAsMS0uODQ4LjgyNCw0LjQ4Miw0LjQ4MiwwLDAsMS0xLjMxMS41OGwtLjQ4LTEuMzUyXCIgc3R5bGU9XCJmaWxsOiM5OTlcIi8+YCxcblx0XCJKdWxpYVwiOiBgPHBhdGggZD1cIk03LjQ0OCwyMS45ODNWMTMuNzc1bC0yLjQzMi42Njl2OC43MjlhMi42NiwyLjY2LDAsMCwxLS4xMDYuOTI5LjMzNi4zMzYsMCwwLDEtLjMwOC4yMzkuNDA1LjQwNSwwLDAsMS0uMjEyLS4wNzQsMS4yODIsMS4yODIsMCwwLDEtLjI4Ny0uMywyLjgxMywyLjgxMywwLDAsMC0uMzc3LS40MDkuODc0Ljg3NCwwLDAsMC0uNjExLS4yMDcsMS4yMiwxLjIyLDAsMCwwLS44MTIuMjU1Ljc4OS43ODksMCwwLDAtLjMuNjI3QS45MDcuOTA3LDAsMCwwLDIuNTQyLDI1YTMuMTE1LDMuMTE1LDAsMCwwLDEuNTYxLjMxOSw3LjA2NSw3LjA2NSwwLDAsMCwxLjM3LS4xMjIsMi4zNjEsMi4zNjEsMCwwLDAsMS4wNTctLjQ4MywyLjI5MiwyLjI5MiwwLDAsMCwuNjgtMS4wMTQsNS4wOTQsNS4wOTQsMCwwLDAsLjIzOS0xLjcxNVpcIiBzdHlsZT1cImZpbGw6IzI1MjUyNVwiLz48cGF0aCBkPVwiTTEwLjgyNSwxNC4wMDhIOC40djUuNjE4YTIuMjQxLDIuMjQxLDAsMCwwLC4yMTguOTc3LDIuNDg5LDIuNDg5LDAsMCwwLC42LjgsMi45LDIuOSwwLDAsMCwuODkyLjUzNiwzLjA0NSwzLjA0NSwwLDAsMCwxLjEuMiwyLjU1LDIuNTUsMCwwLDAsMS4wNTEtLjI0NCw0LjM0Nyw0LjM0NywwLDAsMCwxLjAxOS0uNjQ4di43NDNIMTUuNzFWMTQuMDA4SDEzLjI4OXY1Ljc1NmEyLjc2NCwyLjc2NCwwLDAsMS0uNjQ4LjcwNiwxLjEzOSwxLjEzOSwwLDAsMS0uNjQ4LjI4MSwxLjE1NSwxLjE1NSwwLDAsMS0uNDU3LS4wOSwxLjI2MywxLjI2MywwLDAsMS0uMzcyLS4yMzksMS4wNiwxLjA2LDAsMCwxLS4yNS0uMzU2LDEuMDkxLDEuMDkxLDAsMCwxLS4wOS0uNDQxWlwiIHN0eWxlPVwiZmlsbDojMjUyNTI1XCIvPjxwYXRoIGQ9XCJNMTkuMDc0LDIxLjk4M1YxMC4xMzJsLTIuNDExLjY2OVYyMS45ODNaXCIgc3R5bGU9XCJmaWxsOiMyNTI1MjVcIi8+PHBhdGggZD1cIk0yMC4wMzgsMTQuNDQ0djcuNTRoMi40MjFWMTMuNzc1WlwiIHN0eWxlPVwiZmlsbDojMjUyNTI1XCIvPjxwYXRoIGQ9XCJNMjcuNTY4LDE3Ljg2M3YyLjNxLS4zNzIuMjc2LS42NzQuNDU3YTEuMTY1LDEuMTY1LDAsMCwxLS42LjE4MS40NjguNDY4LDAsMCwxLS4yNzYtLjA5LDEsMSwwLDAsMS0uMjM0LS4yMzksMS4xMzgsMS4xMzgsMCwwLDEtLjE2NS0uMzU2LDEuNTc2LDEuNTc2LDAsMCwxLS4wNTgtLjQzLjk2OC45NjgsMCwwLDEsLjE4MS0uNTUyLDIuMzA2LDIuMzA2LDAsMCwxLC40NzMtLjUsNC41NzIsNC41NzIsMCwwLDEsLjY0OC0uNDMsNy42MTIsNy42MTIsMCwwLDEsLjcwNi0uMzQ1Wk0zMCwyMS45ODNWMTZhMi4wODMsMi4wODMsMCwwLDAtLjE5MS0uOSwxLjc3OSwxLjc3OSwwLDAsMC0uNTk1LS42OSwzLjAwNiwzLjAwNiwwLDAsMC0xLjAyNS0uNDQxLDYuMjI1LDYuMjI1LDAsMCwwLTEuNDgxLS4xNTQsNS43MzUsNS43MzUsMCwwLDAtMS4zMjcuMTQ5LDQuNiw0LjYsMCwwLDAtMS4xLjQsMi4zNzMsMi4zNzMsMCwwLDAtLjc1OS42MTEsMS4yMTYsMS4yMTYsMCwwLDAtLjI4MS43Ny45NTguOTU4LDAsMCwwLC4zMTkuNzM4LDEuMTc4LDEuMTc4LDAsMCwwLC44MjguMjkyLDEuMzY0LDEuMzY0LDAsMCwwLC41NDctLjEuOC44LDAsMCwwLC4zMzUtLjI1NS45ODYuOTg2LDAsMCwwLC4xNjUtLjM3MiwxLjk3OCwxLjk3OCwwLDAsMCwuMDQ4LS40MzUsMS4wMzEsMS4wMzEsMCwwLDEsLjIyMy0uNjY5Ljk3NS45NzUsMCwwLDEsLjgtLjI3NiwxLjAwOCwxLjAwOCwwLDAsMSwuNzgxLjMxOSwxLjU5NCwxLjU5NCwwLDAsMSwuMjkyLDEuMDgzdi43ODZsLS4yNjUuMDY0cS0uNDg4LjE0OS0uOTg4LjMxM3QtLjk2MS4zNjFhNy44ODQsNy44ODQsMCwwLDAtLjg2NS40MywzLjUxMSwzLjUxMSwwLDAsMC0uNzA2LjUzMSwyLjMxOSwyLjMxOSwwLDAsMC0uNDc4LjY2OSwxLjkxOCwxLjkxOCwwLDAsMC0uMTc1LjgyOCwyLjAzNCwyLjAzNCwwLDAsMCwuMTY1LjgyMywxLjg3NiwxLjg3NiwwLDAsMCwuNDczLjY1MywyLjI1NSwyLjI1NSwwLDAsMCwuNzQ5LjQzNSwyLjkwNywyLjkwNywwLDAsMCwuOTkzLjE1OSwzLjY3OSwzLjY3OSwwLDAsMCwuNy0uMDU4LDIuNTA5LDIuNTA5LDAsMCwwLC41MzYtLjE2NSwyLjIwOSwyLjIwOSwwLDAsMCwuNDMtLjI1cS4xOTEtLjE0My4zOTMtLjMxM3YuNjM3WlwiIHN0eWxlPVwiZmlsbDojMjUyNTI1XCIvPjxjaXJjbGUgY3g9XCI2LjIwNFwiIGN5PVwiMTEuNjcyXCIgcj1cIjEuNVwiIHN0eWxlPVwiZmlsbDojNjY4MmRmXCIvPjxwYXRoIGQ9XCJNNi4yLDEzLjI4N2ExLjYxNSwxLjYxNSwwLDEsMSwxLjYxNS0xLjYxNUExLjYxNywxLjYxNywwLDAsMSw2LjIsMTMuMjg3Wm0wLTNhMS4zODUsMS4zODUsMCwxLDAsMS4zODUsMS4zODVBMS4zODYsMS4zODYsMCwwLDAsNi4yLDEwLjI4N1pcIiBzdHlsZT1cImZpbGw6IzQwNjNkOFwiLz48Y2lyY2xlIGN4PVwiMjEuNDE3XCIgY3k9XCIxMS42NzJcIiByPVwiMS41XCIgc3R5bGU9XCJmaWxsOiNkNTYzNWNcIi8+PHBhdGggZD1cIk0yMS40MTcsMTMuMjg3YTEuNjE1LDEuNjE1LDAsMSwxLDEuNjE1LTEuNjE1QTEuNjE3LDEuNjE3LDAsMCwxLDIxLjQxNywxMy4yODdabTAtM0ExLjM4NSwxLjM4NSwwLDEsMCwyMi44LDExLjY3MiwxLjM4NiwxLjM4NiwwLDAsMCwyMS40MTcsMTAuMjg3WlwiIHN0eWxlPVwiZmlsbDojY2IzYzMzXCIvPjxjaXJjbGUgY3g9XCIyMy4zODVcIiBjeT1cIjguMjk3XCIgcj1cIjEuNVwiIHN0eWxlPVwiZmlsbDojNjBhZDUxXCIvPjxwYXRoIGQ9XCJNMjMuMzg1LDkuOTEyQTEuNjE1LDEuNjE1LDAsMSwxLDI1LDguMywxLjYxNywxLjYxNywwLDAsMSwyMy4zODUsOS45MTJabTAtM0ExLjM4NSwxLjM4NSwwLDEsMCwyNC43Nyw4LjMsMS4zODYsMS4zODYsMCwwLDAsMjMuMzg1LDYuOTEyWlwiIHN0eWxlPVwiZmlsbDojMzg5ODI2XCIvPjxjaXJjbGUgY3g9XCIyNS4zNTRcIiBjeT1cIjExLjY3MlwiIHI9XCIxLjVcIiBzdHlsZT1cImZpbGw6I2FhNzljMVwiLz48cGF0aCBkPVwiTTI1LjM1NCwxMy4yODdhMS42MTUsMS42MTUsMCwxLDEsMS42MTUtMS42MTVBMS42MTcsMS42MTcsMCwwLDEsMjUuMzU0LDEzLjI4N1ptMC0zYTEuMzg1LDEuMzg1LDAsMSwwLDEuMzg1LDEuMzg1QTEuMzg2LDEuMzg2LDAsMCwwLDI1LjM1NCwxMC4yODdaXCIgc3R5bGU9XCJmaWxsOiM5NTU4YjJcIi8+YCxcblx0XCJLb3RsaW5cIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjMxMS4zMzZcIiB5MT1cIjE0NTIuMDY0XCIgeDI9XCIyODMuMzQyXCIgeTI9XCIxNDgwLjA1OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yODEuNCAtMTQ1MClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNlNDQ4NTdcIi8+PHN0b3Agb2Zmc2V0PVwiMC40N1wiIHN0b3AtY29sb3I9XCIjOWQ0YjlkXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzZkNWZhYVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2tvdGxpbjwvdGl0bGU+PHBhdGggZD1cIk0zMCwzMEgyVjJIMzBMMTYsMTZaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcblx0XCJLdXN0b1wiOiBgPHJlY3QgeD1cIjAuNTVcIiB5PVwiMjIuMzM5XCIgd2lkdGg9XCIxNS40MzNcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC40MzlcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTE0LjM2MyAxMi43OTcpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojYjhkNDMyXCIvPjxyZWN0IHg9XCIxLjM3MlwiIHk9XCIxNi4zODJcIiB3aWR0aD1cIjkuODU5XCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNDM5XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0xMC43MjcgOS42NjMpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojYjhkNDMyXCIvPjxyZWN0IHg9XCI5LjIzMlwiIHk9XCIyNC4zMDFcIiB3aWR0aD1cIjkuODU5XCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNDM5XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0xNC4wMjQgMTcuNTQxKSByb3RhdGUoLTQ0Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2I4ZDQzMlwiLz48cG9seWdvbiBwb2ludHM9XCIzMCAyIDIgMiAzMCAyOS45OTkgMzAgMlwiIHN0eWxlPVwiZmlsbDojMDA3OGQ0XCIvPjxwb2x5Z29uIHBvaW50cz1cIjEwLjI4MiAxMC4yODIgMjEuNzE4IDIxLjcxOCAzMCAxMy40MzYgMzAgMiAxOC41NjQgMiAxMC4yODIgMTAuMjgyXCIgc3R5bGU9XCJmaWxsOiM1OWI0ZDlcIi8+PHBvbHlnb24gcG9pbnRzPVwiMzAgMjkuOTk5IDMwIDIgMTYgMTYgMzAgMjkuOTk5XCIgc3R5bGU9XCJmaWxsOiNmZmY7b3BhY2l0eTowLjIwMDAwMDAwMjk4MDIzMjI0O2lzb2xhdGlvbjppc29sYXRlXCIvPjxyZWN0IHg9XCIxNi4yMjZcIiB5PVwiOS4wMDFcIiB3aWR0aD1cIjIuNzk2XCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNjIyXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yLjE5MiAxNS41MDcpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIyMC4xOFwiIHk9XCI1LjA0OFwiIHdpZHRoPVwiMi43OTZcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC42MjJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMS43NjIgMTcuMTQ2KSByb3RhdGUoLTQ0Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiMjAuMThcIiB5PVwiMTIuOTU1XCIgd2lkdGg9XCIyLjc5NlwiIGhlaWdodD1cIjIuNzk2XCIgcng9XCIwLjYyMlwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMy44MjkgMTkuNDYxKSByb3RhdGUoLTQ0Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiMjQuMTMzXCIgeT1cIjkuMDAyXCIgd2lkdGg9XCIyLjc5NlwiIGhlaWdodD1cIjIuNzk2XCIgcng9XCIwLjYyMlwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjEyNCAyMS4wOTkpIHJvdGF0ZSgtNDQuOTk5KVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiTGFUZVhcIjogYDxwYXRoIGQ9XCJNMTEuMzMzLDEzLjEyMmMtLjEyOC0xLjU2Mi0uMjQxLTIuNzU2LTIuMjg3LTIuNzU2SDcuOTF2OC40aDIuMTQ1di42MTFsLTMuMDgzLS4wMjktMy4wODIuMDI5di0uNjExSDYuMDM0di04LjRINC44ODRjLTIuMDQ2LDAtMi4xNTksMS4yMDgtMi4yODcsMi43NTZIMmwuMjg0LTMuMzY3aDkuMzYybC4yODQsMy4zNjdoLS42WlwiIHN0eWxlPVwiZmlsbDojY2ZjZmNmXCIvPjxwYXRoIGQ9XCJNMTkuMjg5LDIyLjUzSDEwLjQxVjIxLjkyaDEuNTA2VjEzLjQ2N0gxMC40MXYtLjYxMWg4LjYzN2wuNDEyLDMuMzY3aC0uNmMtLjIxMy0xLjgzMy0uNjgyLTIuNzU2LTIuODU1LTIuNzU2SDEzLjc5MVYxNy4yaC44MzhjMS4zNjQsMCwxLjUwNS0uNiwxLjUwNS0xLjY2MmguNnYzLjkzNWgtLjZjMC0xLjA4LS4xNDItMS42NjItMS41MDUtMS42NjJoLS44Mzh2NC4xMDZoMi4yMTZjMi40NzIsMCwzLTEuMTA4LDMuMy0zLjIyNWguNlpcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz48cGF0aCBkPVwiTTI3LjcyNywxOS4xODZjLS41NCwwLTEuOTYsMC0yLjQxNS4wMjlWMTguNmgxLjE3OWwtMi41NTctMy41NTItMi41MjksMy4zODFBNC4xLDQuMSwwLDAsMCwyMi43LDE4LjZ2LjYxMWMtLjM1NS0uMDI5LTEuNTc2LS4wMjktMi4wMTctLjAyOS0uNCwwLTEuNTQ4LDAtMS44NzUuMDI5VjE4LjZoLjM4M2E3LjQ1OSw3LjQ1OSwwLDAsMCwuODI0LS4wNDNjLjUtLjA0My41NC0uMDg1LjY2Ny0uMjU2TDIzLjUzNiwxNC41bC0zLjE1My00LjQxOEgxOVY5LjQ3Yy4zODQuMDI4LDEuNzkuMDI4LDIuMjczLjAyOC41ODIsMCwxLjkxOCwwLDIuNDI5LS4wMjh2LjYxMUgyMi41MjhsMi4xMTcsMi45NTUsMi4wNzQtMi43ODRhNC4xLDQuMSwwLDAsMC0xLjI5My0uMTdWOS40N2MuMzU2LjAyOCwxLjU5MS4wMjgsMi4wMzIuMDI4LjQsMCwxLjUzNCwwLDEuODYxLS4wMjh2LjYxMWgtLjM2OWE1LjI2NCw1LjI2NCwwLDAsMC0uODM4LjA0M2MtLjQ2OS4wNDMtLjUyNi4wNzEtLjY2Ny4yNTZsLTIuNCwzLjIxTDI4LjYzNiwxOC42SDMwdi42MTFDMjkuNjQ1LDE5LjE4NiwyOC4xODIsMTkuMTg2LDI3LjcyNywxOS4xODZaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+YCxcblx0XCJMZXNzXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItMy42MDlcIiB5MT1cIi00OTIuNjg1XCIgeDI9XCItMy42MDlcIiB5Mj1cIi00ODAuMjcxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMTkuNzEyIDUwMi44OTEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4xNVwiIHN0b3AtY29sb3I9XCIjMmE0Zjg0XCIvPjxzdG9wIG9mZnNldD1cIjAuMzg4XCIgc3RvcC1jb2xvcj1cIiMyOTRlODJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMTcyZTRlXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfbGVzczwvdGl0bGU+PHBhdGggZD1cIk0yOC41NTksMjAuMjI2YTIuNCwyLjQsMCwwLDEtMi4zOTQsMi4zOTRINi4wNGEyLjQsMi40LDAsMCwxLTIuMzk0LTIuMzk0VjEyLjZBMi40LDIuNCwwLDAsMSw2LjA0LDEwLjIwNkgyNi4xNjVBMi40LDIuNCwwLDAsMSwyOC41NTksMTIuNlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTI0LjM0OSwxNi4yNWExLjk3MiwxLjk3MiwwLDAsMSwxLjU3OCwxLjg5MSwxLjY5LDEuNjksMCwwLDEtLjY1MywxLjQsMi45MzQsMi45MzQsMCwwLDEtMS44NjIuNTU5LDQuNTU4LDQuNTU4LDAsMCwxLTIuMjQxLS42MTgsMS45ODYsMS45ODYsMCwwLDEsLjE2LS42NjksMS44MywxLjgzLDAsMCwxLC4zNS0uNTc2LDMuNywzLjcsMCwwLDAsMS42NDkuNDkzLjk2NS45NjUsMCwwLDAsLjUxLS4xMTIuMzM5LjMzOSwwLDAsMCwuMTc4LS4zcTAtLjM1My0uNTQ2LS41MjlsLS42NTMtLjI0N3EtMS40ODItLjU0LTEuNDgyLTEuNzYyYTEuNzUzLDEuNzUzLDAsMCwxLC42MjMtMS40MTYsMi41ODcsMi41ODcsMCwwLDEsMS42NzgtLjY0OCw1LjA5NCw1LjA5NCwwLDAsMSwxLjE1LjE0Nyw0LjU1NSw0LjU1NSwwLDAsMSwxLjAzMi40NzIsMS42NjgsMS42NjgsMCwwLDEtLjEzLjcyMiwxLjIyLDEuMjIsMCwwLDEtLjM4LjU1OCw0LjI2MSw0LjI2MSwwLDAsMC0xLjY2LS40NDYuNTQ0LjU0NCwwLDAsMC0uMzYyLjEwNi4zMzguMzM4LDAsMCwwLS4xMjQuMjdxMCwuMjgyLjQ1MS40NDZsLjczNi4yNTlaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjZcIi8+PHBhdGggZD1cIk0xOS4xLDE2LjI1YTEuOTcyLDEuOTcyLDAsMCwxLDEuNTc3LDEuODkxLDEuNjkxLDEuNjkxLDAsMCwxLS42NTIsMS40LDIuOTM3LDIuOTM3LDAsMCwxLTEuODYyLjU1OSw0LjU2LDQuNTYsMCwwLDEtMi4yNDEtLjYxOCwxLjk4MSwxLjk4MSwwLDAsMSwuMTYtLjY2OSwxLjgyMSwxLjgyMSwwLDAsMSwuMzUtLjU3NiwzLjcsMy43LDAsMCwwLDEuNjQ5LjQ5My45NjMuOTYzLDAsMCwwLC41MS0uMTEyLjM0LjM0LDAsMCwwLC4xNzgtLjNxMC0uMzUzLS41NDYtLjUyOWwtLjY1My0uMjQ3cS0xLjQ4Mi0uNTQtMS40ODItMS43NjJhMS43NTIsMS43NTIsMCwwLDEsLjYyMy0xLjQxNiwyLjU4NSwyLjU4NSwwLDAsMSwxLjY3Ny0uNjQ4LDUuMDg4LDUuMDg4LDAsMCwxLDEuMTUuMTQ3LDQuNTUyLDQuNTUyLDAsMCwxLDEuMDMyLjQ3MiwxLjY2OCwxLjY2OCwwLDAsMS0uMTMuNzIyLDEuMjIsMS4yMiwwLDAsMS0uMzguNTU4LDQuMjYzLDQuMjYzLDAsMCwwLTEuNjYxLS40NDYuNTQzLjU0MywwLDAsMC0uMzYyLjEwNi4zMzkuMzM5LDAsMCwwLS4xMjQuMjdxMCwuMjgyLjQ1MS40NDZsLjczNi4yNTlaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjZcIi8+PHBhdGggZD1cIk0xNS4yNjQsMTYuMzMzYTIuODIyLDIuODIyLDAsMCwwLS4xNzItMSwyLjIzOSwyLjIzOSwwLDAsMC0uNDkyLS43ODcsMi4yOCwyLjI4LDAsMCwwLS43NzctLjUxNywyLjczNywyLjczNywwLDAsMC0xLjAyNi0uMzE0LDIuOCwyLjgsMCwwLDAtMS4xOC4zNjEsMi4yNTYsMi4yNTYsMCwwLDAtLjgzLjY0NiwyLjc2NSwyLjc2NSwwLDAsMC0uNDg3Ljk2OSw0LjQsNC40LDAsMCwwLS4xNiwxLjIxNiw1LjY4MSw1LjY4MSwwLDAsMCwuMTMsMS4yNTcsMi42MjgsMi42MjgsMCwwLDAsLjQ0NSwxLDIuMTA3LDIuMTA3LDAsMCwwLC44MTguNjU3LDIuOTM1LDIuOTM1LDAsMCwwLDEuMjUxLjI3NywzLjk1MiwzLjk1MiwwLDAsMCwyLjMyNC0uNzEyLDEuODY1LDEuODY1LDAsMCwwLS40ODQtMS4wODEsNi4xODgsNi4xODgsMCwwLDEtLjg1Ny4yNjIsMy4yMDgsMy4yMDgsMCwwLDEtLjY1Ni4wNzksMS4wMTcsMS4wMTcsMCwwLDEtLjgxNS0uMjksMS4xODcsMS4xODcsMCwwLDEtLjI3MS0uNzdoMy4wODNBNC40NDcsNC40NDcsMCwwLDAsMTUuMjY0LDE2LjMzM1ptLTMuMjQ4LjA4MWEyLjQzMywyLjQzMywwLDAsMSwuMjE4LTEsLjYzMi42MzIsMCwwLDEsLjU1OS0uMjY0LjY2LjY2LDAsMCwxLC41ODIuMjgyLDEuNzQ5LDEuNzQ5LDAsMCwxLC4xOTQuODU2di4xM0gxMi4wMTZaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjZcIi8+PHBhdGggZD1cIk0yOS4xOCwxNy4yYTEuNjA1LDEuNjA1LDAsMCwwLS41MywxLjI2NXYyLjA1MWExLjgxLDEuODEsMCwwLDEtLjY4MywxLjU1NywyLjgsMi44LDAsMCwxLTEuNjU0LjU0OWwtLjM3MywwVjIxLjU5NGExLjI0MSwxLjI0MSwwLDAsMCwuNTk1LS4zMzQsMS4zNjksMS4zNjksMCwwLDAsLjQxOS0xLjA0N1YxOC41NTZhMi41NDUsMi41NDUsMCwwLDEsLjI1Ny0xLjMyMywyLjUsMi41LDAsMCwxLDEuMi0uODM4LDIuNTI4LDIuNTI4LDAsMCwxLTEuMzI0LTEuMTc5LDIuOTU2LDIuOTU2LDAsMCwxLS4xMzUtMS4xNjVWMTIuNTMzYTEuNDU4LDEuNDU4LDAsMCwwLS4zNjYtMS4wNTQsMS4xNTIsMS4xNTIsMCwwLDAtLjY0OC0uMzE0di0uOTZjLjQ0NSwwLC42NjksMCwuOTI4LDBhMS42NzYsMS42NzYsMCwwLDEsMS4wMjMuNDQyLDIsMiwwLDAsMSwuNjczLDEuMDA5LDIuMzMsMi4zMywwLDAsMSwuMDg2Ljd2MS43NTdhMS44NDYsMS44NDYsMCwwLDAsLjUsMS4zODMsMi4xMTMsMi4xMTMsMCwwLDAsLjg1NC40Nzl2Ljc5NGExLjk0MywxLjk0MywwLDAsMC0uODIuNDI2WlwiIHN0eWxlPVwiZmlsbDojZjZmNmY2O3N0cm9rZTojNDA0MDQwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjI1cHhcIi8+PHBhdGggZD1cIk01LjU5NCwxMC4yMDZINS4yNmExLjY3MywxLjY3MywwLDAsMC0xLjAyMy40NDIsMS43MSwxLjcxLDAsMCwwLS42NzMsMS4wMDksMy41MzEsMy41MzEsMCwwLDAtLjAzOC43djEuNzU3QTEuODY3LDEuODY3LDAsMCwxLDIuOTgxLDE1LjUsMi44NDcsMi44NDcsMCwwLDEsMiwxNS45Nzd2Ljc5M2EyLjU1MiwyLjU1MiwwLDAsMSwuOTQ3LjQyNiwxLjYzOCwxLjYzOCwwLDAsMSwuNTc3LDEuMjY1djIuMDUxQTEuNzgxLDEuNzgxLDAsMCwwLDQuMTYsMjIuMDdhMi44LDIuOCwwLDAsMCwxLjY1NC41NWwuNDIxLDBWMjEuNTk0YTEuNDcsMS40NywwLDAsMS0uNjQzLS4zMzQsMS4zNTUsMS4zNTUsMCwwLDEtLjM3MS0xLjA0N1YxOC41NTdhMi41MTYsMi41MTYsMCwwLDAtLjMwNS0xLjMyMywyLjUsMi41LDAsMCwwLTEuMi0uODM4LDIuNTI5LDIuNTI5LDAsMCwwLDEuMzI0LTEuMTc4LDIuODU3LDIuODU3LDAsMCwwLC4xODMtMS4xNjVWMTIuNTM0QTEuNDYyLDEuNDYyLDAsMCwxLDUuNTQsMTEuNDhhMS4zMTMsMS4zMTMsMCwwLDEsLjU3NS0uMjcxbC40MjgsMFYxMC4yMDZINS41OTRaXCIgc3R5bGU9XCJmaWxsOiNmNmY2ZjY7c3Ryb2tlOiM0MDQwNDA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjVweFwiLz48cGF0aCBkPVwiTTkuNTM3LDE4LjUyOWgtLjMyYy0uMzQ4LDAtLjQ3OS0uMTgzLS40NzktLjU1MVYxMS4yMTlhMS4yNTYsMS4yNTYsMCwwLDAtLjI2OC0uODU2Yy0uMTUtLjE2NC0uNDExLS4xNjItLjc4My0uMTYySDYuOTY0bC0uMDg1LDB2OC4xMDZhMS44NzUsMS44NzUsMCwwLDAsLjM1MiwxLjI0LDEuNDQxLDEuNDQxLDAsMCwwLDEuMTQ1LjM5Myw3Ljg1OSw3Ljg1OSwwLDAsMCwxLjI2OS0uMTE4LDIuMjMsMi4yMywwLDAsMCwuMDM2LS41MDksMi4yNzgsMi4yNzgsMCwwLDAtLjE0Mi0uNzgyWlwiIHN0eWxlPVwiZmlsbDojZjZmNmY2XCIvPmAsXG5cdFwiTGlxdWlkXCI6IGA8cGF0aCBkPVwiTTI5Ljk4OCwyMi4zNzJsLS43NDguMDQ4YTUuMjA5LDUuMjA5LDAsMCwxLTIuOTktLjY3MSw3LjgsNy44LDAsMCwwLTcuOCwwLDUuMjc1LDUuMjc1LDAsMCwxLTUuMy4wMUE3LjI2Miw3LjI2MiwwLDAsMCw5LjI2MywyMC43YTcuMjI5LDcuMjI5LDAsMCwwLTMuOTQsMS4wNiw0Ljc1MSw0Ljc1MSwwLDAsMS0yLjQ3LjdsLS44MzgsMGMwLC44ODktLjAwOSwxLjczOS0uMDE1LDIuNTE1bC44NjEsMGE3LjIzNyw3LjIzNywwLDAsMCwzLjc1LTEuMDUyLDQuNzYzLDQuNzYzLDAsMCwxLDIuNjU5LS43LDQuODM1LDQuODM1LDAsMCwxLDIuNjM0LjcxOCw3Ljc5NCw3Ljc5NCwwLDAsMCw3LjgsMCw1LjI4Nyw1LjI4NywwLDAsMSw1LjMxOSwwLDcuNzA5LDcuNzA5LDAsMCwwLDQuNC45ODlMMzAsMjQuODg4QzI5Ljk5NSwyNC4xLDI5Ljk5MSwyMy4yNDksMjkuOTg4LDIyLjM3MlpcIiBzdHlsZT1cImZpbGw6IzAwNDk5OVwiLz48cGF0aCBkPVwiTTI5Ljk4MywxNS41ODFsLS43NDMuMDQ3YTUuMjI2LDUuMjI2LDAsMCwxLTIuOTktLjY3MSw3LjgsNy44LDAsMCwwLTcuOCwwLDUuMjc4LDUuMjc4LDAsMCwxLTUuMy4wMUE3LjMxMiw3LjMxMiwwLDAsMCw5LjI2MywxMy45MWE3LjMsNy4zLDAsMCwwLTMuOTQxLDEuMDYsNC43NDIsNC43NDIsMCwwLDEtMi40NjkuN2wtLjgyOCwwYzAsLjg0OSwwLDEuNjkzLDAsMi41MTVsLjg0LDBhNy4yMzcsNy4yMzcsMCwwLDAsMy43NS0xLjA1Miw0LjcsNC43LDAsMCwxLDIuNjU5LS43LDQuOCw0LjgsMCwwLDEsMi42MzQuNzE4LDcuNzk0LDcuNzk0LDAsMCwwLDcuOCwwLDUuMjg3LDUuMjg3LDAsMCwxLDUuMzE5LDAsNy43MDksNy43MDksMCwwLDAsNC40Ljk4OWwuNTY4LS4wMzdDMjkuOTgzLDE3LjI2OSwyOS45ODMsMTYuNDI0LDI5Ljk4MywxNS41ODFaXCIgc3R5bGU9XCJmaWxsOiMwMDQ5OTlcIi8+PHBhdGggZD1cIk0yOS4yNCw5LjEzN2E1LjI1NCw1LjI1NCwwLDAsMS0yLjk5LS42NzEsNy44LDcuOCwwLDAsMC03LjgsMCw1LjI3NSw1LjI3NSwwLDAsMS01LjMuMDA5QTcuMTYsNy4xNiwwLDAsMCw5LjI2Myw3LjQyYTcuMTU5LDcuMTU5LDAsMCwwLTMuOTQsMS4wNTksNC43MzgsNC43MzgsMCwwLDEtMi40NjkuN2wtLjgzNCwwYzAsLjgyLDAsMS42NjQsMCwyLjUxN2wuODM2LDBhNy4yMzcsNy4yMzcsMCwwLDAsMy43NS0xLjA1Miw0LjczOCw0LjczOCwwLDAsMSwyLjY1OS0uNzA2LDQuODE0LDQuODE0LDAsMCwxLDIuNjM0LjcxOSw3Ljc5MSw3Ljc5MSwwLDAsMCw3LjgsMCw1LjI5Myw1LjI5MywwLDAsMSw1LjMxOSwwLDcuNzMyLDcuNzMyLDAsMCwwLDQuNC45ODhsLjU2OC0uMDM3YzAtLjg1OSwwLTEuNy4wMDctMi41MTZaXCIgc3R5bGU9XCJmaWxsOiMwMDQ5OTlcIi8+YCxcblx0XCJMaXNwXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxOTI1Ljc4NVwiIHkxPVwiLTEzODMuMDc1XCIgeDI9XCIyMzAyLjM1MVwiIHkyPVwiLTE4NjguNTU3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC4wNDgsIDAsIDAsIC0wLjA0NSwgLTgyLjUzOSwgLTU0LjY1KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzgzODFjNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU2NlwiIHN0b3AtY29sb3I9XCIjN2U1NWIzXCIgc3RvcC1vcGFjaXR5PVwiMC45OTZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTUyZWNiXCIgc3RvcC1vcGFjaXR5PVwiMC45OTJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCIyMjE0LjE4N1wiIHkxPVwiLTE3NTAuMjI1XCIgeDI9XCIxOTMwLjk3NFwiIHkyPVwiLTE0MDguMzQyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC4wNTQsIDAsIDAsIC0wLjA1NCwgLTk1LjE4OCwgLTY4LjQ4NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM0MTFmNWRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNWIyYTg1XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfZW1hY3M8L3RpdGxlPjxwYXRoIGQ9XCJNMjkuMzYzLDE2QTEzLjM2NCwxMy4zNjQsMCwxLDEsMTYsMi41LDEzLjQzMiwxMy40MzIsMCwwLDEsMjkuMzYzLDE2WlwiIHN0eWxlPVwic3Ryb2tlLXdpZHRoOjAuNzVweDtmaWxsOnVybCgjYSk7c3Ryb2tlOnVybCgjYilcIi8+PHBhdGggZD1cIk0xMS40MDYsMjUuNDgzYTE4LjE1NywxOC4xNTcsMCwwLDAsMi41ODctLjA0OCw0MS43MjgsNDEuNzI4LDAsMCwwLDQuNS0uNjM5LDMwLjY3MSwzMC42NzEsMCwwLDAsMy4xMzItLjgzOWMxLjE0Mi0uNDIxLDEuNzY0LS43NzgsMi4wNDMtMS4yODRhLjYyLjYyLDAsMCwwLS40NDEtLjY5MmMtMS4zNDctLjU2NS0yLjkwOC0uNDYzLTYtLjUyOC0zLjQyNy0uMTE4LTQuNTY3LS42OTEtNS4xNzQtMS4xNTMtLjU4Mi0uNDY5LS4yOS0xLjc2NSwyLjIwNi0yLjkwN2E1NC4yNjYsNTQuMjY2LDAsMCwxLDYuMTg0LTEuNzNjLTEuNjU5LS44Mi00Ljc1My0yLjI2Mi01LjM4OS0yLjU3My0uNTU4LS4yNzMtMS40NTEtLjY4NC0xLjY0NC0xLjE4Mi0uMjE5LS40NzguNTE4LS44ODkuOTMtMS4wMDdhMjAuMywyMC4zLDAsMCwxLDQuOS0uNjQ3LDQuMzA4LDQuMzA4LDAsMCwwLDEtLjA2OUExLjc2NywxLjc2NywwLDAsMCwyMS44NzksNy45YTIuNzc1LDIuNzc1LDAsMCwwLTMuMjg2LTEuODFDMTcuMjIsNi4zMzgsMTMuOTA4LDcuMywxMy45MDgsNy4zYzQuMDkzLS4wMzUsNC43NzkuMDMzLDUuMDg1LjQ2MS4xODEuMjUzLS4wODIuNi0xLjE3NC43NzctMS4xODkuMTk0LTMuNjU5LjQyOC0zLjY1OS40MjgtMi4zNy4xNDEtNC4wNC4xNS00LjU0LDEuMjEtLjMyNy42OTMuMzQ5LDEuMy42NDUsMS42ODhhMTIuNzI4LDEyLjcyOCwwLDAsMCw0LjIyNSwyLjdjLjQzOC4yMDgsMS43MjMuNiwxLjcyMy42YTExLjUyLDExLjUyLDAsMCwwLTguMSwyLjI4N2MtMS44MDcsMS42NzItMS4wMDgsMy42NjUsMi42OTUsNC44OTFhMTIuNzU1LDEyLjc1NSwwLDAsMCw2LjUzNC43NzJjMS45MjItLjEsMi4yMjQtLjA0MiwyLjI0NC4xMTYuMDI3LjIyMi0yLjEzNC43NzMtMi43MjQuOTQ0LTEuNS40MzMtNS40MzYsMS4zMDctNS40NTYsMS4zMTJaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJMaXZlU2NyaXB0XCI6IGA8cG9seWdvbiBwb2ludHM9XCI1LjUwNCAyLjAwNyA4Ljk4NiAyIDguOTg2IDIxLjc0NiAxMC43NTkgMTkuOTg3IDEwLjc1OSAzLjc1NSAxMi40OTcgMy43NTUgMTIuNDk3IDE4LjI0IDE0LjI1MyAxNi40ODcgMTQuMjUzIDMuNzU1IDE1Ljk5NyAzLjc1NSAxNS45OTcgMTQuNzI5IDE3LjczNSAxMi45NjIgMTcuNzM1IDMuNzU1IDE5LjQ2MSAzLjc1NSAxOS40NjEgMTEuMjI1IDIxLjI0NSA5LjQ2MSAyMS4yNDUgMy43NTUgMjIuOTcyIDMuNzU1IDIyLjk3MiA3LjcyMyAyNC43MzggNS45NzUgMjQuNzM5IDMuNzU1IDI2LjQ4MyAzLjc1NSAyNi40ODMgNS40ODIgMjguMjA5IDUuNDgyIDI4LjIwOSA3LjI2NyAyNS45MTEgNy4yNjggMjQuMTg0IDguOTkzIDI4LjIwOSA4Ljk5MyAyOC4yMDkgMTAuNzE5IDIyLjQzOCAxMC43MTkgMjAuNjk4IDEyLjUwNCAyOC4yMDkgMTIuNTA0IDI4LjIwOSAxNC4yMyAxOC45NjEgMTQuMjMgMTcuMjA1IDE2LjAxNCAyOC4yMDkgMTYuMDE0IDI4LjIwOSAxNy43NDEgMTUuNDU1IDE3Ljc0MSAxMy43MTUgMTkuNDk2IDI4LjIwOSAxOS40OTYgMjguMjA5IDIxLjI1MiAxMS45OCAyMS4yNTIgMTAuMjQyIDIyLjk3OCAyOS45ODIgMjIuOTc4IDI5Ljk4OSAyNi40ODkgOC45ODYgMjYuNDg5IDguOTg2IDMwIDUuNTA0IDMwIDUuNTA0IDI2LjQ4OSAyLjAxMSAyNi40ODkgMi4wMTEgMjIuOTc4IDUuNTA0IDIyLjk3OCA1LjUwMyAyIDUuNTA0IDIuMDA3XCIgc3R5bGU9XCJmaWxsOiMzMTdlYWNcIi8+YCxcblx0XCJMb2cgZmlsZVwiOiBgPHBhdGggZD1cIk0yOS40LDI3LjZIMi41VjQuNUgyOS40Wm0tMjUuOS0xSDI4LjRWNS41SDMuNVpcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMi41XCIgeT1cIjUuNVwiIHdpZHRoPVwiMjYuOVwiIGhlaWdodD1cIjEuOVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIxMS4zMzNcIiB5PVwiOS41XCIgd2lkdGg9XCI4LjE2N1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMTEuMzMzXCIgeT1cIjEyLjA4M1wiIHdpZHRoPVwiMTIuNVwiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMTEuMzMzXCIgeT1cIjE0Ljc1XCIgd2lkdGg9XCIxMC42MTdcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjExLjMzM1wiIHk9XCIxNy41ODNcIiB3aWR0aD1cIjE0LjE2N1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMTEuMzMzXCIgeT1cIjIwLjVcIiB3aWR0aD1cIjkuODM0XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIxMS41XCIgeT1cIjIzLjA4M1wiIHdpZHRoPVwiMTIuMTY3XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiOS41XCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiNS41XCIgeT1cIjEyLjA4M1wiIHdpZHRoPVwiNC4zMzNcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjUuNVwiIHk9XCIxMi4wODNcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiMTQuNjY3XCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiNS41XCIgeT1cIjE3LjI1XCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiNS41XCIgeT1cIjIwLjVcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiMjMuMDgzXCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz5gLFxuXHRcIkxPTENPREVcIjogYDxwYXRoIGQ9XCJNMjEuMywzLjczYTMuOTQsMy45NCwwLDAsMSwxLjA0MS0uNjIsOC40MzUsOC40MzUsMCwwLDEsLjU1NiwzLjM4NSwyNC44NjUsMjQuODY1LDAsMCwxLS42NDMsNS4wMTljLS4zNjgtLjE4LS43MzYtLjM2NC0xLjEtLjU1NGExMS43NTQsMTEuNzU0LDAsMCwwLC4yNzMtMy43NDcsMy4wOCwzLjA4LDAsMCwwLS4yNTUtLjg2NSw1LjE0Miw1LjE0MiwwLDAsMC0yLjAxNiwyLjA3Yy0uMzE5LS4yNC0uNjUyLS40NTktLjk4NS0uNjc2QTE1LjcxNiwxNS43MTYsMCwwLDEsMjEuMywzLjczWlwiIHN0eWxlPVwiZmlsbDojZWRlZGVkXCIvPjxwYXRoIGQ9XCJNMTkuNDUxLDguNmE0LjU3NCw0LjU3NCwwLDAsMSwxLjUwOS0xLjU2Myw2LjY4NSw2LjY4NSwwLDAsMSwuMDksMi42NzFDMjAuNTE3LDkuMzQzLDE5Ljk3NSw4Ljk4NywxOS40NTEsOC42WlwiIHN0eWxlPVwiZmlsbDojZWRlZGVkXCIvPjxwYXRoIGQ9XCJNMTYuNDYxLDEwLjA3NmMtLjAzOC0xLjEzNC0uMDMxLTIuMjY5LS4wMjYtMy40LS45LjQ5My0xLjc1OCwxLjA3MS0yLjY0OCwxLjU4OS0uNDUzLjI3LS45MDguNTM2LTEuMzYuODA4LjIyNC0uMTYzLjQ1Ny0uMzEyLjY5LS40NjItLjg2MS0xLjIyNC0xLjk3MS0yLjUtMy41My0yLjc0OGExMC45NjQsMTAuOTY0LDAsMCwwLS4zNjUsNS4xNDdjLjMxOC0uMTk1LjYzMy0uNC45NjItLjU3Mi0uNDc0LjMxOS0uOTY0LjYxNS0xLjQ0Ni45Mi0uOTU3LjYtMS45MjIsMS4xOTItMi44OTIsMS43NzdhMS4yMzIsMS4yMzIsMCwwLDAtLjM5MS4zMmMtLjEsMS4zOTUtLjM0LDQuMzkyLS4zNCw0LjM5Mi0uMjU0LDMuNjY4LS41MjIsNy4zMzYtLjgyNiwxMSw0LjA2Mi4zNDMsOC4xMTguNzQyLDEyLjE3OSwxLjA3NkMxNi40NTgsMjMuMywxNi40NzIsMTYuNjksMTYuNDYxLDEwLjA3NlpcIiBzdHlsZT1cImZpbGw6I2VkZWRlZFwiLz48cGF0aCBkPVwiTTIxLjEsMi45NzdBNS44ODQsNS44ODQsMCwwLDEsMjIuNzA2LDJhMTAuMDY0LDEwLjA2NCwwLDAsMSwuNzcyLDQuNjA2LDI0LjU5MSwyNC41OTEsMCwwLDEtLjUwOCw0LjQ1OWMxLjIuODQ2LDIuNDMzLDEuNjQ1LDMuNjE4LDIuNTA5cS40NCw2LjM4LjkwNywxMi43NThjLjA2Ni44MzkuMDk0LDEuNjguMjE2LDIuNTEzLTMuMDI5LjI3OS02LjA1Ny41OTEtOS4wODUuODg2YTE5LjEzNywxOS4xMzcsMCwwLDAtMi4xNTguMjd2LS4wODNjLS4wMS02LjYxNCwwLTEzLjIyNy0uMDA3LTE5Ljg0MS0uMDM4LTEuMTM0LS4wMzEtMi4yNjktLjAyNi0zLjR2LS4xYy40MDYuMjkyLjgyNi41NjIsMS4yNDMuODM5QTE2LjI3NCwxNi4yNzQsMCwwLDEsMjEuMSwyLjk3N1ptLjIuNzUyYTE1LjcxNiwxNS43MTYsMCwwLDAtMy4xMjgsNC4wMTFjLjMzNC4yMTcuNjY2LjQzNy45ODUuNjc2YTUuMTQyLDUuMTQyLDAsMCwxLDIuMDE2LTIuMDcsMy4wOCwzLjA4LDAsMCwxLC4yNTUuODY1LDExLjc1NCwxMS43NTQsMCwwLDEtLjI3MywzLjc0N2MuMzY0LjE5LjczMS4zNzQsMS4xLjU1NGEyNC44NjUsMjQuODY1LDAsMCwwLC42NDMtNS4wMTksOC40MzUsOC40MzUsMCwwLDAtLjU1Ni0zLjM4NUEzLjk0LDMuOTQsMCwwLDAsMjEuMywzLjczWk0xOS40NTEsOC42Yy41MjQuMzgzLDEuMDY2LjczOSwxLjYsMS4xMDhhNi42ODUsNi42ODUsMCwwLDAtLjA5LTIuNjcxQTQuNTc0LDQuNTc0LDAsMCwwLDE5LjQ1MSw4LjZaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk05LjIxOSw1LjA2MmEzLjU4MSwzLjU4MSwwLDAsMSwyLjIwNS43NDhBMTIuOSwxMi45LDAsMCwxLDEzLjc4OCw4LjI2Yy0uNDUzLjI3LS45MDguNTM2LTEuMzYuODA4LjIyNC0uMTYzLjQ1Ny0uMzEyLjY5LS40NjItLjg2MS0xLjIyNC0xLjk3MS0yLjUtMy41My0yLjc0OGExMC45NjQsMTAuOTY0LDAsMCwwLS4zNjUsNS4xNDdjLjMxOC0uMTk1LjYzMy0uNC45NjItLjU3Mi0uNDc0LjMxOS0uOTY0LjYxNS0xLjQ0Ni45MkExNC4xLDE0LjEsMCwwLDEsOS4yMTksNS4wNjJaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk0xMC41MDcsOC40NzZhMi40NTUsMi40NTUsMCwwLDEsMS41MTcuODhsLS4zNi4yQTIuNjksMi42OSwwLDAsMCwxMC43MzksOWEzLjMxOCwzLjMxOCwwLDAsMC0uMTY1LDEuMjgxbC0uMzQ0LjExQTcuMDIxLDcuMDIxLDAsMCwxLDEwLjUwNyw4LjQ3NlpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTEyLjEzOSwxMC42OTNhLjQ4Ny40ODcsMCwwLDEsLjU0Mi4wMSwxLjU1MiwxLjU1MiwwLDAsMSwuMDYyLjZjLS4wMzkuNzg0LjAyNCwxLjU3My0uMDc2LDIuMzU0YTEuMDEzLDEuMDEzLDAsMCwxLTEuMDEyLjg4NmMtLjIzMy0uMDUtLjI3OC0uMzQxLS4yNzgtLjU0MSwwLS42NzUuMS0xLjM0Ny4wNjYtMi4wMjRBMS4zLDEuMywwLDAsMSwxMi4xMzksMTAuNjkzWm0uMTUsMS4wODRhLjg5MS44OTEsMCwwLDAsLjI1MS0uODY2QzEyLjIxOCwxMS4wNjEsMTEuOSwxMS41MDcsMTIuMjg5LDExLjc3N1pcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTE0LjUsMTMuNzI4YTE3LjY3MSwxNy42NzEsMCwwLDEsMS45MjgtLjgyMmMtLjAyNC4wNjQtLjA2OS4xOTEtLjA5Mi4yNTUtLjY0OS4zNTgtMS4zNi42LTIuMDIxLjkzOGExMi4xMTgsMTIuMTE4LDAsMCwwLTMuMjM4LDIuMjQ4QTcuMiw3LjIsMCwwLDEsMTAsMTcuMzgxYTQuMTY2LDQuMTY2LDAsMCwxLC45OC0xLjI0NkExMi43MjcsMTIuNzI3LDAsMCwxLDE0LjUsMTMuNzI4WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNNy42MjgsMTMuMjMxYS45ODkuOTg5LDAsMCwxLC41OTQtLjE1MiwxOC4xMTQsMTguMTE0LDAsMCwxLS4xLDIuNjU0LjcxMy43MTMsMCwwLDEtLjg5Mi42NTgsMjEuMSwyMS4xLDAsMCwxLC4wODItMi4yMjZBMS4zODMsMS4zODMsMCwwLDEsNy42MjgsMTMuMjMxWm0uMTc5LjgzMWMuMjY4LS4xMTIuMzE5LS40MTMuNDEyLS42NTRDNy44MiwxMy4zMTIsNy43NzUsMTMuNzgzLDcuODA3LDE0LjA2MlpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTEwLjgyMywxNy4wOTRhMTMuOTM0LDEzLjkzNCwwLDAsMSw0LjYxMi0xLjk2OGMtLjAxLjA2OC0uMDI5LjIwNi0uMDM5LjI3NGExNC4yNzMsMTQuMjczLDAsMCwwLTQuNDc1LDEuOTE0LDIuNjI2LDIuNjI2LDAsMCwxLS42ODEuMzQzQzEwLjMsMTcuMzU2LDEwLjYsMTcuMjQ5LDEwLjgyMywxNy4wOTRaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk01LjI2NCwxNy41OUE1LjE0NCw1LjE0NCwwLDAsMSw4LDE3LjFhMS41LDEuNSwwLDAsMSwxLjE0Mi42NjVBNi44NTQsNi44NTQsMCwwLDAsNy42LDE3LjI3OGE2Ljk2Nyw2Ljk2NywwLDAsMC0yLjQ4NC41NjRaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk0xMC41NzgsMTcuNzI1YTkuNTksOS41OSwwLDAsMSwzLjYxLS41NjZjLjI0LjAyMS4zMjEuMi4zMTMuNDI0YTMuMjM4LDMuMjM4LDAsMCwwLTEuOTU2LS4wOSwyMS42ODgsMjEuNjg4LDAsMCwwLTIuNTU3LjY1OEM5Ljk5NSwxNy44MjksMTAuMzQ1LDE3LjgwOSwxMC41NzgsMTcuNzI1WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNOS4yNjgsMTcuNjc2Yy4xNDktLjE3Ni41MzMtLjMzMi42NjQtLjA2MmExLjMsMS4zLDAsMCwxLS41MTYuOTkzQzkuMjY4LDE4LjMzNyw4Ljk3MywxNy45NTIsOS4yNjgsMTcuNjc2WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNNS43NDQsMTguNjI5YTUuOSw1LjksMCwwLDEsMy4xODItLjYxOGMtLjE4Mi4yMzUtLjQ5My4xNzgtLjc1MS4yMDhhNS42NjMsNS42NjMsMCwwLDAtMS43Mi4zM2MtLjM0NC4xMjgtLjY2NS4zMS0xLjAyLjQwOUEuNi42LDAsMCwxLDUuNzQ0LDE4LjYyOVpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTYuOSwxOS4xMTRhOS42NzYsOS42NzYsMCwwLDEsMi4yLS44NTRjLS4xLjMtLjQ0MS4zMzgtLjcuNDQ0YTcuODM5LDcuODM5LDAsMCwwLTIuNTY0LDEuNDE1QzUuOTM4LDE5LjU4NCw2LjQ4OCwxOS4zNjksNi45LDE5LjExNFpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTExLjYzNSwxOS43YTMuMTEsMy4xMSwwLDAsMCwxLjkxLTEuMzgzYy4zNDctLjEuMjczLjI3NS4yNi40OTRhMi4wNTYsMi4wNTYsMCwwLDEtLjk1LDEuMDM2LDEyLjM2NSwxMi4zNjUsMCwwLDEtMS44MjcsNi40MTlBMi4zNDIsMi4zNDIsMCwwLDEsOC44NzksMjcuNWEyLjI1MSwyLjI1MSwwLDAsMS0xLjUzNS0xLjQ5LDEwLjg5NCwxMC44OTQsMCwwLDEtLjY5LTQuNjY1Yy0uMTU3LS4xMTItLjM2OS0uMTc5LS40Ni0uMzYyLS4xMy0uMi4wMTEtLjQyNS4wNDctLjYzMS4xOS4xNTEuMzQ1LjM5Mi42MDYuNDJhMy42MTcsMy42MTcsMCwwLDAsMS44NjMtLjQsMS41ODgsMS41ODgsMCwwLDAsLjcwOS0uNjYyLDMuODgxLDMuODgxLDAsMCwwLC40MzEuMjY2QTQuMjgsNC4yOCwwLDAsMCwxMS42MzUsMTkuN1ptLTIuMi44MzVhNC4xMzIsNC4xMzIsMCwwLDEtMi40NjIuODA5LDExLjA0OSwxMS4wNDksMCwwLDAsLjM1OCwzLjUyNiwzLjIyNiwzLjIyNiwwLDAsMSwuOS0xLjI4MiwyLjA1NSwyLjA1NSwwLDAsMSwyLjMtLjIsMi4zLDIuMywwLDAsMSwuODg0LDEuMTcyLDE0LjY1OSwxNC42NTksMCwwLDAsMS4wMDUtNC40ODlBNS4xNjcsNS4xNjcsMCwwLDEsOS40MzUsMjAuNTMyWm0tLjMyOSwzLjI2YTIuMjczLDIuMjczLDAsMCwwLTEuNSwxLjQzNGMtLjEyMy4yNjkuMS41MTcuMjI1LjczOC4zMzEuNDYyLjc5NSwxLDEuNDMxLjg5M2EyLjg2OCwyLjg2OCwwLDAsMCwxLjc2OS0xLjZBMS42LDEuNiwwLDAsMCw5LjEwNiwyMy43OTJaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+YCxcblx0XCJMdWFcIjogYDxwYXRoIGQ9XCJNMTYuNSwzMGwtLjAxMS0uMzIxYy40LS4wMTQuOC0uMDQ1LDEuMTktLjA5NGwuMDM5LjMxOUMxNy4zMTIsMjkuOTUyLDE2LjksMjkuOTg0LDE2LjUsMzBabS0xLjIyMi0uMDExYy0uNC0uMDIxLS44MTQtLjA2MS0xLjIxNi0uMTE4bC4wNDUtLjMxOGMuMzkzLjA1NS43OTMuMDk0LDEuMTg4LjExNVpNMTguOTIsMjkuN2wtLjA2Ny0uMzE0Yy4zODctLjA4My43NzYtLjE4NCwxLjE1NS0uM2wuMDk0LjMwN0MxOS43MTQsMjkuNTExLDE5LjMxNiwyOS42MTUsMTguOTIsMjkuN1ptLTYuMDYzLS4wNTNjLS40LS4wOTEtLjc5MS0uMi0xLjE3Ny0uMzI2bC4xLS4zMDZjLjM3Ny4xMjIuNzY0LjIzLDEuMTUuMzE5Wm04LjQtLjY2NS0uMTIxLS4zYy4zNjQtLjE0OC43MjgtLjMxNCwxLjA4LS40OTNsLjAwNiwwLC4xNDUuMjg2LDAsMEMyMiwyOC42NjEsMjEuNjI2LDI4LjgzMSwyMS4yNTMsMjguOTgyWm0tMTAuNzE4LS4wODhjLS4zNzQtLjE1OC0uNzQ1LS4zMzUtMS4xLS41MjRsLjE1LS4yODRjLjM1LjE4Ni43MTMuMzU4LDEuMDc4LjUxMlptMTIuODkzLTEuMDIxLS4xNy0uMjczYy4zMzctLjIxLjY2OC0uNDM3Ljk4NC0uNjc1bC4xOTMuMjU3QzI0LjExMSwyNy40MjUsMjMuNzcyLDI3LjY1OCwyMy40MjgsMjcuODczWk04LjM3OSwyNy43NTFjLS4zNDEtLjIyLS42NzYtLjQ1OS0xLS43MDhsLjItLjI1M2MuMzEyLjI0My42NC40NzYuOTcyLjY5MVptMTctMS4zNDYtLjIxNS0uMjM5Yy4yOTQtLjI2NS41OC0uNTQ2Ljg1MS0uODM2bC4yMzUuMjE5QzI1Ljk3MiwyNS44NDYsMjUuNjc5LDI2LjEzNCwyNS4zNzgsMjYuNFpNNi40NTQsMjYuMjUyYy0uMy0uMjc2LS41ODUtLjU2OS0uODU2LS44N2wuMjM5LS4yMTVjLjI2NS4yOTQuNTQ3LjU4LjgzNi44NVpNMjcuMDQxLDI0LjYybC0uMjUzLS4yYy4yNDQtLjMxMi40NzYtLjYzOS42OTItLjk3MmwuMjcuMTc1QzI3LjUyOSwyMy45NjYsMjcuMjksMjQuMywyNy4wNDEsMjQuNjJaTTQuODIsMjQuNDM5Yy0uMjQ0LS4zMjQtLjQ3Ni0uNjYyLS42OTItMS4wMDdsLjI3Mi0uMTdjLjIxLjMzNy40MzguNjY4LjY3Ni45ODRabTIzLjU0Ny0xLjg2Ny0uMjg0LS4xNTFjLjE4Ni0uMzUuMzU4LS43MTMuNTEzLTEuMDc4bC4zLjEyNUMyOC43MzUsMjEuODQzLDI4LjU1OCwyMi4yMTQsMjguMzY4LDIyLjU3MlptLTI0Ljg0MS0uMi0uMDA2LS4wMTJjLS4xODMtLjM1OS0uMzUyLS43MjgtLjUtMS4xbC4zLS4xMjFjLjE0Ny4zNjIuMzEyLjcyNC40OTEsMS4wNzRsLjAwNi4wMTJaTTI5LjMyLDIwLjMyNWwtLjMwNi0uMWMuMTIyLS4zNzcuMjMtLjc2NC4zMTktMS4xNWwuMzEzLjA3MkMyOS41NTUsMTkuNTQzLDI5LjQ0NiwxOS45MzksMjkuMzIsMjAuMzI1Wk0yLjYwOCwyMC4xMDdjLS4xMi0uMzg4LS4yMjMtLjc4Ni0uMzA4LTEuMTgybC4zMTQtLjA2N2MuMDgzLjM4Ny4xODQuNzc2LjMsMS4xNTVaTTI5Ljg3LDE3Ljk0NmwtLjMxOC0uMDQ1Yy4wNTYtLjM5My4wOTQtLjc5My4xMTUtMS4xODhsLjMyMS4wMTdDMjkuOTY3LDE3LjEzNSwyOS45MjcsMTcuNTQ0LDI5Ljg3LDE3Ljk0NlpNMi4xLDE3LjcyYy0uMDUtLjQtLjA4Mi0uODEyLS4xLTEuMjE4bC4zMjEtLjAxMWMuMDE0LjQuMDQ2LjguMDk0LDEuMTlabTI3LjU4Mi0yLjJjLS4wMTQtLjQtLjA0NS0uOC0uMDkzLTEuMTlsLjMxOS0uMDM5Yy4wNDkuNC4wODIuODEzLjEsMS4yMThaTTIuMzMxLDE1LjMsMi4wMSwxNS4yOGMuMDIxLS40MDUuMDYxLS44MTQuMTE3LTEuMjE2bC4zMTguMDQ1QzIuMzksMTQuNSwyLjM1MiwxNC45LDIuMzMxLDE1LjNabTI3LjA1Ny0yLjE0NGMtLjA4My0uMzg3LS4xODQtLjc3Ni0uMy0xLjE1NUwyOS40LDExLjljLjExOS4zODguMjIzLjc4Ni4zMDcsMS4xODNaTTIuNjYzLDEyLjkzNGwtLjMxMy0uMDcyYy4wOTEtLjQuMi0uNzkxLjMyNi0xLjE3N2wuMzA2LjFDMi44NTksMTIuMTYxLDIuNzUyLDEyLjU0OCwyLjY2MywxMi45MzRabTI2LjAyNi0yLjA2MmMtLjE0OS0uMzY2LS4zMTUtLjczMi0uNS0xLjA4NmwuMjg2LS4xNDZjLjE4NS4zNjMuMzU1LjczNi41MDcsMS4xMTFaTTMuNCwxMC42NjVsLS4zLS4xMjVjLjE1OC0uMzc0LjMzNC0uNzQ1LjUyNC0xLjFsLjI4NC4xNUMzLjcyNCw5LjkzNywzLjU1MiwxMC4zLDMuNCwxMC42NjVaTTQuNTEzLDguNTU3bC0uMjctLjE3NGMuMjItLjM0MS40NTgtLjY3Ni43MDctMWwuMjU0LjJDNC45NjEsNy45LDQuNzI4LDguMjI0LDQuNTEzLDguNTU3Wk01Ljk3Nyw2LjY3NmwtLjIzNS0uMjE5Yy4yNzYtLjMuNTY5LS41ODUuODctLjg1N2wuMjE1LjIzOUM2LjUzMyw2LjEsNi4yNDcsNi4zODYsNS45NzcsNi42NzZabTEuNzctMS42LS4xOTMtLjI1N2MuMzIzLS4yNDQuNjYyLS40NzcsMS4wMDctLjY5MmwuMTcuMjcyQzguMzk0LDQuNjE0LDguMDYzLDQuODQxLDcuNzQ3LDUuMDc5Wm0xNS43MDUtLjU1OC0uMDE4LS4wMTIuMTc1LS4yNy4wMTguMDExWm0tMS4wNDctLjYxNmMtLjM1LS4xODYtLjcxMy0uMzU4LTEuMDc4LS41MTJsLjEyNS0uM2MuMzc0LjE1OC43NDUuMzM0LDEuMS41MjRaTTkuNzY5LDMuODE1bC0uMTQ2LS4yODYuMDE4LS4wMDljLjM1Ni0uMTgxLjcyNC0uMzQ5LDEuMDkzLS41bC4xMjEuM2MtLjM2MS4xNDctLjcyLjMxMS0xLjA2OC40ODhabTEwLjQ0LS44MzhjLS4zNzctLjEyMi0uNzY0LS4yMjktMS4xNTEtLjMxN2wuMDcyLS4zMTNjLjQuMDkxLjc5Mi4yLDEuMTc4LjMyNVptLTguMjI5LS4wNi0uMDk0LS4zMDdjLjM4OC0uMTE5Ljc4Ni0uMjIzLDEuMTgyLS4zMDhsLjA2Ny4zMTRDMTIuNzQ3LDIuNywxMi4zNTksMi44LDExLjk4LDIuOTE3Wm01LjktLjQ3M2MtLjM5My0uMDU1LS43OTMtLjA5Mi0xLjE4OC0uMTEzbC4wMTYtLjMyMWMuNDA1LjAyMS44MTQuMDU5LDEuMjE2LjExNVptLTMuNTcyLS4wMjYtLjA0LS4zMTljLjQtLjA1LjgxMi0uMDgzLDEuMjE4LS4xbC4wMTIuMzIxQzE1LjEwNiwyLjMzNywxNC43MDUsMi4zNjksMTQuMzEyLDIuNDE4WlwiIHN0eWxlPVwiZmlsbDpncmF5XCIvPjxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTUuOTk4XCIgcj1cIjEwLjcwOFwiIHN0eWxlPVwiZmlsbDpuYXZ5XCIvPjxjaXJjbGUgY3g9XCIyMC40MzVcIiBjeT1cIjExLjU2MlwiIHI9XCIzLjEzNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxjaXJjbGUgY3g9XCIyNi43MDhcIiBjeT1cIjUuMjlcIiByPVwiMy4xMzdcIiBzdHlsZT1cImZpbGw6bmF2eVwiLz48cGF0aCBkPVwiTTEzLjEsMjEuMzUydi0uNzlIOS42MjlWMTQuMzI2aC0uOXY3LjAyNkgxMy4xXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNy45MTYsMjEuMzUyVjE2LjNoLS44djIuNzg1YzAsMS4wMzEtLjU0LDEuNzA2LTEuMzc4LDEuNzA2QS45NS45NSwwLDAsMSwxNC43LDE5LjhWMTYuM2gtLjh2My44MTdjMCwuODM4LjYyNiwxLjM3OCwxLjYwOSwxLjM3OGExLjg2MywxLjg2MywwLDAsMCwxLjY4Ny0uOTI1di43ODFoLjcyM1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjMuNzkxLDIxLjMzM3YtLjYwN2EuNjY0LjY2NCwwLDAsMS0uMTczLjAxOWMtLjI3OSwwLS40MzQtLjE0NS0uNDM0LS40VjE3LjUzNmMwLS45LS42NTUtMS4zNzgtMS45LTEuMzc4LTEuMjI0LDAtMS45NzYuNDcyLTIuMDI0LDEuNjM4aC44MWMuMDY3LS42MTcuNDM0LS45LDEuMTg1LS45LjcyMywwLDEuMTI4LjI3LDEuMTI4Ljc1MnYuMjEyYzAsLjMzNy0uMi40ODItLjgzOC41NTlhNS43NjMsNS43NjMsMCwwLDAtMS42MTkuMzA4LDEuMzI3LDEuMzI3LDAsMCwwLS44ODcsMS4zMTFjMCwuOTE2LjYzNiwxLjQ1NSwxLjY1OCwxLjQ1NWEyLjM2MywyLjM2MywwLDAsMCwxLjcxNS0uNzQyLjg1NS44NTUsMCwwLDAsLjgyOS42NjUsMS45NjcsMS45NjcsMCwwLDAsLjU0OS0uMDg3bS0xLjQwNy0xLjcyNWExLjM2NiwxLjM2NiwwLDAsMS0xLjUxMywxLjE4NWMtLjYyNiwwLS45OTMtLjIyMi0uOTkzLS43NzEsMC0uNTMuMzU3LS43NjEsMS4yMTQtLjg4N2E0LDQsMCwwLDAsMS4yOTEtLjI3OXYuNzUyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJNYXJrZG93blwiOiBgPHJlY3QgeD1cIjIuNVwiIHk9XCI3Ljk1NVwiIHdpZHRoPVwiMjdcIiBoZWlnaHQ9XCIxNi4wOTFcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6Izc1NTgzOFwiLz48cG9seWdvbiBwb2ludHM9XCI1LjkwOSAyMC42MzYgNS45MDkgMTEuMzY0IDguNjM2IDExLjM2NCAxMS4zNjQgMTQuNzczIDE0LjA5MSAxMS4zNjQgMTYuODE4IDExLjM2NCAxNi44MTggMjAuNjM2IDE0LjA5MSAyMC42MzYgMTQuMDkxIDE1LjMxOCAxMS4zNjQgMTguNzI3IDguNjM2IDE1LjMxOCA4LjYzNiAyMC42MzYgNS45MDkgMjAuNjM2XCIgc3R5bGU9XCJmaWxsOiM3NTU4MzhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjIuOTU1IDIwLjYzNiAxOC44NjQgMTYuMTM2IDIxLjU5MSAxNi4xMzYgMjEuNTkxIDExLjM2NCAyNC4zMTggMTEuMzY0IDI0LjMxOCAxNi4xMzYgMjcuMDQ1IDE2LjEzNiAyMi45NTUgMjAuNjM2XCIgc3R5bGU9XCJmaWxsOiM3NTU4MzhcIi8+YCxcblx0XCJNQVRMQUJcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE2LjgwM1wiIHkxPVwiMTYuNjMxXCIgeDI9XCIxNS4wMTNcIiB5Mj1cIjIyLjQxMVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAzMilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM1MTJcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yM1wiIHN0b3AtY29sb3I9XCIjNTIzXCIvPjxzdG9wIG9mZnNldD1cIjAuMzZcIiBzdG9wLWNvbG9yPVwiIzUzNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjUxXCIgc3RvcC1jb2xvcj1cIiM2NDVcIi8+PHN0b3Agb2Zmc2V0PVwiMC42NlwiIHN0b3AtY29sb3I9XCIjNTY4XCIvPjxzdG9wIG9mZnNldD1cIjAuODRcIiBzdG9wLWNvbG9yPVwiIzI5ZFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjI5LjcxXCIgeTE9XCIxOC45ODNcIiB4Mj1cIjExLjcxXCIgeTI9XCIxNC41NjNcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjA4MVwiIHN0b3AtY29sb3I9XCIjYzMzXCIvPjxzdG9wIG9mZnNldD1cIjAuMTg5XCIgc3RvcC1jb2xvcj1cIiNkZTUyMzlcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMTNcIiBzdG9wLWNvbG9yPVwiI2YwNmUzZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjQyMVwiIHN0b3AtY29sb3I9XCIjZmE4MDQyXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjZmU4NjQzXCIvPjxzdG9wIG9mZnNldD1cIjAuNThcIiBzdG9wLWNvbG9yPVwiI2ZhN2Y0MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjY5NlwiIHN0b3AtY29sb3I9XCIjZWY2YzNlXCIvPjxzdG9wIG9mZnNldD1cIjAuODMzXCIgc3RvcC1jb2xvcj1cIiNkYzRjMzdcIi8+PHN0b3Agb2Zmc2V0PVwiMC45MTZcIiBzdG9wLWNvbG9yPVwiI2NmMzYzM1wiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX21hdGxhYjwvdGl0bGU+PHBhdGggZD1cIk0yLDE3LjU1bDcuOTctMy4yMmEyMC43LDIwLjcsMCwwLDEsMi43Mi0yLjk1Yy42Ni0uMzUsMS45LS4xNiw0LjE3LTIuOTgsMi4yLTIuNzUsMi45LTUuMSwzLjkzLTUuMSwxLjYzLDAsMi44MywzLjUyLDQuNjUsOC44NUExMTUuNjI5LDExNS42MjksMCwwLDAsMzAsMjQuMTJjLTEuOS0xLjc3LTMuNTItMy42OC01LjM3LTMuNjMtMS43Mi4wNC0zLjYzLDIuMDgtNS43Miw0LjctMS42NiwyLjEtMy44NiwzLjU0LTQuNzIsMy41MSwwLDAtMi4yMi02LjI4LTQuMDgtNy4zYTIuNjQxLDIuNjQxLDAsMCwwLTIuMzkuMkwyLDE3LjU0WlwiIHN0eWxlPVwiZmlsbDojNDlkXCIvPjxwYXRoIGQ9XCJNMTkuOCw0LjAyYy0uNjcuOS0xLjQ4LDIuNTUtMi45NCw0LjM4LTIuMjcsMi44Mi0zLjUsMi42My00LjE3LDIuOThhMTkuNjc0LDE5LjY3NCwwLDAsMC0yLjcyLDIuOTVsMy4zLDIuNDFjMi44LTMuODIsNC4zLTcuOTYsNS40Ny0xMC42NEExMy41NzksMTMuNTc5LDAsMCwxLDE5LjgsNC4wMlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTIwLjgsMy4zYy0yLjE4LDAtMy42NywxMS40OC0xMS43MiwxNy44OSwyLjI2LS4zNyw0LjIyLDUuMjQsNS4xMiw3LjUxLDQtLjY4LDcuMi04LjMzLDEwLjQzLTguMjEsMS44NS4wNywzLjQ3LDEuODYsNS4zNywzLjYzQzI1LjY2LDE1LDIzLjYzLDMuMywyMC44LDMuM1pcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz5gLFxuXHRcIk1BWFNjcmlwdFwiOiBgPHBhdGggZD1cIk0xNC40LDcuNTY4LDIwLjIxMiwySDcuMjczTDQuODQ4LDcuNTM2bDkuNTU3LjAzMlpNNC44NDgsNy41MzZsNi44NDQsMi42TDE0LjQsNy41NjhtLS4wMTMsMy42MjItMi43LTEuMDUzTDUuMjYzLDE2LjFsNi4yODYsNS44MjMsMi44MDgtMS4xTDE0LjQsNy41NjhtMCwwLDEyLjgsOC4zNzZMMjAuMjEyLDJNMjcuMiwxNS45NDQsMTQuMzkxLDExLjE5bS0uMDM1LDkuNjM2LS4wMzIsMy42ODVNMjAuMjI4LDMwbC04LjY3OS04LjA3M0w0LjgsMjQuNDY0LDcuMjU3LDMwWm0wLDBMMjcuMiwxNS45NDQsMTQuMzI1LDI0LjUxMk0yNy4yLDE1Ljk0NCwxNC4zNTcsMjAuODI2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMxZDFkMWI7c3Ryb2tlLW1pdGVybGltaXQ6MjIuOTI1NTg0NzkzMDkwODI7c3Ryb2tlLXdpZHRoOjAuMDI4MzQ5OTk5MzM4Mzg4NDQzcHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuMzkxIDExLjE5IDI3LjIgMTUuOTQ0IDE0LjQwNSA3LjU2OCAxNC4zOTEgMTEuMTkgMTQuMzkxIDExLjE5XCIgc3R5bGU9XCJmaWxsOiMxODFiMTc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjcuMiAxNS45NDQgMTQuMzU3IDIwLjgyNiAxNC4zMjUgMjQuNTA5IDE0LjMyNiAyNC41MTEgMjcuMiAxNS45NDQgMjcuMiAxNS45NDRcIiBzdHlsZT1cImZpbGw6IzFhMWQxYTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNC40MDUgNy41NjggMjcuMiAxNS45NDQgMjAuMjEyIDIgMTQuNDA1IDcuNTY4IDE0LjQwNSA3LjU2OFwiIHN0eWxlPVwiZmlsbDojMDA1ZjVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI3LjIgMTUuOTQ0IDE0LjMyNiAyNC41MTEgMjAuMjI4IDMwIDI3LjIgMTUuOTQ0IDI3LjIgMTUuOTQ0XCIgc3R5bGU9XCJmaWxsOiMwMDQyNDI7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuMzU3IDIwLjgyNiAyNy4yIDE1Ljk0NCAxNC4zOTEgMTEuMTkgMTQuMzU3IDIwLjgyNiAxNC4zNTcgMjAuODI2XCIgc3R5bGU9XCJmaWxsOiMwMDUxNTI7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuMzU3IDIwLjgyNiAxNC4zOTEgMTEuMTkgMTEuNjkyIDEwLjEzNyA1LjI2MyAxNi4xMDQgMTEuNTQ5IDIxLjkyNyAxNC4zNTcgMjAuODI2IDE0LjM1NyAyMC44MjZcIiBzdHlsZT1cImZpbGw6IzAwNjk2YjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxMS42OTIgMTAuMTM3IDE0LjM5MSAxMS4xOSAxNC40MDUgNy41NjggMTEuNjkyIDEwLjEzNyAxMS42OTIgMTAuMTM3XCIgc3R5bGU9XCJmaWxsOiMxYjI3MjU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuMzU3IDIwLjgyNiAxMS41NDkgMjEuOTI3IDE0LjMyNSAyNC41MDkgMTQuMzU3IDIwLjgyNiAxNC4zNTcgMjAuODI2XCIgc3R5bGU9XCJmaWxsOiMxYzI2MjQ7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuMzI1IDI0LjUxMiA0LjggMjQuNDY0IDcuMjU3IDMwIDIwLjIyOCAzMCAxNC4zMjYgMjQuNTExIDE0LjMyNSAyNC41MTIgMTQuMzI1IDI0LjUxMlwiIHN0eWxlPVwiZmlsbDojMDA2NDY2O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjQuODQ4IDcuNTM2IDE0LjQwNSA3LjU2OCAyMC4yMTIgMiA3LjI3MyAyIDQuODQ4IDcuNTM2IDQuODQ4IDcuNTM2XCIgc3R5bGU9XCJmaWxsOiMwMDc2N2E7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuNDA1IDcuNTY4IDQuODQ4IDcuNTM2IDExLjY5MiAxMC4xMzcgMTQuNDA1IDcuNTY4IDE0LjQwNSA3LjU2OFwiIHN0eWxlPVwiZmlsbDojMWUzOTM4O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjExLjU0OSAyMS45MjcgNC44IDI0LjQ2NCAxNC4zMjUgMjQuNTEyIDE0LjMyNSAyNC41MDkgMTEuNTQ5IDIxLjkyNyAxMS41NDkgMjEuOTI3XCIgc3R5bGU9XCJmaWxsOiMyMDMwMmU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+YCxcblx0XCJNRUxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi02MTEuMzQ4XCIgeTE9XCItNjcuNDg4XCIgeDI9XCItNjAwLjI3MlwiIHkyPVwiLTY1LjMzNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMGY2MDY3XCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMDVhYmFjXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzU4YmVjNFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi02MDMuNTk0XCIgeTE9XCItNzcuNjk5XCIgeDI9XCItNjAyLjAxMVwiIHkyPVwiLTU5LjYwNFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMTE3YzgzXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMjFiNWI1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzdlZDRkNFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi02MTIuNzU3XCIgeTE9XCItNTkuOTA2XCIgeDI9XCItNjE2LjkzNFwiIHkyPVwiLTcyLjc2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM5YWNjZDNcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiM3MmFlYjNcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMzE3ZDdmXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiLTYyMS44NTFcIiB5MT1cIi03NC41NzlcIiB4Mj1cIi02MTQuODRcIiB5Mj1cIi03Mi4zMDFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLjQzNywgMCwgMCwgLTEuNDM3LCA4OTQuNDE3LCAtODIuMjkyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzIxNjI2ZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzE1N2M4NFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMwM2EzYTVcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJlXCIgeDE9XCItNjE2LjM2OVwiIHkxPVwiLTY0LjQ2OVwiIHgyPVwiLTYyNS4zNFwiIHkyPVwiLTcyLjgzNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMGI3YzgxXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMDY4ZDkwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzE2YjFiMVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImZcIiB4MT1cIi02MDguMDcyXCIgeTE9XCItNzQuNjc4XCIgeDI9XCItNjAzLjQ4OFwiIHkyPVwiLTcwLjk2NlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMGE4YThmXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMGY3YzgyXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzFhNTk2NFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImdcIiB4MT1cIi02MDEuMTM0XCIgeTE9XCItNzAuMTEzXCIgeDI9XCItNjA2LjAwOFwiIHkyPVwiLTY3LjA2N1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMjU2YTc3XCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjMGQ5NDk5XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzA2YTBhMlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX21heWE8L3RpdGxlPjxwYXRoIGQ9XCJNMjEuNiwzLjQ2MkgzMEwxOC43NjcsMjQuMjExcy0xLjg5My01LjUtMi43MDYtNy40NTlcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTIzLjY2OSwyOS4xMThIMzBWMy40NjJDMjkuOTk1LDE2Ljg2OSwyNC4zNiwyOS4xMTgsMjMuNjY5LDI5LjExOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTE4Ljc2NywyNC4yMTFIMTMuNTQxTDIsMy40NjJjMi4wNDctLjI2LDYuMTM1LS42MTEsOC4xNi0uNzc2WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNOC42OTMsMTYuMDE5QzYuOTYsMjIuODY2LDEuOTk1LDI5LjMyLDIsMjkuMzE0YzUuNzUyLDAsNi45OTEtLjgzNSw2Ljk5MS0xLjI3NlYxNi41NEM4Ljg5LDE2LjM3LDguNzk0LDE2LjE5NCw4LjY5MywxNi4wMTlaXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0yLDMuNDYyVjI5LjMxNGMzLjE0Ny01LjIsNC45ODEtOC42LDYuNi0xMy40NUM0LjYsOC43OTQsMiwzLjQ2MiwyLDMuNDYyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxwb2x5bGluZSBwb2ludHM9XCIyMy4yMzMgMjguMTAyIDIzLjY2OSAyOS4xMTggMjMuNjY5IDE1LjY0NyAyMy4yMzMgMTYuMzc1XCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk0yMy42NDcsMTUuNjczdjEzLjRsLjAxNi4wNDNjLjQ1MiwwLDYuMzMyLTE0LjUsNi4zMzItMjUuNjU2QzI5Ljk5NSwzLjQ2MiwyNi40MDYsMTAuOTQ3LDIzLjY0NywxNS42NzNaXCIgc3R5bGU9XCJmaWxsOnVybCgjZylcIi8+YCxcblx0XCJNb25nb0RCXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItNjQ1LjczMlwiIHkxPVwiODM5LjE4OFwiIHgyPVwiLTY1NC41OVwiIHkyPVwiODM5LjI1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoLTAuOTc3LCAtMC4zMjMsIC0wLjI5LCAwLjg3NywgLTM3NS45NDQsIC05MjguMjg3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMjMxXCIgc3RvcC1jb2xvcj1cIiM5OTk4NzVcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NjNcIiBzdG9wLWNvbG9yPVwiIzliOTk3N1wiLz48c3RvcCBvZmZzZXQ9XCIwLjY4M1wiIHN0b3AtY29sb3I9XCIjYTA5ZjdlXCIvPjxzdG9wIG9mZnNldD1cIjAuNzY4XCIgc3RvcC1jb2xvcj1cIiNhOWE4ODlcIi8+PHN0b3Agb2Zmc2V0PVwiMC44MzdcIiBzdG9wLWNvbG9yPVwiI2I3YjY5YVwiLz48c3RvcCBvZmZzZXQ9XCIwLjg5NlwiIHN0b3AtY29sb3I9XCIjYzljN2IwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTQ4XCIgc3RvcC1jb2xvcj1cIiNkZWRkY2JcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OTRcIiBzdG9wLWNvbG9yPVwiI2Y4ZjZlYlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmYmY5ZWZcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItNjQ0LjI4N1wiIHkxPVwiODIzLjQwNVwiIHgyPVwiLTY1Ny4wMjhcIiB5Mj1cIjg0NS40NzZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtMC45NzcsIC0wLjMyMywgLTAuMjksIDAuODc3LCAtMzc1Ljk0NCwgLTkyOC4yODcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNDhhNTQ3XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzNmOTE0M1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi02NDMuMzg2XCIgeTE9XCI4MzkuNDg1XCIgeDI9XCItNjUyLjQxOFwiIHkyPVwiODMzLjQxN1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KC0wLjk3NywgLTAuMzIzLCAtMC4yOSwgMC44NzcsIC0zNzUuOTQ0LCAtOTI4LjI4NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM0MWEyNDdcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNTJcIiBzdG9wLWNvbG9yPVwiIzRiYTc0YlwiLz48c3RvcCBvZmZzZXQ9XCIwLjk1NlwiIHN0b3AtY29sb3I9XCIjNjdiNTU0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzY5YjY1NVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX21vbmdvPC90aXRsZT48cGF0aCBkPVwiTTE2LjYyLDMwbC0uNzUxLS4yNDlzLjEtMy44LTEuMjc1LTQuMDY3Yy0uOS0xLjA0OC4xMzMtNDQuNzQxLDMuNDIzLS4xNDlhMi43MTIsMi43MTIsMCwwLDAtMS4zMzMsMS41MjNBMTQuMSwxNC4xLDAsMCwwLDE2LjYyLDMwWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTcuMDI2LDI2LjMyOWExMy4yMjMsMTMuMjIzLDAsMCwwLDUtMTMuMjI1QzIwLjU1Niw2LjYxOSwxNy4wNzUsNC40ODcsMTYuNywzLjY3M2E5Ljc5Miw5Ljc5MiwwLDAsMS0uODI1LTEuNmwuMjc3LDE4LjA2OVMxNS41NzgsMjUuNjY0LDE3LjAyNiwyNi4zMjlaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xNS40ODcsMjYuNTY5UzkuMzY2LDIyLjQsOS43MiwxNS4wMjVBMTUuNTQsMTUuNTQsMCwwLDEsMTUuMjM5LDMuMzc3LDEuNzI1LDEuNzI1LDAsMCwwLDE1Ljg0NiwyYy4zODEuODIuMzE5LDEyLjI0My4zNTksMTMuNTc5QzE2LjM2LDIwLjc3NiwxNS45MTYsMjUuNTg4LDE1LjQ4NywyNi41NjlaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+YCxcblx0XCJuZ2lueFwiOiBgPHBhdGggZD1cIk0xNS45NDgsMmguMDY1YTEwLjQxOCwxMC40MTgsMCwwLDEsLjk3Mi41MjhRMjIuNDE0LDUuNjUsMjcuODQzLDguNzc0YS43OTIuNzkyLDAsMCwxLC40MTQuNzg4Yy0uMDA4LDQuMzg5LDAsOC43NzctLjAwNSwxMy4xNjRhLjgxMy44MTMsMCwwLDEtLjM1Ni41MDdxLTUuNzczLDMuMzI0LTExLjU0Nyw2LjY0NGEuNTg3LjU4NywwLDAsMS0uNjU3LjAzN1E5LjkxMiwyNi42LDQuMTQzLDIzLjI3NGEuNy43LDAsMCwxLS40LS42NjZxMC02LjU4MiwwLTEzLjE2M2EuNjkzLjY5MywwLDAsMSwuMzg3LS42N1E5LjU1Miw1LjY1NywxNC45NzQsMi41MzVjLjMyMi0uMTg0LjYzOC0uMzc5Ljk3NC0uNTM1XCIgc3R5bGU9XCJmaWxsOiMwMTk2MzlcIi8+PHBhdGggZD1cIk04Ljc2NywxMC41MzhxMCw1LjQyOSwwLDEwLjg1OWExLjUwOSwxLjUwOSwwLDAsMCwuNDI3LDEuMDg3LDEuNjQ3LDEuNjQ3LDAsMCwwLDIuMDYuMjA2LDEuNTY0LDEuNTY0LDAsMCwwLC42ODUtMS4yOTNjMC0yLjYyLS4wMDUtNS4yNCwwLTcuODZxMy41ODMsNC4yOSw3LjE4MSw4LjU2OGEyLjgzMywyLjgzMywwLDAsMCwyLjYuNzgyLDEuNTYxLDEuNTYxLDAsMCwwLDEuMjUxLTEuMzcxcS4wMDgtNS41NDEsMC0xMS4wODFhMS41ODIsMS41ODIsMCwwLDAtMy4xNTIsMGMwLDIuNjYyLS4wMTYsNS4zMjEsMCw3Ljk4Mi0yLjM0Ni0yLjc2Ni00LjY2My01LjU1Ni03LTguMzMyQTIuODE3LDIuODE3LDAsMCwwLDEwLjE3LDkuMDMzLDEuNTc5LDEuNTc5LDAsMCwwLDguNzY3LDEwLjUzOFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIk5pbVwiOiBgPHBhdGggZD1cIk0xNi4xMTEsNi40MDVzLTEuMDczLjg0Ny0yLjE2NywxLjY5YTE1LjM2MSwxNS4zNjEsMCwwLDAtNC41MjcuNjUxYy0xLjEtLjctMi4wNy0xLjQ2OS0yLjA3LTEuNDY5UzYuNTIsOC43LDYsOS41MzVhMTEuMzgyLDExLjM4MiwwLDAsMC0yLjIzNiwxLjQ4MkMyLjk2MSwxMC43LDIuMDMsMTAuMzEsMiwxMC4zYzEuMDYzLDIuMTQ1LDEuNzc4LDQuMjkyLDMuNzIyLDUuNTgzLDMuMS00Ljg4OSwxNy40OC00LjQzOSwyMC42MzktLjAyOEMyOC40LDE0Ljc4NywyOS4yLDEyLjUsMzAsMTAuMzhjLS4wODguMDI5LTEuMTgxLjM5NS0xLjg4OS42NjVhMTEuNDg5LDExLjQ4OSwwLDAsMC0xLjk4Ni0xLjUxYy0uNTM3LS45ODQtMS4zMTktMi4zMTMtMS4zMTktMi4zMTNzLS45MjcuNjg5LTIsMS40NGEyMS4yNjUsMjEuMjY1LDAsMCwwLTQuNjgxLS41MTJjLTEtLjgyNi0yLjAxNC0xLjc0Ni0yLjAxNC0xLjc0NlpcIiBzdHlsZT1cImZpbGw6I2YzZDQwMFwiLz48cGF0aCBkPVwiTTMuMSwxNC44NTRsMi41NTQsNi4xODVjNC40MzUsNS44NSwxNS43NTksNi4yNTcsMjAuNy4xMTMsMS4xNjgtMi42MzMsMi43NDUtNi4zMzMsMi43NDUtNi4zMzNhMTMuMzc5LDEzLjM3OSwwLDAsMS00LjYsMy44NjksMTIuMjE3LDEyLjIxNywwLDAsMS0yLjk4My43OTNsLTUuNDY1LTIuODMyLTUuNSwyLjc3NWExNS42NzksMTUuNjc5LDAsMCwxLTIuOTgzLS43NjRBMTQuMDc2LDE0LjA3NiwwLDAsMSwzLjEsMTQuODU0WlwiIHN0eWxlPVwiZmlsbDojZmZlOTUzXCIvPmAsXG5cdFwiTml4XCI6IGA8cGF0aCBkPVwiTTEzLDExLjExNSw2LjE4MywyMy43Niw0LjU5LDIwLjg3bDEuODM5LTMuMzg3LTMuNjUxLS4wMUwyLDE2LjAyOWwuOC0xLjQ3Nyw1LjIuMDE4LDEuODY4LTMuNDQ3WlwiIHN0eWxlPVwiZmlsbDojN2ViYWU0O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTMuNTI3LDIxLjIyM2gxMy42NGwtMS41NDEsMi45MjItMy42NTgtLjAxMSwxLjgxNywzLjM4OS0uNzc5LDEuNDQ5LTEuNTkzLDAtMi41ODQtNC44MjUtMy43MjItLjAwOFpcIiBzdHlsZT1cImZpbGw6IzdlYmFlNDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTIxLjQ2NywxNS42ODIsMTQuNjQ3LDMuMDM3bDMuMTM0LS4wMzJMMTkuNiw2LjRsMS44MzQtMy4zNzloMS41NTdMMjMuNzg2LDQuNSwyMS4xNzQsOS4zMDdsMS44NTQsMy40NTVaXCIgc3R5bGU9XCJmaWxsOiM3ZWJhZTQ7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xMC41NDIsMTYuMzI0bDYuODIxLDEyLjY0NUwxNC4yMjksMjlsLTEuODIxLTMuNC0xLjgzNCwzLjM4SDkuMDE2bC0uOC0xLjQ3NkwxMC44MzEsMjIuNyw4Ljk3NiwxOS4yNDNaXCIgc3R5bGU9XCJmaWxsOiM1Mjc3YzM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xOC40NjQsMTAuNzUxSDQuODIzTDYuMzY1LDcuODI5bDMuNjU4LjAxMUw4LjIwNyw0LjQ1MSw4Ljk4NiwzbDEuNTkyLDAsMi41ODQsNC44MjUsMy43MjIuMDA4WlwiIHN0eWxlPVwiZmlsbDojNTI3N2MzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTksMjAuODg4LDI1LjgxNyw4LjI0NGwxLjU5MywyLjg5TDI1LjU3MSwxNC41MmwzLjY1MS4wMUwzMCwxNS45NzlsLS44LDEuNDc3LTUuMi0uMDE4LTEuODY4LDMuNDQ3WlwiIHN0eWxlPVwiZmlsbDojNTI3N2MzO2ZpbGwtcnVsZTpldmVub2RkXCIvPmAsXG5cdFwiTlNJU1wiOiBgPHBhdGggZD1cIk0yNy40MzUsMTYuMDM3LDIyLjAxMiwyMS40Nmw1LjQyMyw1LjQyM1wiIHN0eWxlPVwiZmlsbDojMDA1NzdiXCIvPjxwYXRoIGQ9XCJNMjYuODg0LDE1LjVIMTYuMDQ4bDUuNDIzLDUuNDIzXCIgc3R5bGU9XCJmaWxsOiMwMDc5YWFcIi8+PHBhdGggZD1cIk0yNi44ODQsMTQuNzEyLDIxLjQ2MSw5LjI4OWwtNS40MjMsNS40MjNcIiBzdHlsZT1cImZpbGw6IzAwOTZkM1wiLz48cGF0aCBkPVwiTTIwLjUyOCw5LjEzMUg5LjY4M2w1LjQyMyw1LjQyM00yNy40MzUsMy4zMjUsMjIuMDEyLDguNzQ4bDUuNDIzLDUuNDIzXCIgc3R5bGU9XCJmaWxsOiMwMWIwZjBcIi8+PHBhdGggZD1cIk0yMC41MjgsOC4zNTYsMTUuMTA1LDIuOTMzLDkuNjgzLDguMzU2XCIgc3R5bGU9XCJmaWxsOiMyN2JjZjNcIi8+PHBhdGggZD1cIk0xNC4xNzIsMi43NzVIMy4zMjdMOC43NDksOC4yXCIgc3R5bGU9XCJmaWxsOiM0ZmM5ZjVcIi8+PHBhdGggZD1cIk00LjU2OCwxNS45NjMsOS45OTEsMTAuNTQsNC41NjgsNS4xMTdcIiBzdHlsZT1cImZpbGw6Izc5MjAxYlwiLz48cGF0aCBkPVwiTTEwLjU0MSwxMS4wOTEsNS4xMTksMTYuNTEzSDE1Ljk2NFwiIHN0eWxlPVwiZmlsbDojYTQyZDI2XCIvPjxwYXRoIGQ9XCJNNS4xMTksMTcuMjg4bDUuNDIzLDUuNDIzLDUuNDIzLTUuNDIzXCIgc3R5bGU9XCJmaWxsOiNjYzM4MmZcIi8+PHBhdGggZD1cIk00LjU2OCwxNy44MjlWMjguNjc1bDUuNDIzLTUuNDIzTDguNCwyMS42NjVtMTMuOTE2LDEuMkwxNi45LDE3LjQ0N2wtNS40MjMsNS40MjNcIiBzdHlsZT1cImZpbGw6I2YwNDUzZlwiLz48cGF0aCBkPVwiTTExLjQ3NSwyMy42NDQsMTYuOSwyOS4wNjdsNS40MjMtNS40MjNcIiBzdHlsZT1cImZpbGw6I2YyNjI1ZFwiLz48cGF0aCBkPVwiTTE3Ljg0LDI5LjIyNUgyOC42ODVMMjMuMjYzLDIzLjhcIiBzdHlsZT1cImZpbGw6I2Y0N2Y3ZFwiLz48cGF0aCBkPVwiTTI5Ljg4OSwyOS4zMzdsLTEuNjgtMS42OFYyLjM5MmEuMzc0LjM3NCwwLDAsMC0uMjQzLS4zNTVBLjI2My4yNjMsMCwwLDAsMjcuODI3LDJhLjM1OS4zNTksMCwwLDAtLjI3MS4xMTJMMjEuNDcxLDguMiwxNS4zODUsMi4xMTIsMTUuMywyLjAzN2gtLjAzN0EuMzA3LjMwNywwLDAsMCwxNS4xMDUsMkgyLjRhLjQzNC40MzQsMCwwLDAtLjI4OS4xMTJBLjM4LjM4LDAsMCwwLDIsMi4zOTJhLjM1OS4zNTksMCwwLDAsLjExMi4yNzFsMS42OCwxLjY4VjI5LjYxN2EuMzc0LjM3NCwwLDAsMCwuMjQzLjM1NUEuMzg3LjM4NywwLDAsMCw0LjE4NSwzMGEuMzU5LjM1OSwwLDAsMCwuMjcxLS4xMTJMMTAuNTQxLDIzLjhsNi4wODUsNi4wODUuMDg0LjA3NWguMDM3QS4yNTQuMjU0LDAsMCwwLDE2LjksMzBIMjkuNjA5YS4zOTUuMzk1LDAsMCwwLC4yOC0uNjYzWk0yNy40MzUsMy4zMjVWMTQuMTcxTDIyLjAxMiw4Ljc0OGw1LjQyMy01LjQyM1pNOS45OTEsMTAuNTQsNC41NjgsMTUuOTYzVjUuMTE3TDkuOTkxLDEwLjU0Wk05LjY4Myw5LjEzMUgyMC41MjhsLTUuNDIzLDUuNDIzTDkuNjgzLDkuMTMxWm0uODU5LDEuOTYsNS40MjMsNS40MjNINS4xMTlsNS40MjMtNS40MjNaTTE2LjksMTcuNDQ3bDUuNDIzLDUuNDIzSDExLjQ3NUwxNi45LDE3LjQ0N1pNMTYuMDQ4LDE1LjVIMjYuODkzbC01LjQyMyw1LjQyM0wxNi4wNDgsMTUuNVptNS45NjQsNS45NjQsNS40MjMtNS40MjNWMjYuODgzTDIyLjAxMiwyMS40NlptNC44NzItNi43NDhIMTYuMDQ4bDUuNDIzLTUuNDIzLDUuNDEzLDUuNDIzWk0yMC41MjgsOC4zNTZIOS42ODNsNS40MjMtNS40MjMsNS40MjMsNS40MjNaTTMuMzI3LDIuNzc1SDE0LjE3Mkw4Ljc0OSw4LjJabTEuMjQxLDI1LjlWMTcuODI5TDguNCwyMS42NjVsMS41ODcsMS41ODdMNC41NjgsMjguNjc1Wm0uNTUxLTExLjM4N0gxNS45NjRsLTUuNDIzLDUuNDIzTDUuMTE5LDE3LjI4OFpNMTYuOSwyOS4wNjdsLTUuNDIzLTUuNDIzSDIyLjMyTDE2LjksMjkuMDY3Wm0uOTQzLjE1OUwyMy4yNjMsMjMuOGw1LjQyMyw1LjQyM1pcIiBzdHlsZT1cImZpbGw6IzQ2NDA0OVwiLz5gLFxuXHRcIk9iamVjdCBQYXNjYWxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE2XCIgeTE9XCItMC40NDNcIiB4Mj1cIjE2XCIgeTI9XCIyMi4wNDJcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAyMVwiIHN0b3AtY29sb3I9XCIjZmYwYzE1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzlhMGMwZlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2RlbHBoaTwvdGl0bGU+PGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHI9XCIxNFwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjcuNTQ1LDE2LjI0M0g0LjkyNGEuOTE0LjkxNCwwLDAsMC0xLjA5Mi44MnEuMDMzLjQyOS4xLjg0OWExMi40LDEyLjQsMCwwLDAsMjQuNTMyLDBxLjA3NS0uNS4xMDgtMS4wMjFDMjguNDc4LDE2LjUyMywyOC4yMTEsMTYuMjA3LDI3LjU0NSwxNi4yNDNaXCIgc3R5bGU9XCJmaWxsOiNmZjY0NDNcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjE4LjQ4IDExLjY0IDIzLjcwNyA3LjI2NiAxOS43ODcgNS44OCAxNiAxMS4wNTNcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiMTUuNjggMTEuMDI2IDE4LjY0IDUuODggMTQuODUzIDUuODggMTMuMzA3IDExLjI5M1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxMy4wNCAxMS4zNzMgMTMuNiA2LjcwNiAxMC41ODcgNy45NiAxMS4wMTMgMTIuNzZcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiMTAuNzQ3IDEzIDkuNzg3IDguNzYgNy43MDcgMTAuODQgOS42NTMgMTQuNjhcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS4zODcgMTUuMDUzIDcuNDkzIDEyLjM3NiA2LjY0IDE0LjQ2NiA5LjA0IDE2LjUxN1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjA0IDE2Ljc1NyA2LjY0IDE1LjIxMyA2LjQ4IDE3LjQgOS4yIDE4LjMzM1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjIyNyAxOC44NDYgNi42NCAxOC4wNCA3LjIyNyAxOS44IDkuNTQ3IDE5LjhcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS43MDcgMjAuMDkzIDcuNzA3IDIwLjM4NiA4LjYyNyAyMS43NDYgMTAuMjY3IDIxXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0yMC4wMjMsMTMuMDg5YTYuNjEsNi42MSwwLDAsMC00LjUzLTJBNi4yOTMsNi4yOTMsMCwwLDAsMTEuMywyMi4wN2w0Ljk0MS4xMjktMi4wOC00LjE2WlwiIHN0eWxlPVwiZmlsbDojZWVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTYuNSwyMi4zNjZsLTUuMjY3LS4xMzgtLjA0NC0uMDM5YTYuNDUzLDYuNDUzLDAsMCwxLDQuMy0xMS4yNjQsNi43ODcsNi43ODcsMCwwLDEsNC42NDMsMi4wNWwuMTIzLjEyMy01LjksNC45ODJabS01LjE0LS40NTUsNC42MTYuMTIxTDEzLjk2MSwxOGw1LjgyNS00LjkxOWE2LjQzLDYuNDMsMCwwLDAtNC4yOTItMS44MzUsNi4xMzMsNi4xMzMsMCwwLDAtNC4xMzEsMTAuNjY3WlwiIHN0eWxlPVwiZmlsbDojZWU0YjJlXCIvPjxwYXRoIGQ9XCJNMTIuMDEzLDIwLjQ5M2MtNC4xNzMtNS44MTMsMi4xMDktOC4xNzIsMi40NzgtOC40NTMuNDUxLS4zNDQtNy41OSwxLjc4NS0zLjIyNiw4Ljg4WlwiIHN0eWxlPVwiZmlsbDojZjA0ZTMxO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIwLjcyIDEyLjYgMTMuNTIgMTcuNTY3IDEzLjczMyAxOC41NzMgMjEuNDY3IDE3LjAyNiAyMC43MiAxMi42XCIgc3R5bGU9XCJmaWxsOiNlZWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xMy42MSwxOC43NjEsMTMuMzQxLDE3LjVsNy40OTUtNS4xNy44MTQsNC44MjhabS4wODktMS4xMjMuMTU4Ljc0N0wyMS4yODMsMTYuOSwyMC42LDEyLjg3NFpcIiBzdHlsZT1cImZpbGw6I2VlNGIyZVwiLz48cGF0aCBkPVwiTTE1LjcyMywyMS4zMTljLTMuOTMtLjY2OC00LjI4My40MjgtNC4yODMuNDI4TDEwLjI2NywyNC40NHMxLjEyLS45MDcsNS40OTMsMGwuNzYtMS4zODhaXCIgc3R5bGU9XCJmaWxsOiNkZDBjMTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNC4xMjIsMjEuNmMtLjAyLS4yLTEuMS0uMzE5LTEuNjc3LS4xMjMtLjczMi4yNDktMS4yMTksMS4xNDItMS4wNDUsMS4yMTNhMS45NzUsMS45NzUsMCwwLDEsMS4xMjUtLjk4NkMxMy40NDcsMjEuNDkzLDE0LjE0MiwyMS44LDE0LjEyMiwyMS42WlwiIHN0eWxlPVwiZmlsbDojZmY2ZTRmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTUuNTIsMTguNjA2YTExLjEsMTEuMSwwLDAsMCwxLjU0NywxLjQ4Nyw2LjksNi45LDAsMCwxLDIuNzIsNC4xMDdjLS4xMDcsMS4wNjctMS45NzMsMS43Ni0xLjk3MywxLjc2bC0zLjMwNy03LjE5NFpcIiBzdHlsZT1cImZpbGw6I2VlZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE3LjczLDI2LjE2MWwtMy40NTctNy41MjEsMS4zMi0uMjA4LjA1Ny4wODFhMTAuODY5LDEwLjg2OSwwLDAsMCwxLjUxMiwxLjQ1MSw3LDcsMCwwLDEsMi43ODIsNC4yMDdsMCwuMDIyLDAsLjAyMmMtLjExNSwxLjE1My0yLDEuODY0LTIuMDc3LDEuODk0Wm0tMi45OS03LjI3LDMuMTU1LDYuODYzYy40MTQtLjE3OCwxLjYzLS43NjMsMS43My0xLjU0OGE2Ljc5Myw2Ljc5MywwLDAsMC0yLjY0OC0zLjk4MWwtLjAxLS4wMDdhMTEuOTQsMTEuOTQsMCwwLDEtMS41MTctMS40MzlaXCIgc3R5bGU9XCJmaWxsOiNlZTRiMmVcIi8+PHBhdGggZD1cIk0yOCwxMi43NDJjLjAyNS4zOTQuMDM0Ljc5Mi4wMjUsMS4xOTRhMTMuOTQ2LDEzLjk0NiwwLDAsMS0xOS45LDEyLjNBMTIuODYsMTIuODYsMCwwLDAsMjgsMTIuNzQyWlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO2ZpbGwtcnVsZTpldmVub2RkO29wYWNpdHk6MC4yXCIvPjxwYXRoIGQ9XCJNMi4zODMsMTMuODkzQTEzLjk0MSwxMy45NDEsMCwwLDEsMjUuNyw1Ljgzcy01LjAwOSw1Ljk3OS0xMC41ODQsNy45MDdTMi4zODMsMTMuODkzLDIuMzgzLDEzLjg5M1pcIiBzdHlsZT1cImZpbGw6I2VhZTBkZjtvcGFjaXR5OjAuMlwiLz48cGF0aCBkPVwiTTMuNjE4LDE4LjY5NGMtLjA0NC0uMzkyLS4wNzItLjc5LS4wODMtMS4xOTFDMy4zMjksOS44MDcsMTAuMDEyLDQuMiwxNy43MDgsMy45OTFhMTQuMiwxNC4yLDAsMCwxLDUuNzE5LDEuNDU4LDEzLjEyOCwxMy4xMjgsMCwwLDAtNy4xODgtMi4zNjljLTcuMS4xOS0xMy4zMDYsNS4zLTEzLjExNiwxMi40QTEyLjg3MywxMi44NzMsMCwwLDAsMy42MTgsMTguNjk0WlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO2ZpbGwtcnVsZTpldmVub2RkO29wYWNpdHk6MC4yXCIvPmAsXG5cdFwiT2JqZWN0aXZlLUNcIjogYDxwYXRoIGQ9XCJNMTEuMjksMTUuOTc2YTguODkyLDguODkyLDAsMCwwLDEuMDM5LDQuNTU3LDQuODE4LDQuODE4LDAsMCwwLDUuNTc5LDIuMTMsMy43ODksMy43ODksMCwwLDAsMi43MzQtMy4xODFjLjA5NS0uNTM1LjEtLjU0LjEtLjU0LDEuNTM3LjIyMiw0LjAxNC41ODIsNS41NS44bC0uMS4zODlBOS45NTgsOS45NTgsMCwwLDEsMjMuOCwyNC45YTguMzUsOC4zNSwwLDAsMS00Ljc0NywyLjM3OCwxMi45MjUsMTIuOTI1LDAsMCwxLTcuMzIyLS43MjUsOC45OCw4Ljk4LDAsMCwxLTUuMTA2LTUuNTI0QTE0LjM1MywxNC4zNTMsMCwwLDEsNi42NDIsMTAuOWE5LjMyMyw5LjMyMywwLDAsMSw3LjkyOS02LjI0LDExLjgxMiwxMS44MTIsMCwwLDEsNS45LjQ5MSw4LjQ2Nyw4LjQ2NywwLDAsMSw1LjQ1Niw2LjFjLjA4My4zMTEuMS4zNjkuMS4zNjktMS43MDkuMzExLTMuODIxLjcwNS01LjUxOCwxLjA3NUMyMC4xODYsMTEsMTkuMzg3LDkuNjY2LDE3LjY3OCw5LjI1YTQuNjU2LDQuNjU2LDAsMCwwLTUuODUzLDMuMTU4LDkuMjgsOS4yOCwwLDAsMC0uMzQxLDEuMjczQTEwLjg5LDEwLjg5LDAsMCwwLDExLjI5LDE1Ljk3NlpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cG9seWdvbiBwb2ludHM9XCIyLjAzMyAzMCAyLjAzMyAyIDcuOTY3IDIgNy45NjcgNC4yMjcgNC43MjMgNC4yMjcgNC43MjMgMjcuNzczIDcuOTY3IDI3Ljc3MyA3Ljk2NyAzMCAyLjAzMyAzMFwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI5Ljk2NyAyOS45OTkgMjQuMDMzIDI5Ljk5OSAyNC4wMzMgMjcuNzcxIDI3LjI3NyAyNy43NzEgMjcuMjc3IDQuMjI2IDI0LjAzMyA0LjIyNiAyNC4wMzMgMS45OTkgMjkuOTY3IDEuOTk5IDI5Ljk2NyAyOS45OTlcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz5gLFxuXHRcIk9DYW1sXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItNzQ1LjYyM1wiIHkxPVwiLTkyLjc2XCIgeDI9XCItNzQ1LjYyM1wiIHkyPVwiLTg1LjEwOFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDc1OCAxMTMuMjgpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZjI5MTA0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2VjNjgxM1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi03NDEuOTlcIiB5MT1cIi0xMDkuNDc3XCIgeDI9XCItNzQxLjk5XCIgeTI9XCItODUuMDk5XCIgeGxpbms6aHJlZj1cIiNhXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi03NTIuMTExXCIgeTE9XCItOTMuOTE4XCIgeDI9XCItNzUyLjExMVwiIHkyPVwiLTg1LjI4NFwiIHhsaW5rOmhyZWY9XCIjYVwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9vY2FtbDwvdGl0bGU+PHBhdGggZD1cIk0xNi41NzEsMjUuMjQ2YTQuMjgsNC4yOCwwLDAsMC0uMDM5LS43MDljLS4wNTktLjItLjItLjIxNy0uMy0uMzc0YTMuNTA3LDMuNTA3LDAsMCwxLS41MzItMS40NzdjLS4wMi0uNDUzLS4yLS44ODYtLjIxNy0xLjMzOS0uMDItLjIxNy4wMi0uNDUzLDAtLjY2OWExLjk2MywxLjk2MywwLDAsMC0uMDM5LS4zMTUsMS4xMzMsMS4xMzMsMCwwLDAtLjAzOS0uMmwuMDU5LS4xMzhhMi43MiwyLjcyLDAsMCwxLC42NS0uMDM5Yy4yNTYsMCwuNTEyLjAyLjc2OC4wMmE3Ljk2MSw3Ljk2MSwwLDAsMCwxLjUzNi0uMDU5LDMuNzIyLDMuNzIyLDAsMCwwLDEuOTQ5LS44NDcsNC45NDYsNC45NDYsMCwwLDAsMS41MzYtMi4wMDhjLjE3Ny0uMzk0LjE3Ny0xLjA4My41NTEtMS40LjQzMy0uMzc0LDEuMTgxLS4zMzUsMS42OTMtLjU3MWExLjE4NywxLjE4NywwLDAsMSwuODA3LS4xMzhjLjIxNy4wMzkuNjMuMzE1LjcyOS0uMDU5LS4wNzktLjAzOS0uMS0uMTM4LS4xMzgtLjE3Ny40MTQtLjAzOSwwLTEtLjE1OC0xLjJBMi4yMjUsMi4yMjUsMCwwLDAsMjQuMjUsMTNhMy41MDksMy41MDksMCwwLDAtMS41MzYtLjIxN2MtLjg4Ni4xNzctLjgyNy0uMzM1LTEuMzM5LS4zMzUtLjYzLDAtMS43MzMuMDM5LTEuOTMuNjNhMS41NCwxLjU0LDAsMCwxLS4zMzUuNTEyYy0uMTM4LjE3Ny4wMi4zNTQtLjAzOS41NzEtLjA3OS4yMTctLjE3Ny45ODUtLjI3NiwxLjI2LS4xNzcuNDUzLS4zOTQsMS4wMjQtLjc4OCwxLjAyNGEzLjE1MiwzLjE1MiwwLDAsMS0xLjQzNy0uMDc5Yy0uMjc2LS4xLS43MjktLjI1Ni0uOTQ1LS4zMzUtMS4wMjQtLjQzMy0xLjItLjkwNi0xLjItLjkwNmEzLjAyNiwzLjAyNiwwLDAsMS0uNTEyLS44NjZjLS4xMTgtLjQxNC0uMzE1LS43NjgtLjM5NC0xcy0uMy0uNTkxLS40NTMtLjk4NWEyLjY2NywyLjY2NywwLDAsMC0uNzA5LTEuMDYzYy0uMzE1LS4yNzYtLjYxLS43MjktMS4yNi0uNTkxYTEuNjQxLDEuNjQxLDAsMCwwLS44NjYuMzE1Yy0uMjE3LjE3Ny0uMy41NzEtLjQ5Mi44ODYtLjExOC4xNzctLjMxNS43MDktLjUxMiwxLjE2MmExLjkyOSwxLjkyOSwwLDAsMS0uMzM1LjY1Yy0uMTE4LjA3OS0uMjU2LjItLjQxNC4xMzhhLjkyNC45MjQsMCwwLDEtLjMxNS0uMiw1LjMzNCw1LjMzNCwwLDAsMS0uNzA5LTEuMTIyLDExLjEsMTEuMSwwLDAsMC0uNzg4LTEuMjQxLDEuMDE2LDEuMDE2LDAsMCwwLS45ODUtLjU1MWMtMS4wMjQsMC0xLjEuNTcxLTEuNTU2LDEuNDE4YTUuNTc0LDUuNTc0LDAsMCwxLS42NjksMS40Yy0uMjM2LjI1Ni0uOTQ1LDEuMzM5LTEuNDU3LDEuNTE2SDJ2Ny42MmMuMDM5LS4xLjA1OS0uMi4xLS4yNzYuMi0uNDE0LjY1LS44MDcuOTA2LTEuMjIxYTMuNSwzLjUsMCwwLDAsLjM3NC0uNzA5LDMuNzQzLDMuNzQzLDAsMCwxLC4yMzYtLjcwOS43OTQuNzk0LDAsMCwxLC41NzEtLjMzNWMuMzU0LS4wNTkuNjUuNDkyLDEuMDgzLjcwOS4yLjA3OSwxLjA2My4zOTQsMS4zMTkuNDUzLjQzMy4xLjkwNi4yLDEuMzM5LjI3Ni4yMzYuMDM5LjQ1My4wNzkuNzA5LjFhNy4zLDcuMywwLDAsMSwxLjA4My4xLDIuMjc3LDIuMjc3LDAsMCwwLS44MDcsMS4yMjFjLS4xNTguNDMzLS4yNzYuOTI1LS40NzMsMS4zMzktLjIxNy40NzMtLjY2OS42NjktLjYxLDEuMjIxYTIuNjY4LDIuNjY4LDAsMCwxLC4wMi42ODksNC4wMDksNC4wMDksMCwwLDEtLjIxNy42ODljLS4xLjMxNS0uMjE3LDEuMzU5LS4zNTQsMS42NzRsLjkwNi0uMTE4aDBBMTAuNjkyLDEwLjY5MiwwLDAsMCw4LjQsMjYuMzg4YTMuNzM3LDMuNzM3LDAsMCwxLC43MjktMS4yOGMuMzM1LS4zNzQuMzE1LS44NDcuNTEyLTEuM2ExMi40ODgsMTIuNDg4LDAsMCwxLC43NjgtMS4zYy40OTItLjgwNy44MDctMS44MTIsMS44NTEtMi4wMjhhMy4zLDMuMywwLDAsMSwxLjAyNC43MDksNC40NTIsNC40NTIsMCwwLDEsLjg4NiwxLjEsMTIuODUxLDEyLjg1MSwwLDAsMSwuODg2LDIuNjc4LDEuMjI3LDEuMjI3LDAsMCwwLC4zOTQuNzA5LDUuNDYyLDUuNDYyLDAsMCwxLC40MzMuNzI5Yy4wNzkuMTc3LjIuNTcxLjMuNzg4YTYuMjY3LDYuMjY3LDAsMCwxLC4zMTUuODI3bC44NDctLjAyaC4wMnYtLjAyQTkuNzU0LDkuNzU0LDAsMCwxLDE2LjU3MSwyNS4yNDZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNi4yMTcsMjcuMjM1Yy0uMS0uMi0uMjE3LS42MS0uMy0uNzg4YTUuNDYyLDUuNDYyLDAsMCwwLS40MzMtLjcyOSwxLjExOSwxLjExOSwwLDAsMS0uMzk0LS43MDksMTIuNDg3LDEyLjQ4NywwLDAsMC0uODg2LTIuNjc4LDQuNDUyLDQuNDUyLDAsMCwwLS44ODYtMS4xLDMuMywzLjMsMCwwLDAtMS4wMjQtLjcwOWMtMS4wNDQuMi0xLjM1OSwxLjIyMS0xLjg1MSwyLjAyOGExMi40ODgsMTIuNDg4LDAsMCwwLS43NjgsMS4zYy0uMi40MzMtLjE3Ny45MjUtLjUxMiwxLjNhMy40NDMsMy40NDMsMCwwLDAtLjcyOSwxLjI4Yy0uMDM5LjEtLjExOCwxLjA4My0uMjE3LDEuMzE5aDBsMS41MzYtLjFjMS40MzcuMSwxLjAyNC42NSwzLjI0OS41MzJsMy41MjUtLjExOGgwQTYuMjY3LDYuMjY3LDAsMCwwLDE2LjIxNywyNy4yMzVaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yNi40NTYsMy44SDUuNTQ0QTMuNTIxLDMuNTIxLDAsMCwwLDIuMDIsNy4zMjh2Ny42NzloMGMuNTEyLS4xNzcsMS4yMjEtMS4yNiwxLjQ1Ny0xLjUxNmE1LjkxMyw1LjkxMywwLDAsMCwuNjY5LTEuNGMuNDUzLS44MjcuNTMyLTEuNDE4LDEuNTU2LTEuNDE4YTEuMDE2LDEuMDE2LDAsMCwxLC45ODUuNTUxLDkuNTQ3LDkuNTQ3LDAsMCwxLC43ODgsMS4yNDEsNC44NDksNC44NDksMCwwLDAsLjcwOSwxLjEyMiwyLDIsMCwwLDAsLjMxNS4yYy4xNTguMDU5LjMtLjA1OS40MTQtLjEzOEExLjkyOSwxLjkyOSwwLDAsMCw5LjI0NiwxM2MuMi0uNDUzLjM5NC0uOTY1LjUxMi0xLjE2Mi4yLS4zMTUuMjc2LS43MDkuNDkyLS44ODZhMS41OSwxLjU5LDAsMCwxLC44NjYtLjMxNWMuNjUtLjEzOC45NDUuMzE1LDEuMjYuNTkxYTMuMjg1LDMuMjg1LDAsMCwxLC43MDksMS4wNjNjLjE1OC4zOTQuMzU0Ljc2OC40NTMuOTg1YTguOTQ2LDguOTQ2LDAsMCwxLC4zOTQsMSwzLjcxMywzLjcxMywwLDAsMCwuNTEyLjg2NnMuMTc3LjQ3MywxLjIuOTA2YTguNzQ5LDguNzQ5LDAsMCwwLC45NDUuMzM1LDMuMTUyLDMuMTUyLDAsMCwwLDEuNDM3LjA3OWMuMzk0LDAsLjYxLS41NzEuNzg4LTEuMDI0LjEtLjI3Ni4yMTctMS4wNDQuMjc2LTEuMjZzLS4xLS4zNzQuMDM5LS41NzFjLjE1OC0uMjE3LjI1Ni0uMjM2LjMzNS0uNTEyLjItLjYxLDEuMy0uNjMsMS45My0uNjMuNTMyLDAsLjQ1My41MTIsMS4zMzkuMzM1YTMuMjQzLDMuMjQzLDAsMCwxLDEuNTM2LjIxNywyLjIyNSwyLjIyNSwwLDAsMSwxLjE0Mi41NTFjLjE1OC4yLjU3MSwxLjE2Mi4xNTgsMS4yLjAzOS4wMzkuMDc5LjEzOC4xMzguMTc3LS4xLjM3NC0uNDkyLjEtLjcyOS4wNTlhMS4xODcsMS4xODcsMCwwLDAtLjgwNy4xMzhjLS41MTIuMjE3LTEuMjQxLjItMS42OTMuNTcxLS4zNzQuMzE1LS4zNzQsMS0uNTUxLDEuNGE1LjE2Nyw1LjE2NywwLDAsMS0xLjUzNiwyLjAwOCwzLjksMy45LDAsMCwxLTEuOTQ5Ljg0Nyw3Ljk2MSw3Ljk2MSwwLDAsMS0xLjUzNi4wNTljLS4yNTYtLjAyLS41MTItLjAyLS43NjgtLjAyLS4xNTgsMC0uNjY5LS4wMi0uNjUuMDM5bC0uMDU5LjEzOGEuNy43LDAsMCwwLC4wMzkuMmMuMDIuMTE4LjAyLjIxNy4wMzkuMzE1LDAsLjIxNy0uMDIuNDUzLDAsLjY2OS4wMi40NTMuMi44NjYuMjE3LDEuMzM5YTMuMjYsMy4yNiwwLDAsMCwuNTMyLDEuNDc3Yy4xLjE1OC4yMzYuMTc3LjMuMzc0YTQuMTYzLDQuMTYzLDAsMCwxLC4wMzkuNzA5LDkuNjg1LDkuNjg1LDAsMCwwLC44MjcsMi43NTd2LjAyaDBjLjUxMi0uMDc5LDEuMDQ0LS4yNzYsMS43MTMtLjM3NCwxLjI0MS0uMTc3LDIuOTU0LS4xLDQuMDU2LS4yLDIuOC0uMjU2LDQuMzEyLDEuMTQyLDYuODEzLjU3MVY3LjMyOEEzLjU1MSwzLjU1MSwwLDAsMCwyNi40NTYsMy44Wk0xNi4wMiwyMC4zNDNaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk04LjQ3OCwyMy41NzNjLjItLjQzMy4zMTUtLjkwNi40NzMtMS4zMzlhMi4yNzcsMi4yNzcsMCwwLDEsLjgwNy0xLjIyMSw3LjMsNy4zLDAsMCwwLTEuMDgzLS4xYy0uMjM2LS4wMi0uNDczLS4wNTktLjcwOS0uMS0uNDMzLS4wNzktLjkyNS0uMTc3LTEuMzM5LS4yNzYtLjI1Ni0uMDU5LTEuMTQyLS4zNzQtMS4zMTktLjQ1My0uNDUzLS4yLS43NDgtLjc2OC0xLjA4My0uNzA5YS43OTQuNzk0LDAsMCwwLS41NzEuMzM1LDMuNzQzLDMuNzQzLDAsMCwwLS4yMzYuNzA5Yy0uMS4yMzYtLjI1Ni40NzMtLjM3NC43MDlhMTIuMjg5LDEyLjI4OSwwLDAsMC0uOTI1LDEuMmMtLjAzOS4xLS4wNTkuMi0uMS4zdjQuNzQ1YTUuNCw1LjQsMCwwLDEsLjcyOS4xNTgsOC43Nyw4Ljc3LDAsMCwwLDQuMzcxLjM1NGwuMTc3LS4wMmgwYy4xMzgtLjMxNS4yNTYtMS4zNTkuMzU0LTEuNjc0YTUuNDk0LDUuNDk0LDAsMCwwLC4yMTctLjY4OSwyLjY2OCwyLjY2OCwwLDAsMC0uMDItLjY4OUM3LjgwOSwyNC4yNDIsOC4yNjIsMjQuMDQ1LDguNDc4LDIzLjU3M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz5gLFxuXHRcIk9jdGF2ZVwiOiBgPGRlZnMgaWQ9XCJkZWZzMjg3NFwiPiA8cmFkaWFsR3JhZGllbnQgY3g9XCIxODIuOTgzN1wiIGN5PVwiMzk1LjA0ODcxXCIgcj1cIjE0OC45NTMwOVwiIGZ4PVwiMTgyLjk4MzdcIiBmeT1cIjM5NS4wNDg3MVwiIGlkPVwicmFkaWFsR3JhZGllbnQzMDMzXCIgeGxpbms6aHJlZj1cIiNsaW5lYXJHcmFkaWVudDM3NTVcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgwLjIyOTE0MzM0LC0wLjI0OTAxNDc5LDAuNzY0MzU3MiwwLjgzMDY0MjY4LC0yNzIuODUzMzcsLTE1OS42OTQ4MilcIiAvPiA8bGluZWFyR3JhZGllbnQgaWQ9XCJsaW5lYXJHcmFkaWVudDM3NTVcIj4gPHN0b3AgaWQ9XCJzdG9wMzc1N1wiIHN0eWxlPVwic3RvcC1jb2xvcjojMDA4Y2JlO3N0b3Atb3BhY2l0eToxXCIgb2Zmc2V0PVwiMFwiIC8+IDxzdG9wIGlkPVwic3RvcDM3NTlcIiBzdHlsZT1cInN0b3AtY29sb3I6I2IyZmZmZjtzdG9wLW9wYWNpdHk6MVwiIG9mZnNldD1cIjFcIiAvPiA8L2xpbmVhckdyYWRpZW50PiA8L2RlZnM+IDxnIGlkPVwibGF5ZXIxXCIgdHJhbnNmb3JtPVwic2NhbGUoMC4xMTI5NikgdHJhbnNsYXRlKC0yMzMuMzU1NDQsLTM5MC43MTgwMilcIj4gPGcgdHJhbnNmb3JtPVwibWF0cml4KDguNDUxOTcyMywwLDAsOC40NTE5NzIzLC0yNzguNDUwMTIsLTQwMy44Mjk3NSlcIiBpZD1cImczMDI1XCI+IDxwYXRoIGQ9XCJtIDY2LjQzMjEwMyw5Ny40ODg2NzkgYyAtNS4xOTU4NCw1LjY0NjQzMSAtMy45MzY2MSwxNi4xNjkwMzEgMi44MTEwNywyMy41MDE4NzEgNi43NDc2OCw3LjMzMjg1IDE2LjQyODk4LDguNjk5NTUgMjEuNjI0ODMsMy4wNTMxMiA1LjE5NTg1LC01LjY0NjQzIDMuOTQwMiwtMTYuMTY5NDYgLTIuODA3NDksLTIzLjUwMjMgLTYuNzQ3NjgsLTcuMzMyODYxIC0xNi40MzI1NiwtOC42OTkxMzEgLTIxLjYyODQxLC0zLjA1MjY5MSB6IG0gNC43MTE0OSwyLjM0NTUzIGMgNC4wODI1NiwtNC40MzY1OSAxMS41ODksLTMuNDcxNTIgMTYuNzY3NDEsMi4xNTU5NjEgNS4xNzg0Miw1LjYyNzUgNi4wNjY0NywxMy43ODQ5MSAxLjk4MzkxLDE4LjIyMTUgLTQuMDgyNTYsNC40MzY1OCAtMTEuNTkwOTcsMy40NzM2OSAtMTYuNzY5MzksLTIuMTUzODEgLTUuMTc4NDIsLTUuNjI3NSAtNi4wNjQ0OSwtMTMuNzg3MDQgLTEuOTgxOTMsLTE4LjIyMzY1MSB6XCIgaWQ9XCJwYXRoNTg3NFwiIHN0eWxlPVwiZmlsbDp1cmwoI3JhZGlhbEdyYWRpZW50MzAzMyk7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmVcIiAvPiA8cmVjdCB3aWR0aD1cIjQuMzQ5ODU0XCIgaGVpZ2h0PVwiNC4zNDk4NTRcIiByeD1cIjAuNzY5NTg5NjZcIiByeT1cIjAuNzY5NTg5NjZcIiB4PVwiODUuMzgxNTYxXCIgeT1cIjk5LjQ5Mzg4MVwiIGlkPVwicmVjdDU4NzZcIiBzdHlsZT1cImZpbGw6I2ZmN2YyYTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6I2Q0NTUwMDtzdHJva2Utd2lkdGg6MC43NDQwMzc5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZVwiIC8+IDxyZWN0IHdpZHRoPVwiMTAuMjQ1NDM2XCIgaGVpZ2h0PVwiMTAuMjQ1NDM2XCIgcng9XCIxLjgxMjY1NDVcIiByeT1cIjEuODEyNjU0NVwiIHg9XCI2MC45MjY1OVwiIHk9XCIxMDUuMjI0NVwiIGlkPVwicmVjdDU4NzhcIiBzdHlsZT1cImZpbGw6I2ZmN2YyYTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6I2Q0NTUwMDtzdHJva2Utd2lkdGg6MC43NDQwMzc5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZVwiIC8+IDxyZWN0IHdpZHRoPVwiNi4xODk3NTMxXCIgaGVpZ2h0PVwiNi4xODk3NTMxXCIgcng9XCIxLjA5NTExMDJcIiByeT1cIjEuMDk1MTEwMlwiIHg9XCI4Ny40MDQ3MzlcIiB5PVwiMTE4LjYzNzA1XCIgaWQ9XCJyZWN0NTg4MFwiIHN0eWxlPVwiZmlsbDojZmY3ZjJhO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTojZDQ1NTAwO3N0cm9rZS13aWR0aDowLjc0NDAzNzk5O3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lXCIgLz4gPC9nPiA8L2c+YCxcblx0XCJPcGVuQ0xcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjI5LjY2MlwiIHkxPVwiMTguMDI2XCIgeDI9XCIyMS40MTlcIiB5Mj1cIjIwLjIzNFwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwicmVkXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmNmE2YVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjI0LjU4OFwiIHkxPVwiOS43NDhcIiB4Mj1cIjE4Ljc3NlwiIHkyPVwiMTUuNTZcIiB4bGluazpocmVmPVwiI2FcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiMTguNDY2XCIgeTE9XCI2LjYxOVwiIHgyPVwiMTUuOTI0XCIgeTI9XCIxMy42MDNcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNjZmE0MGNcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZWRkNDgwXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiMTMuMTdcIiB5MT1cIjYuNTFcIiB4Mj1cIjEzLjE3XCIgeTI9XCIxMi45OTdcIiB4bGluazpocmVmPVwiI2NcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZVwiIHgxPVwiOC44MDhcIiB5MT1cIjguNDg2XCIgeDI9XCIxMC45ODhcIiB5Mj1cIjEzLjE2MVwiIHhsaW5rOmhyZWY9XCIjY1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJmXCIgeDE9XCI1LjUwNVwiIHkxPVwiMTEuNDc3XCIgeDI9XCI4LjU0NlwiIHkyPVwiMTQuNTE5XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMTFhMTE5XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzM3YWUzZFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImdcIiB4MT1cIjMuNjM5XCIgeTE9XCIxNC4yODVcIiB4Mj1cIjYuODgzXCIgeTI9XCIxNi4xNThcIiB4bGluazpocmVmPVwiI2ZcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiaFwiIHgxPVwiMi4yNjVcIiB5MT1cIjE3Ljc5OVwiIHgyPVwiNS4zNzlcIiB5Mj1cIjE4LjkzM1wiIHhsaW5rOmhyZWY9XCIjZlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJpXCIgeDE9XCIyXCIgeTE9XCIyMS42MTRcIiB4Mj1cIjQuODMzXCIgeTI9XCIyMS42MTRcIiB4bGluazpocmVmPVwiI2ZcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwialwiIHgxPVwiMjAuNjYyXCIgeTE9XCIxOC45NDlcIiB4Mj1cIjE4LjAyNlwiIHkyPVwiMTcuNDI4XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiM2NDY0NjRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjY2JjYmNiXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwia1wiIHgxPVwiMTYuMDIxXCIgeTE9XCIyNS4yNjRcIiB4Mj1cIjE2LjAyMVwiIHkyPVwiMjIuNjkxXCIgeGxpbms6aHJlZj1cIiNqXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX29wZW5jbDwvdGl0bGU+PHBhdGggZD1cIk0yNy44MjgsMTMuNTc0YTE0LjY3NiwxNC42NzYsMCwwLDEsLjgzNSwxLjU0MkExNC45NjQsMTQuOTY0LDAsMCwxLDI5LjkyLDIyLjlIMjIuMTMzYTEwLjM3NywxMC4zNzcsMCwwLDAtLjk2Ny00LjQyNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE3Ljc1MywxNC40M2ExMC4wNzQsMTAuMDc0LDAsMCwxLDIuNzcyLDIuODc4bDYuMjczLTUuMmExNS41NCwxNS41NCwwLDAsMC00Ljk4OC00LjE1WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTQuNzgxLDEzLjA4NmE4LjgyNyw4LjgyNywwLDAsMSwyLjM3Ni45NjZMMjAuNjY2LDcuNDNhMTIuNywxMi43LDAsMCwwLTQuNjQ1LS45NTJaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0xNC4zNjQsMTNsLjYxMi02LjQ4OGExMi40NiwxMi40NiwwLDAsMC0zLjYxMS44MTNsLjUwNyw1LjYzOEE3LjIxOSw3LjIxOSwwLDAsMSwxNC4zNjQsMTNcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTEwLjk0OCwxMy4xNzlsLS42ODMtNS4zNzNBMTQuNTg4LDE0LjU4OCwwLDAsMCw3Ljc3Myw5LjM3OWwxLjc0LDQuNDJhNy41MTgsNy41MTgsMCwwLDEsMS40MzUtLjYxOVwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxwYXRoIGQ9XCJNOC44NiwxNC4yMDYsNi40NzQsMTAuNTExYy0uNDUzLjQ0LS43OS44Mi0xLjAwNiwxLjA3NHEtLjIyNy4yNjctLjQzNi41MzhMNy40OCwxNS4zODdhOC44Nyw4Ljg3LDAsMCwxLDEuMzgtMS4xODJcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48cGF0aCBkPVwiTTcuMDQ2LDE1Ljg3NSw0LjMzNSwxMy4xMTJhMTQuMjU5LDE0LjI1OSwwLDAsMC0xLjI1LDIuNDI5bDMuMDA3LDEuNzFhOS44MjYsOS44MjYsMCwwLDEsLjk1NC0xLjM3NlwiIHN0eWxlPVwiZmlsbDp1cmwoI2cpXCIvPjxwYXRoIGQ9XCJNNS41MjcsMTguMzkzbC0yLjc3LTEuOTQ1YTE1LjQ1MiwxNS40NTIsMCwwLDAtLjYzLDIuODNsMi45MDYuNjA3YTEwLjM0MywxMC4zNDMsMCwwLDEsLjQ5NC0xLjQ5MlwiIHN0eWxlPVwiZmlsbDp1cmwoI2gpXCIvPjxwYXRoIGQ9XCJNNC44MzMsMjAuOWExMC42ODQsMTAuNjg0LDAsMCwwLS4xLDJIMi4wOTNhMTQuMzMzLDE0LjMzMywwLDAsMS0uMDY0LTIuNTczWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2kpXCIvPjxwYXRoIGQ9XCJNMjIuNTUxLDEyLjQ3OCwxNC43NTEsMjMuMUExLjU0NCwxLjU0NCwwLDAsMSwxNy41LDI0LjQyOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNqKVwiLz48cGF0aCBkPVwiTTE2LjAyMSwyNS41MjJhMS41NDQsMS41NDQsMCwxLDEsMS4wOTItLjQ1MkExLjUzMywxLjUzMywwLDAsMSwxNi4wMjEsMjUuNTIyWlwiIHN0eWxlPVwiZmlsbDojNjQ2NDY0XCIvPjxwYXRoIGQ9XCJNMTcuMzA4LDIzLjk3OGExLjI4NywxLjI4NywwLDEsMS0uMzc3LS45MUExLjI4MywxLjI4MywwLDAsMSwxNy4zMDgsMjMuOTc4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2spXCIvPmAsXG5cdFwiUGFzY2FsXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxNlwiIHkxPVwiLTAuNDQzXCIgeDI9XCIxNlwiIHkyPVwiMjIuMDQyXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wMjFcIiBzdG9wLWNvbG9yPVwiI2ZmMGMxNVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM5YTBjMGZcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9kZWxwaGk8L3RpdGxlPjxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTZcIiByPVwiMTRcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTI3LjU0NSwxNi4yNDNINC45MjRhLjkxNC45MTQsMCwwLDAtMS4wOTIuODJxLjAzMy40MjkuMS44NDlhMTIuNCwxMi40LDAsMCwwLDI0LjUzMiwwcS4wNzUtLjUuMTA4LTEuMDIxQzI4LjQ3OCwxNi41MjMsMjguMjExLDE2LjIwNywyNy41NDUsMTYuMjQzWlwiIHN0eWxlPVwiZmlsbDojZmY2NDQzXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxOC40OCAxMS42NCAyMy43MDcgNy4yNjYgMTkuNzg3IDUuODggMTYgMTEuMDUzXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjE1LjY4IDExLjAyNiAxOC42NCA1Ljg4IDE0Ljg1MyA1Ljg4IDEzLjMwNyAxMS4yOTNcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiMTMuMDQgMTEuMzczIDEzLjYgNi43MDYgMTAuNTg3IDcuOTYgMTEuMDEzIDEyLjc2XCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjEwLjc0NyAxMyA5Ljc4NyA4Ljc2IDcuNzA3IDEwLjg0IDkuNjUzIDE0LjY4XCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuMzg3IDE1LjA1MyA3LjQ5MyAxMi4zNzYgNi42NCAxNC40NjYgOS4wNCAxNi41MTdcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS4wNCAxNi43NTcgNi42NCAxNS4yMTMgNi40OCAxNy40IDkuMiAxOC4zMzNcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS4yMjcgMTguODQ2IDYuNjQgMTguMDQgNy4yMjcgMTkuOCA5LjU0NyAxOS44XCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuNzA3IDIwLjA5MyA3LjcwNyAyMC4zODYgOC42MjcgMjEuNzQ2IDEwLjI2NyAyMVwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMjAuMDIzLDEzLjA4OWE2LjYxLDYuNjEsMCwwLDAtNC41My0yQTYuMjkzLDYuMjkzLDAsMCwwLDExLjMsMjIuMDdsNC45NDEuMTI5LTIuMDgtNC4xNlpcIiBzdHlsZT1cImZpbGw6I2VlZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE2LjUsMjIuMzY2bC01LjI2Ny0uMTM4LS4wNDQtLjAzOWE2LjQ1Myw2LjQ1MywwLDAsMSw0LjMtMTEuMjY0LDYuNzg3LDYuNzg3LDAsMCwxLDQuNjQzLDIuMDVsLjEyMy4xMjMtNS45LDQuOTgyWm0tNS4xNC0uNDU1LDQuNjE2LjEyMUwxMy45NjEsMThsNS44MjUtNC45MTlhNi40Myw2LjQzLDAsMCwwLTQuMjkyLTEuODM1LDYuMTMzLDYuMTMzLDAsMCwwLTQuMTMxLDEwLjY2N1pcIiBzdHlsZT1cImZpbGw6I2VlNGIyZVwiLz48cGF0aCBkPVwiTTEyLjAxMywyMC40OTNjLTQuMTczLTUuODEzLDIuMTA5LTguMTcyLDIuNDc4LTguNDUzLjQ1MS0uMzQ0LTcuNTksMS43ODUtMy4yMjYsOC44OFpcIiBzdHlsZT1cImZpbGw6I2YwNGUzMTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyMC43MiAxMi42IDEzLjUyIDE3LjU2NyAxMy43MzMgMTguNTczIDIxLjQ2NyAxNy4wMjYgMjAuNzIgMTIuNlwiIHN0eWxlPVwiZmlsbDojZWVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTMuNjEsMTguNzYxLDEzLjM0MSwxNy41bDcuNDk1LTUuMTcuODE0LDQuODI4Wm0uMDg5LTEuMTIzLjE1OC43NDdMMjEuMjgzLDE2LjksMjAuNiwxMi44NzRaXCIgc3R5bGU9XCJmaWxsOiNlZTRiMmVcIi8+PHBhdGggZD1cIk0xNS43MjMsMjEuMzE5Yy0zLjkzLS42NjgtNC4yODMuNDI4LTQuMjgzLjQyOEwxMC4yNjcsMjQuNDRzMS4xMi0uOTA3LDUuNDkzLDBsLjc2LTEuMzg4WlwiIHN0eWxlPVwiZmlsbDojZGQwYzEzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTQuMTIyLDIxLjZjLS4wMi0uMi0xLjEtLjMxOS0xLjY3Ny0uMTIzLS43MzIuMjQ5LTEuMjE5LDEuMTQyLTEuMDQ1LDEuMjEzYTEuOTc1LDEuOTc1LDAsMCwxLDEuMTI1LS45ODZDMTMuNDQ3LDIxLjQ5MywxNC4xNDIsMjEuOCwxNC4xMjIsMjEuNlpcIiBzdHlsZT1cImZpbGw6I2ZmNmU0ZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE1LjUyLDE4LjYwNmExMS4xLDExLjEsMCwwLDAsMS41NDcsMS40ODcsNi45LDYuOSwwLDAsMSwyLjcyLDQuMTA3Yy0uMTA3LDEuMDY3LTEuOTczLDEuNzYtMS45NzMsMS43NmwtMy4zMDctNy4xOTRaXCIgc3R5bGU9XCJmaWxsOiNlZWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNy43MywyNi4xNjFsLTMuNDU3LTcuNTIxLDEuMzItLjIwOC4wNTcuMDgxYTEwLjg2OSwxMC44NjksMCwwLDAsMS41MTIsMS40NTEsNyw3LDAsMCwxLDIuNzgyLDQuMjA3bDAsLjAyMiwwLC4wMjJjLS4xMTUsMS4xNTMtMiwxLjg2NC0yLjA3NywxLjg5NFptLTIuOTktNy4yNywzLjE1NSw2Ljg2M2MuNDE0LS4xNzgsMS42My0uNzYzLDEuNzMtMS41NDhhNi43OTMsNi43OTMsMCwwLDAtMi42NDgtMy45ODFsLS4wMS0uMDA3YTExLjk0LDExLjk0LDAsMCwxLTEuNTE3LTEuNDM5WlwiIHN0eWxlPVwiZmlsbDojZWU0YjJlXCIvPjxwYXRoIGQ9XCJNMjgsMTIuNzQyYy4wMjUuMzk0LjAzNC43OTIuMDI1LDEuMTk0YTEzLjk0NiwxMy45NDYsMCwwLDEtMTkuOSwxMi4zQTEyLjg2LDEyLjg2LDAsMCwwLDI4LDEyLjc0MlpcIiBzdHlsZT1cImZpbGw6I2VhZTBkZjtmaWxsLXJ1bGU6ZXZlbm9kZDtvcGFjaXR5OjAuMlwiLz48cGF0aCBkPVwiTTIuMzgzLDEzLjg5M0ExMy45NDEsMTMuOTQxLDAsMCwxLDI1LjcsNS44M3MtNS4wMDksNS45NzktMTAuNTg0LDcuOTA3UzIuMzgzLDEzLjg5MywyLjM4MywxMy44OTNaXCIgc3R5bGU9XCJmaWxsOiNlYWUwZGY7b3BhY2l0eTowLjJcIi8+PHBhdGggZD1cIk0zLjYxOCwxOC42OTRjLS4wNDQtLjM5Mi0uMDcyLS43OS0uMDgzLTEuMTkxQzMuMzI5LDkuODA3LDEwLjAxMiw0LjIsMTcuNzA4LDMuOTkxYTE0LjIsMTQuMiwwLDAsMSw1LjcxOSwxLjQ1OCwxMy4xMjgsMTMuMTI4LDAsMCwwLTcuMTg4LTIuMzY5Yy03LjEuMTktMTMuMzA2LDUuMy0xMy4xMTYsMTIuNEExMi44NzMsMTIuODczLDAsMCwwLDMuNjE4LDE4LjY5NFpcIiBzdHlsZT1cImZpbGw6I2VhZTBkZjtmaWxsLXJ1bGU6ZXZlbm9kZDtvcGFjaXR5OjAuMlwiLz5gLFxuXHRcIlBlcmxcIjogYDxwYXRoIGQ9XCJNMjkuMjUsMTMuOGE2Ljg4OCw2Ljg4OCwwLDAsMC0uNzQyLTIuMjY4LDEuMDExLDEuMDExLDAsMCwwLS4xNzItLjIzMyw5LjQ3MSw5LjQ3MSwwLDAsMS0xLjcyNS0yLjQsOC42MzIsOC42MzIsMCwwLDAtMS4zOTUtMi4zODJBNi45MDYsNi45MDYsMCwwLDEsMjQuMSw0LjY0NCw0LjU3Miw0LjU3MiwwLDAsMCwyMS45OSwxLjcyN2ExLjAwOSwxLjAwOSwwLDAsMC0uMS0uMDU0LDguODg2LDguODg2LDAsMCwwLTEuMy0uNDY4LDEuMDIyLDEuMDIyLDAsMCwwLS4yNjMtLjAzNSwxLjAwOSwxLjAwOSwwLDAsMC0uMi4wMjEsNS42MDcsNS42MDcsMCwwLDEtLjgwNy4xMDdjLS4wNSwwLS4xLS4wMDYtLjE0OS0uMDA2YTIuODQyLDIuODQyLDAsMCwwLTEuNDE2LjQ1M2MtLjA5NC4wNTItLjE4OC4xMDYtLjI4NC4xNDlxLS4wNDEuMDE4LS4wNzguMDM5QTEuNjM3LDEuNjM3LDAsMCwxLDE3LjA2NiwyYTMuMTA5LDMuMTA5LDAsMCwwLS43NzIuMTk0LDEsMSwwLDAsMC0uNTA4LjQ4MywyLjE4NCwyLjE4NCwwLDAsMS0uNDY5LjVBNC4zODIsNC4zODIsMCwwLDAsMTQuNTU1LDRhLjk2NC45NjQsMCwwLDAtLjExNi4yMzQsNC42ODcsNC42ODcsMCwwLDEtMS41NzQsMi4yLDYuNDcxLDYuNDcxLDAsMCwwLS44LjYxMywyLjczNCwyLjczNCwwLDAsMC0uNjI3LTEuNjM0Yy0uMDE3LS4wMTktLjAzNS0uMDM4LS4wNTMtLjA1NmwwLS4wMTRhMi4zNzgsMi4zNzgsMCwwLDAtLjEzNS0uNTg2LDEsMSwwLDAsMC0uMTMyLS4yMzZBNS4xNjcsNS4xNjcsMCwwLDAsOS41MTEsMy4xMTNhLjk4OC45ODgsMCwwLDAtLjM0Ni0uMTE5LDEuNSwxLjUsMCwwLDEtLjE0OC0uMDc3LDIuMDYsMi4wNiwwLDAsMC0xLS4zMTEsMS40NzYsMS40NzYsMCwwLDAtLjY4MS4xNjYuOTg3Ljk4NywwLDAsMC0uMjc0LjIwNiwxLjMyOCwxLjMyOCwwLDAsMS0uMTI1LjA2MywxLjksMS45LDAsMCwwLS45MDguNzc4LDIuNTM5LDIuNTM5LDAsMCwwLS41NDEuMTA2LDEuNjU2LDEuNjU2LDAsMCwxLS4zODMuMDU3LDIuMywyLjMsMCwwLDAtMS41LjU0NWwtLjEwNi4xYTIuNTMzLDIuNTMzLDAsMCwwLTEsMi41MjUsMS4wOCwxLjA4LDAsMCwwLC4wNjguMTY1QTIuMjk0LDIuMjk0LDAsMCwwLDQuNDQ2LDguNDc4Yy0uMS4yMzgtLjIuNDczLS4zMTQuN2ExLjAwOSwxLjAwOSwwLDAsMC0uMDg3LjI5M0ExMS4wNTIsMTEuMDUyLDAsMCwwLDQsMTIuMDM5YzAsLjAyLDAsLjA0LjAwNy4wNmE1LjI3OCw1LjI3OCwwLDAsMSwuMDQxLjU0NywyLjkyNiwyLjkyNiwwLDAsMCwuOTMxLDIuNGMuMDE3LjAxNC4wMzQuMDI2LjA1Mi4wMzlsLjAwOC4wMzFhMi44LDIuOCwwLDAsMCwuMTUxLjQ0NywxLjE4NSwxLjE4NSwwLDAsMCwuNjMyLjYxNywxLjI4OSwxLjI4OSwwLDAsMCwuMjQ4LjU3MSwxLDEsMCwwLDAsLjMzMi4yNzksMi40NTMsMi40NTMsMCwwLDAsLjQ2NS4xNzZsLjA2NC4wMThhLjk3Ni45NzYsMCwwLDAsLjE5Mi4xNzFBNS44NzksNS44NzksMCwwLDEsNy44NzMsMThhMS4xMywxLjEzLDAsMCwwLDEuMzUxLjQyNywxLjUsMS41LDAsMCwwLC43NjUuMjE1LDEuNDIxLDEuNDIxLDAsMCwwLC42MjQtLjE0NWwuMTE0LS4wMjZjLjAyNC40MDguMDMzLjgxNy4wMjgsMS4yMjNhMS4wNDMsMS4wNDMsMCwwLDAsLjAyNi4yNDIsMTAuNzQ0LDEwLjc0NCwwLDAsMSwuMjY2LDEuODI4LjkzMS45MzEsMCwwLDAsLjAzMS4yLDguNDkyLDguNDkyLDAsMCwxLC4yNjgsMS44MTVjMCwuMDMxLDAsLjA2My4wMDguMDk0YTYuMDgzLDYuMDgzLDAsMCwxLS42MSwzLjU3NS45OTQuOTk0LDAsMCwwLS4wODkuMjYxLDEuMDkzLDEuMDkzLDAsMCwwLS4yMzQuMDc5bC0uMDUuMDIyYTIuMDEzLDIuMDEzLDAsMCwwLTEuMiwxLjA2NSwxLjMyMiwxLjMyMiwwLDAsMCwuMDc0LDEuMDU0LDEsMSwwLDAsMCwuMzI0LjM3MSwzLjU0NywzLjU0NywwLDAsMCwzLjUwOS4zLDEuNTQ2LDEuNTQ2LDAsMCwwLC44MjktMS42NTNsLS4wMDUtLjA2N2EuOTg5Ljk4OSwwLDAsMCwuMDU2LS4xNTgsMTEuMTg2LDExLjE4NiwwLDAsMCwuMjg4LTIuMDY4LDguOTM5LDguOTM5LDAsMCwxLC4yNTktMS44MjIsNC43MjcsNC43MjcsMCwwLDAsLjM4OS0xLjU4OGwuMDQyLjA0OGExMi42NjEsMTIuNjYxLDAsMCwwLDEuMjU1LDEuMTI5LDEwLjMsMTAuMywwLDAsMSwxLjEuOTg5bC0uMDExLjAzOGEuNTMyLjUzMiwwLDAsMS0uMzQyLjM1OWwtLjA0OS4wMTdhMS45MjEsMS45MjEsMCwwLDAtMS4xODQsMS4zMzQsMS4zMTMsMS4zMTMsMCwwLDAsLjQ1MiwxLjIzNCwxLDEsMCwwLDAsLjQ0MS4yMjIsNC45MDgsNC45MDgsMCwwLDAsMi43MzUtLjE4MSwxLjU1NiwxLjU1NiwwLDAsMCwuMjY2LS4xMjQsMS40MTEsMS40MTEsMCwwLDAsLjk3LjM3MiwyLjMyNiwyLjMyNiwwLDAsMCwxLS4yNzRjLjA0OS0uMDIzLjEtLjA0NS4xNC0uMDYyYTEsMSwwLDAsMCwuNjM3LS44NjQsNC41NTMsNC41NTMsMCwwLDAtLjQ2OC0yLjM0MywxLjU2LDEuNTYsMCwwLDAtLjUxLS42LDEwLjgsMTAuOCwwLDAsMSwxLjMtMi4xNSwyLjE5MywyLjE5MywwLDAsMCwuNDUxLTIuMDI2LDIuNTE5LDIuNTE5LDAsMCwxLS4wNDMtLjM5NCwxLjA0NiwxLjA0NiwwLDAsMCwwLS4xNDgsNS43NTYsNS43NTYsMCwwLDEsLjAxMi0xLjI3OSw3LjE2MSw3LjE2MSwwLDAsMCwuOTUxLDEuNzkzLDcuODkyLDcuODkyLDAsMCwxLC4xMzMsMS4xLDEwLjczMywxMC43MzMsMCwwLDAsLjEzMywxLjE4Niw5LjM2LDkuMzYsMCwwLDEtLjIyNCwzLjksMSwxLDAsMCwwLS4wMzIuMzRoMGEuOTguOTgsMCwwLDAtLjEuMTc5LDIuMjM4LDIuMjM4LDAsMCwwLS4zMTIsMS4yMzUsMS4wMDcsMS4wMDcsMCwwLDAsLjAzOS4yLDEuMzE1LDEuMzE1LDAsMCwwLDEuMzI4Ljk2M2MuMDg2LDAsLjE3Ny0uMDA2LjI2OC0uMDE0bC4wMTksMCwuMDM4LjAxM2EyLjEwOSwyLjEwOSwwLDAsMCwyLjUxNy0xLjA4OCwxLDEsMCwwLDAsLjA1OC0uNzM1LDUuMjg1LDUuMjg1LDAsMCwxLS4yMDgtMS4wMjcsMS4wMTEsMS4wMTEsMCwwLDAtLjA0Ni0uMjE3LDYuNDcsNi40NywwLDAsMS0uMjIxLTMuMjIsMS4xMTIsMS4xMTIsMCwwLDAsLjAxNS0uMTE0LDMuOTA3LDMuOTA3LDAsMCwxLC4wNzQtLjQ0MywyLjczOCwyLjczOCwwLDAsMC0uMTkzLTIuMSw0LjMzOSw0LjMzOSwwLDAsMSwuMDIxLS40NzZjLjAxMS0uMTQ3LjAyMy0uMy4wMjctLjQ2M2ExLjU5LDEuNTksMCwwLDAsLjg2Mi0uODUxLDEyLjgzLDEyLjgzLDAsMCwwLC45NDctMi4yMywxLjcxOSwxLjcxOSwwLDAsMCwuMTcyLTEuMTg1LDEuMjM0LDEuMjM0LDAsMCwwLC4xMTEtLjI1MUExLjQ2NywxLjQ2NywwLDAsMCwyOS4yNSwxMy44Wk0xOC44NjMsMjIuNzY4Yy0uMDI2LDAtLjA1My0uMDA4LS4wOC0uMDFsLS4wMjQsMGEyLjc0OCwyLjc0OCwwLDAsMS0uMjM2LS4zMjNjLS4wNTktLjA4OC0uMTE4LS4xNzUtLjE3OC0uMjU4YTIuMjUzLDIuMjUzLDAsMCwwLC4yMDgtLjIzNCwxLjI1NSwxLjI1NSwwLDAsMCwuNjI5LS4zMjFBMy4xODYsMy4xODYsMCwwLDEsMTguODYzLDIyLjc2OFpcIiBzdHlsZT1cImZpbGw6I2VkZWRlZFwiLz48cGF0aCBkPVwiTTE5LjI4OSwyLjNjLS41NDgtLjA2NS0uOTYxLjMtMS40MTkuNTA2LS4zNjguMjA2LS44MTUuMTUyLTEuMTg1LjMwOS0uMjgyLjU3OS0uOTQxLjkwOC0xLjMsMS40NDNhNS43LDUuNywwLDAsMS0xLjk0MiwyLjY5NCw1LjQ2NCw1LjQ2NCwwLDAsMC0yLjM2OCwzLjM5NGMtLjE0NS4zLS4xMjIuNzQ2LS4yNzcsMS0uNTExLjE0My0uMjM5LS41MTYtLjMtLjgyNS0uMDc0LS40Ny4zNDEtLjc3LjM3My0xLjIyNmExLjgzNCwxLjgzNCwwLDAsMCwuMjA5LTEuMDUzYy0uMDU2LS44MTQuMTg5LTEuODA3LS4zOTMtMi40NzctLjM0OS0uMi0uMjM5LS42MjMtLjM2Ni0uOTQ3YTQuMjE0LDQuMjE0LDAsMCwwLTEuMy0xLjEzOWMtLjQxOS0uMDQxLS44MDYtLjU0Mi0xLjIzMi0uMzIzLS4yNjYuMzA5LS43NjMuMzA1LS45MjIuNzEzLS4xLjUxNi0uNjg4LjM3NC0xLjA2OC41LS40ODguMTg1LTEuMTE4LjAwNi0xLjUxOC4zODItLjQxMS40MS0xLjAzNC45NjEtLjgzNSwxLjYwNi40NTcuODgyLDEuNjQ1LjQzOCwyLjMxNy45NzRBMTcuOTksMTcuOTksMCwwLDEsNS4wMzYsOS42MWExMC4wNTEsMTAuMDUxLDAsMCwwLS4wNDQsMi4zMzJjLjEyMy43NzMtLjA4MywxLjc3Mi42MDYsMi4zMTkuMzguMTM3LjM1Ny41NzIuNS44ODcuMTM0LjI5LjQyNy0uMTEzLjU0My4xOTMuMzM4LjE4NC4wMzcuNTYxLjIyLjguMjYzLjEzNy42MzkuMTI4LjgyMi40MjZhNi44NDQsNi44NDQsMCwwLDEsLjk3NS44MDZjLjIzLjQ2Ny41MzEtLjQ1NC43ODMtLjEwOS4xNy4yODUuNTA2LjUyMi44MTkuMjg1YTIuOTkzLDIuOTkzLDAsMCwwLDEuMzI0LS41NTYsMTguMDMzLDE4LjAzMywwLDAsMSwuMTcxLDIuNzE4LDExLjczMywxMS43MzMsMCwwLDEsLjI5LDIsOS40MDksOS40MDksMCwwLDEsLjMsMi4wMyw3LjExMSw3LjExMSwwLDAsMS0uNzA5LDQuMTYsMS4wMTIsMS4wMTIsMCwwLDEtLjgwNy44Yy0uMjkxLjEzLS45LjM2Ni0uNjkyLjc3NmEyLjU0OSwyLjU0OSwwLDAsMCwyLjUyLjIxNGMuNTEtLjI0My4wNzMtLjg1OC4zMzQtMS4yMjYuMzQzLTEuMy4xNzQtMi42OTEuNTc1LTMuOTg1YTMuNzYyLDMuNzYyLDAsMCwwLC4zLTIuMWMuMDc5LS40NC0uMTA1LS45NjkuMTg3LTEuMzI5YTEuODEzLDEuODEzLDAsMCwxLC40ODMtMS4yLDE0Ljc2MiwxNC43NjIsMCwwLDAsLjE0NC0yLjAyNiwzLjIxNCwzLjIxNCwwLDAsMSwxLjI2Ny0uMTI3Yy4wMTguMzc1LS4yNzIuODEyLS4xOSwxLjIzNEExLjk0OCwxLjk0OCwwLDAsMSwxNS41LDIwLjNhMi44NDksMi44NDksMCwwLDAsLjE2OCwyLjMwOGMuNzgyLjgzOSwxLjgsMS40MzIsMi41MzYsMi4zMjcuMzE0LjIwNS4yLjUxNy4wMzguNzg0YTEuNTI4LDEuNTI4LDAsMCwxLS45ODcsMS4wMzRjLS4zMDguMTIxLS44MDYuNTY2LS40NDIuODgyYTMuOTA2LDMuOTA2LDAsMCwwLDIuMTc4LS4xNDRjLjQ3Ni0uMTcxLjMtLjczOC40ODgtMS4wODguMy4yMzMuNDIzLjc2NS43MTEsMS4wNjkuMy40MzMuODA3LjA3MywxLjE1Ni0uMDYyYTMuNTQ5LDMuNTQ5LDAsMCwwLS4zNzItMS44NDJjLS4xNjctLjM3OC0uOC0uMzg1LS43Ny0uODUyYTExLjc2MSwxMS43NjEsMCwwLDEsMS43MTItM2MuNTEtLjQ3OS4xMy0xLjE5MS4xNTgtMS44QTYuNzY1LDYuNzY1LDAsMCwxLDIzLjE1OCwxNS41YTE1Ljg4OSwxNS44ODksMCwwLDAsLjY5MiwyLjE0LDYuMjMsNi4yMywwLDAsMCwxLjEsMi4yNDZjLjIzNy44MTEuMTc2LDEuNzEuMzMxLDIuNTUxYTEwLjQ0LDEwLjQ0LDAsMCwxLS4yNDIsNC4zNDdjLjA0LjUxOC0uNDU3LjktLjQxNSwxLjQwOC4xNC40NjkuNy4wOTMuOTkuMjlhMS4xMSwxLjExLDAsMCwwLDEuMzI0LS41NzIsNi4yMTIsNi4yMTIsMCwwLDEtLjI0Ny0xLjIyMyw3LjQ1NCw3LjQ1NCwwLDAsMS0uMjU1LTMuNzE5Yy4wNDYtLjY2OS40NTctMS41LS4wNzMtMi4wNzItLjE0OC0uNjE5LjEtMS4yODUtLjA0OS0xLjkxNWExMi44NzcsMTIuODc3LDAsMCwxLS4xMjItNC45MzNjLjA5My0uMjI3LjAxMy0uNjQ5LjI0Ny0uNzc1YTEuODUxLDEuODUxLDAsMCwxLC4zMTUsMS4yMzIsMy43LDMuNywwLDAsMSwuMDc5LDIuMDgxYy0uNDI0LjUzMS0uMTYzLDEuMjQ4LS4xMDksMS44NS4wNjguNDIyLjUxNi4xMTguNTg5LS4xNDRhMTEuODUxLDExLjg1MSwwLDAsMCwuOTQ0LTIuMjQxYy4yNjktLjM1Ni4wMTQtLjc3LDAtMS4xNDIuNDEzLS4wNDkuMjU2LS41MDYuMDM1LS43YTUuOTMsNS45MywwLDAsMC0uNjY3LTIuMiwxMC40NjQsMTAuNDY0LDAsMCwxLTEuOTQxLTIuNzIzYy0uNTI4LTEuNjM5LTIuMDQyLTIuNzI2LTIuNTU2LTQuMzc5YTMuNTU2LDMuNTU2LDAsMCwwLTEuNjUyLTIuMzE3QTcuODgxLDcuODgxLDAsMCwwLDIwLjMyLDIuMTcsNi41LDYuNSwwLDAsMSwxOS4yODksMi4zWm0uNCwxNC42NmEzOC45MDcsMzguOTA3LDAsMCwxLC41LDQuMjkxLDQuMTc1LDQuMTc1LDAsMCwxLS43NiwyLjUxN2MtLjEyLjQyNS0uNDg2LjAxMi0uNzUxLS4wMTYtLjY0My0uMDE4LS44ODItLjY4My0xLjIzMi0xLjEwNy0uMzYtLjM0NC0uMS0uOC4xMzMtMS4xMzEuMjUyLS4xNzkuMzUtLjU3OS43MDgtLjU0OC40LS4wMDcuMzE2LS40ODcuMjYtLjc0My4yMzgtLjM2Mi4wOTItLjg5Mi4zMjgtMS4yODMuNDE5LS4xODIuMjk0LS44Mi40NDItMS4xOC4xMTUtLjI1Ni4wMTctLjc0OS4zMzQtLjg1NC4wMzctLjAwNi4wNDkuMDEyLjA0Mi4wNTJaXCIgc3R5bGU9XCJmaWxsOiMzYTNjNWJcIi8+YCxcblx0XCJQSFBcIjogYDxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD1cImFcIiBjeD1cIi0xNi4xMTRcIiBjeT1cIjIwLjUzMlwiIHI9XCIxOC4zODRcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyNi41MiAtOS4zMDcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjNGM2Yjk2XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzIzMWYyMFwiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3BocDwvdGl0bGU+PGVsbGlwc2UgY3g9XCIxNlwiIGN5PVwiMTZcIiByeD1cIjE0XCIgcnk9XCI3LjM2NVwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxlbGxpcHNlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcng9XCIxMy40NTNcIiByeT1cIjYuODE4XCIgc3R5bGU9XCJmaWxsOiM2MjgwYjZcIi8+PHBhdGggZD1cIk0xOC43MjUsMTguMmwuNjY3LTMuNDM0YTEuNzUyLDEuNzUyLDAsMCwwLS4zNzItMS43MTksMi45MjksMi45MjksMCwwLDAtMi0uNTI1SDE1Ljg2N2wuMzMxLTEuN2EuMjE5LjIxOSwwLDAsMC0uMjE1LS4yNmgtMS42YS4yMTkuMjE5LDAsMCwwLS4yMTUuMTc3bC0uNzA5LDMuNjQ2YTIuMDUxLDIuMDUxLDAsMCwwLS40NzctMS4wNTQsMi43ODMsMi43ODMsMCwwLDAtMi4yLS44MDdINy43YS4yMTkuMjE5LDAsMCwwLS4yMTUuMTc3bC0xLjQzNCw3LjM4YS4yMTkuMjE5LDAsMCwwLC4yMTUuMjZINy44NjlhLjIxOS4yMTksMCwwLDAsLjIxNS0uMTc3bC4zNDctMS43ODVoMS4yYTUuMTY3LDUuMTY3LDAsMCwwLDEuNTY4LS4yLDMuMDY4LDMuMDY4LDAsMCwwLDEuMTUtLjY4OSwzLjUzOCwzLjUzOCwwLDAsMCwuNjgtLjg0NGwtLjI4NywxLjQ3NWEuMjE5LjIxOSwwLDAsMCwuMjE1LjI2aDEuNmEuMjE5LjIxOSwwLDAsMCwuMjE1LS4xNzdsLjc4Ny00LjA1MWgxLjA5NGMuNDY2LDAsLjYuMDkzLjY0LjEzM3MuMS4xNjUuMDI1LjU2OWwtLjYzNSwzLjI2NWEuMjE5LjIxOSwwLDAsMCwuMjE1LjI2aDEuNjJBLjIxOS4yMTksMCwwLDAsMTguNzI1LDE4LjJaTTExLjMzLDE1LjM2NmExLjc0OSwxLjc0OSwwLDAsMS0uNTYxLDEuMDkyLDIuMTcxLDIuMTcxLDAsMCwxLTEuMzE1LjMyMUg4Ljc0MmwuNTE1LTIuNjUxaC45MjFjLjY3NywwLC45NDkuMTQ1LDEuMDU5LjI2NkExLjE4MSwxLjE4MSwwLDAsMSwxMS4zMywxNS4zNjZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yNS41NDYsMTMuMzMyYTIuNzgzLDIuNzgzLDAsMCwwLTIuMi0uODA3SDIwLjI1NWEuMjE5LjIxOSwwLDAsMC0uMjE1LjE3N2wtMS40MzQsNy4zOGEuMjE5LjIxOSwwLDAsMCwuMjE1LjI2aDEuNjA4YS4yMTkuMjE5LDAsMCwwLC4yMTUtLjE3N2wuMzQ3LTEuNzg1aDEuMmE1LjE2Nyw1LjE2NywwLDAsMCwxLjU2OC0uMiwzLjA2OCwzLjA2OCwwLDAsMCwxLjE1LS42ODksMy40MjUsMy40MjUsMCwwLDAsMS4wNzYtMS45MjdBMi41MTIsMi41MTIsMCwwLDAsMjUuNTQ2LDEzLjMzMlptLTEuNjY3LDIuMDM0YTEuNzQ5LDEuNzQ5LDAsMCwxLS41NjEsMS4wOTJBMi4xNzEsMi4xNzEsMCwwLDEsMjIsMTYuNzc4SDIxLjI5bC41MTUtMi42NTFoLjkyMWMuNjc3LDAsLjk0OS4xNDUsMS4wNTkuMjY2QTEuMTgxLDEuMTgxLDAsMCwxLDIzLjg3OSwxNS4zNjZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xMC4xNzgsMTMuOTA4YTEuNjQ1LDEuNjQ1LDAsMCwxLDEuMjIxLjMzOCwxLjM0LDEuMzQsMCwwLDEsLjE0NSwxLjE2MSwxLjk0NSwxLjk0NSwwLDAsMS0uNjQyLDEuMjIzQTIuMzYxLDIuMzYxLDAsMCwxLDkuNDU0LDE3SDguNDc2bC42LTMuMDg5Wk02LjI2MSwyMC4xMjRINy44NjlsLjM4MS0xLjk2Mkg5LjYyN2E0LjkzMSw0LjkzMSwwLDAsMCwxLjUtLjE5MSwyLjg0LDIuODQsMCwwLDAsMS4wNy0uNjQyLDMuMjA3LDMuMjA3LDAsMCwwLDEuMDEtMS44MDgsMi4zLDIuMywwLDAsMC0uMzg1LTIuMDQ0LDIuNTY4LDIuNTY4LDAsMCwwLTIuMDM1LS43MzJINy43WlwiIHN0eWxlPVwiZmlsbDojMDAwMDA0XCIvPjxwYXRoIGQ9XCJNMTQuMzg3LDEwLjc4MmgxLjZMMTUuNiwxMi43NDRoMS40MjFhMi43NjcsMi43NjcsMCwwLDEsMS44NS40NjgsMS41NDgsMS41NDgsMCwwLDEsLjMwNSwxLjUxNmwtLjY2NywzLjQzNEgxNi44OWwuNjM1LTMuMjY1YS44ODYuODg2LDAsMCwwLS4wOC0uNzYsMS4xMjEsMS4xMjEsMCwwLDAtLjgtLjJIMTUuMzdsLS44MjIsNC4yMjhoLTEuNlpcIiBzdHlsZT1cImZpbGw6IzAwMDAwNFwiLz48cGF0aCBkPVwiTTIyLjcyNywxMy45MDhhMS42NDUsMS42NDUsMCwwLDEsMS4yMjEuMzM4LDEuMzQsMS4zNCwwLDAsMSwuMTQ1LDEuMTYxLDEuOTQ1LDEuOTQ1LDAsMCwxLS42NDIsMS4yMjNBMi4zNjEsMi4zNjEsMCwwLDEsMjIsMTdoLS45NzhsLjYtMy4wODlaTTE4LjgxLDIwLjEyNGgxLjYwOGwuMzgxLTEuOTYyaDEuMzc3YTQuOTMxLDQuOTMxLDAsMCwwLDEuNS0uMTkxLDIuODQsMi44NCwwLDAsMCwxLjA3LS42NDIsMy4yMDcsMy4yMDcsMCwwLDAsMS4wMS0xLjgwOCwyLjMsMi4zLDAsMCwwLS4zODUtMi4wNDQsMi41NjgsMi41NjgsMCwwLDAtMi4wMzUtLjczMkgyMC4yNDRaXCIgc3R5bGU9XCJmaWxsOiMwMDAwMDRcIi8+YCxcblx0XCJQTC9TUUxcIjogYDxwYXRoIGQ9XCJNOC41NjIsMTUuMjU2QTIxLjE1OSwyMS4xNTksMCwwLDAsMTYsMTYuNDQ5YTIxLjE1OSwyMS4xNTksMCwwLDAsNy40MzgtMS4xOTRjMS44NjQtLjcyNywyLjUyNS0xLjUzNSwyLjUyNS0yVjkuN2ExMC4zNTcsMTAuMzU3LDAsMCwxLTIuMDg0LDEuMDc2QTIyLjI5MywyMi4yOTMsMCwwLDEsMTYsMTIuMDc4YTIyLjM2LDIyLjM2LDAsMCwxLTcuODc5LTEuM0ExMC4yOCwxMC4yOCwwLDAsMSw2LjAzNyw5Ljd2My41NUM2LjAzNywxMy43MjQsNi43LDE0LjUyOCw4LjU2MiwxNS4yNTZaXCIgc3R5bGU9XCJmaWxsOnJlZFwiLz48cGF0aCBkPVwiTTguNTYyLDIxLjk2MWExNS42MTEsMTUuNjExLDAsMCwwLDIuNi43NDFBMjQuOSwyNC45LDAsMCwwLDE2LDIzLjE1NWEyNC45LDI0LjksMCwwLDAsNC44MzgtLjQ1MiwxNS42MTQsMTUuNjE0LDAsMCwwLDIuNi0uNzQxYzEuODY0LS43MjcsMi41MjUtMS41MzUsMi41MjUtMnYtMy4zOWExMC43MDYsMTAuNzA2LDAsMCwxLTEuNjkyLjgyNUEyMy40OSwyMy40OSwwLDAsMSwxNiwxOC43NGEyMy40OSwyMy40OSwwLDAsMS04LjI3MS0xLjM0OCwxMC44MjksMTAuODI5LDAsMCwxLTEuNjkyLS44MjVWMTkuOTZDNi4wMzcsMjAuNDI2LDYuNywyMS4yMzEsOC41NjIsMjEuOTYxWlwiIHN0eWxlPVwiZmlsbDpyZWRcIi8+PHBhdGggZD1cIk0xNiwzMGM1LjUsMCw5Ljk2My0xLjc0NCw5Ljk2My0zLjg5NFYyMy4yNjlhMTAuNSwxMC41LDAsMCwxLTEuNTM1Ljc2MmwtLjE1Ny4wNjNBMjMuNDg3LDIzLjQ4NywwLDAsMSwxNiwyNS40NDVhMjMuNDIyLDIzLjQyMiwwLDAsMS04LjI3MS0xLjM1MWMtLjA1NC0uMDItLjEwNi0uMDQzLS4xNTctLjA2M2ExMC41LDEwLjUsMCwwLDEtMS41MzUtLjc2MnYyLjgzN0M2LjAzNywyOC4yNTYsMTAuNSwzMCwxNiwzMFpcIiBzdHlsZT1cImZpbGw6cmVkXCIvPjxlbGxpcHNlIGN4PVwiMTZcIiBjeT1cIjUuODk0XCIgcng9XCI5Ljk2M1wiIHJ5PVwiMy44OTRcIiBzdHlsZT1cImZpbGw6cmVkXCIvPmAsXG5cdFwiUGxhaW4gdGV4dFwiOiBgPHBhdGggZD1cIk0yMi4wMzgsMkg2LjM3NWExLjc1NSwxLjc1NSwwLDAsMC0xLjc1LDEuNzV2MjQuNUExLjc1NSwxLjc1NSwwLDAsMCw2LjM3NSwzMGgxOS4yNWExLjc1NSwxLjc1NSwwLDAsMCwxLjc1LTEuNzVWNi44NTZabS41MjUsMi44NDQsMS42NjMsMS41MzFIMjIuNTYzWk02LjM3NSwyOC4yNVYzLjc1SDIwLjgxM1Y4LjEyNWg0LjgxM1YyOC4yNVpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMTUuMDk3XCIgd2lkdGg9XCIxMy4wNzZcIiBoZWlnaHQ9XCIxLjc1XCIgc3R5bGU9XCJmaWxsOiM4MjllYzJcIi8+PHJlY3QgeD1cIjguMTI1XCIgeT1cIjI0LjQzOVwiIHdpZHRoPVwiOS43NjJcIiBoZWlnaHQ9XCIxLjc1XCIgc3R5bGU9XCJmaWxsOiM4MjllYzJcIi8+PHJlY3QgeD1cIjguMTI1XCIgeT1cIjE5Ljc2M1wiIHdpZHRoPVwiMTUuNzVcIiBoZWlnaHQ9XCIxLjc1XCIgc3R5bGU9XCJmaWxsOiM4MjllYzJcIi8+PHJlY3QgeD1cIjguMTI1XCIgeT1cIjEwLjIzXCIgd2lkdGg9XCIxNS43NVwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz5gLFxuXHRcIlBsYW50VU1MXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItMzMuNDIzXCIgeTE9XCItMjUwLjkxMVwiIHgyPVwiLTMzLjM1M1wiIHkyPVwiLTI1MC44NThcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgzNy4xMzQsIDI2LjAwMSwgMTMuNTc1LCAtMTkuMzg3LCA0NjczLjQ3MywgLTM5ODIuMDE5KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzc2NzY3NlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTMyLjEwN1wiIHkxPVwiLTI0Mi41NjNcIiB4Mj1cIi0zMi4wMjhcIiB5Mj1cIi0yNDIuNTg2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoODEuMDgxLCA1Ni43NzQsIDE3LjMwNiwgLTI0LjcxNSwgNjgwNC4wMjEsIC00MTQ5LjY0NClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMwMDc5YjlcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi0zMy4yODJcIiB5MT1cIi0yNDMuNDIzXCIgeDI9XCItMzMuMjI0XCIgeTI9XCItMjQzLjQ1NVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDYwLjAwMywgNDIuMDE1LCAzNC4xODQsIC00OC44MiwgMTAzNDMuMDA1LCAtMTA0NjkuMDg0KVwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCIxMi4zNTZcIiB5MT1cIjI2LjI2OFwiIHgyPVwiMTQuMDExXCIgeTI9XCIyNi4yNjhcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM1OTU5NTlcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wODdcIiBzdG9wLWNvbG9yPVwiIzZlNmU2ZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjI0MlwiIHN0b3AtY29sb3I9XCIjOGM4YzhjXCIvPjxzdG9wIG9mZnNldD1cIjAuNDA1XCIgc3RvcC1jb2xvcj1cIiNhNGE0YTRcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NzdcIiBzdG9wLWNvbG9yPVwiI2I1YjViNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjc2NVwiIHN0b3AtY29sb3I9XCIjYmZiZmJmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2MyYzJjMlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImVcIiB4MT1cIjE4LjI5MVwiIHkxPVwiMjYuMTcxXCIgeDI9XCIxOS45NDZcIiB5Mj1cIjI2LjE3MVwiIHhsaW5rOmhyZWY9XCIjZFwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJmXCIgeDE9XCIyNC40NFwiIHkxPVwiMjYuMTcxXCIgeDI9XCIyNi4wOTZcIiB5Mj1cIjI2LjE3MVwiIHhsaW5rOmhyZWY9XCIjZFwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9wbGFudHVtbDwvdGl0bGU+PHBvbHlnb24gcG9pbnRzPVwiMjAuMzA1IDE3Ljg3MiAyNy4xNiAyMi40MTggMjEuNzIgMjUuNDkzIDE0Ljg2MSAyMC45OTkgMjAuMzA1IDE3Ljg3MlwiIHN0eWxlPVwiZmlsbDojMWMwYTQyXCIvPjxwYXRoIGQ9XCJNMjEuNzE2LDI1LjYxOWwtLjA1NS0uMDM2LTcuMDA1LTQuNTksNS42NTMtMy4yNDcsNy4wNTYsNC42OFptLTYuNjUtNC42MTMsNi42NTgsNC4zNjIsNS4yMzEtMi45NTdMMjAuMywxOFpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjYuNDAxIDExLjkwOSAyOS40MTggMTMuNTkyIDI3LjA3IDE1LjA4OCAyNC4yMTMgMTMuMjQ3IDI2LjQwMSAxMS45MDlcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTI3LjA2OSwxNS4yMTVsLTMuMDU4LTEuOTcsMi4zODctMS40NiwzLjIyOCwxLjhabS0yLjY1NC0xLjk2NkwyNy4wNywxNC45NiwyOS4yMDgsMTMuNmwtMi44LTEuNTY1WlwiLz48cG9seWdvbiBwb2ludHM9XCIxNC40OTggMTcuODA3IDIxLjM1NCAyMi4zNTQgMTUuOTE0IDI1LjQyOSA5LjA1NSAyMC45MzUgMTQuNDk4IDE3LjgwN1wiIHN0eWxlPVwiZmlsbDojZmZiZDNmXCIvPjxwYXRoIGQ9XCJNMTUuOTEsMjUuNTU0bC0uMDU1LS4wMzZMOC44NSwyMC45MjksMTQuNSwxNy42ODFsNy4wNTYsNC42OFpNOS4yNiwyMC45NDEsMTUuOTE4LDI1LjNsNS4yMzEtMi45NTctNi42NTQtNC40MTNaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjcuOTkgMTcuOTY2IDE0Ljk1NCAyMi4zNjYgOS41NzcgMjUuNTA0IDIuMjE4IDIwLjg0OSA3Ljk5IDE3Ljk2NlwiIHN0eWxlPVwiZmlsbDojYTExZjQwXCIvPjxwYXRoIGQ9XCJNOS41NzUsMjUuNjI5LDIsMjAuODM4bDYtMyw3LjE2NCw0LjUyN1pNMi40MzYsMjAuODYsOS41OCwyNS4zNzhsNS4xNjgtMy4wMTZMNy45ODQsMTguMDg5WlwiLz48cG9seWdvbiBwb2ludHM9XCIyLjExMSAyMS4wMjEgOS40NDMgMjUuNTE1IDkuNDQzIDI5LjA2MyAyLjExMSAyNC4zMzIgMi4xMTEgMjEuMDIxXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk05LjU1LDI5LjI2LDIsMjQuMzkxVjIwLjgyOUw5LjU1LDI1LjQ1NVpNMi4yMTgsMjQuMjc0bDcuMTE4LDQuNTkyVjI1LjU3NUwyLjIxOCwyMS4yMTNaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI0LjA3MSAxMy4zNDMgMjcuMDA5IDE1LjIyMiAyNy4wMDkgMjIuMTMxIDI0LjA3MSAyMC4yNDcgMjQuMDcxIDEzLjM0M1wiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNMjcuMDYzLDIyLjIyOWwtMy4wNDUtMS45NTNWMTMuMjQ1bDMuMDQ1LDEuOTQ3Wm0tMi45MzgtMi4wMTIsMi44MzEsMS44MTVWMTUuMjUxbC0yLjgzMS0xLjgxWlwiLz48cG9seWdvbiBwb2ludHM9XCIyNy4xNDkgMjIuNTI2IDI3LjE0OSAxNS4xOTQgMjkuNTE0IDEzLjc3NSAyOS41MTQgMjkuMTQ5IDI4LjMzMSAyOS4xNDkgOS42NDYgMjkuMTQ5IDkuNjQ2IDI1LjYwMSAxNS4wODYgMjIuNTI2IDE1Ljc4NSAyNS42MDEgMTUuNzk2IDI1LjYwMSAyMS40NzIgMjIuNTI2IDIxLjg5MSAyNS42MDEgMjEuOTQ1IDI1LjYwMSAyNy4xNDkgMjIuNTI2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yOS42MjEsMjkuMjU2SDkuNTM5VjI1LjUzOGw1LjYyLTMuMTc3LjcsMy4wODMsNS43LTMuMDg3LjQyMiwzLjEsNS4wNjEtMi45OTFWMTUuMTMzbDIuNTgtMS41NDhaTTkuNzUzLDI5LjA0MUgyOS40MDdWMTMuOTY0bC0yLjE1MSwxLjI5djcuMzMybC0uMDUzLjAzMS01LjIyOSwzLjA5SDIxLjhsLS40MTEtMy4wMTQtNS41NjQsMy4wMTRIMTUuN2wtLjY4Ni0zLjAxOC01LjI2LDIuOTczWlwiLz48cmVjdCB4PVwiMTIuMzU2XCIgeT1cIjI1LjQ0XCIgd2lkdGg9XCIxLjY1NlwiIGhlaWdodD1cIjEuNjU2XCIgcng9XCIwLjIxNVwiIHJ5PVwiMC4yMTVcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTEzLjgsMjcuMkgxMi41N2EuMzIyLjMyMiwwLDAsMS0uMzIyLS4zMjJWMjUuNjU1YS4zMjIuMzIyLDAsMCwxLC4zMjItLjMyMkgxMy44YS4zMjIuMzIyLDAsMCwxLC4zMjIuMzIydjEuMjI2QS4zMjIuMzIyLDAsMCwxLDEzLjgsMjcuMlpNMTIuNTcsMjUuNTQ3YS4xMDguMTA4LDAsMCwwLS4xMDcuMTA3djEuMjI2YS4xMDguMTA4LDAsMCwwLC4xMDcuMTA3SDEzLjhhLjEwOC4xMDgsMCwwLDAsLjEwNy0uMTA3VjI1LjY1NWEuMTA4LjEwOCwwLDAsMC0uMTA3LS4xMDdaXCIvPjxyZWN0IHg9XCIxOC4yOTFcIiB5PVwiMjUuMzQzXCIgd2lkdGg9XCIxLjY1NlwiIGhlaWdodD1cIjEuNjU2XCIgcng9XCIwLjIxNVwiIHJ5PVwiMC4yMTVcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48cGF0aCBkPVwiTTE5LjczMiwyNy4xMDZIMTguNTA1YS4zMjIuMzIyLDAsMCwxLS4zMjItLjMyMlYyNS41NThhLjMyMi4zMjIsMCwwLDEsLjMyMi0uMzIyaDEuMjI2YS4zMjIuMzIyLDAsMCwxLC4zMjIuMzIydjEuMjI2QS4zMjIuMzIyLDAsMCwxLDE5LjczMiwyNy4xMDZabS0xLjIyNi0xLjY1NmEuMTA4LjEwOCwwLDAsMC0uMTA3LjEwN3YxLjIyNmEuMTA4LjEwOCwwLDAsMCwuMTA3LjEwN2gxLjIyNmEuMTA4LjEwOCwwLDAsMCwuMTA3LS4xMDdWMjUuNTU4YS4xMDguMTA4LDAsMCwwLS4xMDctLjEwN1pcIi8+PHJlY3QgeD1cIjI0LjQ0XCIgeT1cIjI1LjM0M1wiIHdpZHRoPVwiMS42NTZcIiBoZWlnaHQ9XCIxLjY1NlwiIHJ4PVwiMC4yMTVcIiByeT1cIjAuMjE1XCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk0yNS44ODEsMjcuMTA2SDI0LjY1NWEuMzIyLjMyMiwwLDAsMS0uMzIyLS4zMjJWMjUuNTU4YS4zMjIuMzIyLDAsMCwxLC4zMjItLjMyMmgxLjIyNmEuMzIyLjMyMiwwLDAsMSwuMzIyLjMyMnYxLjIyNkEuMzIyLjMyMiwwLDAsMSwyNS44ODEsMjcuMTA2Wm0tMS4yMjYtMS42NTZhLjEwOC4xMDgsMCwwLDAtLjEwNy4xMDd2MS4yMjZhLjEwOC4xMDgsMCwwLDAsLjEwNy4xMDdoMS4yMjZhLjEwOC4xMDgsMCwwLDAsLjEwNy0uMTA3VjI1LjU1OGEuMTA4LjEwOCwwLDAsMC0uMTA3LS4xMDdaXCIvPjxwYXRoIGQ9XCJNMjcuMjE1LDExLjIzYy0uMDUyLjA2OS0uNDE3LS4yNjItLjY1My0uNTI2YTQuNDA4LDQuNDA4LDAsMCwxLS41MTYtLjczQTIuNiwyLjYsMCwwLDEsMjUuNyw5LjJhMi4zNTgsMi4zNTgsMCwwLDEtLjA1Mi0uNjgyLDIuOTU5LDIuOTU5LDAsMCwxLC4xMjktLjc0OSwzLjE0MiwzLjE0MiwwLDAsMSwuNzg3LTEuMjA3LDE1LjUzMiwxNS41MzIsMCwwLDAsMS4yODMtMS40LDMuMDYyLDMuMDYyLDAsMCwwLC40NzktLjkyNywzLjk3OSwzLjk3OSwwLDAsMCwuMTUxLS44NTVjLjAxOS0uMzY0LS4wMjUtLjU5My4wMjMtLjYxM3MuMjE1LjI3NC4yODcuNTY0YTMuMTY3LDMuMTY3LDAsMCwxLS40NTgsMi4xLDYuOSw2LjksMCwwLDEtMS4wOTQsMS40NDgsMi44LDIuOCwwLDAsMC0uODQ5LDEuMjM0QTIuNDY2LDIuNDY2LDAsMCwwLDI2LjMsOC44YTMuNDY1LDMuNDY1LDAsMCwwLC40NzYsMS41NDJDMjcuMDY0LDEwLjkxNCwyNy4yNTYsMTEuMTc1LDI3LjIxNSwxMS4yM1pcIiBzdHlsZT1cImZpbGw6I2VhMmQyZVwiLz48cGF0aCBkPVwiTTI3LjE5MywxMS4yNjZjLS4xMjQsMC0uNDkyLS4zNjUtLjY1MS0uNTQ0YTQuNDc4LDQuNDc4LDAsMCwxLS41Mi0uNzM0LDIuNjI4LDIuNjI4LDAsMCwxLS4zNDYtLjc4MSwyLjM3NSwyLjM3NSwwLDAsMS0uMDUzLS42OSwyLjk3OCwyLjk3OCwwLDAsMSwuMTMtLjc1NiwzLjIwOCwzLjIwOCwwLDAsMSwuNzkzLTEuMjE2Yy4yOTQtLjMzMS41LS41MjguNjU5LS42ODZhNC4zOTMsNC4zOTMsMCwwLDAsLjYyMi0uNzExLDMuMDUyLDMuMDUyLDAsMCwwLC40NzYtLjkxOSwzLjk1MSwzLjk1MSwwLDAsMCwuMTUtLjg0OWMuMDA4LS4xNTksMC0uMjk0LDAtLjM5MywwLS4xNTktLjAwNi0uMjI1LjAzOC0uMjQzYS4wNS4wNSwwLDAsMSwuMDQzLDAsMS4yMjYsMS4yMjYsMCwwLDEsLjI4LjU3OSwzLjE2NywzLjE2NywwLDAsMS0uNDYsMi4xMjEsNi45MjgsNi45MjgsMCwwLDEtMS4xLDEuNDUzYy0uMDU1LjA2LS4xMDkuMTE2LS4xNjIuMTcxYTIuMywyLjMsMCwwLDAtLjY4MSwxLjA1MiwyLjQ3LDIuNDcsMCwwLDAtLjA4Mi42NzMsMy40NTgsMy40NTgsMCwwLDAsLjQ3MywxLjUzYy4xMTQuMjMxLjIxNS40MTUuMjg5LjU0OS4xMjkuMjM1LjE3OC4zMjMuMTQyLjM2OWgwYS4wNTEuMDUxLDAsMCwxLS4wNC4wMlpNMjguNTEyLDIuOGEuODYzLjg2MywwLDAsMCwwLC4xOWMwLC4xLjAwNy4yMzYsMCwuNGE0LjAyMSw0LjAyMSwwLDAsMS0uMTUyLjg2MSwzLjEwNiwzLjEwNiwwLDAsMS0uNDgzLjkzNCw0LjQzNyw0LjQzNywwLDAsMS0uNjI5LjcxOWMtLjE2Mi4xNTgtLjM2NC4zNTQtLjY1Ny42ODNhMy4xNjgsMy4xNjgsMCwwLDAtLjc4MiwxLjIsMi45MzMsMi45MzMsMCwwLDAtLjEyOC43NDMsMi4zMjUsMi4zMjUsMCwwLDAsLjA1Mi42NzUsMi41OSwyLjU5LDAsMCwwLC4zNDEuNzY3LDQuNDIyLDQuNDIyLDAsMCwwLC41MTMuNzI1LDIuMDM1LDIuMDM1LDAsMCwwLC42MTEuNTI2LDEuMTgzLDEuMTgzLDAsMCwwLS4xNDctLjMxYy0uMDc0LS4xMzQtLjE3NS0uMzE4LS4yOS0uNTUxQTMuNSwzLjUsMCwwLDEsMjYuMjc4LDguOGEyLjUzLDIuNTMsMCwwLDEsLjA4NC0uNjg4LDIuMzc1LDIuMzc1LDAsMCwxLC42OTQtMS4wNzVjLjA1Mi0uMDU1LjEwNi0uMTExLjE2MS0uMTcxYTYuODc5LDYuODc5LDAsMCwwLDEuMDktMS40NDIsMy4xMTksMy4xMTksMCwwLDAsLjQ1Ni0yLjA4M0ExLjI4MSwxLjI4MSwwLDAsMCwyOC41MTIsMi44WlwiLz48cGF0aCBkPVwiTTI5Ljk3Miw2LjA4N2MtLjAxOS0uMDg4LS40MzItLjA0LS43NjYuMDczYTIuNiwyLjYsMCwwLDAtMS4wNTkuNzIyLDIuOCwyLjgsMCwwLDAtLjkxNiwxLjg1NSwyLjk3MiwyLjk3MiwwLDAsMCwuMjU4LDEuMDZjLjIyMS41NzIuNDU1Ljc3My40NDQsMS4yMjUtLjAwNy4zLS4xMTQuNDg0LS4wNDguNTQ5cy4zMTQtLjEuNDYyLS4zMTNhMS44LDEuOCwwLDAsMCwuMjU5LTEuMDIyYy0uMDQ2LS44MTUtLjYtMS4wMTUtLjYwOC0xLjhhMS44NTgsMS44NTgsMCwwLDEsLjEyOS0uNjc2QzI4LjU3LDYuNTA5LDMwLjAwOCw2LjI1MiwyOS45NzIsNi4wODdaXCIgc3R5bGU9XCJmaWxsOiNlYTJkMmVcIi8+PHBhdGggZD1cIk0yNy45MzQsMTEuNjE3YS4wOTQuMDk0LDAsMCwxLS4wNjktLjAyNmMtLjA0Ni0uMDQ2LS4wMy0uMTIyLS4wMDUtLjIzN2ExLjcxOCwxLjcxOCwwLDAsMCwuMDQ1LS4zMzEsMS4zNzQsMS4zNzQsMCwwLDAtLjIxNC0uNzIsNSw1LDAsMCwxLS4yMjgtLjQ5NSwyLjk4LDIuOTgsMCwwLDEtLjI1OS0xLjA3LDIuODEsMi44MSwwLDAsMSwuOTIzLTEuODc0LDIuNjQsMi42NCwwLDAsMSwxLjA3LS43MjksMS40ODIsMS40ODIsMCwwLDEsLjc2Ni0uMUEuMDY1LjA2NSwwLDAsMSwzMCw2LjA4MWgwYy4wMTUuMDctLjA5Mi4xMjEtLjMwNi4yMjRhMi43MywyLjczLDAsMCwwLTEuNTQyLDEuNDYzLDEuODI3LDEuODI3LDAsMCwwLS4xMjcuNjY3LDEuNjQ1LDEuNjQ1LDAsMCwwLC4yOTEuODg1LDEuODg5LDEuODg5LDAsMCwxLC4zMTcuOTE0LDEuODE0LDEuODE0LDAsMCwxLS4yNjQsMS4wMzkuODA5LjgwOSwwLDAsMS0uNDIxLjM0MlptMS44ODktNS41NDlhMi4xMTcsMi4xMTcsMCwwLDAtLjYwOC4xMTcsMi41ODgsMi41ODgsMCwwLDAtMS4wNDguNzE1LDIuNzY0LDIuNzY0LDAsMCwwLS45MDksMS44MzcsMi45MzUsMi45MzUsMCwwLDAsLjI1NiwxLjA1LDQuOTU1LDQuOTU1LDAsMCwwLC4yMjUuNDksMS40MzMsMS40MzMsMCwwLDEsLjIyLjc0NSwxLjc2NSwxLjc2NSwwLDAsMS0uMDQ3LjM0MWMtLjAxOS4wOTEtLjAzNS4xNjMtLjAwOS4xODhhLjA0Ni4wNDYsMCwwLDAsLjAzOC4wMS43NjkuNzY5LDAsMCwwLC4zODItLjMyLDEuNzkzLDEuNzkzLDAsMCwwLC4yNTQtMS4wMDUsMS44NDQsMS44NDQsMCwwLDAtLjMxLS44OSwxLjcxMSwxLjcxMSwwLDAsMS0uMy0uOTExLDEuODc3LDEuODc3LDAsMCwxLC4xMy0uNjg2QTIuNzc2LDIuNzc2LDAsMCwxLDI5LjY3LDYuMjU3Yy4xMjYtLjA2MS4yODMtLjEzNi4yNzctLjE2NGwtLjAwOC0uMDA3QS4yNjQuMjY0LDAsMCwwLDI5LjgyMyw2LjA2OFpcIi8+YCxcblx0XCJQb3dlclF1ZXJ5XCI6IGA8cGF0aCBkPVwiTTMwLDI1LjU4M0gyNS43NTdWMTUuMzc4YTguMjcxLDguMjcxLDAsMCwwLS44MzItNC4yNjFBMy4wNjEsMy4wNjEsMCwwLDAsMjIuMTE4LDkuOGEzLjM4MywzLjM4MywwLDAsMC0yLjgyNiwxLjY2NCw2Ljc5MSw2Ljc5MSwwLDAsMC0xLjE2MSwzLjk4N1YyNS41ODNIMTMuODY5VjE1LjAzMXEwLTUuMjMxLTMuNjk0LTUuMjMxYTMuMzMyLDMuMzMyLDAsMCwwLTIuODI2LDEuNTczLDYuOTM1LDYuOTM1LDAsMCwwLTEuMTA2LDQuMDc4VjI1LjU4M0gyVjYuODU2SDYuMjQzVjkuODE4aC4wNzNhNi40ODgsNi40ODgsMCwwLDEsNS45MDctMy40LDUuNTY5LDUuNTY5LDAsMCwxLDMuMzkzLDEuMDdBNS4zMjgsNS4zMjgsMCwwLDEsMTcuNiwxMC4yOTRhNi42ODMsNi42ODMsMCwwLDEsNi4yMTgtMy44NzdRMzAsNi40MTcsMzAsMTQuMDQzWlwiIHN0eWxlPVwiZmlsbDojY2ZjZmNmXCIvPmAsXG5cdFwiUG93ZXJTaGVsbFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMjMuMzI1XCIgeTE9XCItMTE4LjU0M1wiIHgyPVwiNy4yNlwiIHkyPVwiLTEwNC4xOTNcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgLTk2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzUzOTFmZVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzZTZkYmZcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCI3LjFcIiB5MT1cIi0xMDQuMDAyXCIgeDI9XCIyMy4wMDFcIiB5Mj1cIi0xMTguMjkyXCIgeGxpbms6aHJlZj1cIiNhXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3Bvd2Vyc2hlbGw8L3RpdGxlPjxwYXRoIGQ9XCJNMy4xNzQsMjYuNTg5YTEuMTU0LDEuMTU0LDAsMCwxLS45MjgtLjQyMywxLjIzNCwxLjIzNCwwLDAsMS0uMjEtMS4wNTJMNi4yMzMsNi43OEExLjgsMS44LDAsMCwxLDcuOTE0LDUuNDFIMjguODI2YTEuMTU3LDEuMTU3LDAsMCwxLC45MjguNDIzLDEuMjM1LDEuMjM1LDAsMCwxLC4yMSwxLjA1MmwtNC4yLDE4LjMzNWExLjgsMS44LDAsMCwxLTEuNjgxLDEuMzdIMy4xNzRaXCIgc3R5bGU9XCJmaWxsLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk03LjkxNCw1LjY0NkgyOC44MjZhLjkxMy45MTMsMCwwLDEsLjkwOCwxLjE4N2wtNC4yLDE4LjMzNGExLjU3NSwxLjU3NSwwLDAsMS0xLjQ1MSwxLjE4N0gzLjE3NGEuOTEzLjkxMywwLDAsMS0uOTA4LTEuMTg3bDQuMi0xOC4zMzRBMS41NzQsMS41NzQsMCwwLDEsNy45MTQsNS42NDZaXCIgc3R5bGU9XCJmaWxsLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xNi4wNCwyMS41NDRoNS4wODZhMS4xMTgsMS4xMTgsMCwwLDEsMCwyLjIzNEgxNi4wNGExLjExOCwxLjExOCwwLDAsMSwwLTIuMjM0WlwiIHN0eWxlPVwiZmlsbDojMmM1NTkxO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTkuMzM5LDE2LjU3OGExLjc2MiwxLjc2MiwwLDAsMS0uNTkxLjZMOS4zMDksMjMuOTUzYTEuMjI0LDEuMjI0LDAsMCwxLTEuNDM4LTEuOTc3bDguNTEyLTYuMTY0di0uMTI2TDExLjAzNSwxMGExLjIyNCwxLjIyNCwwLDAsMSwxLjc4Mi0xLjY3Mmw2LjQxOCw2LjgyN0ExLjE2NiwxLjE2NiwwLDAsMSwxOS4zMzksMTYuNTc4WlwiIHN0eWxlPVwiZmlsbDojMmM1NTkxO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTkuMSwxNi4zNDJhMS43NDksMS43NDksMCwwLDEtLjU5LjZMOS4wNzQsMjMuNzE4YTEuMjI1LDEuMjI1LDAsMCwxLTEuNDM5LTEuOTc3bDguNTEzLTYuMTY0VjE1LjQ1TDEwLjgsOS43NjFhMS4yMjQsMS4yMjQsMCwwLDEsMS43ODMtMS42NzJMMTksMTQuOTE2QTEuMTYyLDEuMTYyLDAsMCwxLDE5LjEsMTYuMzQyWlwiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTUuOSwyMS40MTJoNS4wODZhMS4wNTksMS4wNTksMCwxLDEsMCwyLjExOEgxNS45YTEuMDU5LDEuMDU5LDAsMSwxLDAtMi4xMThaXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+YCwgIFxuXHRcIlByb2Nlc3NpbmdcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE2XCIgeTE9XCIzXCIgeDI9XCIxNlwiIHkyPVwiMjlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMxYzRjNzBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMGMyYjQyXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcHJvY2Vzc2luZ2xhbmc8L3RpdGxlPjxwYXRoIGQ9XCJNMTUuOTIyLDE5Ljk2MmExMywxMywwLDAsMS0xLjY0Ny0uMDc3djUuNTUyYTI3Ljc2LDI3Ljc2LDAsMCwxLDMuMzMyLjQ2MVYyOUg1Ljk2OFYyNS45QTI3Ljk4OCwyNy45ODgsMCwwLDEsOS4zLDI1LjQzOFY2LjcxNWEyOC4yMTUsMjguMjE1LDAsMCwxLTMuMzMxLS40NnYtMy4xSDguOTU1QzEwLjE4LDMuMTUzLDEzLjU0OSwzLDE2LjIzLDNjNi4zMTgsMCw5LjgsMi45NDgsOS44LDhDMjYuMDMxLDE2LjAxOCwyMi4yLDE5Ljk2MiwxNS45MjIsMTkuOTYyWk0xNiw3LjA1OGMtLjYxMywwLTEuMTQ5LDAtMS43MjMuMDM4djguNjE1YTkuNjk0LDkuNjk0LDAsMCwwLDEuNDU1LjExNWMzLjAyNS0uMDM4LDUuMTMtMS43MjMsNS4xMy00LjUxOUMyMC44NjIsOC43LDE5LjQwNyw3LjA1OCwxNiw3LjA1OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuXHRcIlByb2xvZ1wiOiBgPGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPVwiYVwiIGN4PVwiMTM0MS4yNVwiIGN5PVwiLTMzOTYuODY2XCIgcj1cIjE4LjI5OVwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC0xMzI3LjA3NyAzNDA1LjkzNSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xODFcIiBzdG9wLWNvbG9yPVwiI2ZiZmJmYlwiLz48c3RvcCBvZmZzZXQ9XCIwLjM2NVwiIHN0b3AtY29sb3I9XCIjZWZlZmYwXCIvPjxzdG9wIG9mZnNldD1cIjAuNTUyXCIgc3RvcC1jb2xvcj1cIiNkYWRiZGNcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MzhcIiBzdG9wLWNvbG9yPVwiI2JlYmZjMlwiLz48c3RvcCBvZmZzZXQ9XCIwLjgyNFwiIHN0b3AtY29sb3I9XCIjYWViMGIzXCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiYlwiIGN4PVwiNi42NzhcIiBjeT1cIjg0Ljc0XCIgcj1cIjE1LjU1NFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC0xLjg4NCAtODYuMTU0KSBzY2FsZSgxLjA3MiAxLjE2NilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmYWZkZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wNzlcIiBzdG9wLWNvbG9yPVwiI2VlZjVmYVwiLz48c3RvcCBvZmZzZXQ9XCIwLjIyXCIgc3RvcC1jb2xvcj1cIiNjZmRmZWNcIi8+PHN0b3Agb2Zmc2V0PVwiMC40MDdcIiBzdG9wLWNvbG9yPVwiIzlkYmJkNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjYzMVwiIHN0b3AtY29sb3I9XCIjNTg4YWI1XCIvPjxzdG9wIG9mZnNldD1cIjAuNzQ1XCIgc3RvcC1jb2xvcj1cIiMzMjZmYTRcIi8+PHN0b3Agb2Zmc2V0PVwiMC43OTlcIiBzdG9wLWNvbG9yPVwiIzJiNjY5OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjg5N1wiIHN0b3AtY29sb3I9XCIjMTc0ZTc4XCIvPjxzdG9wIG9mZnNldD1cIjAuOTk0XCIgc3RvcC1jb2xvcj1cIiMwMDMxNTJcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJjXCIgY3g9XCIxMS4yNDFcIiBjeT1cIi05Ljg5N1wiIHI9XCIxNi41OTRcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwIDIyLjYzMSkgc2NhbGUoMSAxLjA2MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmQ1NDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC42NjdcIiBzdG9wLWNvbG9yPVwiI2VjMWMyNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5NFwiIHN0b3AtY29sb3I9XCIjNzYwMDAwXCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiZFwiIGN4PVwiMTIuMjg2XCIgY3k9XCIyNi4xMjdcIiByPVwiMi4wODNcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNkZGRmZTBcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xNzRcIiBzdG9wLWNvbG9yPVwiI2Q5ZGJkY1wiLz48c3RvcCBvZmZzZXQ9XCIwLjM1MVwiIHN0b3AtY29sb3I9XCIjY2RjZmQwXCIvPjxzdG9wIG9mZnNldD1cIjAuNTMxXCIgc3RvcC1jb2xvcj1cIiNiOGJhYmJcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MTFcIiBzdG9wLWNvbG9yPVwiIzljOWU5ZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjg5MVwiIHN0b3AtY29sb3I9XCIjNzg3OTdiXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzVlNWY2MVwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImVcIiBjeD1cIjE5LjA2NFwiIGN5PVwiMjYuMTI3XCIgcj1cIjIuMDgzXCIgeGxpbms6aHJlZj1cIiNkXCIvPjxyYWRpYWxHcmFkaWVudCBpZD1cImZcIiBjeD1cIjE1LjQzNFwiIGN5PVwiMTYuMTkxXCIgcj1cIjIuNjg3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAwLjQ2MSlcIiB4bGluazpocmVmPVwiI2RcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcHJvbG9nPC90aXRsZT48ZyBzdHlsZT1cImlzb2xhdGlvbjppc29sYXRlXCI+PGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHI9XCIxNFwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNi42MDIgMTQuOTIpIHJvdGF0ZSgtNDIuMjY1KVwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTkuOTM4LDYuMzA5YTkuNzg1LDkuNzg1LDAsMCwwLTYuNS0yLjMzOUM4LjU2NCwzLjk3LDMuNzc0LDcuNywzLjQwNSwxNC45NjFjLS40LDcuOCw0Ljc1LDEyLjg2MiwxMiwxMi44NjIsMTAuNzMzLDAsMTYuNjcyLTkuNzgsMTAuMDI3LTIwLjM4OCw0LjY3MSwxMC42LS41MjcsMTcuMjc5LTcuMjM2LDE3LjI3OS01LjQ0MSwwLTkuNjEtMy42NTEtOS42MS0xMC4zNDVDOC41ODIsNC43MDksMTUuODIzLDQuMDM5LDE5LjkzOCw2LjMwOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTIyLjcsMTAuNDE1Yy0uMjkzLS45NC0uNjQ1LTIuNzg4LjYzNC0zLjg2YTMuNzI5LDMuNzI5LDAsMCwwLTMuODQ0LDEuNTM0QTkuMTY1LDkuMTY1LDAsMCwwLDEyLDguMSwzLjcyOSwzLjcyOSwwLDAsMCw4LjE1Miw2LjU1NWMxLjMwOSwxLjEuOTEsMy4wMDUuNjE0LDMuOTIzQTEwLjUxNywxMC41MTcsMCwwLDAsNi4xLDE3LjUyNGMwLDIuMTc0LDEuNCw0LjY0NSwxLjY3NSw3Ljk1NWwxLjc2OC0xLjUzMmExMS43NDMsMTEuNzQzLDAsMCwwLDYuMjEyLDEuNDMzLDExLjc0MSwxMS43NDEsMCwwLDAsNi4yMTItMS40MzNsMS43NjksMS41MzJjLjI4LTMuMzEsMS42NzUtNS43ODEsMS42NzUtNy45NTVBMTAuNTEyLDEwLjUxMiwwLDAsMCwyMi43LDEwLjQxNVpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTEwLjcyMiwyNy44NjdhMS42MjEsMS42MjEsMCwxLDEsMy4yNCwwYzAsLjAxOCwwLC4wMzUsMCwuMDUzYTIuMjM0LDIuMjM0LDAsMSwwLTMuMjI4LjEyNkMxMC43MjUsMjcuOTg3LDEwLjcyMiwyNy45MjcsMTAuNzIyLDI3Ljg2N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTIwLjYyOSwyNy44NjdhMS42MjEsMS42MjEsMCwxLDAtMy4yNCwwYzAsLjAxOCwwLC4wMzUsMCwuMDUzYTIuMjM0LDIuMjM0LDAsMSwxLDMuMjI4LjEyNkExLjY3OCwxLjY3OCwwLDAsMCwyMC42MjksMjcuODY3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxnIHN0eWxlPVwib3BhY2l0eTowLjUzO21peC1ibGVuZC1tb2RlOm11bHRpcGx5XCI+PHBhdGggZD1cIk04LjM0NiwxOC40Yy0uMTMyLjY2Ny0uOTcxLjg3Ny0uOTcxLjg3N0ExLjM1OSwxLjM1OSwwLDAsMSw2LjgwOSwxOC4xYTIuOTI5LDIuOTI5LDAsMCwwLC40NDMsMS43OTNBMi45MjcsMi45MjcsMCwwLDAsOC4zNDYsMTguNFpcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTEwLjAwOCwxOC43MzdjLS4xMzIuNjY3LS45NzIuODc3LS45NzIuODc3YTEuMzYsMS4zNiwwLDAsMS0uNTY2LTEuMTgyLDIuOTI5LDIuOTI5LDAsMCwwLC40NDQsMS43OTNBMi45MjYsMi45MjYsMCwwLDAsMTAuMDA4LDE4LjczN1pcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTguODMzLDIwLjI0OWMtLjEzMi42NjctLjk3MS44NzctLjk3MS44NzdBMS4zNTksMS4zNTksMCwwLDEsNy4zLDE5Ljk0NGEyLjkyOSwyLjkyOSwwLDAsMCwuNDQzLDEuNzkzQTIuOTI1LDIuOTI1LDAsMCwwLDguODMzLDIwLjI0OVpcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTEwLjUsMjAuNTgzYy0uMTMyLjY2Ny0uOTcxLjg3Ny0uOTcxLjg3N2ExLjM2LDEuMzYsMCwwLDEtLjU2Ni0xLjE4MkEyLjkyOSwyLjkyOSwwLDAsMCw5LjQsMjIuMDcyLDIuOTI3LDIuOTI3LDAsMCwwLDEwLjUsMjAuNTgzWlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNOS4zMjgsMjIuMTIxYy0uMTMyLjY2Ny0uOTcyLjg3Ny0uOTcyLjg3N2ExLjM2LDEuMzYsMCwwLDEtLjU2NS0xLjE4MiwyLjkyOSwyLjkyOSwwLDAsMCwuNDQzLDEuNzkzQTIuOTI2LDIuOTI2LDAsMCwwLDkuMzI4LDIyLjEyMVpcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTExLjY2NCwxOS4wN2MtLjEzMi42NjctLjk3Mi44NzctLjk3Mi44NzdhMS4zNTksMS4zNTksMCwwLDEtLjU2NS0xLjE4MiwyLjkzLDIuOTMsMCwwLDAsLjQ0MywxLjc5M0EyLjkyNywyLjkyNywwLDAsMCwxMS42NjQsMTkuMDdaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PC9nPjxnIHN0eWxlPVwib3BhY2l0eTowLjUzO21peC1ibGVuZC1tb2RlOm11bHRpcGx5XCI+PHBhdGggZD1cIk0yMy4xNTcsMTguNGMuMTMyLjY2Ny45NzEuODc3Ljk3MS44NzdhMS4zNTksMS4zNTksMCwwLDAsLjU2Ni0xLjE4MiwyLjkzLDIuOTMsMCwwLDEtLjQ0MywxLjc5M0EyLjkyNywyLjkyNywwLDAsMSwyMy4xNTcsMTguNFpcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTIxLjQ5NSwxOC43MzdjLjEzMi42NjcuOTcyLjg3Ny45NzIuODc3YTEuMzYsMS4zNiwwLDAsMCwuNTY1LTEuMTgyLDIuOTMxLDIuOTMxLDAsMCwxLS40NDQsMS43OTNBMi45MjYsMi45MjYsMCwwLDEsMjEuNDk1LDE4LjczN1pcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTIyLjY2OSwyMC4yNDljLjEzMi42NjcuOTcxLjg3Ny45NzEuODc3YTEuMzYsMS4zNiwwLDAsMCwuNTY2LTEuMTgyLDIuOTI5LDIuOTI5LDAsMCwxLS40NDMsMS43OTNBMi45MjYsMi45MjYsMCwwLDEsMjIuNjY5LDIwLjI0OVpcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTIxLjAwOCwyMC41ODNjLjEzMi42NjcuOTcxLjg3Ny45NzEuODc3YTEuMzU5LDEuMzU5LDAsMCwwLC41NjUtMS4xODIsMi45MjgsMi45MjgsMCwwLDEtLjQ0MywxLjc5M0EyLjkyNywyLjkyNywwLDAsMSwyMS4wMDgsMjAuNTgzWlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMjIuMTc1LDIyLjEyMWMuMTMyLjY2Ny45NzIuODc3Ljk3Mi44NzdhMS4zNiwxLjM2LDAsMCwwLC41NjUtMS4xODIsMi45MjgsMi45MjgsMCwwLDEtLjQ0NCwxLjc5M0EyLjkyNywyLjkyNywwLDAsMSwyMi4xNzUsMjIuMTIxWlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMTkuODM4LDE5LjA3Yy4xMzIuNjY3Ljk3Mi44NzcuOTcyLjg3N2ExLjM1OSwxLjM1OSwwLDAsMCwuNTY1LTEuMTgyLDIuOTI4LDIuOTI4LDAsMCwxLS40NDMsMS43OTNBMi45MjgsMi45MjgsMCwwLDEsMTkuODM4LDE5LjA3WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjwvZz48Y2lyY2xlIGN4PVwiMTEuMzM5XCIgY3k9XCIxNC4wNzRcIiByPVwiMy44MTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48Y2lyY2xlIGN4PVwiMTIuMTNcIiBjeT1cIjE0LjQ0NlwiIHI9XCIxLjg2MVwiIHN0eWxlPVwiZmlsbDojYmRiZmMxXCIvPjxjaXJjbGUgY3g9XCIxMi4xM1wiIGN5PVwiMTQuNDQ2XCIgcj1cIjEuMTkxXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PGNpcmNsZSBjeD1cIjExLjYwM1wiIGN5PVwiMTQuMDI3XCIgcj1cIjAuMzU3XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PGNpcmNsZSBjeD1cIjIwLjExMlwiIGN5PVwiMTQuMDc0XCIgcj1cIjMuODE2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PGNpcmNsZSBjeD1cIjIwLjkwM1wiIGN5PVwiMTQuNDQ2XCIgcj1cIjEuODYxXCIgc3R5bGU9XCJmaWxsOiNiZGJmYzFcIi8+PGNpcmNsZSBjeD1cIjIwLjkwM1wiIGN5PVwiMTQuNDQ2XCIgcj1cIjEuMTkxXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PGNpcmNsZSBjeD1cIjIwLjM3NVwiIGN5PVwiMTQuMDI3XCIgcj1cIjAuMzU3XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNS43MDYsMjEuNTJjMC0xLjQxMiwyLjE1Ny0zLjQxMywyLjE1Ny00Ljg4N2EyLjE1NywyLjE1NywwLDAsMC00LjMxMywwQzEzLjU1LDE4LjEwNywxNS43MDYsMjAuMTA4LDE1LjcwNiwyMS41MlpcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48L2c+YCxcblx0XCJQcm90b2NvbCBCdWZmZXJzXCI6IGA8cG9seWdvbiBwb2ludHM9XCIxNS45OTYgMy4yMiAyNi45NjYgOS43IDI2Ljk1NCAyMi4zIDE2IDI4Ljc4IDUuMDM4IDIyLjQwOCA1LjAzNCA5LjYyOCAxNS45OTYgMy4yMlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTYsMiwzLjk4Nyw5LjAybDAsMTRMMTYsMzBsMTItNy4xLjAxMy0xMy44Wk0yNi45NTQsMjIuMywxNiwyOC43OCw1LjAzOCwyMi40MDhsMC0xMi43OEwxNiwzLjIyLDI2Ljk2Niw5LjdaXCIgc3R5bGU9XCJmaWxsOiMxNzFjMWVcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjUuNTY5IDEzLjY1NCAxOS45NDYgMTYuOTY0IDE5Ljk0MyAyNC44OSAyNS41OSAyMS41NjUgMjUuNTY5IDEzLjY1NFwiIHN0eWxlPVwiZmlsbDojMWVhOGZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIzLjI4MiAxMi4zMDMgMjUuNTY5IDEzLjY1NCAxOS45NDYgMTYuOTY0IDE5Ljk0MyAyNC44OSAxNy4zMjcgMjMuMzcgMTcuMzQ4IDE1Ljg3NSAyMy4yODIgMTIuMzAzXCIgc3R5bGU9XCJmaWxsOiM1MGJmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjIuNTEyIDEwLjM1IDIyLjUxNCAxMS44MTYgMTYuNDExIDE1LjQ5OCAxNi40MTggMjMuNTk3IDE0Ljk5OCAyNC40MzEgMTQuOTk0IDE0Ljg1NiAyMi41MTIgMTAuMzVcIiBzdHlsZT1cImZpbGw6Izk3ZmYyN1wiLz48cG9seWdvbiBwb2ludHM9XCIyMC4wMDggOC44NzEgMjIuNTEyIDEwLjM1IDE0Ljk5NCAxNC44NTYgMTQuOTk4IDI0LjQzMSAxMi4xOTQgMjIuODAxIDEyLjE4OSAxMy40MTMgMjAuMDA4IDguODcxXCIgc3R5bGU9XCJmaWxsOiNjMmZmNzJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTkuMjI2IDYuNjA2IDE5LjIyNiA4LjM3NCAxMS4yMSAxMy4wNzQgMTEuMjEgMjMuMTcyIDkuODA4IDIzLjk4OCA5LjgzNSAxMi4yNzcgMTkuMjI2IDYuNjA2XCIgc3R5bGU9XCJmaWxsOiNmZjI3NGJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuMTYgNC43ODQgNi41MyAxMC4zOTQgNi41MjkgMjIuMDcxIDkuODI3IDIzLjk4OCA5LjgzNSAxMi4yNzcgMTkuMjM1IDYuNjA2IDE2LjE2IDQuNzg0XCIgc3R5bGU9XCJmaWxsOiNmZjVjNzdcIi8+YCxcblx0XCJQdWdcIjogYDxwYXRoIGQ9XCJNMjUuNTE0LDEyLjg0NmMtLjA1Mi0uOTM4LjIwOS0xLjgyNS0uMjA5LTIuNTU0LTEuMDQzLTEuODI1LTMuNjQ5LTIuODY3LTguODYzLTIuODY3VjcuMzcyaDB2LjA1MmMtNS43MzUsMC04LjE4NSwxLjA0My05LjIyNywyLjg2N2E1LjYsNS42LDAsMCwwLS40NjksMi41NTQsOS41NDYsOS41NDYsMCwwLDAtLjI2MSwyLjQ1Yy4xNTYsMS4xNDcuMjYxLDIuMjk0LjQxNywzLjMzNi4xNTYuODg2LDEuNDA4LDEuNTY0LDEuNTY0LDIuNC4zMTMsMi4yNDIsMi4yOTQsMy4yODQsOC4wMjgsMy4yODR2LjI2MWgtLjF2LS4yNjFjNS4yMTMsMCw3LjQtMS4wNDMsNy43MTYtMy4yODQuMS0uODM0LDEuMTQ3LTEuNTEyLDEuMy0yLjQuMTU2LTEuMDQzLjIwOS0yLjE5LjM2NS0zLjMzNkExMS43NzQsMTEuNzc0LDAsMCwwLDI1LjUxNCwxMi44NDZaXCIgc3R5bGU9XCJmaWxsOiNlZmNjYTNcIi8+PHBhdGggZD1cIk0xNi4xODIsMTMuNjhhMy4yNDEsMy4yNDEsMCwwLDEsMi4xOSwxLjE0N2MuNzMuNjI2LDEuOTI5LDEuMDQzLDIuNDUsMS42MTZhNC43MTUsNC43MTUsMCwwLDEsMS40MDgsMS45ODEsOC45LDguOSwwLDAsMSwuMzEzLDIuMjQyYzAsLjI2MS4xNTYuMjA5LjU3MywwYTkuMDIsOS4wMiwwLDAsMCwyLjE5LTEuODc3Yy0uMTU2Ljg4Ni0xLjI1MSwxLjY2OC0xLjM1NSwyLjUtLjMxMywyLjI0Mi0yLjUsMy4zMzYtNy44NzIsMy4zMzZoLjMxM1wiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTkuNTE5LDExLjkwOGMuMjA5LjY3OC44ODYsMy4wMjQtLjQ2OSwyLjI0MmEyLjU1NywyLjU1NywwLDAsMSwuOTM4LDEuNTY0LDEuODMxLDEuODMxLDAsMCwwLDEuMywxLjQwOCwzLjQ3OSwzLjQ3OSwwLDAsMCwyLjU1NC0uNjI2LDIuOTU2LDIuOTU2LDAsMCwwLC42NzgtMy4yODQsMi40MywyLjQzLDAsMCwwLTIuMTM3LTEuNjE2QzIxLjQsMTEuMzM0LDE5LjMxLDExLjEyNiwxOS41MTksMTEuOTA4WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxjaXJjbGUgY3g9XCIyMi4xNzhcIiBjeT1cIjE0LjQxXCIgcj1cIjEuOTI5XCIvPjxjaXJjbGUgY3g9XCIyMS42NTZcIiBjeT1cIjEzLjUyNFwiIHI9XCIwLjUyMVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTkuMjA2LDE0LjMwNmExNy42OCwxNy42OCwwLDAsMSwyLjcxMSwyLjM0NmMuOTM4LDEuMi45MzgsMS40MDguOTM4LDEuNDA4bC0uNjc4LjMxM2E3LjEsNy4xLDAsMCwwLTIuMTM3LTIuNWMtMS4yLS42NzgtMS4zNTUtMS4yNTEtMS4zNTUtMS4yNTFaXCIgc3R5bGU9XCJmaWxsOiNlZmNjYTNcIi8+PHBhdGggZD1cIk0xNi4yMzUsMTMuNjhhMy42MDUsMy42MDUsMCwwLDAtMi4zNDYsMS4xNDdjLS43My42MjYtMi4wMzMsMS4wNDMtMi41LDEuNjE2YTQuODA2LDQuODA2LDAsMCwwLTEuNDYsMS45ODEsOC45LDguOSwwLDAsMC0uMzEzLDIuMjQyYzAsLjI2MS4wNTIuMzEzLS42MjYsMEE3Ljk3Miw3Ljk3MiwwLDAsMSw2LjgsMTguNzg5Yy4xNTYuODg2LDEuMjUxLDEuNjY4LDEuMzU1LDIuNS4zMTMsMi4xOSwyLjUsMy4yODQsNy44NzIsMy4yODRoLjM2NVwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMjEuMjM5LDE3LjI3N2E2LjU1Miw2LjU1MiwwLDAsMC01LjEwOS0yLjYwN2gwYTYuNjM4LDYuNjM4LDAsMCwwLTUuMTA5LDIuNjA3LDMuODYxLDMuODYxLDAsMCwwLTEuMDQzLDMuMThjMCw0LjY0LDEuNjE2LDMuMjMyLDIuNzExLDMuODA2YTcuNDY2LDcuNDY2LDAsMCwwLDMuMzg5LjMxM2gwYTcuNCw3LjQsMCwwLDAsMy4zODktLjMxM2MxLjA5NS0uNTczLDIuNzExLjgzNCwyLjcxMS0zLjgwNkEzLjM4NiwzLjM4NiwwLDAsMCwyMS4yMzksMTcuMjc3WlwiIHN0eWxlPVwiZmlsbDojNTYzMzJiXCIvPjxwYXRoIGQ9XCJNMTYuMDI2LDE1Ljk3NGE5LjU0OSw5LjU0OSwwLDAsMS0uNDY5LDIuNTU0bC41NzMtLjE1NlpcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48cGF0aCBkPVwiTTE2LjE4MiwxNS45NzRhOS41NDksOS41NDksMCwwLDAsLjQ2OSwyLjU1NGwtLjU3My0uMTU2WlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNMTQuMzU4LDE1LjQ1M2MtLjIwOS0uNTIxLjU3My0xLjM1NSwxLjgyNS0xLjM1NXMyLjAzMy44MzQsMS44MjUsMS4zNTUtMS4wNDMuNjc4LTEuODI1LjY3OEMxNS4zNDgsMTYuMTMsMTQuNTY2LDE1Ljk3NCwxNC4zNTgsMTUuNDUzWlwiIHN0eWxlPVwiZmlsbDojNTYzMzJiXCIvPjxwYXRoIGQ9XCJNMTYuMTgyLDE1Ljk3NGMwLS4xLjczLS4xLDEuMTQ3LS4zNjUsMCwwLS44MzQuMjYxLS45OTEuMTU2YS42NTYuNjU2LDAsMCwxLS4yMDktLjM2NS42NTYuNjU2LDAsMCwxLS4yMDkuMzY1Yy0uMTU2LjEtMS4wOTUtLjE1Ni0xLjA5NS0uMTU2YTguMDU4LDguMDU4LDAsMCwxLDEuMi4zNjV2LjQxN2ExMC40OTIsMTAuNDkyLDAsMCwwLC4xLDIuMDMzYy4xNTYuMjA5LjEtMS40Ni4xLTIuMDMzQTEuMywxLjMsMCwwLDEsMTYuMTgyLDE1Ljk3NFpcIi8+PHBhdGggZD1cIk0xNi4xODIsMTguOTQ1YTMuMzUsMy4zNSwwLDAsMSwxLjYxNi42NzgsMy4xMjEsMy4xMjEsMCwwLDAtMS42MTYtMS4wOTUsMy4wMzYsMy4wMzYsMCwwLDAtMS44MjUsMS4yQTMuMzEyLDMuMzEyLDAsMCwxLDE2LjE4MiwxOC45NDVaXCIgc3R5bGU9XCJmaWxsOiM3ZjRhNDFcIi8+PHBhdGggZD1cIk0xNi4wNzgsMjIuOGE4LjksOC45LDAsMCwxLTIuNC0uNDY5Yy0uMTU2LS4wNTItLjMxMy4wNTItLjQ2OSwwYTYuMTcyLDYuMTcyLDAsMCwxLTMuMTgtMi4xMzd2LjIwOWMwLDQuNjQsMS42MTYsMy4yMzIsMi43MTEsMy44MDZhNy40NjYsNy40NjYsMCwwLDAsMy4zODkuMzEzaDBhNy40LDcuNCwwLDAsMCwzLjM4OS0uMzEzYzEuMDk1LS41NzMsMi43MTEuODM0LDIuNzExLTMuODA2di0uNDY5QTUuOTE0LDUuOTE0LDAsMCwxLDE5LDIyLjI4MmMtLjE1Ni4wNTItLjQxNy0uMDUyLS41NzMtLjA1MkE3LjA0NSw3LjA0NSwwLDAsMSwxNi4wNzgsMjIuOFpcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48cGF0aCBkPVwiTTEzLjk0MSwyMC4zcy0uNTczLDEuNjY4LS4xNTYsMi40bC0uNTIxLS4yMDlBMTUuNDMzLDE1LjQzMywwLDAsMSwxMy45NDEsMjAuM1pcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48cGF0aCBkPVwiTTE4LjMyLDIwLjNzLjU3MywxLjY2OC4xNTYsMi40TDE5LDIyLjQ5MUExMC42MjksMTAuNjI5LDAsMCwwLDE4LjMyLDIwLjNaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk0xMi41ODUsMTEuOTA4Yy0uMjA5LjY3OC0uODg2LDMuMDI0LjQ2OSwyLjI0MmEyLjU1NywyLjU1NywwLDAsMC0uOTM4LDEuNTY0LDEuODMxLDEuODMxLDAsMCwxLTEuMywxLjQwOEEzLjQ3OSwzLjQ3OSwwLDAsMSw4LjI1OCwxNi41YTIuOTU2LDIuOTU2LDAsMCwxLS42NzgtMy4yODQsMi40MywyLjQzLDAsMCwxLDIuMTM3LTEuNjE2QzEwLjcwOSwxMS4zMzQsMTIuNzk0LDExLjEyNiwxMi41ODUsMTEuOTA4WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTYuMTMsMTguNTI4YTMuMzkzLDMuMzkzLDAsMCwxLDIuNDUsMi44Njd2LS4xYTMuMDUxLDMuMDUxLDAsMCwwLTIuNDUtMi45MTksMywzLDAsMCwwLTIuNDUsMi45MTl2LjFBMy40NjMsMy40NjMsMCwwLDEsMTYuMTMsMTguNTI4WlwiLz48ZWxsaXBzZSBjeD1cIjE2LjU0NlwiIGN5PVwiMTUuMTM4XCIgcng9XCIwLjE1NlwiIHJ5PVwiMC4zMTNcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTMuMjU2IDQuNjExKSByb3RhdGUoLTE0LjQ2KVwiIHN0eWxlPVwiZmlsbDojMzMxNzEyXCIvPjxlbGxpcHNlIGN4PVwiMTUuNjA5XCIgY3k9XCIxNS4xNDZcIiByeD1cIjAuMzEzXCIgcnk9XCIwLjE1NlwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMy40ODIgMjUuNTY3KSByb3RhdGUoLTcyLjc2NSlcIiBzdHlsZT1cImZpbGw6IzMzMTcxMlwiLz48Y2lyY2xlIGN4PVwiMTAuMDMxXCIgY3k9XCIxNC40MVwiIHI9XCIxLjkyOVwiLz48Y2lyY2xlIGN4PVwiMTAuNTUyXCIgY3k9XCIxMy41MjRcIiByPVwiMC41MjFcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE2LjcsMTQuNDFzLS41MjEuMjA5LS42MjYuMjYxYTIuNDkyLDIuNDkyLDAsMCwxLS42MjYtLjI2MUgxNi43WlwiIHN0eWxlPVwiZmlsbDojN2Y0YTQxXCIvPjxwYXRoIGQ9XCJNMTIuOSwxNC4zMDZhMTcuNjgsMTcuNjgsMCwwLDAtMi43MTEsMi4zNDZjLS45MzgsMS4yLS45MzgsMS40MDgtLjkzOCwxLjQwOGwuNjc4LjMxM2E3LjEsNy4xLDAsMCwxLDIuMTM3LTIuNWMxLjItLjY3OCwxLjM1NS0xLjI1MSwxLjM1NS0xLjI1MVpcIiBzdHlsZT1cImZpbGw6I2VmY2NhM1wiLz48cGF0aCBkPVwiTTkuMDkyLDEwLjgxM2E0LjUxOSw0LjUxOSwwLDAsMS0xLjkyOSwyLjI5NEEyLjE5LDIuMTksMCwwLDAsOS4wOTIsMTAuODEzWlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMjIuOTA4LDEwLjgxM2E0LjUxOSw0LjUxOSwwLDAsMCwxLjkyOSwyLjI5NEEyLjE5LDIuMTksMCwwLDEsMjIuOTA4LDEwLjgxM1pcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTE5LjMxLDEzLjgzNmE1LjE2LDUuMTYsMCwwLDAtMy4wNzYtMS40MDhoLjE1NmEzLjg1MiwzLjg1MiwwLDAsMC0zLjAyNCwxLjQwOCw0LjgzMiw0LjgzMiwwLDAsMSwzLjAyNC0xLjA0M2gwQTUuNzg1LDUuNzg1LDAsMCwxLDE5LjMxLDEzLjgzNlpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTE3Ljc0NiwxMC45NjlhMi40NTUsMi40NTUsMCwwLDAtMS41NjQtLjkzOGguMTU2YTEuNzg2LDEuNzg2LDAsMCwwLTEuNTEyLjkzOCwyLjE4NywyLjE4NywwLDAsMSwxLjUxMi0uNjc4aDBBMS44OTQsMS44OTQsMCwwLDEsMTcuNzQ2LDEwLjk2OVpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTEwLjAzMSwxNy43NDZhMi41NDUsMi41NDUsMCwwLDEtMS43NzMuMjA5SDguMDVhMy42OCwzLjY4LDAsMCwxLS44ODYtMS41MTJBMi4yNywyLjI3LDAsMCwwLDEwLjAzMSwxNy43NDZaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0yMi4xMjYsMTcuNzQ2YTIuNTQ1LDIuNTQ1LDAsMCwwLDEuNzczLjIwOUgyMy42OWExLjc0OSwxLjc0OSwwLDAsMCwxLjA5NS0xLjUxMkEyLjAyLDIuMDIsMCwwLDEsMjIuMTI2LDE3Ljc0NlpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTExLjIzLDEwLjcwOWE0Ljc1LDQuNzUsMCwwLDEsMi4yNDIuMWMuOTM4LjMxMy4yMDksMS41NjQuMzY1LDEuNjE2YTIuODY1LDIuODY1LDAsMCwxLDIuMjQyLS43M2MxLjc3My4xLDEuOTgxLjg4NiwyLjI0Mi43My4yNjEtLjEtLjI2MS0yLjE5LDIuNDUtMS43MiwwLDAtMi43NjMtLjczLTIuNjU5LDEuMjUxYTMuNjc1LDMuNjc1LDAsMCwwLTMuODU4LS4xUzE0LjgyNyw5LjkyNywxMS4yMywxMC43MDlaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xMC41LDhzLTIuNCwyLjk3Mi0yLjcxMSw0LjExOGMtLjM2NSwxLjE0Ny0uNjI2LDUuOTQzLS45MzgsNi42MjFMNS43NTYsMTQuMDQ1bDIuMDMzLTQuOVpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTIxLjY1Niw4czIuNCwyLjk3MiwyLjcxMSw0LjExOGMuMzY1LDEuMTQ3LjYyNiw1Ljk0My45MzgsNi42MjFMMjYuNCwxNC4wNDVsLTIuMDMzLTQuOVpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTIxLjUsOGExMS42MTcsMTEuNjE3LDAsMCwxLDMuMjg0LDQuNTg4Yy43MywyLjQ1LjQxNyw1LjQ3NC45OTEsNS44MzkuODM0LjUyMSwxLjcyLTIuNjA3LDIuMDMzLTIuOTE5LjQ2OS0uNTIxLDIuMDg1LTEuODc3LDIuMTktMi4xMzdzLTMuMjMyLTMuOTEtNC43NDQtNC42NEMyMy41ODUsNy44OTMsMjEuNCw3Ljc4OSwyMS41LDhaXCIgc3R5bGU9XCJmaWxsOiM1NjMzMmJcIi8+PHBhdGggZD1cIk0yMy42OSw5LjNhMTUuMzc5LDE1LjM3OSwwLDAsMSwyLjk3Miw4LjY1NGwxLjItMi40NUExNi41NjQsMTYuNTY0LDAsMCwwLDIzLjY5LDkuM1pcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48cGF0aCBkPVwiTTEwLjUsOGExMS42MTcsMTEuNjE3LDAsMCwwLTMuMjg0LDQuNTg4Yy0uNzMsMi40NS0uNDE3LDUuNDc0LS45OTEsNS44MzktLjgzNC41MjEtMS43Mi0yLjYwNy0yLjAzMy0yLjkxOS0uNDY5LS41MjEtMi4wODUtMS44NzctMi4xOS0yLjEzN3MzLjIzMi0zLjkxLDQuNzQ0LTQuNjRDOC40MTUsNy44OTMsMTAuNiw3Ljc4OSwxMC41LDhaXCIgc3R5bGU9XCJmaWxsOiM1NjMzMmJcIi8+PHBhdGggZD1cIk04LjMxLDkuM2ExNS4zNzksMTUuMzc5LDAsMCwwLTIuOTcyLDguNjU0TDQuMTQsMTUuNUExNi41NjQsMTYuNTY0LDAsMCwxLDguMzEsOS4zWlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNNi42NDIsMTguMDA3YTQuMTE4LDQuMTE4LDAsMCwwLC41NzMsMS41NjRjLjM2NS4zNjUuMS0uMzEzLjEtLjMxM3MtLjM2NS0uMjA5LS4zMTMtMS43MlM2LjY0MiwxOC4wMDcsNi42NDIsMTguMDA3WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMjUuNDEsMTguMDA3YTQuMTE4LDQuMTE4LDAsMCwxLS41NzMsMS41NjRjLS4zNjUuMzY1LS4xLS4zMTMtLjEtLjMxM3MuMzY1LS4yMDkuMzEzLTEuNzJDMjQuOTkzLDE2LjA3OCwyNS40MSwxOC4wMDcsMjUuNDEsMTguMDA3WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxjaXJjbGUgY3g9XCIxMy44ODlcIiBjeT1cIjE3LjEyMVwiIHI9XCIwLjE1NlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxjaXJjbGUgY3g9XCIxMi44NDZcIiBjeT1cIjE4LjIxNlwiIHI9XCIwLjE1NlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxjaXJjbGUgY3g9XCIxMi41MzNcIiBjeT1cIjE3LjEyMVwiIHI9XCIwLjE1NlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxjaXJjbGUgY3g9XCIxOC4xNjRcIiBjeT1cIjE3LjEyMVwiIHI9XCIwLjE1NlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxjaXJjbGUgY3g9XCIxOS4xNTRcIiBjeT1cIjE4LjIxNlwiIHI9XCIwLjE1NlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxjaXJjbGUgY3g9XCIxOS40NjdcIiBjeT1cIjE3LjEyMVwiIHI9XCIwLjE1NlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPmAsXG5cdFwiUHVwcGV0XCI6IGA8cGF0aCBkPVwiTTI1LjA4OSwxMS44MjJIMTguN0wxNS4yNjcsOC4zODhWMkg2LjkxMXY4LjM1N0gxMy4zbDMuNDIyLDMuNDIyaDB2NC40MzFoMGwtMy40MzQsMy40MzRINi45MTFWMzBoOC4zNTdWMjMuNjEyaDBMMTguNywyMC4xNzhoNi4zODhaTTkuNyw0Ljc4NmgyLjc4NlY3LjU3MUg5LjdaTTEyLjQ4MiwyNy4ySDkuN1YyNC40MTdoMi43ODZaXCIgc3R5bGU9XCJmaWxsOiNmZmFlMWFcIi8+YCxcblx0XCJQdXJlU2NyaXB0XCI6IGA8cmVjdCB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiBzdHlsZT1cImZpbGw6IzE2MTcxYlwiLz48cG9seWdvbiBwb2ludHM9XCIyMS44OTIgMjIuMTM2IDE5LjcwNiAyMC4wOTUgMTAuMTA3IDIwLjA5NSAxMi4yOTMgMjIuMTM2IDIxLjg5MiAyMi4xMzZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIxMi4yOTMgMTQuOTggMTAuMTA3IDE3LjAyMSAxOS43MDYgMTcuMDIxIDIxLjg5MiAxNC45OCAxMi4yOTMgMTQuOThcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIyMS44OTEgMTEuOTA2IDE5LjcwNiA5Ljg2NCAxMC4xMDcgOS44NjQgMTIuMjkzIDExLjkwNiAyMS44OTEgMTEuOTA2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk05LjEsMTMuOTI2LDcuNjUyLDEyLjQ4MiwyLjMsMTcuODM2YTEuMDIzLDEuMDIzLDAsMCwwLDAsMS40NDNsNS4zNTQsNS4zNTRMOS4xLDIzLjE5LDQuNDY0LDE4LjU1OFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTI5LjcsMTIuNzIxLDI0LjM0OCw3LjM2NiwyMi45LDguODFsNC42Myw0LjYzMkwyMi45LDE4LjA3NWwxLjQ0MywxLjQ0M0wyOS43LDE0LjE2NWExLjAyMSwxLjAyMSwwLDAsMCwwLTEuNDQ0WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiUHl0aG9uXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItMTMzLjI2OFwiIHkxPVwiLTIwMi45MVwiIHgyPVwiLTEzMy4xOThcIiB5Mj1cIi0yMDIuODRcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyNTI0My4wNjEgMzg1MTkuMTcpIHNjYWxlKDE4OS4zOCAxODkuODEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMzg3ZWI4XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzM2Njk5NFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi0xMzMuNTc1XCIgeTE9XCItMjAzLjIwM1wiIHgyPVwiLTEzMy40OTVcIiB5Mj1cIi0yMDMuMTMzXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjUzMDkuMDYxIDM4NTgzLjQyKSBzY2FsZSgxODkuMzggMTg5LjgxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZTA1MlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmMzMzFcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9weXRob248L3RpdGxlPjxwYXRoIGQ9XCJNMTUuODg1LDIuMWMtNy4xLDAtNi42NTEsMy4wNy02LjY1MSwzLjA3VjguMzZoNi43NTJ2MUg2LjU0NVMyLDguOCwyLDE2LjAwNXM0LjAxMyw2LjkxMiw0LjAxMyw2LjkxMkg4LjMzVjE5LjU1NnMtLjEzLTQuMDEzLDMuOS00LjAxM2g2Ljc2MnMzLjc3Mi4wNiwzLjc3Mi0zLjY1MlY1LjhzLjU3Mi0zLjcxMi02Ljg0Mi0zLjcxMmgwWk0xMi4xNTMsNC4yMzdhMS4yMTQsMS4yMTQsMCwxLDEtMS4xODMsMS4yNDR2LS4wMmExLjIxNCwxLjIxNCwwLDAsMSwxLjIxNC0xLjIxNGgwWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTYuMDg1LDI5LjkxYzcuMSwwLDYuNjUxLTMuMDgsNi42NTEtMy4wOFYyMy42NUgxNS45ODV2LTFoOS40N1MzMCwyMy4xNTgsMzAsMTUuOTk1cy00LjAxMy02LjkxMi00LjAxMy02LjkxMkgyMy42NFYxMi40cy4xMyw0LjAxMy0zLjksNC4wMTNIMTIuOTc1UzkuMiwxNi4zNTYsOS4yLDIwLjA2OFYyNi4ycy0uNTcyLDMuNzEyLDYuODQyLDMuNzEyaC4wNFptMy43MzItMi4xNDdBMS4yMTQsMS4yMTQsMCwxLDEsMjEsMjYuNTE5di4wM2ExLjIxNCwxLjIxNCwwLDAsMS0xLjIxNCwxLjIxNGguMDNaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+YCxcblx0XCJRIChrZGIrIGRhdGFiYXNlKVwiOiBgPHBhdGggZD1cIk0yMC4wOTIsMjlWMTkuNjgyQTYuOTUzLDYuOTUzLDAsMCwxLDE3LjcsMjEuNjQ1YTYuNzQzLDYuNzQzLDAsMCwxLTMuMDg5LjcyNEE2LjU1Nyw2LjU1NywwLDAsMSw5LjQxMywyMCwxMS4wODEsMTEuMDgxLDAsMCwxLDcsMTIuNDc1LDEwLjAzMywxMC4wMzMsMCwwLDEsOS4yNjQsNS41LDcuMjUxLDcuMjUxLDAsMCwxLDE0Ljg3NCwzYTYuMjY2LDYuMjY2LDAsMCwxLDMuMi43ODUsNy4zMjksNy4zMjksMCwwLDEsMi40LDIuMzczVjMuNDE5SDI1VjI5Wm0uMTU3LTE2LjU0MmE2LjQ5Miw2LjQ5MiwwLDAsMC0xLjE2LTQuMjMyLDMuNjM0LDMuNjM0LDAsMCwwLTIuOTA1LTEuMzg3LDMuNzQyLDMuNzQyLDAsMCwwLTIuOTc1LDEuNDEzLDYuODgxLDYuODgxLDAsMCwwLTEuMiw0LjQ4NSw2Ljc2Nyw2Ljc2NywwLDAsMCwxLjE1Miw0LjQwNkEzLjU5MywzLjU5MywwLDAsMCwxNi4wMDksMTguNWEzLjc4NiwzLjc4NiwwLDAsMCwyLjk2Ni0xLjUxOEE2Ljg4OSw2Ljg4OSwwLDAsMCwyMC4yNDksMTIuNDU4WlwiIHN0eWxlPVwiZmlsbDojMWU3OGIzXCIvPmAsXG5cdFwiUSNcIjogYDxwYXRoIGQ9XCJNMTkuNDUxLDYuMjE4aDIuNjM4VjguODU2aDIuNjM3VjYuMjE4aDIuNjM3VjguODU2SDMwVjExLjVIMjcuMzY0djIuNjM2SDMwVjE2Ljc3SDI3LjM2NHYyLjYzN0gyNC43MjdWMTYuNzY5SDIyLjA5MWwwLDIuNjM3SDE5LjQ1M1YxNi43NjhIMTYuODE1VjE0LjEyN2gyLjYzOFYxMS41SDE2LjgxNVY4Ljg1M2gyLjYzOVptMi42MzgsNy45MTRoMi42MzdWMTEuNUgyMi4wODlaXCIgc3R5bGU9XCJmaWxsOiMzM2NcIi8+PHBhdGggZD1cIk0xNC4wMTgsMjEuNTI0YTExLjQzNiwxMS40MzYsMCwwLDAsMS41NzItNi4xOTIsMTAuODc3LDEwLjg3NywwLDAsMC0xLjg1OC02LjZBNS44ODksNS44ODksMCwwLDAsOC44MDgsNi4xNTNhNS45MjEsNS45MjEsMCwwLDAtNC45NCwyLjU4MUExMC44NDIsMTAuODQyLDAsMCwwLDIsMTUuMzMzYTEwLjg1MywxMC44NTMsMCwwLDAsMS44NjgsNi41OTIsNS45MTgsNS45MTgsMCwwLDAsNC45NDEsMi41ODgsNS43NDMsNS43NDMsMCwwLDAsMy4yNi0uOTg3bDIuMzA2LDIuMzIxLDEuNTc3LTIuNFptLTUuMTctMS4yMTgsMS4xMTcsMS4xMjFhMy4yMjksMy4yMjksMCwwLDEtMS4xNzQuMjE3LDMuMzM1LDMuMzM1LDAsMCwxLTIuODM3LTEuNTkzLDguMTI1LDguMTI1LDAsMCwxLTEuMTgtNC43MTksOC4xLDguMSwwLDAsMSwxLjE4NC00LjcyNCwzLjM3MiwzLjM3MiwwLDAsMSwyLjg3LTEuNTg4LDMuMzEsMy4zMSwwLDAsMSwyLjgxOSwxLjU4NSw4LjE3OCw4LjE3OCwwLDAsMSwxLjE3Miw0LjcyNiw5LjExMyw5LjExMywwLDAsMS0uODMzLDQuMTVsLTEuNTYtMS41NzFaXCIgc3R5bGU9XCJmaWxsOiMzM2NcIi8+YCxcblx0XCJRTUxcIjogYDxwYXRoIGQ9XCJNMjcuMyw1SDUuODg2TDIsOC45NThWMjZIMjYuMTE0TDMwLDIyLjA0MlY1Wk0xNi45LDIzLjA3bC0xLjgyOC44NTJMMTMuNSwyMS4zMzFhMy45NjgsMy45NjgsMCwwLDEtMS4wODIuMTA2Yy0xLjg0NSwwLTMuMTIzLS41LTMuODUtMS40OWE4LjAzLDguMDMsMCwwLDEtMS4wODItNC43LDguMzUxLDguMzUxLDAsMCwxLDEuMS00Ljc3Myw0LjM3OSw0LjM3OSwwLDAsMSwzLjgzMy0xLjU2MWMxLjgyOCwwLDMuMDg3LjUxNSwzLjgzMywxLjU0NGE4LjM1MSw4LjM1MSwwLDAsMSwxLjEsNC43NzMsMTAuODA5LDEwLjgwOSwwLDAsMS0uNDUyLDMuNDQsMy45LDMuOSwwLDAsMS0xLjQ3MywyWm01Ljg0OC0xLjY3YTIuNzM1LDIuNzM1LDAsMCwxLTIuMTY4LS42OTJBNC4xOTIsNC4xOTIsMCwwLDEsMjAsMTguMVYxNEgxOVYxMmgxVjloMnYzaDJ2MkgyMnYzLjlhMy45MDcsMy45MDcsMCwwLDAsLjE2OCwxLjQzN2MuMTEyLjIzMS4zOTMuMzU1Ljg2LjM1NWwxLjUzMy0uMDUzLjA5MywxLjU0NEExMi41MTksMTIuNTE5LDAsMCwxLDIyLjc0OCwyMS40Wk0xMi40MTYsMTAuNjE0YTIuNCwyLjQsMCwwLDAtMi4yODksMS4xLDcuNjU3LDcuNjU3LDAsMCwwLS42LDMuNTEzLDcuMTMxLDcuMTMxLDAsMCwwLC42LDMuNDQyQTIuNDQsMi40NCwwLDAsMCwxMi40MzMsMTkuN2EyLjQxNywyLjQxNywwLDAsMCwyLjI4OS0xLjAxMSw3LjM0Myw3LjM0MywwLDAsMCwuNTg2LTMuNDQyLDcuNjkyLDcuNjkyLDAsMCwwLS42LTMuNTMxQTIuNCwyLjQsMCwwLDAsMTIuNDE2LDEwLjYxNFpcIiBzdHlsZT1cImZpbGw6IzQxY2Q1MlwiLz5gLFxuXHRcIlJcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi0xMzQuODExXCIgeTE9XCItMTAzLjI4NFwiIHgyPVwiLTEzNC43NzJcIiB5Mj1cIi0xMDMuMzIzXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNzIxLjA5NCwgMCwgMCwgLTQ4Mi45MzcsIDk3MjEzLjU5NSwgLTQ5ODc0LjUxMilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNjYmNlZDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjODQ4MzhiXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTEzNS4zNzhcIiB5MT1cIi0xMDIuOTg1XCIgeDI9XCItMTM1LjMzOVwiIHkyPVwiLTEwMy4wMjRcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgzOTgsIDAsIDAsIC00MDYuMTI0LCA1Mzg5MywgLTQxODEyLjgzNilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMyNzZkYzNcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMTY1Y2FhXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcjwvdGl0bGU+PHBhdGggZD1cIk0xNiwyMy45NTZjLTcuNzMyLDAtMTQtNC4yLTE0LTkuMzc2UzguMjY4LDUuMiwxNiw1LjIsMzAsOS40LDMwLDE0LjU4LDIzLjczMiwyMy45NTYsMTYsMjMuOTU2Wk0xOC4xNDMsOC44N0MxMi4yNjYsOC44Nyw3LjUsMTEuNzQsNy41LDE1LjI4czQuNzY0LDYuNDEsMTAuNjQxLDYuNDEsMTAuMjE0LTEuOTYyLDEwLjIxNC02LjQxUzI0LjAyLDguODcsMTguMTQzLDguODdaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yMy4zMjEsMTkuNzI2YTEwLjU0NSwxMC41NDUsMCwwLDEsMS4zNC41LDIuNTkxLDIuNTkxLDAsMCwxLC42OC40ODUsMS44MzUsMS44MzUsMCwwLDEsLjMxMS40NDdsMy4zMzksNS42My01LjQsMC0yLjUyNC00Ljc0YTYuMSw2LjEsMCwwLDAtLjgzNS0xLjE0NS44NzkuODc5LDAsMCwwLS42NDEtLjI5MUgxOC4zMTF2Ni4xNzNsLTQuNzc2LDBWMTEuMDI2aDkuNTkxUzI3LjUsMTEuMSwyNy41LDE1LjI2MSwyMy4zMjEsMTkuNzI2LDIzLjMyMSwxOS43MjZabS0yLjA3Ny01LjI4LTIuODkxLDB2Mi42ODFoMi44OTNhMS4zMjMsMS4zMjMsMCwwLDAsMS4zNC0xLjM2NEExLjI0NywxLjI0NywwLDAsMCwyMS4yNDQsMTQuNDQ3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPmAsXG5cdFwiUmFja2V0XCI6IGA8Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcj1cIjE0XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yNy4wMTYsMjQuNjQxYTE0LDE0LDAsMCwwLTE1LjgtMjEuOEMxNi45LDUuODIyLDI0LjQxMywxNS41NDksMjcuMDE2LDI0LjY0MVpcIiBzdHlsZT1cImZpbGw6IzNlNWJhOVwiLz48cGF0aCBkPVwiTTEzLjk5NSwxMC45M2EyNC4zLDI0LjMsMCwwLDAtNy4yMi01LjQ2QTE0LDE0LDAsMCwwLDUuNDYzLDI1LjIxNywzOS41NiwzOS41NiwwLDAsMSwxMy45OTUsMTAuOTNaXCIgc3R5bGU9XCJmaWxsOiM5ZjFkMjBcIi8+PHBhdGggZD1cIk0xNi41NzUsMTQuMUEzMi42NDUsMzIuNjQ1LDAsMCwwLDkuNDMsMjguMzY1YTE0LjAxNiwxNC4wMTYsMCwwLDAsMTMuMy0uMDg5QTM4LjY0MiwzOC42NDIsMCwwLDAsMTYuNTc1LDE0LjFaXCIgc3R5bGU9XCJmaWxsOiM5ZjFkMjBcIi8+YCxcblx0XCJSYXpvciBDI1wiOiBgPHBhdGggZD1cIk0yMy44NDQsMjcuNjkyYTE2LjMzMiwxNi4zMzIsMCwwLDEtNi42NDUsMS4zcS02LjM2NCwwLTEwLjAxMy0zLjI0M2ExMS4zLDExLjMsMCwwLDEtMy42NDktOC45QTEzLjcxNiwxMy43MTYsMCwwLDEsNy4zMjIsNi45NTEsMTIuNzE2LDEyLjcxNiwwLDAsMSwxNi45LDMuMDA4YTExLjY3NiwxMS42NzYsMCwwLDEsOC40MjUsMy4wMDYsOS45OTQsOS45OTQsMCwwLDEsMy4xNDIsNy41MzMsMTAuMTg3LDEwLjE4NywwLDAsMS0yLjMxOCw3LjExNCw3LjUzMiw3LjUzMiwwLDAsMS01LjgxNywyLjU0NywyLjYxMywyLjYxMywwLDAsMS0xLjg0NS0uNjQyLDIuMzIzLDIuMzIzLDAsMCwxLS43NjQtMS42LDQuOSw0LjksMCwwLDEtNC4xNDgsMi4yNDMsNC42LDQuNiwwLDAsMS0zLjUwNy0xLjQ3OSw1LjcwNiw1LjcwNiwwLDAsMS0xLjM4NC00LjA2Myw5LjkxMyw5LjkxMywwLDAsMSwyLjItNi4zNTdxMi4yLTIuNzYzLDQuOC0yLjc2M2E1LjA2Myw1LjA2MywwLDAsMSw0LjI1NiwxLjcxNmwuMzExLTEuMzM4aDIuNDA1bC0yLjA4MSw5LjA4YTEwLjcxNiwxMC43MTYsMCwwLDAtLjM1MiwyLjI0M3EwLC45NzIuNzQ0Ljk3MmE0LjgxOSw0LjgxOSwwLDAsMCwzLjg3Ny0yLjA0Nyw4LjkzLDguOTMsMCwwLDAsMS42MjEtNS42ODEsNy45OCw3Ljk4LDAsMCwwLTIuNjc1LTYuMTc1LDkuODg3LDkuODg3LDAsMCwwLTYuOTE5LTIuNDMyQTEwLjYsMTAuNiwwLDAsMCw4LjcxMyw4LjM1MmExMi4wNjYsMTIuMDY2LDAsMCwwLTMuMiw4LjQ5NSw5LjU2MSw5LjU2MSwwLDAsMCwzLjA2LDcuNTczcTMuMDYsMi43LDguNTg2LDIuN2ExMy43NTcsMTMuNzU3LDAsMCwwLDUuNjc1LTEuMDU0Wk0xOS40NjYsMTIuMjVhMy45NzcsMy45NzcsMCwwLDAtMy42LTEuNzE2cS0xLjgyNCwwLTMuMjYzLDIuMjNhOC43MjYsOC43MjYsMCwwLDAtMS40MzksNC44MjRxMCwzLjYzNSwyLjkwNSwzLjYzNUEzLjc3MSwzLjc3MSwwLDAsMCwxNi43MiwyMC4wNGE2LjMwOSw2LjMwOSwwLDAsMCwxLjctMy4yWlwiIHN0eWxlPVwiZmlsbDojMzY4ODMyXCIvPmAsXG5cdFwiUmVhY3QgSlNYXCI6IGA8Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE1Ljk3NFwiIHI9XCIyLjVcIiBzdHlsZT1cImZpbGw6IzAwZDhmZlwiLz48cGF0aCBkPVwiTTE2LDIxLjcwNmEyOC4zODUsMjguMzg1LDAsMCwxLTguODgtMS4yLDExLjMsMTEuMywwLDAsMS0zLjY1Ny0xLjk1OEEzLjU0MywzLjU0MywwLDAsMSwyLDE1Ljk3NGMwLTEuNjUzLDEuODE2LTMuMjczLDQuODU4LTQuMzMzQTI4Ljc1NSwyOC43NTUsMCwwLDEsMTYsMTAuMjkzYTI4LjY3NCwyOC42NzQsMCwwLDEsOS4wMjIsMS4zMjQsMTEuMzc2LDExLjM3NiwwLDAsMSwzLjUzOCwxLjg2NkEzLjM5MSwzLjM5MSwwLDAsMSwzMCwxNS45NzRjMCwxLjcxOC0yLjAzLDMuNDU5LTUuMyw0LjU0MUEyOC44LDI4LjgsMCwwLDEsMTYsMjEuNzA2Wm0wLTEwLjIxN2EyNy45NDgsMjcuOTQ4LDAsMCwwLTguNzQ5LDEuMjgyYy0yLjguOTc3LTQuMDU1LDIuMzEzLTQuMDU1LDMuMiwwLC45MjgsMS4zNDksMi4zODcsNC4zMTEsMy40QTI3LjIxLDI3LjIxLDAsMCwwLDE2LDIwLjUxYTI3LjYsMjcuNiwwLDAsMCw4LjMyNS0xLjEzQzI3LjQsMTguMzYxLDI4LjgsMTYuOSwyOC44LDE1Ljk3NGEyLjMyNywyLjMyNywwLDAsMC0xLjAxLTEuNTczLDEwLjE5NCwxMC4xOTQsMCwwLDAtMy4xNjEtMS42NTRBMjcuNDYyLDI3LjQ2MiwwLDAsMCwxNiwxMS40ODlaXCIgc3R5bGU9XCJmaWxsOiMwMGQ4ZmZcIi8+PHBhdGggZD1cIk0xMC4zMiwyOC40NDNhMi42MzksMi42MzksMCwwLDEtMS4zMzYtLjMyOGMtMS40MzItLjgyNi0xLjkyOC0zLjIwOC0xLjMyNy02LjM3M2EyOC43NTUsMjguNzU1LDAsMCwxLDMuNC04LjU5M2gwQTI4LjY3NiwyOC42NzYsMCwwLDEsMTYuNzEsNS45OTVhMTEuMzc2LDExLjM3NiwwLDAsMSwzLjM4NC0yLjEzMywzLjM5MSwzLjM5MSwwLDAsMSwyLjg3OCwwYzEuNDg5Ljg1OCwxLjk4MiwzLjQ4NiwxLjI4Nyw2Ljg1OWEyOC44MDYsMjguODA2LDAsMCwxLTMuMzE2LDguMTMzLDI4LjM4NSwyOC4zODUsMCwwLDEtNS40NzYsNy4wOTMsMTEuMywxMS4zLDAsMCwxLTMuNTIzLDIuMTg5QTQuOTI2LDQuOTI2LDAsMCwxLDEwLjMyLDI4LjQ0M1ptMS43NzMtMTQuN2EyNy45NDgsMjcuOTQ4LDAsMCwwLTMuMjYsOC4yMTljLS41NTMsMi45MTUtLjAyMiw0LjY2OC43NSw1LjExNC44LjQ2MywyLjc0Mi4wMjQsNS4xLTIuMDM2YTI3LjIwOSwyNy4yMDksMCwwLDAsNS4yMjctNi43OSwyNy42LDI3LjYsMCwwLDAsMy4xODEtNy43NzZjLjY1NC0zLjE3NS4wODktNS4xMTktLjcxMy01LjU4MWEyLjMyNywyLjMyNywwLDAsMC0xLjg2OC4wODlBMTAuMTk0LDEwLjE5NCwwLDAsMCwxNy41LDYuOWEyNy40NjQsMjcuNDY0LDAsMCwwLTUuNCw2Ljg0OVpcIiBzdHlsZT1cImZpbGw6IzAwZDhmZlwiLz48cGF0aCBkPVwiTTIxLjY3NywyOC40NTZjLTEuMzU1LDAtMy4wNzYtLjgyLTQuODY4LTIuMzYxYTI4Ljc1NiwyOC43NTYsMCwwLDEtNS43NDctNy4yMzdoMGEyOC42NzYsMjguNjc2LDAsMCwxLTMuMzc0LTguNDcxLDExLjM3NiwxMS4zNzYsMCwwLDEtLjE1OC00QTMuMzkxLDMuMzkxLDAsMCwxLDguOTY0LDMuOWMxLjQ4Ny0uODYxLDQuMDEuMDI0LDYuNTg1LDIuMzFhMjguOCwyOC44LDAsMCwxLDUuMzksNi45MzQsMjguMzg0LDI4LjM4NCwwLDAsMSwzLjQxLDguMjg3LDExLjMsMTEuMywwLDAsMSwuMTM3LDQuMTQ2LDMuNTQzLDMuNTQzLDAsMCwxLTEuNDk0LDIuNTU1QTIuNTksMi41OSwwLDAsMSwyMS42NzcsMjguNDU2Wm0tOS41OC0xMC4yYTI3Ljk0OSwyNy45NDksMCwwLDAsNS40OTIsNi45MjljMi4yNDksMS45MzUsNC4wMzMsMi4zNTEsNC44LDEuOS44LS40NjUsMS4zOS0yLjM2My43ODItNS40MzRBMjcuMjEyLDI3LjIxMiwwLDAsMCwxOS45LDEzLjc0LDI3LjYsMjcuNiwwLDAsMCwxNC43NTUsNy4xYy0yLjQyNC0yLjE1Mi00LjM5LTIuNjMzLTUuMTkxLTIuMTY5YTIuMzI3LDIuMzI3LDAsMCwwLS44NTUsMS42NjIsMTAuMTk0LDEwLjE5NCwwLDAsMCwuMTUzLDMuNTY1LDI3LjQ2NSwyNy40NjUsMCwwLDAsMy4yMzYsOC4xWlwiIHN0eWxlPVwiZmlsbDojMDBkOGZmXCIvPmAsXG5cdFwiUmVhY3QgVFNYXCI6IGA8Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE1Ljk3NFwiIHI9XCIyLjVcIiBzdHlsZT1cImZpbGw6IzAwN2FjY1wiLz48cGF0aCBkPVwiTTE2LDIxLjcwNmEyOC4zODUsMjguMzg1LDAsMCwxLTguODgtMS4yLDExLjMsMTEuMywwLDAsMS0zLjY1Ny0xLjk1OEEzLjU0MywzLjU0MywwLDAsMSwyLDE1Ljk3NGMwLTEuNjUzLDEuODE2LTMuMjczLDQuODU4LTQuMzMzQTI4Ljc1NSwyOC43NTUsMCwwLDEsMTYsMTAuMjkzYTI4LjY3NCwyOC42NzQsMCwwLDEsOS4wMjIsMS4zMjQsMTEuMzc2LDExLjM3NiwwLDAsMSwzLjUzOCwxLjg2NkEzLjM5MSwzLjM5MSwwLDAsMSwzMCwxNS45NzRjMCwxLjcxOC0yLjAzLDMuNDU5LTUuMyw0LjU0MUEyOC44LDI4LjgsMCwwLDEsMTYsMjEuNzA2Wm0wLTEwLjIxN2EyNy45NDgsMjcuOTQ4LDAsMCwwLTguNzQ5LDEuMjgyYy0yLjguOTc3LTQuMDU1LDIuMzEzLTQuMDU1LDMuMiwwLC45MjgsMS4zNDksMi4zODcsNC4zMTEsMy40QTI3LjIxLDI3LjIxLDAsMCwwLDE2LDIwLjUxYTI3LjYsMjcuNiwwLDAsMCw4LjMyNS0xLjEzQzI3LjQsMTguMzYxLDI4LjgsMTYuOSwyOC44LDE1Ljk3NGEyLjMyNywyLjMyNywwLDAsMC0xLjAxLTEuNTczLDEwLjE5NCwxMC4xOTQsMCwwLDAtMy4xNjEtMS42NTRBMjcuNDYyLDI3LjQ2MiwwLDAsMCwxNiwxMS40ODlaXCIgc3R5bGU9XCJmaWxsOiMwMDdhY2NcIi8+PHBhdGggZD1cIk0xMC4zMiwyOC40NDNhMi42MzksMi42MzksMCwwLDEtMS4zMzYtLjMyOGMtMS40MzItLjgyNi0xLjkyOC0zLjIwOC0xLjMyNy02LjM3M2EyOC43NTUsMjguNzU1LDAsMCwxLDMuNC04LjU5M2gwQTI4LjY3NiwyOC42NzYsMCwwLDEsMTYuNzEsNS45OTVhMTEuMzc2LDExLjM3NiwwLDAsMSwzLjM4NC0yLjEzMywzLjM5MSwzLjM5MSwwLDAsMSwyLjg3OCwwYzEuNDg5Ljg1OCwxLjk4MiwzLjQ4NiwxLjI4Nyw2Ljg1OWEyOC44MDYsMjguODA2LDAsMCwxLTMuMzE2LDguMTMzLDI4LjM4NSwyOC4zODUsMCwwLDEtNS40NzYsNy4wOTMsMTEuMywxMS4zLDAsMCwxLTMuNTIzLDIuMTg5QTQuOTI2LDQuOTI2LDAsMCwxLDEwLjMyLDI4LjQ0M1ptMS43NzMtMTQuN2EyNy45NDgsMjcuOTQ4LDAsMCwwLTMuMjYsOC4yMTljLS41NTMsMi45MTUtLjAyMiw0LjY2OC43NSw1LjExNC44LjQ2MywyLjc0Mi4wMjQsNS4xLTIuMDM2YTI3LjIwOSwyNy4yMDksMCwwLDAsNS4yMjctNi43OSwyNy42LDI3LjYsMCwwLDAsMy4xODEtNy43NzZjLjY1NC0zLjE3NS4wODktNS4xMTktLjcxMy01LjU4MWEyLjMyNywyLjMyNywwLDAsMC0xLjg2OC4wODlBMTAuMTk0LDEwLjE5NCwwLDAsMCwxNy41LDYuOWEyNy40NjQsMjcuNDY0LDAsMCwwLTUuNCw2Ljg0OVpcIiBzdHlsZT1cImZpbGw6IzAwN2FjY1wiLz48cGF0aCBkPVwiTTIxLjY3NywyOC40NTZjLTEuMzU1LDAtMy4wNzYtLjgyLTQuODY4LTIuMzYxYTI4Ljc1NiwyOC43NTYsMCwwLDEtNS43NDctNy4yMzdoMGEyOC42NzYsMjguNjc2LDAsMCwxLTMuMzc0LTguNDcxLDExLjM3NiwxMS4zNzYsMCwwLDEtLjE1OC00QTMuMzkxLDMuMzkxLDAsMCwxLDguOTY0LDMuOWMxLjQ4Ny0uODYxLDQuMDEuMDI0LDYuNTg1LDIuMzFhMjguOCwyOC44LDAsMCwxLDUuMzksNi45MzQsMjguMzg0LDI4LjM4NCwwLDAsMSwzLjQxLDguMjg3LDExLjMsMTEuMywwLDAsMSwuMTM3LDQuMTQ2LDMuNTQzLDMuNTQzLDAsMCwxLTEuNDk0LDIuNTU1QTIuNTksMi41OSwwLDAsMSwyMS42NzcsMjguNDU2Wm0tOS41OC0xMC4yYTI3Ljk0OSwyNy45NDksMCwwLDAsNS40OTIsNi45MjljMi4yNDksMS45MzUsNC4wMzMsMi4zNTEsNC44LDEuOS44LS40NjUsMS4zOS0yLjM2My43ODItNS40MzRBMjcuMjEyLDI3LjIxMiwwLDAsMCwxOS45LDEzLjc0LDI3LjYsMjcuNiwwLDAsMCwxNC43NTUsNy4xYy0yLjQyNC0yLjE1Mi00LjM5LTIuNjMzLTUuMTkxLTIuMTY5YTIuMzI3LDIuMzI3LDAsMCwwLS44NTUsMS42NjIsMTAuMTk0LDEwLjE5NCwwLDAsMCwuMTUzLDMuNTY1LDI3LjQ2NSwyNy40NjUsMCwwLDAsMy4yMzYsOC4xWlwiIHN0eWxlPVwiZmlsbDojMDA3YWNjXCIvPmAsXG5cdFwiUmVhc29uXCI6IGA8cG9seWxpbmUgcG9pbnRzPVwiMiAyIDMwIDIgMzAgMzAgMiAzMCAyIDJcIiBzdHlsZT1cImZpbGw6I2RkNGIzOVwiLz48cGF0aCBkPVwiTTkuMDUxLDE3LjUyN3EyLjUzNywwLDUuMDcyLDBBNC45NDcsNC45NDcsMCwwLDEsMTcuMSwxOC41YTMuMjksMy4yOSwwLDAsMSwxLjEyOCwyLjI2Nyw0LjExNyw0LjExNywwLDAsMS0uNzc4LDMuMDIyLDMuNiwzLjYsMCwwLDEtMS4xMzcuOTA1bDIuMjQ3LDMuNTQ5LTMuMDYxLDAtMS42LTMuMDQzLTIuMTU0LDAsMCwzLjAzMkg5LjA1MVYxNy41MjdtMi42OSwyLjEyOCwwLDMuNDM4LDEuOTg5LDBhMi4xODQsMi4xODQsMCwwLDAsMS40NjgtLjQ1MiwxLjgxNCwxLjgxNCwwLDAsMCwuNDgyLTEuNTQ0LDEuNDY5LDEuNDY5LDAsMCwwLS43MDUtMS4xOCwyLjc2OCwyLjc2OCwwLDAsMC0xLjQzNy0uMjY5QzEyLjk0LDE5LjY1NCwxMS43NDEsMTkuNjU1LDExLjc0MSwxOS42NTVabTguMzg0LTIuMTNoOC4zNXYyLjEzaC01LjY2VjIxLjhsNS4xMSwwdjIuMTE5SDIyLjgyVjI2LjFoNS44MjR2Mi4xNDJIMjAuMTI1VjE3LjUyNVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIlJlZ29cIjogYDxkZWZzPjxjbGlwUGF0aCBpZD1cImFcIj48cGF0aCBkPVwiTTcuMDU1LDE2LjI0MWMzLjQxNS0xMC4yMiwxNC43NTktOS40NzMsMTcuOTI0LDBsLjEsNS44OTNhMTUuNTYyLDE1LjU2MiwwLDAsMC05LjAzNiw3LjI0NkExNy42NDEsMTcuNjQxLDAsMCwwLDcuMDMsMjIuMzQ2WlwiIHN0eWxlPVwiZmlsbDpub25lXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcmVnbzwvdGl0bGU+PHBhdGggZD1cIk03LjAzLDE2LjI0MWwyLjYtNC41NTljLTIuNDE4LS4zMTItMi42MDYtMy40MzEtLjgtOS4wNjJDMy44MDksOC44NTMsMi40MiwxMC4yMjgsNy4wMywxNi4yNDFaXCIgc3R5bGU9XCJmaWxsOiNiZmJmYmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0yNC45NywxNi4yNDFsLTIuNTk1LTQuNTU5YzIuNDE4LS4zMTIsMi42MDYtMy40MzEuOC05LjA2MkMyOC4xOTEsOC44NTMsMjkuNTgsMTAuMjI4LDI0Ljk3LDE2LjI0MVpcIiBzdHlsZT1cImZpbGw6I2JmYmZiZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTcuMDU1LDE2LjI0MWMzLjQxNS0xMC4yMiwxNC43NTktOS40NzMsMTcuOTI0LDBsLjEsNS44OTNhMTUuNTYyLDE1LjU2MiwwLDAsMC05LjAzNiw3LjI0NkExNy42NDEsMTcuNjQxLDAsMCwwLDcuMDMsMjIuMzQ2WlwiIHN0eWxlPVwiZmlsbDpub25lXCIvPjxnIHN0eWxlPVwiY2xpcC1wYXRoOnVybCgjYSlcIj48cmVjdCB4PVwiMTYuMDUzXCIgeT1cIjcuOTYyXCIgd2lkdGg9XCI5LjU0OVwiIGhlaWdodD1cIjIxLjg5OVwiIHN0eWxlPVwiZmlsbDojNTM2MzY3XCIvPjxyZWN0IHg9XCI1LjMyMlwiIHk9XCI3Ljk2MlwiIHdpZHRoPVwiMTAuNzMyXCIgaGVpZ2h0PVwiMjEuODk5XCIgc3R5bGU9XCJmaWxsOiM3ODkyOWFcIi8+PC9nPjxjaXJjbGUgY3g9XCIxNi4wNFwiIGN5PVwiMTYuMjQxXCIgcj1cIjEuMTY2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJSZVNjcmlwdFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTEuNDIxXCIgeTE9XCItMjIxLjcwNVwiIHgyPVwiMjEuNTA5XCIgeTI9XCItMjQ4Ljc5MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAtMjE4KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2U4NGY0ZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjQwOVwiIHN0b3AtY29sb3I9XCIjZGI0NjQ2XCIvPjxzdG9wIG9mZnNldD1cIjAuOTk5XCIgc3RvcC1jb2xvcj1cIiNjYjM5MzlcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9yZXNjcmlwdDwvdGl0bGU+PHBhdGggZD1cIk0yLDEwLjk3YzAtMy43MzgsMC01LjYuOTUyLTYuOTE2YTQuOTkyLDQuOTkyLDAsMCwxLDEuMS0xLjFDNS4zNjQsMiw3LjIzMywyLDEwLjk2OSwySDIxLjAzYzMuNzM4LDAsNS42MDUsMCw2LjkxNi45NTFhNC45OTIsNC45OTIsMCwwLDEsMS4xLDEuMUMzMCw1LjM2NCwzMCw3LjIzMiwzMCwxMC45N1YyMS4wM2MwLDMuNzM3LDAsNS42MDUtLjk1Miw2LjkxNmE0Ljk2Niw0Ljk2NiwwLDAsMS0xLjEsMS4xQzI2LjYzNiwzMCwyNC43NjgsMzAsMjEuMDMsMzBIMTAuOTY5Yy0zLjczNiwwLTUuNiwwLTYuOTE1LS45NTJhNC45NjYsNC45NjYsMCwwLDEtMS4xLTEuMUMyLDI2LjYzNiwyLDI0Ljc2NywyLDIxLjAzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjAuOTc0LDE1LjU1NGEzLjMyNSwzLjMyNSwwLDEsMC0zLjMyNC0zLjMyNUEzLjMyNSwzLjMyNSwwLDAsMCwyMC45NzQsMTUuNTU0WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNOS4zMTYsMTEuODA5YTQuNjc2LDQuNjc2LDAsMCwxLC4yMDYtMS45ODdBMS44ODYsMS44ODYsMCwwLDEsMTAuMzQ1LDlhNC43LDQuNywwLDAsMSwxLjk4Ny0uMjA1aDIuNjRWMjEuMDQ1YTQuNjg2LDQuNjg2LDAsMCwxLS4xNDQsMS42NjQsMS44OTIsMS44OTIsMCwwLDEtMS4wMiwxLjAyLDQuNzIsNC43MiwwLDAsMS0xLjY2NC4xNDMsNC43MTcsNC43MTcsMCwwLDEtMS42NjQtLjE0MywxLjg5MiwxLjg5MiwwLDAsMS0xLjAyLTEuMDIsNC43Miw0LjcyLDAsMCwxLS4xNDMtMS42NjRaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJyZVNUIChyZVN0cnVjdHVyZWRUZXh0KVwiOiBgPHBhdGggZD1cIk0xNiwzMEExMy44NTksMTMuODU5LDAsMCwxLDIuMjg2LDE2LDE0LjE0OSwxNC4xNDksMCwwLDEsNi4zLDYuMSwxMy41MTcsMTMuNTE3LDAsMCwxLDI1LjcsNi4xLDE0LjE0OSwxNC4xNDksMCwwLDEsMjkuNzE0LDE2LDEzLjg1OSwxMy44NTksMCwwLDEsMTYsMzBaXCIgc3R5bGU9XCJmaWxsOiNjZTNmMzFcIi8+PHBhdGggZD1cIk0xMS44NjksMjMuMDE1aC0uNGE0LjI2Myw0LjI2MywwLDAsMS0xLjA0OC0uMTEzLDEuMzg3LDEuMzg3LDAsMCwxLS43NjctLjU0OCwyLjIsMi4yLDAsMCwxLS40MDktMS4wMjZBMTMuMjgsMTMuMjgsMCwwLDEsOS4xNTksMTkuNmExMi43OCwxMi43OCwwLDAsMC0uMDgtMS42ODcsMS43NzMsMS43NzMsMCwwLDAtLjQwNS0uOTI0LDEuMzI1LDEuMzI1LDAsMCwwLTEuMDI2LS4zOTFWMTUuNGExLjMyNSwxLjMyNSwwLDAsMCwxLjAyNi0uMzkxLDEuNzczLDEuNzczLDAsMCwwLC40MDUtLjkyNCwxMi43OCwxMi43OCwwLDAsMCwuMDgtMS42ODcsMTMuMjgsMTMuMjgsMCwwLDEsLjA4NC0xLjczMSwyLjIsMi4yLDAsMCwxLC40MDktMS4wMjYsMS4zODcsMS4zODcsMCwwLDEsLjc2Ny0uNTQ4LDQuMjYzLDQuMjYzLDAsMCwxLDEuMDQ4LS4xMTNoLjR2MS4xNGgtLjIyNnEtLjc2LDAtLjkzMS40YTcuNzIsNy43MiwwLDAsMC0uMTcyLDIuMTcsNC44NzYsNC44NzYsMCwwLDEtLjQxNiwyLjMxNkEyLjExNywyLjExNywwLDAsMSw4Ljg1OSwxNmEyLjA4OSwyLjA4OSwwLDAsMSwxLjI2NC45ODZBNC44NzYsNC44NzYsMCwwLDEsMTAuNTQsMTkuM2E3LjcyLDcuNzIsMCwwLDAsLjE3MiwyLjE3cS4xNzIuNC45MzEuNGguMjI2Wm0xLjYtMy4xNDFoMS4wMzVWMTYuNDJoMS40NTlsMS45NywzLjQ1NGgxLjE4NEwxNy4wNCwxNi4zMDhhMi4yNDMsMi4yNDMsMCwwLDAsMS44MzMtMi4zMTljMC0xLjctMS4yLTIuMjk0LTIuODU1LTIuMjk0SDEzLjQ3NFptMS4wMzUtNC4zVjEyLjUzaDEuMzU5YzEuMjcyLDAsMS45Ny4zODYsMS45NywxLjQ1OXMtLjcsMS41ODMtMS45NywxLjU4M1ptNS41NTctNi41OTFoLjRhNC4yNjMsNC4yNjMsMCwwLDEsMS4wNDguMTEzLDEuMzg3LDEuMzg3LDAsMCwxLC43NjcuNTQ4LDIuMiwyLjIsMCwwLDEsLjQwOSwxLjAyNiwxMy4yOCwxMy4yOCwwLDAsMSwuMDg0LDEuNzMxLDEyLjc4LDEyLjc4LDAsMCwwLC4wOCwxLjY4NywxLjc3MywxLjc3MywwLDAsMCwuNDA1LjkyNCwxLjMyNSwxLjMyNSwwLDAsMCwxLjAyNi4zOTF2MS4xOTFhMS4zMjUsMS4zMjUsMCwwLDAtMS4wMjYuMzkxLDEuNzczLDEuNzczLDAsMCwwLS40MDUuOTI0LDEyLjc4LDEyLjc4LDAsMCwwLS4wOCwxLjY4NywxMy4yOCwxMy4yOCwwLDAsMS0uMDg0LDEuNzMxLDIuMiwyLjIsMCwwLDEtLjQwOSwxLjAyNiwxLjM4NywxLjM4NywwLDAsMS0uNzY3LjU0OCw0LjI2Myw0LjI2MywwLDAsMS0xLjA0OC4xMTNoLS40di0xLjE0aC4yMjZxLjc2LDAsLjkzMS0uNEE3LjcyLDcuNzIsMCwwLDAsMjEuNCwxOS4zYTQuODc2LDQuODc2LDAsMCwxLC40MTYtMi4zMTZBMi4wODksMi4wODksMCwwLDEsMjMuMDc1LDE2YTIuMTE3LDIuMTE3LDAsMCwxLTEuMjY0LS45OTQsNC44NzYsNC44NzYsMCwwLDEtLjQxNi0yLjMxNiw3LjcyLDcuNzIsMCwwLDAtLjE3Mi0yLjE3cS0uMTcyLS40LS45MzEtLjRoLS4yMjZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJSb2JvdCBGcmFtZXdvcmtcIjogYDxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTZcIiByPVwiMTRcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTEwLjM4NywxNC42YTIuNzI3LDIuNzI3LDAsMCwxLDUuNDUzLDAsLjk5Ljk5LDAsMSwxLTEuOTgsMCwuNzQ2Ljc0NiwwLDAsMC0xLjQ5MiwwLC45OS45OSwwLDEsMS0xLjk4LDBtMTEuMyw0LjU4NmEuOTkxLjk5MSwwLDAsMS0uOTkyLjk5MkgxMS41MDhhLjk5Mi45OTIsMCwwLDEsMC0xLjk4NGg5LjE4NGEuOTk0Ljk5NCwwLDAsMSwuOTkyLjk5Mk0xNy4zOTEsMTUuMTZhLjk5Mi45OTIsMCwwLDEsLjI3LTEuMzc1bDIuMjkzLTEuNTUxYS45ODkuOTg5LDAsMSwxLDEuMTA5LDEuNjM3bC0yLjMsMS41NTFhLjk2NS45NjUsMCwwLDEtLjU1MS4xNzIuOTk0Ljk5NCwwLDAsMS0uODI0LS40MzRtNi4yODksNi4wOTRhLjcwNy43MDcsMCwwLDEtLjIwNy41bC0xLjcwNywxLjcwN2EuNzA3LjcwNywwLDAsMS0uNS4yMDdIMTAuOGEuNzA3LjcwNywwLDAsMS0uNS0uMjA3TDguNiwyMS43NTRhLjcwNy43MDcsMCwwLDEtLjIwNy0uNVYxMC44YS43MDcuNzA3LDAsMCwxLC4yMDctLjVMMTAuMyw4LjU5NGEuNzA3LjcwNywwLDAsMSwuNS0uMjA3SDIxLjI2NmEuNzA3LjcwNywwLDAsMSwuNS4yMDdMMjMuNDczLDEwLjNhLjcwNy43MDcsMCwwLDEsLjIwNy41Wk0yNS4xMjksOS4xNiwyMi45LDYuOTNBMS44MDcsMS44MDcsMCwwLDAsMjEuNjI5LDYuNEgxMC40MzhhMS44MDcsMS44MDcsMCwwLDAtMS4yNzMuNTI3TDYuOTM4LDkuMTZhMS44LDEuOCwwLDAsMC0uNTI3LDEuMjdWMjEuNjIxYTEuOCwxLjgsMCwwLDAsLjUyNywxLjI3M2wyLjIyNywyLjIzYTEuODEsMS44MSwwLDAsMCwxLjI3My41MjNIMjEuNjI5YTEuOCwxLjgsMCwwLDAsMS4yNzMtLjUyM2wyLjIyNy0yLjIzYTEuNzg0LDEuNzg0LDAsMCwwLC41MjctMS4yNzNWMTAuNDM0YTEuNzg0LDEuNzg0LDAsMCwwLS41MjctMS4yNzNcIi8+YCxcblx0XCJSdWJ5XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItMjM1Ljk1N1wiIHkxPVwiLTMwOC41NzlcIiB4Mj1cIi0yMzUuOTg2XCIgeTI9XCItMzA4LjUyN1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDIwMi45MzUsIDAsIDAsIC0yMDIuNzgsIDQ3OTEwLjQ2MSwgLTYyNTQxLjE2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZiNzY1NVwiLz48c3RvcCBvZmZzZXQ9XCIwLjQxXCIgc3RvcC1jb2xvcj1cIiNlNDJiMWVcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjOTAwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzkwMFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi0yMzUuNTcxXCIgeTE9XCItMzA5LjA4N1wiIHgyPVwiLTIzNS42OTdcIiB5Mj1cIi0zMDkuMDQxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNjAuMzA4LCAwLCAwLCAtMTExLjc3OCwgMTQyMzYuMzUxLCAtMzQ1MjUuMzk1KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzg3MTEwMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM5MTEyMDlcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOTExMjA5XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTIzNS44OTZcIiB5MT1cIi0zMTMuMzYyXCIgeDI9XCItMjM1LjkzN1wiIHkyPVwiLTMxMy4xMjlcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxODguMzIsIDAsIDAsIC0yMS45ODYsIDQ0NDQ3LjMwMiwgLTY4NTYuODgyKVwiIHhsaW5rOmhyZWY9XCIjYlwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJkXCIgeDE9XCItMjMzLjUxNVwiIHkxPVwiLTMwOS4wODJcIiB4Mj1cIi0yMzMuNDk3XCIgeTI9XCItMzA5LjE2MVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDY1LjIyMiwgMCwgMCwgLTk3LjEsIDE1MjM3LjgwMiwgLTI5OTkxLjgxNClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yM1wiIHN0b3AtY29sb3I9XCIjZTU3MjUyXCIvPjxzdG9wIG9mZnNldD1cIjAuNDZcIiBzdG9wLWNvbG9yPVwiI2RlM2IyMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiNhNjAwMDNcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTYwMDAzXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZVwiIHgxPVwiLTIzNS4zMTRcIiB5MT1cIi0zMDkuNTM0XCIgeDI9XCItMjM1LjMxXCIgeTI9XCItMzA5LjYwN1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEwNS4zMiwgMCwgMCwgLTEwNi44MjUsIDI0Nzk4LjkyNSwgLTMzMDUzLjE1MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yM1wiIHN0b3AtY29sb3I9XCIjZTQ3MTRlXCIvPjxzdG9wIG9mZnNldD1cIjAuNTZcIiBzdG9wLWNvbG9yPVwiI2JlMWEwZFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiNhODBkMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTgwZDAwXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZlwiIHgxPVwiLTIzNS44ODJcIiB5MT1cIi0zMTEuODUxXCIgeDI9XCItMjM1Ljg2OVwiIHkyPVwiLTMxMS45MzVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg5NC4zMjEsIDAsIDAsIC02Ni40MTgsIDIyMjcxLjQ5OSwgLTIwNzA3LjAwNClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xOFwiIHN0b3AtY29sb3I9XCIjZTQ2MzQyXCIvPjxzdG9wIG9mZnNldD1cIjAuNFwiIHN0b3AtY29sb3I9XCIjYzgyNDEwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2E4MGQwMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNhODBkMDBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJnXCIgeDE9XCItMjM1LjQxMlwiIHkxPVwiLTMyMS4wNzRcIiB4Mj1cIi0yMzUuMzMzXCIgeTI9XCItMzIwLjk1OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDcwLjc2NywgMCwgMCwgLTI0LjMwMSwgMTY2NzguMTE2LCAtNzc5OC42NDcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuNTRcIiBzdG9wLWNvbG9yPVwiI2M4MWYxMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiNiZjA5MDVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYmYwOTA1XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiaFwiIHgxPVwiLTIyMy44MjFcIiB5MT1cIi0zMTAuMTE2XCIgeDI9XCItMjIzLjc5NlwiIHkyPVwiLTMxMC4xOFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDE4LjE3NywgMCwgMCwgLTcyLjY0NSwgNDA3MS4wMTcsIC0yMjUxMC4yMzMpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMzFcIiBzdG9wLWNvbG9yPVwiI2RlNDAyNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiNiZjE5MGJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYmYxOTBiXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiaVwiIHgxPVwiLTIzNS41NjFcIiB5MT1cIi0zMDkuMjU4XCIgeDI9XCItMjM1LjQyNFwiIHkyPVwiLTMwOS4xMTZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxNTguMTYyLCAwLCAwLCAtMTU3LjkzNywgMzcyNTYuMzEzLCAtNDg4MTkuMzgyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2JkMDAxMlwiLz48c3RvcCBvZmZzZXQ9XCIwLjA3XCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xN1wiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMjdcIiBzdG9wLWNvbG9yPVwiI2M4MmYxY1wiLz48c3RvcCBvZmZzZXQ9XCIwLjMzXCIgc3RvcC1jb2xvcj1cIiM4MjBjMDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC40NlwiIHN0b3AtY29sb3I9XCIjYTMxNjAxXCIvPjxzdG9wIG9mZnNldD1cIjAuNzJcIiBzdG9wLWNvbG9yPVwiI2IzMTMwMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiNlODI2MDlcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZTgyNjA5XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwialwiIHgxPVwiLTIzNS40MjRcIiB5MT1cIi0zMDkuMTQzXCIgeDI9XCItMjM1LjQ3NlwiIHkyPVwiLTMwOS4xMjZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxMjcuMDc0LCAwLCAwLCAtOTcuNDA5LCAyOTkzMi4yMjksIC0zMDA4Ni45NDcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjOGMwYzAxXCIvPjxzdG9wIG9mZnNldD1cIjAuNTRcIiBzdG9wLWNvbG9yPVwiIzk5MGMwMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiNhODBkMGVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTgwZDBlXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwia1wiIHgxPVwiLTIzNS44MzlcIiB5MT1cIi0zMDkuNjA0XCIgeDI9XCItMjM1LjkwMVwiIHkyPVwiLTMwOS41NTVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg5NC4wMTEsIDAsIDAsIC0xMDUuNjAzLCAyMjE5OC43NDMsIC0zMjY3Ni44NTYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjN2UxMTBiXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzllMGMwMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM5ZTBjMDBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJsXCIgeDE9XCItMjM1Ljg1NFwiIHkxPVwiLTMxMS4yNFwiIHgyPVwiLTIzNS44OTFcIiB5Mj1cIi0zMTEuMjAyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNzkuNzAyLCAwLCAwLCAtODEuNzkxLCAxODgyNy4zOTcsIC0yNTQ0Ny45MDUpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNzkxMzBkXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzllMTIwYlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM5ZTEyMGJcIi8+PC9saW5lYXJHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJtXCIgY3g9XCItMjM1Ljg4MlwiIGN5PVwiLTMxMi41NDNcIiByPVwiMC4wNzZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg5My4xMTMsIDAsIDAsIC00OC42NTUsIDIxOTg2LjA3MywgLTE1MTkzLjYxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2E4MGQwMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM3ZTBlMDhcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjN2UwZTA4XCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiblwiIGN4PVwiLTIzNS4yODJcIiBjeT1cIi0zMDkuNzA0XCIgcj1cIjAuMDk3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoOTcuNDM0LCAwLCAwLCAtNzUuODQ4LCAyMjkzNy4wNTcsIC0yMzQ2Ny44NClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNhMzBjMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjODAwZTA4XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzgwMGUwOFwiLz48L3JhZGlhbEdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cIm9cIiB4MT1cIi0yMzEuMjQxXCIgeTE9XCItMzA5LjQzNVwiIHgyPVwiLTIzMS4yOTlcIiB5Mj1cIi0zMDkuMzM3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoNDAuMTM3LCAwLCAwLCAtODEuMTQzLCA5Mjg2Ljk5OCwgLTI1MDc4LjU4OSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM4YjIxMTRcIi8+PHN0b3Agb2Zmc2V0PVwiMC40M1wiIHN0b3AtY29sb3I9XCIjOWUxMDBhXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiI2IzMTAwY1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNiMzEwMGNcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJwXCIgeDE9XCItMjM1Ljg5OFwiIHkxPVwiLTMxNy40NjZcIiB4Mj1cIi0yMzUuODMxXCIgeTI9XCItMzE3LjUzN1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDc4LjA5OSwgMCwgMCwgLTMyLjYyNCwgMTg0NDcuMzYxLCAtMTAzNTMuNTUzKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2IzMTAwMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjQ0XCIgc3RvcC1jb2xvcj1cIiM5MTBmMDhcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjNzkxYzEyXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzc5MWMxMlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3J1Ynk8L3RpdGxlPjxwYXRoIGQ9XCJNMjMuNjkzLDIwLjQ2OSw3LjcwNywyOS45NjFsMjAuNy0xLjRMMzAsNy42ODVaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yOC40NCwyOC41NDIsMjYuNjYxLDE2LjI2M2wtNC44NDYsNi40WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMjguNDY0LDI4LjU0MiwxNS40MywyNy41MTksNy43NzYsMjkuOTM0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNNy43OTQsMjkuOTM3LDExLjA1LDE5LjI3LDMuODg1LDIwLjhaXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0yMS44MTMsMjIuN2wtMy0xMS43MzVMMTAuMjQzLDE5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxwYXRoIGQ9XCJNMjkuMzIsMTEuMTI3bC04LjEtNi42MTktMi4yNTcsNy4zWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNMjUuNTMsMi4xNDgsMjAuNzYzLDQuNzgybC0zLjAwNy0yLjY3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2cpXCIvPjxwYXRoIGQ9XCJNMiwyNC4zOGwyLTMuNjQyTDIuMzgyLDE2LjRaXCIgc3R5bGU9XCJmaWxsOnVybCgjaClcIi8+PHBhdGggZD1cIk0yLjI3NCwxNi4yNjMsMy45LDIwLjg3M2w3LjA2Mi0xLjU4NEwxOS4wMjQsMTEuOCwyMS4zLDQuNTY5bC0zLjU4My0yLjUzLTYuMDkxLDIuMjhDOS43MDYsNi4xLDUuOTgyLDkuNjM1LDUuODQ4LDkuN3MtMi40NTksNC40NjQtMy41NzQsNi41NjJaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk03Ljk4MSw3Ljk4MUMxMi4xNCwzLjg1OCwxNy41LDEuNDIxLDE5LjU1OSwzLjVzLS4xMjQsNy4xMjEtNC4yODMsMTEuMjQ0UzUuODIxLDIxLjQzNCwzLjc2NSwxOS4zNTgsMy44MjIsMTIuMSw3Ljk4MSw3Ljk4MVpcIiBzdHlsZT1cImZpbGw6dXJsKCNpKVwiLz48cGF0aCBkPVwiTTcuNzk0LDI5LjkzM2wzLjIzMS0xMC43LDEwLjcyOSwzLjQ0N2MtMy44NzksMy42MzgtOC4xOTQsNi43MTMtMTMuOTYsNy4yNTRaXCIgc3R5bGU9XCJmaWxsOnVybCgjailcIi8+PHBhdGggZD1cIk0xOS4wMzgsMTEuNzc0bDIuNzU0LDEwLjkxYzMuMjQtMy40MDcsNi4xNDktNy4wNyw3LjU3My0xMS42bC0xMC4zMjguNjkxWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2spXCIvPjxwYXRoIGQ9XCJNMjkuMzM3LDExLjEzOWMxLjEtMy4zMjcsMS4zNTctOC4xLTMuODQxLTguOTg1TDIxLjIzMSw0LjUwOWw4LjEwNiw2LjYyOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNsKVwiLz48cGF0aCBkPVwiTTIsMjQuMzMyYy4xNTMsNS40OSw0LjExNCw1LjU3Miw1LjgsNS42MmwtMy45LTkuMUwyLDI0LjMzMlpcIiBzdHlsZT1cImZpbGw6IzllMTIwOVwiLz48cGF0aCBkPVwiTTE5LjA1MywxMS43OTFjMi40OSwxLjUzMSw3LjUwOSw0LjYsNy42MSw0LjY2MWExNy41NTIsMTcuNTUyLDAsMCwwLDIuNjE5LTUuMzQzbC0xMC4yMjkuNjgzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI20pXCIvPjxwYXRoIGQ9XCJNMTEuMDIxLDE5LjIzMmw0LjMxOSw4LjMzMmEyNy45MjQsMjcuOTI0LDAsMCwwLDYuMzg1LTQuODhsLTEwLjctMy40NTJaXCIgc3R5bGU9XCJmaWxsOnVybCgjbilcIi8+PHBhdGggZD1cIk0zLjg4NywyMC44NjFsLS42MTIsNy4yODdjMS4xNTUsMS41NzcsMi43NDMsMS43MTQsNC40MDksMS41OTEtMS4yMDUtMy0zLjYxNC05LTMuOC04Ljg3OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNvKVwiLz48cGF0aCBkPVwiTTIxLjIwNiw0LjUyOGw4LjU4LDEuMmMtLjQ1OC0xLjk0LTEuODY0LTMuMTkyLTQuMjYxLTMuNTg0bC00LjMxOSwyLjM4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI3ApXCIvPmAsXG5cdFwiUnVzdFwiOiBgPGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPVwiYVwiIGN4PVwiLTQ5Mi4wMzVcIiBjeT1cIi04ODMuMzdcIiByPVwiMTMuOTk4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC44NjYsIC0wLjUsIC0wLjMsIC0wLjUyLCAxNzcuMTA2LCAtNjg5LjAzMylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM3ZDdkN2RcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yNjdcIiBzdG9wLWNvbG9yPVwiIzdlN2M3YVwiLz48c3RvcCBvZmZzZXQ9XCIwLjQ1XCIgc3RvcC1jb2xvcj1cIiM4MTc4NzFcIi8+PHN0b3Agb2Zmc2V0PVwiMC42MDhcIiBzdG9wLWNvbG9yPVwiIzg2NzE2MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjc1M1wiIHN0b3AtY29sb3I9XCIjOGQ2ODRjXCIvPjxzdG9wIG9mZnNldD1cIjAuODg2XCIgc3RvcC1jb2xvcj1cIiM5NjVjMzBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTA0ZjEyXCIvPjwvcmFkaWFsR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcnVzdDwvdGl0bGU+PHBhdGggZD1cIk0xNS4xMjQsNS4zYS44MzIuODMyLDAsMSwxLC44MzIuODMyaDBhLjgzMS44MzEsMCwwLDEtLjgzMi0uODMyTTUuMiwxMi44MzRhLjgzMi44MzIsMCwxLDEsLjgzMi44MzJoMGEuODMyLjgzMiwwLDAsMS0uODMyLS44MzJtMTkuODU2LjAzOWEuODMyLjgzMiwwLDEsMSwuODMyLjgzMi44MzEuODMxLDAsMCwxLS44MzItLjgzMmgwTTcuNjA1LDE0LjAxM2EuNzYuNzYsMCwwLDAsLjM4Ni0xbC0uMzY5LS44MzVIOS4wNzR2Ni41NDVINi4xNDRhMTAuMjQ3LDEwLjI0NywwLDAsMS0uMzMyLTMuOTExWm02LjA3NC4xNjFWMTIuMjQ1aDMuNDU4Yy4xNzksMCwxLjI2MS4yMDYsMS4yNjEsMS4wMTYsMCwuNjcyLS44My45MTMtMS41MTMuOTEzWk04Ljk1OCwyNC41NjFhLjgzMi44MzIsMCwxLDEsLjgzMi44MzIuODMxLjgzMSwwLDAsMS0uODMyLS44MzJoMG0xMi4zMzEuMDM5YS44MzIuODMyLDAsMSwxLC44MzIuODMyLjgzMi44MzIsMCwwLDEtLjgzMi0uODMyaDBtLjI1Ny0xLjg4N2EuNzU4Ljc1OCwwLDAsMC0uOS41ODRsLS40MTgsMS45NDlhMTAuMjQ5LDEwLjI0OSwwLDAsMS04LjU0NS0uMDQxbC0uNDE3LTEuOTQ5YS43NTkuNzU5LDAsMCwwLS45LS41ODNoMGwtMS43MjEuMzdhMTAuMjMzLDEwLjIzMywwLDAsMS0uODktMS4wNDloOC4zNzRjLjA5NSwwLC4xNTgtLjAxNy4xNTgtLjFWMTguOTI4YzAtLjA4Ni0uMDYzLS4xLS4xNTgtLjFoLTIuNDVWMTYuOTQ3aDIuNjQ5YTEuNjY1LDEuNjY1LDAsMCwxLDEuNjI5LDEuNDEyYy4xMDUuNDEzLjMzNiwxLjc1Ny40OTQsMi4xODcuMTU3LjQ4My44LDEuNDQ3LDEuNDgyLDEuNDQ3aDQuMzIzYTEwLjI0MywxMC4yNDMsMCwwLDEtLjk0OSwxLjFabTQuNjUtNy44MjFhMTAuMjYxLDEwLjI2MSwwLDAsMSwuMDIyLDEuNzc5SDI1LjE2N2MtLjEwNSwwLS4xNDguMDY5LS4xNDguMTcydi40ODNjMCwxLjEzNi0uNjQxLDEuMzg0LTEuMiwxLjQ0Ny0uNTM1LjA2LTEuMTI4LS4yMjQtMS4yLS41NTFhMy42MTYsMy42MTYsMCwwLDAtMS42NzEtMi44MDhjMS4wMy0uNjU0LDIuMS0xLjYxOSwyLjEtMi45MTFBMy4yOTIsMy4yOTIsMCwwLDAsMjEuNDQsOS44YTQuNTU5LDQuNTU5LDAsMCwwLTIuMi0uNzI0SDguMzY3QTEwLjI0NiwxMC4yNDYsMCwwLDEsMTQuMSw1Ljg0bDEuMjgyLDEuMzQ0YS43NTguNzU4LDAsMCwwLDEuMDcyLjAyNmgwbDEuNDM0LTEuMzcyYTEwLjI0OCwxMC4yNDgsMCwwLDEsNy4wMTUsNWwtLjk4MiwyLjIxN2EuNzYxLjc2MSwwLDAsMCwuMzg2LDFabTIuNDQ4LjAzNi0uMDMzLS4zNDMsMS4wMTEtLjk0M2EuNDIuNDIsMCwwLDAtLjAxMy0uNTk1LjQyOC40MjgsMCwwLDAtLjEyMS0uMDgxTDI4LjIsMTIuNDgzbC0uMS0uMzM0LjgwNi0xLjEyYS40MjIuNDIyLDAsMCwwLS4xMy0uNTgxLjQzLjQzLDAsMCwwLS4xMzMtLjA1NWwtMS4zNjMtLjIyMi0uMTY0LS4zMDYuNTczLTEuMjU3YS40MTkuNDE5LDAsMCwwLS4yMzYtLjU0NC40MjYuNDI2LDAsMCwwLS4xNDYtLjAyOWwtMS4zODMuMDQ4TDI1LjcsNy44MTlsLjMxOC0xLjM0N2EuNDIxLjQyMSwwLDAsMC0uMzQzLS40ODcuNDM1LjQzNSwwLDAsMC0uMTQ0LDBMMjQuMTgzLDYuM2wtLjI2Ni0uMjE5TDIzLjk2Niw0LjdhLjQyMS40MjEsMCwwLDAtLjQzMS0uNDExLjQyNi40MjYsMCwwLDAtLjE0MS4wMjhsLTEuMjU3LjU3My0uMzA2LS4xNjQtLjIyMi0xLjM2M2EuNDIxLjQyMSwwLDAsMC0uNS0uMzE4LjQzLjQzLDAsMCwwLS4xMzMuMDU1bC0xLjEyMS44MDYtLjMzMy0uMS0uNDgzLTEuMjkzYS40MjEuNDIxLDAsMCwwLS41NTUtLjIxNS40NDIuNDQyLDAsMCwwLS4xMi4wOEwxNy40MTgsMy4zOWwtLjM0My0uMDMzTDE2LjM0NywyLjE4YS40MjEuNDIxLDAsMCwwLS42ODgsMGwtLjcyOCwxLjE3Ny0uMzQzLjAzMy0uOTQzLTEuMDEyYS40MjEuNDIxLDAsMCwwLS41OTUuMDE1LjQ0Mi40NDIsMCwwLDAtLjA4LjEyTDEyLjQ4MywzLjhsLS4zMzMuMS0xLjEyLS44YS40MjIuNDIyLDAsMCwwLS41ODEuMTMuNDMuNDMsMCwwLDAtLjA1NS4xMzNsLS4yMjIsMS4zNjMtLjMwNi4xNjRMOC42MDgsNC4zMTdhLjQyMS40MjEsMCwwLDAtLjU0NC4yMzkuNDQ0LjQ0NCwwLDAsMC0uMDI4LjE0NGwuMDQ4LDEuMzgzTDcuODE4LDYuMyw2LjQ3MSw1Ljk4NGEuNDIxLjQyMSwwLDAsMC0uNDg3LjM0My40MzUuNDM1LDAsMCwwLDAsLjE0NEw2LjMsNy44MTlsLS4yMTguMjY1TDQuNyw4LjAzNmEuNDIyLjQyMiwwLDAsMC0uMzgzLjU3M0w0Ljg5LDkuODY2bC0uMTY0LjMwNi0xLjM2My4yMjJhLjQyLjQyLDAsMCwwLS4zMTguNS40My40MywwLDAsMCwuMDU1LjEzM2wuODA2LDEuMTItLjEuMzM0LTEuMjkzLjQ4M2EuNDIxLjQyMSwwLDAsMC0uMjE1LjU1NS40MTQuNDE0LDAsMCwwLC4wODEuMTIxbDEuMDExLjk0My0uMDMzLjM0My0xLjE3Ny43MjhhLjQyMS40MjEsMCwwLDAsMCwuNjg4bDEuMTc3LjcyOC4wMzMuMzQzLTEuMDExLjk0M2EuNDIxLjQyMSwwLDAsMCwuMDE1LjU5NS40MzYuNDM2LDAsMCwwLC4xMTkuMDhsMS4yOTMuNDgzLjEuMzM0TDMuMSwyMC45NzJhLjQyMS40MjEsMCwwLDAsLjEzMS41ODEuNDMuNDMsMCwwLDAsLjEzMy4wNTVsMS4zNjMuMjIyLjE2NC4zMDctLjU3MywxLjI1N2EuNDIyLjQyMiwwLDAsMCwuMjQuNTQ1LjQzOC40MzgsMCwwLDAsLjE0My4wMjhsMS4zODMtLjA0OC4yMTkuMjY2LS4zMTcsMS4zNDhhLjQyLjQyLDAsMCwwLC4zNDEuNDg2LjQuNCwwLDAsMCwuMTQ2LDBMNy44MTgsMjUuN2wuMjY2LjIxOEw4LjAzNSwyNy4zYS40MTkuNDE5LDAsMCwwLC40MjkuNDEuNDEzLjQxMywwLDAsMCwuMTQzLS4wMjhsMS4yNTctLjU3My4zMDYuMTY0LjIyMiwxLjM2MmEuNDIxLjQyMSwwLDAsMCwuNS4zMTkuNDA3LjQwNywwLDAsMCwuMTMzLS4wNTVsMS4xMi0uODA3LjMzNC4xLjQ4MywxLjI5MmEuNDIyLjQyMiwwLDAsMCwuNTU2LjIxNC40MzYuNDM2LDAsMCwwLC4xMTktLjA4bC45NDMtMS4wMTEuMzQzLjAzNC43MjgsMS4xNzdhLjQyMi40MjIsMCwwLDAsLjU4OC4xLjQxMy40MTMsMCwwLDAsLjEtLjFsLjcyOC0xLjE3Ny4zNDMtLjAzNC45NDMsMS4wMTFhLjQyMS40MjEsMCwwLDAsLjU5NS0uMDE1LjQzNi40MzYsMCwwLDAsLjA4LS4xMTlsLjQ4My0xLjI5Mi4zMzQtLjEsMS4xMi44MDdhLjQyMS40MjEsMCwwLDAsLjU4MS0uMTMxLjQzLjQzLDAsMCwwLC4wNTUtLjEzM2wuMjIyLTEuMzYyLjMwNi0uMTY0LDEuMjU3LjU3M2EuNDIxLjQyMSwwLDAsMCwuNTQ0LS4yMzkuNDM4LjQzOCwwLDAsMCwuMDI4LS4xNDNsLS4wNDgtMS4zODQuMjY1LS4yMTgsMS4zNDcuMzE3YS40MjEuNDIxLDAsMCwwLC40ODctLjM0LjQ0Ny40NDcsMCwwLDAsMC0uMTQ2TDI1LjcsMjQuMTgzbC4yMTgtLjI2NiwxLjM4My4wNDhhLjQyMS40MjEsMCwwLDAsLjQxLS40MzEuNC40LDAsMCwwLS4wMjgtLjE0MmwtLjU3My0xLjI1Ny4xNjQtLjMwNywxLjM2My0uMjIyYS40MjEuNDIxLDAsMCwwLC4zMTktLjUuNDM0LjQzNCwwLDAsMC0uMDU2LS4xMzVsLS44MDYtMS4xMi4xLS4zMzQsMS4yOTMtLjQ4M2EuNDIuNDIsMCwwLDAsLjIxNS0uNTU0LjQxNC40MTQsMCwwLDAtLjA4MS0uMTIxbC0xLjAxMS0uOTQzLjAzMy0uMzQzLDEuMTc3LS43MjhhLjQyMS40MjEsMCwwLDAsMC0uNjg4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPmAsXG5cdFwiU0FTXCI6IGA8cGF0aCBkPVwiTTE2LjAxOCwzMEExNCwxNCwwLDEsMSwzMCwxNi4yLDE0LDE0LDAsMCwxLDE2LjAxOCwzMFpcIiBzdHlsZT1cImZpbGw6IzAwMmJiNVwiLz48cGF0aCBkPVwiTTkuMTcsMjIuNjNjLjAyNi4wNjEuMDQ2LjEyNC4wNzcuMTgzLDIuMjE1LDQuMjA2LDcuNzM4LDQuNjE2LDEwLjc1NiwyLjQ1NGE2LjAxNyw2LjAxNywwLDAsMCwxLjczMS04LjU4MywxNS43LDE1LjcsMCwwLDAtMS4zMTgtMS43MzFjLS44ODEtMS4wNjctMS43NTUtMi4xNC0yLjYzNi0zLjIwNy0uMzY2LS40NDMtLjc2Ny0uODM1LTEuNDE2LS42ODNhMS4zOTMsMS4zOTMsMCwwLDAtLjgxNiwyLjMxMWMuODg4LDEuMTA2LDEuODE5LDIuMTc3LDIuNywzLjI4NmEzLjg3NCwzLjg3NCwwLDAsMSwuNTg5LDQuNCw1LjQyMyw1LjQyMywwLDAsMS01LDMuMTM0QTYuNiw2LjYsMCwwLDEsOS4xNywyMi42M1pcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTIyLjQ5NCw5LjYwOWMuMDgtLjI0OC0uMDY2LS4zNy0uMTQxLS41MDlBNy40NzcsNy40NzcsMCwwLDAsMTIuNiw2LjIzN2MtMy4zLDEuNjMtNS4xLDUuMzUyLTIuNjM3LDkuMTQ3YTU2LjUzLDU2LjUzLDAsMCwwLDQuMTM1LDUuMTIsMS4wMTIsMS4wMTIsMCwwLDAsLjcwOS4zNDUsMS4zODQsMS4zODQsMCwwLDAsMS40MjgtLjc2NSwxLjI0NywxLjI0NywwLDAsMC0uMTczLTEuNTA3Yy0uODc2LTEuMDUxLTEuNzY5LTIuMDg4LTIuNjE1LTMuMTYyYTQuMTMsNC4xMywwLDAsMSwuMzIzLTUuNzcxQTYuMDU0LDYuMDU0LDAsMCwxLDE5Ljk4NCw4LjEzLDUuMTksNS4xOSwwLDAsMSwyMi40OTQsOS42MDlaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJTYXNzIChTYXNzKVwiOiBgPHBhdGggZD1cIk0yNi4xMSwxNy41NzJhNS44LDUuOCwwLDAsMC0yLjUzNy41ODgsNS4zNDUsNS4zNDUsMCwwLDEtLjU2OC0xLjMxNCwzLjUzLDMuNTMsMCwwLDEtLjA1MS0xLjEsOS44MTEsOS44MTEsMCwwLDEsLjMzMi0xLjE5MmMtLjAwNS0uMDUxLS4wNjEtLjI5Mi0uNjI0LS4zcy0xLjA0OC4xMDctMS4xLjI1NmE2LjE3MSw2LjE3MSwwLDAsMC0uMjM1LjgzNCwxOS42ODYsMTkuNjg2LDAsMCwxLTEuNzEzLDMuMjk0LDMuMTg2LDMuMTg2LDAsMCwxLS40NC0yLjA2Niw5LjgxMSw5LjgxMSwwLDAsMSwuMzMyLTEuMTkyYy0uMDA1LS4wNTEtLjA2MS0uMjkyLS42MjQtLjNzLTEuMDQ4LjEwNy0xLjEuMjU2LS4xMTguNS0uMjM1LjgzNC0xLjQ4MywzLjM4Ni0xLjg0MSw0LjE3M2MtLjE4NC40LS4zNDMuNzI2LS40NTUuOTQ2aDBhLjIzMy4yMzMsMCwwLDEtLjAyLjA0MWMtLjEuMTg5LS4xNTMuMjkyLS4xNTMuMjkydi4wMDVjLS4wNzcuMTM4LS4xNTkuMjY2LS4yLjI2NmExLjcxMSwxLjcxMSwwLDAsMSwuMDEtLjg2OWMuMi0xLjA1OS42OS0yLjcwNS42ODUtMi43NjIsMC0uMDMxLjA5Mi0uMzE3LS4zMTctLjQ2NWEuNTA4LjUwOCwwLDAsMC0uNTc4LjFjLS4wMzYsMC0uMDYxLjA4Ny0uMDYxLjA4N3MuNDQ1LTEuODUxLS44NDktMS44NTFhMy44NTUsMy44NTUsMCwwLDAtMi40NzUsMS42ODNjLS4zNDguMTg5LTEuMDg5LjU5My0xLjg4MiwxLjAyOC0uMy4xNjktLjYxNC4zMzgtLjkwNS41LS4wMi0uMDItLjA0MS0uMDQ2LS4wNjEtLjA2NkM2Ljg3LDE3LjYsMy45NzUsMTYuNDE2LDQuMSwxNC4xNzFjLjA0Ni0uODE4LjMyNy0yLjk2Niw1LjU1OS01LjU3NSw0LjMwNi0yLjEyMiw3LjczMy0xLjUzNCw4LjMyNi0uMjMuODQ5LDEuODYyLTEuODM2LDUuMzE5LTYuMjg1LDUuODJhMy4zNTEsMy4zNTEsMCwwLDEtMi44MTMtLjcxMWMtLjIzNS0uMjU2LS4yNzEtLjI3MS0uMzU4LS4yMi0uMTQzLjA3Ny0uMDUxLjMwNywwLC40NGEyLjYyNiwyLjYyNiwwLDAsMCwxLjYwNiwxLjI2Myw4LjU1LDguNTUsMCwwLDAsNS4yMTctLjUxN2MyLjctMS4wNDMsNC44LTMuOTQzLDQuMTg0LTYuMzcyLS42MTktMi40NjUtNC43MS0zLjI3OC04LjU4Mi0xLjlBMTkuNSwxOS41LDAsMCwwLDQuMzU5LDkuOTUyYy0yLjEzMywxLjk5NS0yLjQ3LDMuNzI4LTIuMzMyLDQuNDU1LjUsMi41NzgsNC4wNTEsNC4yNTUsNS40NzIsNS41LS4wNzIuMDQxLS4xMzguMDc3LS4xOTQuMTA3LS43MTEuMzUzLTMuNDIxLDEuNzctNC4xLDMuMjY4LS43NjcsMS43LjEyMywyLjkxNS43MTEsMy4wNzlhNC4zNzQsNC4zNzQsMCwwLDAsNC43MS0xLjkwOEE0LjcyNSw0LjcyNSwwLDAsMCw5LjA0OSwyMC4xYS4xMDcuMTA3LDAsMCwwLS4wMi0uMDMxbC41NTctLjMyN2MuMzYzLS4yMTUuNzIxLS40MTQsMS4wMjgtLjU3OGE2Ljc0LDYuNzQsMCwwLDAtLjM2MywxLjg2MiwzLjg4NiwzLjg4NiwwLDAsMCwuODM0LDIuNy45MjEuOTIxLDAsMCwwLC42NzUuMjJjLjYsMCwuODc1LS41LDEuMTc2LTEuMDk0LjM2OC0uNzI2LjctMS41Ny43LTEuNTdzLS40MTQsMi4yODEuNzExLDIuMjgxYy40MDksMCwuODIzLS41MzIsMS4wMDgtLjh2LjAwNXMuMDEtLjAxNS4wMzEtLjA1MWwuMDY2LS4xMDd2LS4wMWMuMTY0LS4yODYuNTMyLS45MzYsMS4wNzktMi4wMTUuNzA2LTEuMzkxLDEuMzg2LTMuMTMsMS4zODYtMy4xM2E4Ljg4OCw4Ljg4OCwwLDAsMCwuMjcxLDEuMTMsMTAuNjQzLDEwLjY0MywwLDAsMCwuNTgzLDEuMzA5Yy0uMTY0LjIzLS4yNjYuMzU4LS4yNjYuMzU4bC4wMDUuMDA1Yy0uMTMzLjE3NC0uMjc2LjM2My0uNDM1LjU0N2ExNi4zLDE2LjMsMCwwLDAtMS4zMTQsMS42NDcuNDQ3LjQ0NywwLDAsMCwuMTIzLjYsMS4xMTYsMS4xMTYsMCwwLDAsLjY4NS4xMTMsMy4xNDcsMy4xNDcsMCwwLDAsMS4wMjgtLjIzNSwzLjQ1LDMuNDUsMCwwLDAsLjg4NS0uNDY1LDEuOTgsMS45OCwwLDAsMCwuODQ5LTEuNzQ0LDMuNTIxLDMuNTIxLDAsMCwwLS4zMjItMS4yMzNjLjA1MS0uMDcyLjEtLjE0My4xNDgtLjIxNWEyMy40MjgsMjMuNDI4LDAsMCwwLDEuNTM0LTIuNjQ5LDguODg4LDguODg4LDAsMCwwLC4yNzEsMS4xMyw3LjU3LDcuNTcsMCwwLDAsLjUsMS4xMjVBNC44NjEsNC44NjEsMCwwLDAsMjAuOTY1LDIwLjhjLS4zMjIuOTMxLS4wNzIsMS4zNS40LDEuNDQ3YTEuNDI1LDEuNDI1LDAsMCwwLC43NDctLjE1MywzLjQsMy40LDAsMCwwLC45NDYtLjQ4NiwyLjEyNiwyLjEyNiwwLDAsMCwxLjA0My0xLjcyOSwzLjI2OCwzLjI2OCwwLDAsMC0uMjM1LTEuMDIzLDUuMzU2LDUuMzU2LDAsMCwxLDIuNzE2LS4zMTJjMi40MzQuMjg2LDIuOTE1LDEuODA1LDIuODIzLDIuNDQ1YTEuNjE4LDEuNjE4LDAsMCwxLS43NzIsMS4wOTRjLS4xNjkuMTA3LS4yMjUuMTQzLS4yMS4yMi4wMi4xMTMuMS4xMDcuMjQ1LjA4N0ExLjksMS45LDAsMCwwLDMwLDIwLjdjLjA3Ny0xLjUtMS4zNTUtMy4xNDUtMy44ODctMy4xM1pNNy4zMywyMy45Yy0uODA4Ljg4LTEuOTMzLDEuMjEyLTIuNDE5LjkzMS0uNTIyLS4zLS4zMTctMS42LjY3NS0yLjUzMmExMi44ODQsMTIuODg0LDAsMCwxLDEuOS0xLjQxN2MuMTE4LS4wNzIuMjkyLS4xNzQuNS0uM2wuMDU2LS4wMzFoMGwuMTIzLS4wNzdBMy40OTMsMy40OTMsMCwwLDEsNy4zMywyMy45Wm01Ljg4MS00Yy0uMjgxLjY4NS0uODY5LDIuNDQtMS4yMjcsMi4zNDItLjMwNy0uMDgyLS41LTEuNDEyLS4wNjEtMi43MjZhNi4xOTMsNi4xOTMsMCwwLDEsLjk1Ni0xLjc1NGMuNDQtLjQ5MS45MjYtLjY1NSwxLjA0My0uNDU1YTkuMDYyLDkuMDYyLDAsMCwxLS43MTEsMi41OTNabTQuODUzLDIuMzIyYy0uMTE4LjA2MS0uMjMuMS0uMjgxLjA3Mi0uMDM2LS4wMi4wNTEtLjEuMDUxLS4xcy42MDktLjY1NS44NDktLjk1MWMuMTM4LS4xNzQuMy0uMzc4LjQ3Ni0uNjA5VjIwLjdjMCwuNzgyLS43NTcsMS4zMDktMS4wOTQsMS41MjRabTMuNzQ0LS44NTRjLS4wODctLjA2MS0uMDcyLS4yNjYuMjItLjkwNWEzLjQwOCwzLjQwOCwwLDAsMSwuODM0LTEuMDc0LDEuNDQ4LDEuNDQ4LDAsMCwxLC4wODIuNDcxLDEuNTQ3LDEuNTQ3LDAsMCwxLTEuMTM1LDEuNTA5WlwiIHN0eWxlPVwiZmlsbDojY2Q2Nzk5XCIvPmAsXG5cdFwiU2FzcyAoU0NTUylcIjogYDxwYXRoIGQ9XCJNMTYuMTcxLDE4LjdjLS40ODEuMjIxLTEuMDA4LjUwOS0yLjA2MywxLjA4OC0uNC4yMjUtLjgxOC40NS0xLjIwNy42NjItLjAyNy0uMDI3LS4wNTUtLjA2MS0uMDgyLS4wODktMi4wODctMi4yMy01Ljk0Ny0zLjgwNS01Ljc4My02LjguMDYxLTEuMDkxLjQzNi0zLjk1NSw3LjQxMy03LjQzMyw1Ljc0Mi0yLjgzLDEwLjMxMS0yLjA0NiwxMS4xLS4zMDdDMjYuNjgzLDguMywyMy4xLDEyLjkxMywxNy4xNywxMy41ODJhNC40NjksNC40NjksMCwwLDEtMy43NTEtLjk0OGMtLjMxNC0uMzQxLS4zNjEtLjM2MS0uNDc3LS4yOTMtLjE5MS4xLS4wNjguNDA5LDAsLjU4NmEzLjUsMy41LDAsMCwwLDIuMTQxLDEuNjg0LDExLjQsMTEuNCwwLDAsMCw2Ljk1Ni0uNjg5YzMuNTk0LTEuMzkxLDYuNC01LjI1OCw1LjU3OC04LjUtLjgyNS0zLjI4Ny02LjI4MS00LjM3MS0xMS40NDMtMi41MzdhMjYsMjYsMCwwLDAtOC43OSw1LjA0N2MtMi44NDQsMi42Ni0zLjI5NCw0Ljk3Mi0zLjExLDUuOTQuNjYyLDMuNDM3LDUuNCw1LjY3NCw3LjMsNy4zMzEtLjEuMDU1LS4xODQuMS0uMjU5LjE0My0uOTQ4LjQ3MS00LjU2MiwyLjM2LTUuNDYzLDQuMzU4LTEuMDIzLDIuMjY0LjE2NCwzLjg4Ny45NDgsNC4xMDVhNS44MzIsNS44MzIsMCwwLDAsNi4yODEtMi41NDQsNi4zLDYuMywwLDAsMCwuNTU5LTUuOCw1LjAzLDUuMDMsMCwwLDEsLjcxNi0uNDc3Yy40ODQtLjI4Ni45NDUtLjU2OCwxLjM1NC0uNzg2bDAsMGExMC40NzUsMTAuNDc1LDAsMCwxLDQuNDc1LS45ODljMy4yNDYuMzgyLDMuODg3LDIuNDA3LDMuNzY0LDMuMjZhMi4xNTcsMi4xNTcsMCwwLDEtMS4wMywxLjQ1OWMtLjIyNS4xNDMtLjMuMTkxLS4yOC4yOTMuMDI3LjE1LjEzNi4xNDMuMzI3LjExNmEyLjUzNSwyLjUzNSwwLDAsMCwxLjc2Ni0yLjI1N2MuMS0yLTEuODA3LTQuMTk0LTUuMTgzLTQuMTc0YTcuNzUzLDcuNzUzLDAsMCwwLTIuOTQ2LjU4N3EtLjIyNS4wOTMtLjQzNy4yWm0tNC44MjUsNy44MzljLTEuMDc4LDEuMTczLTIuNTc4LDEuNjE2LTMuMjI2LDEuMjQxLS43LS40LS40MjMtMi4xMzUuOS0zLjM3NmExNy4xOCwxNy4xOCwwLDAsMSwyLjUzLTEuODg5Yy4xNTctLjEuMzg5LS4yMzIuNjY4LS40LjA0OC0uMDI3LjA3NS0uMDQxLjA3NS0uMDQxbC4xNjQtLjFBNC42NTgsNC42NTgsMCwwLDEsMTEuMzQ2LDI2LjUzOVpcIiBzdHlsZT1cImZpbGw6I2NkNjc5OVwiLz5gLFxuXHRcIlNjYWxhXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItMTM0LjkwN1wiIHkxPVwiMjA0LjU3MlwiIHgyPVwiLTEzNC44OTZcIiB5Mj1cIjIwNC41NzJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxNTM4LCAwLCAwLCAtOTYxLjI1LCAyMDc0OTUsIDE5NjY2MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNlNjJkMmFcIi8+PHN0b3Agb2Zmc2V0PVwiMC42XCIgc3RvcC1jb2xvcj1cIiNkZjNmM2RcIi8+PHN0b3Agb2Zmc2V0PVwiMC44XCIgc3RvcC1jb2xvcj1cIiNkZjNmM2RcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZTYyZDJhXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTEzNC45MDdcIiB5MT1cIjIwMy43ODFcIiB4Mj1cIi0xMzQuODk2XCIgeTI9XCIyMDMuNzgxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTUzOCwgMCwgMCwgLTk2MS4yNSwgMjA3NDk1LCAxOTU4OTIpXCIgeGxpbms6aHJlZj1cIiNhXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi0xMzQuOTA3XCIgeTE9XCIyMDUuMzYzXCIgeDI9XCItMTM0Ljg5NlwiIHkyPVwiMjA1LjM2M1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDE1MzgsIDAsIDAsIC05NjEuMjUsIDIwNzQ5NSwgMTk3NDMwKVwiIHhsaW5rOmhyZWY9XCIjYVwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9zY2FsYTwvdGl0bGU+PHBhdGggZD1cIk03LjM4NCwxOS4yMzF2Mi4xNTRjMCwuMzYzLDcuODMzLjk3MSwxMi45MzcsMi4xNTQsMi40NjUtLjU3MSw0LjI5NS0xLjI3Nyw0LjI5NS0yLjE1NFYxOS4yMzFjMC0uODc3LTEuODMtMS41ODItNC4yOTUtMi4xNTQtNS4xLDEuMTgzLTEyLjkzNywxLjc5MS0xMi45MzcsMi4xNTRcIiBzdHlsZT1cImZpbGw6IzdmMGMxZFwiLz48cGF0aCBkPVwiTTcuMzg0LDEwLjYxNXYyLjE1NGMwLC4zNjMsNy44MzMuOTcxLDEyLjkzNywyLjE1NCwyLjQ2NS0uNTcxLDQuMjk1LTEuMjc3LDQuMjk1LTIuMTU0VjEwLjYxNWMwLS44NzctMS44My0xLjU4Mi00LjI5NS0yLjE1NC01LjEsMS4xODMtMTIuOTM3LDEuNzkxLTEyLjkzNywyLjE1NFwiIHN0eWxlPVwiZmlsbDojN2YwYzFkXCIvPjxwYXRoIGQ9XCJNNy4zODQsMTQuOTIzdjYuNDYyYzAtLjUzOCwxNy4yMzItMS42MTUsMTcuMjMyLTQuMzA4VjEwLjYxNWMwLDIuNjkyLTE3LjIzMiwzLjc2OS0xNy4yMzIsNC4zMDhcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTcuMzg0LDYuMzA4VjEyLjc3YzAtLjUzOCwxNy4yMzItMS42MTUsMTcuMjMyLTQuMzA4VjJjMCwyLjY5Mi0xNy4yMzIsMy43NjktMTcuMjMyLDQuMzA4XCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk03LjM4NCwyMy41MzhWMzBjMC0uNTM4LDE3LjIzMi0xLjYxNSwxNy4yMzItNC4zMDhWMTkuMjMxYzAsMi42OTItMTcuMjMyLDMuNzY5LTE3LjIzMiw0LjMwOFwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPmAsXG5cdFwiU2hlbGwgc2Vzc2lvblwiOiBgPHBhdGggZD1cIk0yOS40LDI3LjZIMi41VjQuNUgyOS40Wm0tMjUuOS0xSDI4LjRWNS41SDMuNVpcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cG9seWdvbiBwb2ludHM9XCI2LjA3NyAxOS4zMTYgNS41MjIgMTguNDg0IDEwLjM2NiAxNS4yNTUgNS40NzkgMTEuMTg0IDYuMTIgMTAuNDE2IDEyLjAzNSAxNS4zNDQgNi4wNzcgMTkuMzE2XCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHJlY3QgeD1cIjEyLjdcIiB5PVwiMTguMlwiIHdpZHRoPVwiNy44XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxyZWN0IHg9XCIyLjVcIiB5PVwiNS41XCIgd2lkdGg9XCIyNi45XCIgaGVpZ2h0PVwiMS45XCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+YCxcblx0XCJTaGVsbFwiOiBgPHBhdGggZD1cIk0yOS40LDI3LjZIMi41VjQuNUgyOS40Wm0tMjUuOS0xSDI4LjRWNS41SDMuNVpcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cG9seWdvbiBwb2ludHM9XCI2LjA3NyAxOS4zMTYgNS41MjIgMTguNDg0IDEwLjM2NiAxNS4yNTUgNS40NzkgMTEuMTg0IDYuMTIgMTAuNDE2IDEyLjAzNSAxNS4zNDQgNi4wNzcgMTkuMzE2XCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHJlY3QgeD1cIjEyLjdcIiB5PVwiMTguMlwiIHdpZHRoPVwiNy44XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxyZWN0IHg9XCIyLjVcIiB5PVwiNS41XCIgd2lkdGg9XCIyNi45XCIgaGVpZ2h0PVwiMS45XCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+YCxcblx0XCJTbWFydHlcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjEzLjg1OVwiIHkxPVwiMjkuMjE5XCIgeDI9XCIxOC4xMDZcIiB5Mj1cIjI5LjIxOVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDM0XCIgc3RvcC1jb2xvcj1cIiM2MzYzNjFcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xNzhcIiBzdG9wLWNvbG9yPVwiIzZjNmQ3MFwiLz48c3RvcCBvZmZzZXQ9XCIwLjIxOVwiIHN0b3AtY29sb3I9XCIjNmY3MTc1XCIvPjxzdG9wIG9mZnNldD1cIjAuMzA5XCIgc3RvcC1jb2xvcj1cIiM2MTYzNjZcIi8+PHN0b3Agb2Zmc2V0PVwiMC40ODFcIiBzdG9wLWNvbG9yPVwiIzNjM2QzZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjcxNlwiIHN0b3AtY29sb3I9XCIjMDEwMTAxXCIvPjxzdG9wIG9mZnNldD1cIjAuNzE5XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzYzNmE2ZVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjE1LjE3OFwiIHkxPVwiMjkuNzM0XCIgeDI9XCIxNi43ODdcIiB5Mj1cIjI5LjczNFwiIHhsaW5rOmhyZWY9XCIjYVwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCIxNS4yNzdcIiB5MT1cIjI5Ljg4MVwiIHgyPVwiMTYuNjg4XCIgeTI9XCIyOS44ODFcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAzNFwiIHN0b3AtY29sb3I9XCIjOWI5Yjk4XCIvPjxzdG9wIG9mZnNldD1cIjAuMTMxXCIgc3RvcC1jb2xvcj1cIiNhNGE1YTdcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMTlcIiBzdG9wLWNvbG9yPVwiI2FlYjFiOFwiLz48c3RvcCBvZmZzZXQ9XCIwLjM1MlwiIHN0b3AtY29sb3I9XCIjOWZhNGFiXCIvPjxzdG9wIG9mZnNldD1cIjAuNjA1XCIgc3RvcC1jb2xvcj1cIiM3ODgxODhcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MTlcIiBzdG9wLWNvbG9yPVwiIzY1NzA3NlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM4Yjk0OWFcIi8+PC9saW5lYXJHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJkXCIgY3g9XCItOC40NTZcIiBjeT1cIi0xNi42MTZcIiByPVwiMTkuMzgzXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMzQuMDQyIDM3LjA2Mykgc2NhbGUoMS4wNTQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wMzRcIiBzdG9wLWNvbG9yPVwiIzcwNzA2ZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjExMlwiIHN0b3AtY29sb3I9XCIjNjE2MjYxXCIvPjxzdG9wIG9mZnNldD1cIjAuMjE5XCIgc3RvcC1jb2xvcj1cIiM0NjQ3NGFcIi8+PHN0b3Agb2Zmc2V0PVwiMC40MDhcIiBzdG9wLWNvbG9yPVwiIzQ4NDk0Y1wiLz48c3RvcCBvZmZzZXQ9XCIwLjQ4N1wiIHN0b3AtY29sb3I9XCIjNGU1MDUzXCIvPjxzdG9wIG9mZnNldD1cIjAuNTQ0XCIgc3RvcC1jb2xvcj1cIiM1YTVjNWZcIi8+PHN0b3Agb2Zmc2V0PVwiMC41OTJcIiBzdG9wLWNvbG9yPVwiIzZhNmU3MVwiLz48c3RvcCBvZmZzZXQ9XCIwLjYzM1wiIHN0b3AtY29sb3I9XCIjN2Y4NTg4XCIvPjxzdG9wIG9mZnNldD1cIjAuNjY3XCIgc3RvcC1jb2xvcj1cIiM5NzllYTFcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MTlcIiBzdG9wLWNvbG9yPVwiIzNkNDQ0N1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM2NTZjNzBcIi8+PC9yYWRpYWxHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJlXCIgeDE9XCIxNi4xMjZcIiB5MT1cIjI4LjEwOFwiIHgyPVwiMTYuMDVcIiB5Mj1cIjI2Ljg5M1wiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDM0XCIgc3RvcC1jb2xvcj1cIiM5YjliOThcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xMDlcIiBzdG9wLWNvbG9yPVwiI2E1YTZhN1wiLz48c3RvcCBvZmZzZXQ9XCIwLjIxOVwiIHN0b3AtY29sb3I9XCIjYmFiY2M0XCIvPjxzdG9wIG9mZnNldD1cIjAuMzExXCIgc3RvcC1jb2xvcj1cIiNhYmFlYjVcIi8+PHN0b3Agb2Zmc2V0PVwiMC40ODdcIiBzdG9wLWNvbG9yPVwiIzg0ODk4ZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjcxOVwiIHN0b3AtY29sb3I9XCIjNDg1MDU0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzhiOTQ5YVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImZcIiB4MT1cIjE2LjAxM1wiIHkxPVwiMjYuNTQyXCIgeDI9XCIxNS44OTVcIiB5Mj1cIjI0LjYzNVwiIHhsaW5rOmhyZWY9XCIjZVwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJnXCIgeDE9XCIxNi4wMjNcIiB5MT1cIjI1LjU0NlwiIHgyPVwiMTUuODg3XCIgeTI9XCIyMy4zNTVcIiB4bGluazpocmVmPVwiI2VcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiaFwiIHgxPVwiMTYuMDEzXCIgeTE9XCIyNy42MjdcIiB4Mj1cIjE1Ljg5NVwiIHkyPVwiMjUuNzJcIiB4bGluazpocmVmPVwiI2VcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwialwiIHgxPVwiMTMuNjhcIiB5MT1cIjI4LjgwNVwiIHgyPVwiMTguMjg0XCIgeTI9XCIyOC44MDVcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAzNFwiIHN0b3AtY29sb3I9XCIjNTQ1NDUzXCIvPjxzdG9wIG9mZnNldD1cIjAuMDcxXCIgc3RvcC1jb2xvcj1cIiM2MTYyNjJcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xNDNcIiBzdG9wLWNvbG9yPVwiIzg0ODU4OVwiLz48c3RvcCBvZmZzZXQ9XCIwLjIxOVwiIHN0b3AtY29sb3I9XCIjYWViMWI4XCIvPjxzdG9wIG9mZnNldD1cIjAuMzUyXCIgc3RvcC1jb2xvcj1cIiM5ZmE0YWJcIi8+PHN0b3Agb2Zmc2V0PVwiMC42MDVcIiBzdG9wLWNvbG9yPVwiIzc4ODE4OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjcxOVwiIHN0b3AtY29sb3I9XCIjNjU3MDc2XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzUwNTY1OVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImtcIiB4MT1cIjEyLjE1OVwiIHkxPVwiMjUuODEzXCIgeDI9XCIxOS40NzVcIiB5Mj1cIjI1LjgxM1wiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2U1ZTFkZlwiLz48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNkZGRhZDZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wMzhcIiBzdG9wLWNvbG9yPVwiI2NlY2NjOVwiLz48c3RvcCBvZmZzZXQ9XCIwLjExMlwiIHN0b3AtY29sb3I9XCIjYTdhOWE4XCIvPjxzdG9wIG9mZnNldD1cIjAuMjEyXCIgc3RvcC1jb2xvcj1cIiM2OTcwNzJcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yNjRcIiBzdG9wLWNvbG9yPVwiIzQ2NTA1NFwiLz48c3RvcCBvZmZzZXQ9XCIwLjMwM1wiIHN0b3AtY29sb3I9XCIjNjM2YzZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMzk4XCIgc3RvcC1jb2xvcj1cIiNhNWFhYWNcIi8+PHN0b3Agb2Zmc2V0PVwiMC40NzhcIiBzdG9wLWNvbG9yPVwiI2Q1ZDdkOVwiLz48c3RvcCBvZmZzZXQ9XCIwLjUzOVwiIHN0b3AtY29sb3I9XCIjZjNmNGY1XCIvPjxzdG9wIG9mZnNldD1cIjAuNTczXCIgc3RvcC1jb2xvcj1cIiNmZWZlZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC42MlwiIHN0b3AtY29sb3I9XCIjZjRmNWY2XCIvPjxzdG9wIG9mZnNldD1cIjAuNjk5XCIgc3RvcC1jb2xvcj1cIiNkYWRjZGZcIi8+PHN0b3Agb2Zmc2V0PVwiMC44XCIgc3RvcC1jb2xvcj1cIiNiMGI0YjlcIi8+PHN0b3Agb2Zmc2V0PVwiMC44NzZcIiBzdG9wLWNvbG9yPVwiIzhiOTI5OFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNkMWQzZDRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTdhOWFjXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwibFwiIHgxPVwiMTIuMTU5XCIgeTE9XCIyNC43MjhcIiB4Mj1cIjE5LjQ3NVwiIHkyPVwiMjQuNzI4XCIgeGxpbms6aHJlZj1cIiNrXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cIm1cIiB4MT1cIjEyLjE1OVwiIHkxPVwiMjMuNTQ4XCIgeDI9XCIxOS40NzVcIiB5Mj1cIjIzLjU0OFwiIHhsaW5rOmhyZWY9XCIja1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJuXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjI2Ljg5OFwiIHgyPVwiMTkuNDc1XCIgeTI9XCIyNi44OThcIiB4bGluazpocmVmPVwiI2tcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwib1wiIHgxPVwiMTIuMTU5XCIgeTE9XCIyNS45NjdcIiB4Mj1cIjE5LjQ3NVwiIHkyPVwiMjUuOTY3XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZTVlMWRmXCIvPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2RkZThkMFwiLz48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNkMmYzYmFcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wMzZcIiBzdG9wLWNvbG9yPVwiI2M1ZTRiMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjEwNVwiIHN0b3AtY29sb3I9XCIjYTRiZDk4XCIvPjxzdG9wIG9mZnNldD1cIjAuMTk5XCIgc3RvcC1jb2xvcj1cIiM2ZTdmNzFcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yNjRcIiBzdG9wLWNvbG9yPVwiIzQ2NTA1NFwiLz48c3RvcCBvZmZzZXQ9XCIwLjMwM1wiIHN0b3AtY29sb3I9XCIjNjM2YzZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMzk4XCIgc3RvcC1jb2xvcj1cIiNhNWFhYWNcIi8+PHN0b3Agb2Zmc2V0PVwiMC40NzhcIiBzdG9wLWNvbG9yPVwiI2Q1ZDdkOVwiLz48c3RvcCBvZmZzZXQ9XCIwLjUzOVwiIHN0b3AtY29sb3I9XCIjZjNmNGY1XCIvPjxzdG9wIG9mZnNldD1cIjAuNTczXCIgc3RvcC1jb2xvcj1cIiNmZWZlZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMC42MlwiIHN0b3AtY29sb3I9XCIjZjRmNWY2XCIvPjxzdG9wIG9mZnNldD1cIjAuNjk5XCIgc3RvcC1jb2xvcj1cIiNkYWRjZGZcIi8+PHN0b3Agb2Zmc2V0PVwiMC44XCIgc3RvcC1jb2xvcj1cIiNiMGI0YjlcIi8+PHN0b3Agb2Zmc2V0PVwiMC44NzZcIiBzdG9wLWNvbG9yPVwiIzhiOTI5OFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNkMWQzZDRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTdhOWFjXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwicFwiIHgxPVwiMTIuMTU5XCIgeTE9XCIyNC44ODNcIiB4Mj1cIjE5LjQ3NVwiIHkyPVwiMjQuODgzXCIgeGxpbms6aHJlZj1cIiNvXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cInFcIiB4MT1cIjEyLjE1OVwiIHkxPVwiMjcuMDVcIiB4Mj1cIjE5LjQ3NVwiIHkyPVwiMjcuMDVcIiB4bGluazpocmVmPVwiI29cIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiclwiIHgxPVwiMTEuOTAyXCIgeTE9XCIyMy4yMDFcIiB4Mj1cIjE5Ljg4NFwiIHkyPVwiMjMuMjAxXCIgeGxpbms6aHJlZj1cIiNlXCIvPjxyYWRpYWxHcmFkaWVudCBpZD1cInNcIiBjeD1cIi0xNi45ODNcIiBjeT1cIi0yMi45NDhcIiByPVwiMTAuNzE4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMzQuMDQyIDM3LjA2Mykgc2NhbGUoMS4wNTQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmZmQxXCIvPjxzdG9wIG9mZnNldD1cIjAuNTA1XCIgc3RvcC1jb2xvcj1cIiNmZjBcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NjhcIiBzdG9wLWNvbG9yPVwiI2ZkZjcwMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjY2NFwiIHN0b3AtY29sb3I9XCIjZjZlMjAwXCIvPjxzdG9wIG9mZnNldD1cIjAuNzgyXCIgc3RvcC1jb2xvcj1cIiNlYmJmMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45MDZcIiBzdG9wLWNvbG9yPVwiI2RlOTIwMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNkYTk4MTlcIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9zbWFydHk8L3RpdGxlPjxwYXRoIGQ9XCJNMTMuODU5LDI4Ljc3NmEuMjQyLjI0MiwwLDAsMCwuMTI4LjE5MSwxMiwxMiwwLDAsMCwxLjM5Mi42MjIsNC4zLDQuMywwLDAsMCwuNTc4LjA3MmguMDUyYTQuMyw0LjMsMCwwLDAsLjU3OC0uMDcyLDEyLjAxNCwxMi4wMTQsMCwwLDAsMS4zOTItLjYyMi4yNDMuMjQzLDAsMCwwLC4xMjgtLjE5MWwtMi4xMzcuMTkyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTYuMDE0LDMwYTEuMTIzLDEuMTIzLDAsMCwwLC42ODgtLjI0Ny4xNzUuMTc1LDAsMCwwLC4wODUtLjEyNnYtLjEwNWEzLjIzNSwzLjIzNSwwLDAsMC0uNzczLS4wNTNoLS4wNjNhMy4yMzcsMy4yMzcsMCwwLDAtLjc3My4wNTN2LjEwNWEuMTc1LjE3NSwwLDAsMCwuMDg1LjEyNiwxLjEyMiwxLjEyMiwwLDAsMCwuNjg4LjI0N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTE1Ljk1MSwyOS44MDdhNC43MzIsNC43MzIsMCwwLDEtLjY3NC0uMDQ0LDEuMTA1LDEuMTA1LDAsMCwwLC42NzQuMjM3aC4wNjNhMS4xMDYsMS4xMDYsMCwwLDAsLjY3NS0uMjM3LDQuNzMzLDQuNzMzLDAsMCwxLS42NzUuMDQ0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNMTkuODA5LDI2LjgzOGExLDEsMCwwLDAtLjIzNC4zODljLS4wMzYuMTgxLS4xLjU4NS0xLjMyNiwxLjQwNmwtLjAyNS4wMTdhLjQzNS40MzUsMCwwLDEtLjA4Ni4wMzcsOS45NjgsOS45NjgsMCwwLDEtMi4xNTUuMjA5LDkuOTY4LDkuOTY4LDAsMCwxLTIuMTU2LS4yMDkuNDM2LjQzNiwwLDAsMS0uMDg1LS4wMzZsLS4wMjUtLjAxN2E0LjU3OSw0LjU3OSwwLDAsMS0xLjEyLS45NTdjLS4xNjQtLjIxOS0uMzczLS4yNTctLjM5LS4zNDVhMjEuMDU1LDIxLjA1NSwwLDAsMCwzLjg1NS4wNTcsMTMuMDQ5LDEzLjA0OSwwLDAsMCwzLjc2MS0uNjU0QS42OTIuNjkyLDAsMCwxLDE5LjgwOSwyNi44MzhaXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0xOS43NzIsMjYuODhhLjk4NS45ODUsMCwwLDEtLjI0Ni4xMjljLS4wNzYuMDI4LS4yNDUuMDc4LS4yNDUuMDc4YTI1LjE1LDI1LjE1LDAsMCwxLTYuNDU4LjQzNmMtLjEzNi0uMDA5LS4zMi0uMDI4LS4zMi0uMDI4YTEuMDYyLDEuMDYyLDAsMCwxLS4xNC0uMDI4LDEuMDE2LDEuMDE2LDAsMCwxLC4xNC4xMDdjLjE2LjAxMy4zMTkuMDE5LjMxOS4wMTlhMjYuODY0LDI2Ljg2NCwwLDAsMCw2Ljc0My0uMzIzbC4wMDktLjA0MkEuODg1Ljg4NSwwLDAsMSwxOS43NzIsMjYuODhaXCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBhdGggZD1cIk0xOS40MzksMjUuMzgycy4yNDUtLjA3LjI0NS0uMTYyYS4xMTQuMTE0LDAsMCwwLS4wMTMtLjA2NS4yMTQuMjE0LDAsMCwxLS4wNjEtLjE0NC40MzcuNDM3LDAsMCwxLC4xMTktLjI3LDEuMDY5LDEuMDY5LDAsMCwxLS4yLjFjLS4wNzYuMDI4LS4yNDUuMDc4LS4yNDUuMDc4YTI1LjE1MSwyNS4xNTEsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjhhMS4wNTUsMS4wNTUsMCwwLDEtLjE4MS0uMDQxLjM3Ny4zNzcsMCwwLDEsLjA3OC4yMTcuNzE2LjcxNiwwLDAsMS0uMjU0LjQzMi42NzMuNjczLDAsMCwxLC4zNjgtLjA3OUEyNi4yLDI2LjIsMCwwLDAsMTkuNDM5LDI1LjM4MlpcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48cGF0aCBkPVwiTTE5LjQzOSwyNC4yMjlzLjI0NS0uMDc4LjI0NS0uMTgyYS4xNDMuMTQzLDAsMCwwLS4wMTMtLjA3My4yNTQuMjU0LDAsMCwxLS4wNjEtLjE2Mi41MTQuNTE0LDAsMCwxLC4xMTktLjMsMS4wMjYsMS4wMjYsMCwwLDEtLjIuMTExYy0uMDc2LjAzMi0uMjQ1LjA4OC0uMjQ1LjA4OGEyMi41MDcsMjIuNTA3LDAsMCwxLTYuNDU4LjQ4OWMtLjEzNi0uMDEtLjMyLS4wMzItLjMyLS4wMzJhLjk1My45NTMsMCwwLDEtLjE4MS0uMDQ2LjQ1NS40NTUsMCwwLDEsLjA3OC4yNDMuODI1LjgyNSwwLDAsMS0uMjU0LjQ4NC42MTQuNjE0LDAsMCwxLC4zNjgtLjA4OUMxMy4wMTQsMjQuNzU4LDE2LjkzNSwyNS4wNDEsMTkuNDM5LDI0LjIyOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNnKVwiLz48cGF0aCBkPVwiTTE5LjQzOSwyNi40NjdzLjI0NS0uMDcuMjQ1LS4xNjNhLjExNS4xMTUsMCwwLDAtLjAxMy0uMDY1LjIxNC4yMTQsMCwwLDEtLjA2MS0uMTQ0LjQzNS40MzUsMCwwLDEsLjExOS0uMjcsMS4wNywxLjA3LDAsMCwxLS4yLjFjLS4wNzYuMDI4LS4yNDUuMDc4LS4yNDUuMDc4YTI1LjE2MiwyNS4xNjIsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjhhMS4wNDIsMS4wNDIsMCwwLDEtLjE4MS0uMDQxLjM3Ny4zNzcsMCwwLDEsLjA3OC4yMTcuNzE3LjcxNywwLDAsMS0uMjU0LjQzMi42Ny42NywwLDAsMSwuMzY4LS4wNzlBMjYuMjA3LDI2LjIwNywwLDAsMCwxOS40MzksMjYuNDY3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2gpXCIvPjxwYXRoIGQ9XCJNMTkuNDM5LDI2LjQ2N3MuMjQ1LS4wNy4yNDUtLjE2M2EuMTE1LjExNSwwLDAsMC0uMDEzLS4wNjUuMjE0LjIxNCwwLDAsMS0uMDYxLS4xNDQuNDM1LjQzNSwwLDAsMSwuMTE5LS4yNywxLjA3LDEuMDcsMCwwLDEtLjIuMWMtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTY4LDI1LjE2OCwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOGExLjA0MiwxLjA0MiwwLDAsMS0uMTgxLS4wNDEuMzc2LjM3NiwwLDAsMSwuMDc4LjIxNy43MTcuNzE3LDAsMCwxLS4yNTQuNDMyLjY3LjY3LDAsMCwxLC4zNjgtLjA3OUEyNi4yMDcsMjYuMjA3LDAsMCwwLDE5LjQzOSwyNi40NjdaXCIgc3R5bGU9XCJmaWxsOnVybCgjaClcIi8+PHBhdGggZD1cIk0xOC4yMjQsMjguNjVhLjQzNS40MzUsMCwwLDEtLjA4Ni4wMzcsOS45NjgsOS45NjgsMCwwLDEtMi4xNTUuMjA5LDkuOTY4LDkuOTY4LDAsMCwxLTIuMTU2LS4yMDkuNDM2LjQzNiwwLDAsMS0uMDg1LS4wMzZsLS4wMjUtLjAxNy0uMDI5LS4wMTlhLjExMi4xMTIsMCwwLDAsMCwuMDczYy4wMjQuMDczLjE0Ny4xLjE0Ny4xYTkuOTQzLDkuOTQzLDAsMCwwLDIuMTUuMjA5LDkuOTQyLDkuOTQyLDAsMCwwLDIuMTUtLjIwOXMuMTI2LS4wMjkuMTQ3LS4xYS4xMTguMTE4LDAsMCwwLDAtLjA3M2wtLjAyOS4wMTlaXCIgc3R5bGU9XCJmaWxsOnVybCgjailcIi8+PHBhdGggZD1cIk0xOS45NDQsMjUuNXMuMDQxLjI1Mi0uNDE4LjQyM2MtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTYyLDI1LjE2MiwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOC0uMjc2LS4wMzgtLjQ2Ny0uMTYtLjQ1NS0uMzA4LDAsMC0uMDMzLS4yNDkuNDY2LS4yNDlhMjYuMiwyNi4yLDAsMCwwLDYuOTI1LS40NzJzLjI0NS0uMDcuMjQ1LS4xNjJhLjExMS4xMTEsMCwwLDAtLjAxMy0uMDY2UzE5Ljk0NCwyNS4zMTIsMTkuOTQ0LDI1LjVaXCIgc3R5bGU9XCJmaWxsOnVybCgjaylcIi8+PHBhdGggZD1cIk0xOS45NDQsMjQuNDE2cy4wNDEuMjUyLS40MTguNDIzYy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNTEsMjUuMTUxLDAsMCwxLTYuNDU4LjQzNmMtLjEzNi0uMDA5LS4zMi0uMDI4LS4zMi0uMDI4LS4yNzYtLjAzOC0uNDY3LS4xNi0uNDU1LS4zMDgsMCwwLS4wMzMtLjI0OC40NjYtLjI0OGEyNi4xOTMsMjYuMTkzLDAsMCwwLDYuOTI1LS40NzJzLjI0NS0uMDcuMjQ1LS4xNjJhLjExLjExLDAsMCwwLS4wMTMtLjA2NVMxOS45NDQsMjQuMjI3LDE5Ljk0NCwyNC40MTZaXCIgc3R5bGU9XCJmaWxsOnVybCgjbClcIi8+PHBhdGggZD1cIk0xOS44OTMsMjQuNDA2di0uMDIxYy0uMDEyLjA3Ni0uMDc4LjIzNi0uNDE3LjM1NS0uMDc2LjAyNi0uMjQ1LjA3My0uMjQ1LjA3M2EyMi4zNzIsMjIuMzcyLDAsMCwxLTUuMS41aDBhMjIuMTU1LDIyLjE1NSwwLDAsMCw1LjEtLjQ0MXMuMTY5LS4wNDcuMjQ1LS4wNzNDMTkuOTMzLDI0LjY0MywxOS44OTMsMjQuNDA2LDE5Ljg5MywyNC40MDZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xOS44OTMsMjUuNDkxVjI1LjQ3Yy0uMDEyLjA3Ni0uMDc4LjIzNi0uNDE3LjM1NS0uMDc2LjAyNy0uMjQ1LjA3My0uMjQ1LjA3M2EyMi4zOCwyMi4zOCwwLDAsMS01LjEuNWgwYTIyLjE3MSwyMi4xNzEsMCwwLDAsNS4xLS40NDFzLjE2OS0uMDQ3LjI0NS0uMDczQzE5LjkzMywyNS43MjgsMTkuODkzLDI1LjQ5MSwxOS44OTMsMjUuNDkxWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTkuOTQ0LDIzLjAzNHMuMDQxLjMyOS0uNDE4LjU1MmMtLjA3Ni4wMzctLjI0NS4xLS4yNDUuMWExOS40MDksMTkuNDA5LDAsMCwxLTYuNDU4LjU2OWMtLjEzNi0uMDEyLS4zMi0uMDM3LS4zMi0uMDM3LS4yNzYtLjA1LS40NjctLjIwOS0uNDU1LS40LDAsMC0uMDMzLS4zMjQuNDY2LS4zMjRhMTguMjgzLDE4LjI4MywwLDAsMCw2LjkyNS0uNDYxLDEuMDE0LDEuMDE0LDAsMCwwLC40NDQtLjIzOEEuNTMuNTMsMCwwLDEsMTkuOTQ0LDIzLjAzNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNtKVwiLz48cGF0aCBkPVwiTTE5Ljk0NCwyNi41ODZzLjA0MS4yNTItLjQxOC40MjNjLS4wNzYuMDI4LS4yNDUuMDc4LS4yNDUuMDc4YTI1LjE1LDI1LjE1LDAsMCwxLTYuNDU4LjQzNmMtLjEzNi0uMDA5LS4zMi0uMDI4LS4zMi0uMDI4LS4yNzYtLjAzOC0uNDY3LS4xNi0uNDU1LS4zMDgsMCwwLS4wMzMtLjI0OC40NjYtLjI0OGEyNi4yMDcsMjYuMjA3LDAsMCwwLDYuOTI1LS40NzJzLjI0NS0uMDcuMjQ1LS4xNjNhLjExMS4xMTEsMCwwLDAtLjAxMy0uMDY1UzE5Ljk0NCwyNi40LDE5Ljk0NCwyNi41ODZaXCIgc3R5bGU9XCJmaWxsOnVybCgjbilcIi8+PHBhdGggZD1cIk0xOS44OTMsMjYuNTc2di0uMDIxYy0uMDEyLjA3Ni0uMDc4LjIzNi0uNDE3LjM1NS0uMDc2LjAyNi0uMjQ1LjA3My0uMjQ1LjA3M2EyMi4zNzIsMjIuMzcyLDAsMCwxLTUuMS41aDBhMjIuMTYzLDIyLjE2MywwLDAsMCw1LjEtLjQ0MXMuMTY5LS4wNDcuMjQ1LS4wNzNDMTkuOTMzLDI2LjgxMywxOS44OTMsMjYuNTc2LDE5Ljg5MywyNi41NzZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xOS44OTMsMjMuMzIxVjIzLjNjLS4wMTIuMDc2LS4wNzguMjM2LS40MTcuMzU1LS4wNzYuMDI3LS4yNDUuMDczLS4yNDUuMDczYTIyLjM3MiwyMi4zNzIsMCwwLDEtNS4xLjVoMGEyMi4xNTYsMjIuMTU2LDAsMCwwLDUuMS0uNDQxcy4xNjktLjA0Ny4yNDUtLjA3M0MxOS45MzMsMjMuNTU4LDE5Ljg5MywyMy4zMjEsMTkuODkzLDIzLjMyMVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTEyLjQxNywyNS44ODFzLS4yMzYsMC0uMjQxLjA4LjI0Ni4wODUuMjQ2LjA4NS4xNzUsMCwuMy4wMDVjLjYxOS0uMDEzLDEuOTkzLS4wMzgsMy40MzctLjE2NkMxNC4zODQsMjUuOTU4LDEyLjcyMywyNS44ODMsMTIuNDE3LDI1Ljg4MVpcIiBzdHlsZT1cImZpbGw6dXJsKCNvKVwiLz48cGF0aCBkPVwiTTEyLjQxNywyNC44cy0uMjM2LDAtLjI0MS4wOC4yNDYuMDg1LjI0Ni4wODUuMTc1LDAsLjMuMDA1Yy42MTktLjAxMiwxLjk5My0uMDM4LDMuNDM3LS4xNjZDMTQuMzg0LDI0Ljg3NCwxMi43MjMsMjQuOCwxMi40MTcsMjQuOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNwKVwiLz48cGF0aCBkPVwiTTEyLjQxNywyNi45NjVzLS4yMzYsMC0uMjQxLjA4LjI0Ni4wODUuMjQ2LjA4NS4xNzUsMCwuMy4wMDVjLjYxOS0uMDEyLDEuOTkzLS4wMzgsMy40MzctLjE2NkMxNC4zODQsMjcuMDQyLDEyLjcyMywyNi45NjYsMTIuNDE3LDI2Ljk2NVpcIiBzdHlsZT1cImZpbGw6dXJsKCNxKVwiLz48cGF0aCBkPVwiTTExLjk2NSwyMi43NzlzLS4yNzQuMzE1LjMxOS43MTFjMCwwLDUuNzc1LjU4Nyw3LjYtLjY5NUMxOS44ODQsMjIuNzk1LDEzLjYyMywyMy4zMiwxMS45NjUsMjIuNzc5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI3IpXCIvPjxwYXRoIGQ9XCJNMjAuMDM1LDIyLjc3OWE0LjQ0OSw0LjQ0OSwwLDAsMCwuODEtMS4xNTUsMy4zODYsMy4zODYsMCwwLDAsLjItMS4xMTUsNi43MzMsNi43MzMsMCwwLDEsLjYzMi0yLjkxYy41MzQtMS4wMTQsMi44MS00LjQ0NywyLjgxLTcuNDYyQTguMDEyLDguMDEyLDAsMCwwLDE2LDJhOC4wMTIsOC4wMTIsMCwwLDAtOC40ODMsOC4xMzZjMCwzLjAxNSwyLjI3Niw2LjQ0OCwyLjgxLDcuNDYyYTYuNzMxLDYuNzMxLDAsMCwxLC42MzIsMi45MSwzLjM4NCwzLjM4NCwwLDAsMCwuMiwxLjExNSw0LjQ1Myw0LjQ1MywwLDAsMCwuODEsMS4xNTUsMTMuODY2LDEzLjg2NiwwLDAsMCwzLjk4Ny4zN0ExNS4xNTEsMTUuMTUxLDAsMCwwLDIwLjAzNSwyMi43NzlaXCIgc3R5bGU9XCJmaWxsOnVybCgjcylcIi8+YCxcblx0XCJTb2xpZGl0eSAoRXRoZXJldW0pXCI6IGA8cGF0aCBkPVwiTTIwLjQ3NywybC00LjUsOGgtOWw0LjUtOGg5XCIgc3R5bGU9XCJmaWxsOiNjMWMxYzE7b3BhY2l0eTowLjQ1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTEuNTIsMzBsNC41LThoOWwtNC41LDhoLTlcIiBzdHlsZT1cImZpbGw6I2MxYzFjMTtvcGFjaXR5OjAuNDU7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xNS45NzUsMTBoOWwtNC41LThoLTlaXCIgc3R5bGU9XCJmaWxsOiNjMWMxYzE7b3BhY2l0eTowLjY7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xNi4wMjIsMjJoLTlsNC41LDhoOVpcIiBzdHlsZT1cImZpbGw6I2MxYzFjMTtvcGFjaXR5OjAuNjtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTExLjQ3NywxOGw0LjUtOC00LjUtOC00LjUsOFpcIiBzdHlsZT1cImZpbGw6I2MxYzFjMTtvcGFjaXR5OjAuODtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTIwLjUyLDE0bC00LjUsOCw0LjUsOCw0LjUtOFpcIiBzdHlsZT1cImZpbGw6I2MxYzFjMTtvcGFjaXR5OjAuODtpc29sYXRpb246aXNvbGF0ZVwiLz5gLFxuXHRcIlNvbHV0aW9uIGZpbGVcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE2XCIgeTE9XCItMTgyLjA3MlwiIHgyPVwiMTZcIiB5Mj1cIi0yMDkuOTI4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIC0xODApXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjBcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9zbG48L3RpdGxlPjxwYXRoIGQ9XCJNNi4wNDUsMjMuOTkxYTEuMTY2LDEuMTY2LDAsMCwxLTEuMjA4LjE5MUwyLjcxOCwyMy4zQTEuMTY4LDEuMTY4LDAsMCwxLDIsMjIuMjIyVjkuNzc4QTEuMTY1LDEuMTY1LDAsMCwxLDIuNzE4LDguN2wyLjExOS0uODgzYTEuMTY5LDEuMTY5LDAsMCwxLDEuMjA4LjE5MWwuNDc2LjQwOEEuNjQ2LjY0NiwwLDAsMCw1LjUsOC45NDJWMjMuMDU4YS42NDYuNjQ2LDAsMCwwLDEuMDIxLjUyNVpcIiBzdHlsZT1cImZpbGw6IzUyMjE4YVwiLz48cGF0aCBkPVwiTTIuNzE4LDIzLjNBMS4xNjksMS4xNjksMCwwLDEsMiwyMi4yMjJ2LS4xYS42NzQuNjc0LDAsMCwwLDEuMTc0LjQ1MkwyMS4yNSwyLjU4M2ExLjc0MywxLjc0MywwLDAsMSwxLjk5LS4zMzhsNS43NjksMi43NzhBMS43NDksMS43NDksMCwwLDEsMzAsNi42di4wNjdhMS4xLDEuMSwwLDAsMC0xLjgtLjg1NEw2LjUyMSwyMy41ODNsLS40NzYuNDA4YTEuMTY2LDEuMTY2LDAsMCwxLTEuMjA4LjE5MVpcIiBzdHlsZT1cImZpbGw6IzZjMzNhZlwiLz48cGF0aCBkPVwiTTIuNzE4LDguN0ExLjE2OCwxLjE2OCwwLDAsMCwyLDkuNzc4di4xYS42NzQuNjc0LDAsMCwxLDEuMTc0LS40NTJMMjEuMjUsMjkuNDE2YTEuNzQzLDEuNzQzLDAsMCwwLDEuOTkuMzM4bDUuNzY5LTIuNzc4QTEuNzQ3LDEuNzQ3LDAsMCwwLDMwLDI1LjR2LS4wNjhhMS4xLDEuMSwwLDAsMS0xLjguODU1TDYuNTIxLDguNDE3bC0uNDc2LS40MDhhMS4xNjYsMS4xNjYsMCwwLDAtMS4yMDgtLjE5MVpcIiBzdHlsZT1cImZpbGw6Izg1NGNjN1wiLz48cGF0aCBkPVwiTTIzLjI0LDI5Ljc1NWExLjc0MywxLjc0MywwLDAsMS0xLjk5LS4zMzhBMS4wMjUsMS4wMjUsMCwwLDAsMjMsMjguNjkyVjMuMzA4YTEuMDI1LDEuMDI1LDAsMCwwLTEuNzUtLjcyNSwxLjc0MywxLjc0MywwLDAsMSwxLjk5LS4zMzhsNS43NjgsMi43NzRBMS43NDksMS43NDksMCwwLDEsMzAsNi42VjI1LjQwNWExLjc1MSwxLjc1MSwwLDAsMS0uOTkxLDEuNTc3WlwiIHN0eWxlPVwiZmlsbDojYjE3OWYxXCIvPjxnIHN0eWxlPVwib3BhY2l0eTowLjI1XCI+PHBhdGggZD1cIk0yMi4wOTMsMjkuODgzYTEuNzQsMS43NCwwLDAsMCwxLjE0Ny0uMTI4bDUuNzY4LTIuNzc0QTEuNzQ5LDEuNzQ5LDAsMCwwLDMwLDI1LjRWNi42YTEuNzUsMS43NSwwLDAsMC0uOTkyLTEuNTc3TDIzLjI0LDIuMjQ1YTEuNzQyLDEuNzQyLDAsMCwwLTEuOTkuMzM5bC05LjMsMTAuMjg0TDYuNTIxLDguNDE2bC0uNDc2LS40MDhhMS4xNjgsMS4xNjgsMCwwLDAtMS4yMDctLjE5MUwyLjcxOSw4LjdBMS4xNjcsMS4xNjcsMCwwLDAsMiw5LjY4OWMwLC4wMjksMCwuMDU5LDAsLjA4OFYyMi4yMjFjMCwuMDMsMCwuMDU5LDAsLjA4OGExLjE2NywxLjE2NywwLDAsMCwuNzE1Ljk4OWwyLjExOS44ODNhMS4yMjYsMS4yMjYsMCwwLDAsLjE1NS4wNTIsMS4xNjUsMS4xNjUsMCwwLDAsMS4wNTItLjI0M2wuNDc2LS40MDgsNS40My00LjQ1Miw5LjMsMTAuMjg1QTEuNzMzLDEuNzMzLDAsMCwwLDIyLjA5MywyOS44ODNaTTIzLDEwLjA3MiwxNS43NywxNiwyMywyMS45MjdaTTUuNSwxMmwzLjYxOSw0TDUuNSwyMFpcIiBzdHlsZT1cImZpbGwtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNhKVwiLz48L2c+YCxcblx0XCJTUEFSUUxcIjogYDxwYXRoIGQ9XCJNMjYuMjg0LDIwLjM2MWMtLjE2NS0uMDg0LS4zNTktLjE2NC0uNTIzLS4yNDhIMjUuOXMtMS4xNTgtLjUtMS4yNC00LjE3NmMtLjExMS0zLjY1NSwxLjEtNC4yODksMS4xLTQuMjg5YTQuOTYsNC45NiwwLDAsMCwyLjE3Ni0yLjE0Myw1LjEyMiw1LjEyMiwwLDAsMC0yLjEyMi02LjkyNyw1LjM0Miw1LjM0MiwwLDAsMC03LjEzOCwyLjE0Niw1LjA2Nyw1LjA2NywwLDAsMC0uNTIzLDMuMjE0TDE4LjEsNy44NTVzLjMsMS4zMTktMi44MzksMy4yNzJjLTMuMTE1LDEuOTUtNC41NDkuOTYyLTQuNTQ5Ljk2MmwuMDgyLjEzOGEyLjEzMSwyLjEzMSwwLDAsMC0uMjczLS4xNjcsNS4xMTcsNS4xMTcsMCwxLDAsLjgyNSw4LjUybC0uMDI1LjA1NXMxLjEyOS0uOTMzLDQuNDA3LjgyN2MyLjU5MiwxLjM3NCwyLjk3OSwyLjc0OCwzLjAzMywzLjI0YTUuMSw1LjEsMCwwLDAsMi43LDQuNyw1LjEyNCw1LjEyNCwwLDEsMCw0LjgyNS05LjA0MVptLTUuNzkuNjg1Yy0uNDEyLjEzOC0xLjYuMy00LjA3Ny0xLjAxNy0yLjctMS40NTQtMy4xMTUtMi42NjQtMy4xNjktMy4wMjFhNS40MDYsNS40MDYsMCwwLDAtLjA1Ny0xLjMxOWwuMDI5LjAyNlMxMywxNC41MzQsMTYuMDg0LDEyLjYzOWMyLjc1Ny0xLjcwNSw0LjAyNi0xLjM3NCw0LjI0NS0xLjI5M2EyLjgzLDIuODMsMCwwLDAsLjQ3LjI3Nyw0LjA4Miw0LjA4MiwwLDAsMCwuOTY0LjM4M2MuMzg3LjM1NywxLjA3NiwxLjM3NCwxLjE1OCw0LjFzLS43MTcsMy43NjQtMS4xNTgsNC4xMjFBNS4wNCw1LjA0LDAsMCwwLDIwLjQ5NCwyMS4wNDdaXCIgc3R5bGU9XCJmaWxsOiMwYzQ3OWNcIi8+PHBhdGggZD1cIk0yMC4xMzUsNC4yMjlhMy44NjEsMy44NjEsMCwwLDAtLjA4Miw1LjM4NmMtLjcxNy0uNjg1LS42ODgtMi4xMTcuMDI5LTMuNDYyYS42NzMuNjczLDAsMCwxLC43NDYtLjI3N2MuMDI1LDAsLjA1NC4wMjkuMDgyLjAyOWEuOTkzLjk5MywwLDAsMCwuMjc2LjAyNkExLjA1NiwxLjA1NiwwLDAsMCwyMi4yLDQuODA1YS45MzQuOTM0LDAsMCwwLS4zLS42ODVjMS4zOC0uOTA3LDIuOTUtMS4wMTcsMy42MS0uNDEyaC4wMjlBMy44MjYsMy44MjYsMCwwLDAsMjAuMTM1LDQuMjI5Wk01LjE0NSwxMy44NDZhMy44NTksMy44NTksMCwwLDAtLjA4Miw1LjM4OWMtLjcxNy0uNjg5LS42OTItMi4xMTcuMDI1LTMuNDY1YS42NjguNjY4LDAsMCwxLC43NDYtLjI3M2MuMDI1LDAsLjA1NC4wMjkuMDgyLjAyOWExLDEsMCwwLDAsLjI3Ni4wMjZBMS4wNTYsMS4wNTYsMCwwLDAsNy4yMSwxNC40MjVhLjk0NS45NDUsMCwwLDAtLjMtLjY4OWMxLjM3Ny0uOTA3LDIuOTQ3LTEuMDE3LDMuNjEtLjQxMmguMDI1QTMuODUyLDMuODUyLDAsMCwwLDUuMTQ1LDEzLjg0NlptMTUuODcyLDguMTYzYTMuODY1LDMuODY1LDAsMCwwLS4wODIsNS4zODljLS43MTctLjY4OS0uNjg4LTIuMTE3LjAyOS0zLjQ2NWEuNjY4LjY2OCwwLDAsMSwuNzQ2LS4yNzNjLjAyNSwwLC4wNTQuMDI2LjA4Mi4wMjZhLjg4Ny44ODcsMCwwLDAsLjI3Ni4wMjksMS4wNTcsMS4wNTcsMCwwLDAsMS4wMTgtMS4xMjYuOTM2LjkzNiwwLDAsMC0uMy0uNjg5YzEuMzgtLjkwNywyLjk1LTEuMDE3LDMuNjEtLjQxMmguMDI5QTMuODI5LDMuODI5LDAsMCwwLDIxLjAxNywyMi4wMDlaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJTUUZcIjogYDxwYXRoIGQ9XCJNMjUsMjMuNUg3YTUuMDE1LDUuMDE1LDAsMCwxLTUtNXYtNmE1LjAxNSw1LjAxNSwwLDAsMSw1LTVIMjVhNS4wMTUsNS4wMTUsMCwwLDEsNSw1djZhNS4wMTUsNS4wMTUsMCwwLDEtNSw1WlwiLz48cGF0aCBkPVwiTTcsMTkuNDYxYTQuODEsNC44MSwwLDAsMS0xLjQxNC0uMiw1LjA1Miw1LjA1MiwwLDAsMS0xLjExMS0uNDcybC0uNC40MzJoLS41TDMuNSwxNi4wNTJINGE4LjQ2Miw4LjQ2MiwwLDAsMCwuNDMxLjk1Myw0LjYzOCw0LjYzOCwwLDAsMCwuNjA2LjksMy4xNzcsMy4xNzcsMCwwLDAsLjguNjc1LDEuOTg1LDEuOTg1LDAsMCwwLDEuMDI5LjI2LDEuNjcyLDEuNjcyLDAsMCwwLDEuMjE2LS40MTFBMS4zODIsMS4zODIsMCwwLDAsOC41LDE3LjM5MWExLjE1NiwxLjE1NiwwLDAsMC0uMzU5LS44NjIsMi45NDUsMi45NDUsMCwwLDAtMS4xMTEtLjZxLS40OS0uMTY3LS45LS4zMXQtLjc3My0uMjkyYTIuNTgsMi41OCwwLDAsMS0xLjIzOS0xLjAwNywyLjczLDIuNzMsMCwwLDEtLjQwNS0xLjQ2NSwyLjQwNiwyLjQwNiwwLDAsMSwuMjEtLjk4NiwyLjYwOCwyLjYwOCwwLDAsMSwuNjEyLS44NSwyLjk2NywyLjk2NywwLDAsMSwuOTg1LS41NzUsMy43MjIsMy43MjIsMCwwLDEsMS4zMDYtLjIyMywzLjk4NCwzLjk4NCwwLDAsMSwxLjI4OC4yLDUuMTUxLDUuMTUxLDAsMCwxLC45NDQuNDA4bC4zNTYtLjM3aC41MDdsLjA0NywyLjk4OGgtLjVxLS4xNzUtLjQ4My0uNDExLS45ODdhNC4zMzIsNC4zMzIsMCwwLDAtLjUtLjgzOSwyLjMsMi4zLDAsMCwwLS42NTktLjU3MywxLjcyOSwxLjcyOSwwLDAsMC0uODc1LS4yMTRBMS40MzcsMS40MzcsMCwwLDAsNiwxMS4yMTJhMS4yMzMsMS4yMzMsMCwwLDAtLjQuOTM0LDEuMTQxLDEuMTQxLDAsMCwwLC4zNDcuODYsMi45NTEsMi45NTEsMCwwLDAsMS4wODIuNTg4cS40MzEuMTU0Ljg4LjMwOXQuOC4zYTIuODg1LDIuODg1LDAsMCwxLDEuMjg2Ljk1NSwyLjUxMiwyLjUxMiwwLDAsMSwuNDQsMS41MTIsMi42MzIsMi42MzIsMCwwLDEtLjkyNywxLjk4NSwzLjM2NywzLjM2NywwLDAsMS0xLjA3OS42QTQuMzkxLDQuMzkxLDAsMCwxLDcsMTkuNDYxWlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMTguOTIxLDExLjQzNGE0LjMzOCw0LjMzOCwwLDAsMSwuOTcxLDEuNDMyLDQuODM0LDQuODM0LDAsMCwxLC4zNTksMS45MTQsNC45NTgsNC45NTgsMCwwLDEtLjcyLDIuNjgsNC4wMzYsNC4wMzYsMCwwLDEtMi4wMzgsMS42NjEsMi4xNTEsMi4xNTEsMCwwLDAsLjQyLDEuMjcyLDEuMTY4LDEuMTY4LDAsMCwwLC45NS41MzcsMy41NjMsMy41NjMsMCwwLDAsLjU5Mi0uMDQzcS4yNTQtLjA0My40NTgtLjF2LjU0M2E1Ljc1Myw1Ljc1MywwLDAsMS0uOTg1LjMsNi4wNTQsNi4wNTQsMCwwLDEtMS4zNy4xNTEsMi4yMDYsMi4yMDYsMCwwLDEtMS42MTItLjYyMSwyLjU3NCwyLjU3NCwwLDAsMS0uNzA4LTEuNzMyQTQuNTc5LDQuNTc5LDAsMCwxLDEzLjcsMTlhNC4xODYsNC4xODYsMCwwLDEtMS4yNTMtLjkzMiw0LjM4OCw0LjM4OCwwLDAsMS0uODQyLTEuMzc3LDQuNzY5LDQuNzY5LDAsMCwxLS4zMTItMS43NTMsNS4yMzcsNS4yMzcsMCwwLDEsLjM0Ny0xLjk0OCw0LjUsNC41LDAsMCwxLC45NTMtMS41LDQuMTE5LDQuMTE5LDAsMCwxLDEuNDI1LS45NDIsNC44Niw0Ljg2LDAsMCwxLDMuNS0uMDA5QTQuMjQ3LDQuMjQ3LDAsMCwxLDE4LjkyMSwxMS40MzRabS0xLjUsNi4yNjZhNC44NTcsNC44NTcsMCwwLDAsLjM3OS0xLjI3Myw5Ljk4MSw5Ljk4MSwwLDAsMCwuMTE3LTEuNjA2LDEwLjUzNCwxMC41MzQsMCwwLDAtLjEtMS40OCw0LjkzNiw0LjkzNiwwLDAsMC0uMzQ3LTEuMjgyLDIuNDEsMi40MSwwLDAsMC0uNjY1LS45LDEuNTcxLDEuNTcxLDAsMCwwLTEuMDMyLS4zNCwxLjczLDEuNzMsMCwwLDAtMS42LDEuMDYsNi42MzQsNi42MzQsMCwwLDAtLjU0OCwyLjk5Myw5LjU4Myw5LjU4MywwLDAsMCwuMTIsMS41NTEsNC44LDQuOCwwLDAsMCwuMzc2LDEuMjczLDIuMjg2LDIuMjg2LDAsMCwwLC42NjUuODU2LDEuNTkxLDEuNTkxLDAsMCwwLC45OTEuMzA2LDEuNjExLDEuNjExLDAsMCwwLC45OTEtLjMwOUEyLjEzNSwyLjEzNSwwLDAsMCwxNy40MjMsMTcuN1pcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTI4LjUsMTIuOGgtLjQ1NWEzLjkzLDMuOTMsMCwwLDAtLjYtMS4wODYsMS4zODUsMS4zODUsMCwwLDAtLjgxMi0uNjNjLS4xMTYtLjAxNi0uMjcyLS4wMzEtLjQ2NS0uMDQzcy0uMzczLS4wMTktLjUzNS0uMDE5SDI0LjM0OXYzLjQzM2guODIyYTEuOTY5LDEuOTY5LDAsMCwwLC42MDYtLjA4MywxLjA1NCwxLjA1NCwwLDAsMCwuNDU1LS4zLDEuNTkxLDEuNTkxLDAsMCwwLC4yODMtLjUxNiwyLjYzNSwyLjYzNSwwLDAsMCwuMTY2LS42MjFoLjQ0M3YzLjY4NmgtLjQ0M2EyLjQ3MSwyLjQ3MSwwLDAsMC0uMTgxLS42NzYsMi4wOTQsMi4wOTQsMCwwLDAtLjI2OC0uNTI4LDEuMDEyLDEuMDEyLDAsMCwwLS40MzEtLjI5MywxLjg0MiwxLjg0MiwwLDAsMC0uNjMtLjFoLS44MjJ2Mi45YS44NDIuODQyLDAsMCwwLC4wNzkuMzguNTguNTgsMCwwLDAsLjMuMjU2LDEuODcsMS44NywwLDAsMCwuMzUzLjFxLjIyNC4wNDYuNDQ2LjA3MXYuNDgyaC00LjQ2di0uNDgybC40NDktLjA1MmExLjUyNSwxLjUyNSwwLDAsMCwuMzkxLS4wODMuNTQ3LjU0NywwLDAsMCwuMjkyLS4yNDEuODQyLjg0MiwwLDAsMCwuMDgyLS40di02LjE4YS44NjcuODY3LDAsMCwwLS4wNzMtLjM2Ny41NzUuNTc1LDAsMCwwLS4zLS4yNjIsMi4zNDEsMi4zNDEsMCwwLDAtLjQzMS0uMTM2cS0uMjY4LS4wNjItLjQwOC0uMDh2LS40ODJIMjguNVpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz5gLFxuXHRcIlNRRjogU3RhdHVzIFF1byBGdW5jdGlvbiAoQXJtYSAzKVwiOiBgPHBhdGggZD1cIk0yNSwyMy41SDdhNS4wMTUsNS4wMTUsMCwwLDEtNS01di02YTUuMDE1LDUuMDE1LDAsMCwxLDUtNUgyNWE1LjAxNSw1LjAxNSwwLDAsMSw1LDV2NmE1LjAxNSw1LjAxNSwwLDAsMS01LDVaXCIvPjxwYXRoIGQ9XCJNNywxOS40NjFhNC44MSw0LjgxLDAsMCwxLTEuNDE0LS4yLDUuMDUyLDUuMDUyLDAsMCwxLTEuMTExLS40NzJsLS40LjQzMmgtLjVMMy41LDE2LjA1Mkg0YTguNDYyLDguNDYyLDAsMCwwLC40MzEuOTUzLDQuNjM4LDQuNjM4LDAsMCwwLC42MDYuOSwzLjE3NywzLjE3NywwLDAsMCwuOC42NzUsMS45ODUsMS45ODUsMCwwLDAsMS4wMjkuMjYsMS42NzIsMS42NzIsMCwwLDAsMS4yMTYtLjQxMUExLjM4MiwxLjM4MiwwLDAsMCw4LjUsMTcuMzkxYTEuMTU2LDEuMTU2LDAsMCwwLS4zNTktLjg2MiwyLjk0NSwyLjk0NSwwLDAsMC0xLjExMS0uNnEtLjQ5LS4xNjctLjktLjMxdC0uNzczLS4yOTJhMi41OCwyLjU4LDAsMCwxLTEuMjM5LTEuMDA3LDIuNzMsMi43MywwLDAsMS0uNDA1LTEuNDY1LDIuNDA2LDIuNDA2LDAsMCwxLC4yMS0uOTg2LDIuNjA4LDIuNjA4LDAsMCwxLC42MTItLjg1LDIuOTY3LDIuOTY3LDAsMCwxLC45ODUtLjU3NSwzLjcyMiwzLjcyMiwwLDAsMSwxLjMwNi0uMjIzLDMuOTg0LDMuOTg0LDAsMCwxLDEuMjg4LjIsNS4xNTEsNS4xNTEsMCwwLDEsLjk0NC40MDhsLjM1Ni0uMzdoLjUwN2wuMDQ3LDIuOTg4aC0uNXEtLjE3NS0uNDgzLS40MTEtLjk4N2E0LjMzMiw0LjMzMiwwLDAsMC0uNS0uODM5LDIuMywyLjMsMCwwLDAtLjY1OS0uNTczLDEuNzI5LDEuNzI5LDAsMCwwLS44NzUtLjIxNEExLjQzNywxLjQzNywwLDAsMCw2LDExLjIxMmExLjIzMywxLjIzMywwLDAsMC0uNC45MzQsMS4xNDEsMS4xNDEsMCwwLDAsLjM0Ny44NiwyLjk1MSwyLjk1MSwwLDAsMCwxLjA4Mi41ODhxLjQzMS4xNTQuODguMzA5dC44LjNhMi44ODUsMi44ODUsMCwwLDEsMS4yODYuOTU1LDIuNTEyLDIuNTEyLDAsMCwxLC40NCwxLjUxMiwyLjYzMiwyLjYzMiwwLDAsMS0uOTI3LDEuOTg1LDMuMzY3LDMuMzY3LDAsMCwxLTEuMDc5LjZBNC4zOTEsNC4zOTEsMCwwLDEsNywxOS40NjFaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0xOC45MjEsMTEuNDM0YTQuMzM4LDQuMzM4LDAsMCwxLC45NzEsMS40MzIsNC44MzQsNC44MzQsMCwwLDEsLjM1OSwxLjkxNCw0Ljk1OCw0Ljk1OCwwLDAsMS0uNzIsMi42OCw0LjAzNiw0LjAzNiwwLDAsMS0yLjAzOCwxLjY2MSwyLjE1MSwyLjE1MSwwLDAsMCwuNDIsMS4yNzIsMS4xNjgsMS4xNjgsMCwwLDAsLjk1LjUzNywzLjU2MywzLjU2MywwLDAsMCwuNTkyLS4wNDNxLjI1NC0uMDQzLjQ1OC0uMXYuNTQzYTUuNzUzLDUuNzUzLDAsMCwxLS45ODUuMyw2LjA1NCw2LjA1NCwwLDAsMS0xLjM3LjE1MSwyLjIwNiwyLjIwNiwwLDAsMS0xLjYxMi0uNjIxLDIuNTc0LDIuNTc0LDAsMCwxLS43MDgtMS43MzJBNC41NzksNC41NzksMCwwLDEsMTMuNywxOWE0LjE4Niw0LjE4NiwwLDAsMS0xLjI1My0uOTMyLDQuMzg4LDQuMzg4LDAsMCwxLS44NDItMS4zNzcsNC43NjksNC43NjksMCwwLDEtLjMxMi0xLjc1Myw1LjIzNyw1LjIzNywwLDAsMSwuMzQ3LTEuOTQ4LDQuNSw0LjUsMCwwLDEsLjk1My0xLjUsNC4xMTksNC4xMTksMCwwLDEsMS40MjUtLjk0Miw0Ljg2LDQuODYsMCwwLDEsMy41LS4wMDlBNC4yNDcsNC4yNDcsMCwwLDEsMTguOTIxLDExLjQzNFptLTEuNSw2LjI2NmE0Ljg1Nyw0Ljg1NywwLDAsMCwuMzc5LTEuMjczLDkuOTgxLDkuOTgxLDAsMCwwLC4xMTctMS42MDYsMTAuNTM0LDEwLjUzNCwwLDAsMC0uMS0xLjQ4LDQuOTM2LDQuOTM2LDAsMCwwLS4zNDctMS4yODIsMi40MSwyLjQxLDAsMCwwLS42NjUtLjksMS41NzEsMS41NzEsMCwwLDAtMS4wMzItLjM0LDEuNzMsMS43MywwLDAsMC0xLjYsMS4wNiw2LjYzNCw2LjYzNCwwLDAsMC0uNTQ4LDIuOTkzLDkuNTgzLDkuNTgzLDAsMCwwLC4xMiwxLjU1MSw0LjgsNC44LDAsMCwwLC4zNzYsMS4yNzMsMi4yODYsMi4yODYsMCwwLDAsLjY2NS44NTYsMS41OTEsMS41OTEsMCwwLDAsLjk5MS4zMDYsMS42MTEsMS42MTEsMCwwLDAsLjk5MS0uMzA5QTIuMTM1LDIuMTM1LDAsMCwwLDE3LjQyMywxNy43WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMjguNSwxMi44aC0uNDU1YTMuOTMsMy45MywwLDAsMC0uNi0xLjA4NiwxLjM4NSwxLjM4NSwwLDAsMC0uODEyLS42M2MtLjExNi0uMDE2LS4yNzItLjAzMS0uNDY1LS4wNDNzLS4zNzMtLjAxOS0uNTM1LS4wMTlIMjQuMzQ5djMuNDMzaC44MjJhMS45NjksMS45NjksMCwwLDAsLjYwNi0uMDgzLDEuMDU0LDEuMDU0LDAsMCwwLC40NTUtLjMsMS41OTEsMS41OTEsMCwwLDAsLjI4My0uNTE2LDIuNjM1LDIuNjM1LDAsMCwwLC4xNjYtLjYyMWguNDQzdjMuNjg2aC0uNDQzYTIuNDcxLDIuNDcxLDAsMCwwLS4xODEtLjY3NiwyLjA5NCwyLjA5NCwwLDAsMC0uMjY4LS41MjgsMS4wMTIsMS4wMTIsMCwwLDAtLjQzMS0uMjkzLDEuODQyLDEuODQyLDAsMCwwLS42My0uMWgtLjgyMnYyLjlhLjg0Mi44NDIsMCwwLDAsLjA3OS4zOC41OC41OCwwLDAsMCwuMy4yNTYsMS44NywxLjg3LDAsMCwwLC4zNTMuMXEuMjI0LjA0Ni40NDYuMDcxdi40ODJoLTQuNDZ2LS40ODJsLjQ0OS0uMDUyYTEuNTI1LDEuNTI1LDAsMCwwLC4zOTEtLjA4My41NDcuNTQ3LDAsMCwwLC4yOTItLjI0MS44NDIuODQyLDAsMCwwLC4wODItLjR2LTYuMThhLjg2Ny44NjcsMCwwLDAtLjA3My0uMzY3LjU3NS41NzUsMCwwLDAtLjMtLjI2MiwyLjM0MSwyLjM0MSwwLDAsMC0uNDMxLS4xMzZxLS4yNjgtLjA2Mi0uNDA4LS4wOHYtLjQ4MkgyOC41WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPmAsXG5cdFwiU1FMXCI6IGA8cGF0aCBkPVwiTTguNTYyLDE1LjI1NkEyMS4xNTksMjEuMTU5LDAsMCwwLDE2LDE2LjQ0OWEyMS4xNTksMjEuMTU5LDAsMCwwLDcuNDM4LTEuMTk0YzEuODY0LS43MjcsMi41MjUtMS41MzUsMi41MjUtMlY5LjdhMTAuMzU3LDEwLjM1NywwLDAsMS0yLjA4NCwxLjA3NkEyMi4yOTMsMjIuMjkzLDAsMCwxLDE2LDEyLjA3OGEyMi4zNiwyMi4zNiwwLDAsMS03Ljg3OS0xLjNBMTAuMjgsMTAuMjgsMCwwLDEsNi4wMzcsOS43djMuNTVDNi4wMzcsMTMuNzI0LDYuNywxNC41MjgsOC41NjIsMTUuMjU2WlwiIHN0eWxlPVwiZmlsbDojZmZkYTQ0XCIvPjxwYXRoIGQ9XCJNOC41NjIsMjEuOTYxYTE1LjYxMSwxNS42MTEsMCwwLDAsMi42Ljc0MUEyNC45LDI0LjksMCwwLDAsMTYsMjMuMTU1YTI0LjksMjQuOSwwLDAsMCw0LjgzOC0uNDUyLDE1LjYxNCwxNS42MTQsMCwwLDAsMi42LS43NDFjMS44NjQtLjcyNywyLjUyNS0xLjUzNSwyLjUyNS0ydi0zLjM5YTEwLjcwNiwxMC43MDYsMCwwLDEtMS42OTIuODI1QTIzLjQ5LDIzLjQ5LDAsMCwxLDE2LDE4Ljc0YTIzLjQ5LDIzLjQ5LDAsMCwxLTguMjcxLTEuMzQ4LDEwLjgyOSwxMC44MjksMCwwLDEtMS42OTItLjgyNVYxOS45NkM2LjAzNywyMC40MjYsNi43LDIxLjIzMSw4LjU2MiwyMS45NjFaXCIgc3R5bGU9XCJmaWxsOiNmZmRhNDRcIi8+PHBhdGggZD1cIk0xNiwzMGM1LjUsMCw5Ljk2My0xLjc0NCw5Ljk2My0zLjg5NFYyMy4yNjlhMTAuNSwxMC41LDAsMCwxLTEuNTM1Ljc2MmwtLjE1Ny4wNjNBMjMuNDg3LDIzLjQ4NywwLDAsMSwxNiwyNS40NDVhMjMuNDIyLDIzLjQyMiwwLDAsMS04LjI3MS0xLjM1MWMtLjA1NC0uMDItLjEwNi0uMDQzLS4xNTctLjA2M2ExMC41LDEwLjUsMCwwLDEtMS41MzUtLjc2MnYyLjgzN0M2LjAzNywyOC4yNTYsMTAuNSwzMCwxNiwzMFpcIiBzdHlsZT1cImZpbGw6I2ZmZGE0NFwiLz48ZWxsaXBzZSBjeD1cIjE2XCIgY3k9XCI1Ljg5NFwiIHJ4PVwiOS45NjNcIiByeT1cIjMuODk0XCIgc3R5bGU9XCJmaWxsOiNmZmRhNDRcIi8+YCxcblx0XCJTcXVpcnJlbFwiOiBgPHBhdGggZD1cIk0xMi45NjYsMjcuM2ExOC45MjYsMTguOTI2LDAsMCwxLTUuNzA3LS45MTVjLTEuODMyLS41OTItNC4wNDQtMS41NC00LjkzMS0zLjY0NWEuNTU3LjU1NywwLDAsMS0uMDI1LS4wNzMsMTIuMjE0LDEyLjIxNCwwLDAsMSwuNzYzLTcuNTMxYzEuNTIyLTQuMDA4LDMuNzEtNi43MzksNi41LTguMTE2YTEwLjQyMiwxMC40MjIsMCwwLDEsNy42LS41NSwxMC40MjYsMTAuNDI2LDAsMCwxLDYuMDQsNC42MzksMTEuMDU3LDExLjA1NywwLDAsMSwxLjA1OCwyLjMyNiwxMC42NiwxMC42NiwwLDAsMS01LjM3OCwxMi42ODlsLS4wMi4wMDlBMTQuODMyLDE0LjgzMiwwLDAsMSwxMi45NjYsMjcuM1pcIi8+PHBhdGggZD1cIk0yMi43MiwxMS4zOTNhMTAuMTQ0LDEwLjE0NCwwLDAsMC0xMi45LTMuODY5QzYuNyw5LjA2MSw0Ljc4NCwxMi4yLDMuNTkzLDE1LjMzNGExMS45LDExLjksMCwwLDAtLjc0Niw3LjE4N2MuNzgzLDEuODYsMi43NzksMi43NDQsNC41ODIsMy4zMjdhMTYuMjA2LDE2LjIwNiwwLDAsMCwxMS4yMTMtLjIzMkExMC4xMSwxMC4xMSwwLDAsMCwyMy43MjcsMTMuNiwxMC40ODgsMTAuNDg4LDAsMCwwLDIyLjcyLDExLjM5M1pcIiBzdHlsZT1cImZpbGw6I2EwNWEyY1wiLz48cGF0aCBkPVwiTTE1Ljc4Miw2LjcyQTguMjYzLDguMjYzLDAsMCwxLDE3LjY0LDguMDg0LDkuNjUsOS42NSwwLDAsMSwxOS4wOCw5LjhhOS4zMTcsOS4zMTcsMCwwLDEtMS41MzEsMTEuOTIxQTE0LjkzMywxNC45MzMsMCwwLDEsNy42NTYsMjQuN2E3LjU4MSw3LjU4MSwwLDAsMS00LjEzNS0xLjEsOC40NTQsOC40NTQsMCwwLDAsMy45MDcsMi4yNDEsMTYuMjA4LDE2LjIwOCwwLDAsMCwxMS4yMTQtLjIzM0ExMC4xMTIsMTAuMTEyLDAsMCwwLDIzLjcyNywxMy42YTEwLjQ4NywxMC40ODcsMCwwLDAtMS4wMDctMi4yMTFBOS45NzMsOS45NzMsMCwwLDAsMTUuNzgyLDYuNzJaXCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC4zMTM3MjU1MDEyOTg5MDQ0XCIvPjxwYXRoIGQ9XCJNMjMuNDc2LDEzLjM4OWwtMS4wNjItMi44OTUuMTUyLS4yMzZBNi44NzUsNi44NzUsMCwwLDEsMjcuNTA5LDcuN2EyLjE3NywyLjE3NywwLDAsMSwxLjg3OS41ODgsMy4zNzYsMy4zNzYsMCwwLDEsLjEsMy43MjljLS4zNDMuMjkyLS43NTEuMTI0LTEuMjIyLS4wN2EyLjgyMSwyLjgyMSwwLDAsMC0yLjEzMy0uMjcsMTAuMiwxMC4yLDAsMCwwLTIuMDQ3LDEuMjA5WlwiLz48cGF0aCBkPVwiTTIzLjAzOSwxMC41NjNjMS4yMjMtMS45LDUuMTA3LTIuOTE1LDUuOTEyLTEuOTIzYTIuOTcsMi45NywwLDAsMSwuMTc3LDIuOTQ1Yy0uMjQ1LjIwNy0xLjgzNy0xLjA1OS0zLjIyNS0uNDIzQTEwLjU3NCwxMC41NzQsMCwwLDAsMjMuNzMsMTIuNDVaXCIgc3R5bGU9XCJmaWxsOiM1MDJkMTZcIi8+PHBhdGggZD1cIk0yOS40LDkuNzI3YS44LjgsMCwwLDEtLjIuNDY5Yy0uMjI5LjE2Mi0xLjktLjUwNi0zLjIzOC4wNTZhMTIuNDM5LDEyLjQzOSwwLDAsMC0yLjA3MSwxLjA3TDIzLjIsMTAuMzRjLS4wNTcuMDc0LS4xMTYuMTQ3LS4xNjUuMjIzbC42OTIsMS44ODZBMTAuNTc3LDEwLjU3NywwLDAsMSwyNS45LDExLjE2MmMxLjM4OC0uNjM2LDIuOTguNjMxLDMuMjI1LjQyM0EyLjg0NiwyLjg0NiwwLDAsMCwyOS40LDkuNzI3WlwiIHN0eWxlPVwiZmlsbC1vcGFjaXR5OjAuMzEzNzI1NTAxMjk4OTA0NFwiLz48cGF0aCBkPVwiTTIxLjM4MiwyNS4xOGEyLjIzNiwyLjIzNiwwLDAsMS0xLjE0Ny0uMzIzLjU2My41NjMsMCwwLDEtLjA4Mi0uODg4Yy43MzctLjY4NC42MDctMi4xNzMtLjQxLTQuNjg5YTM2LjUyNiwzNi41MjYsMCwwLDAtNS4xMjMtOC44MjVsLS4zNS0uNDNjLTEuNTEyLTEuODY1LTIuMzU4LTIuODE1LTMuNTU0LTIuM2EuNTYyLjU2MiwwLDAsMS0uNDEzLjAxNi41NzEuNTcxLDAsMCwxLS4zNzctLjU5MiwyLjExOSwyLjExOSwwLDAsMSwxLjQ2MS0yYzQuNzE2LTEuNDgxLDEwLjI2LjgxNCwxMi45MDUsNS4zNDRhMTEuMiwxMS4yLDAsMCwxLTEuNDMxLDEzLjk5MUExLjkxOSwxLjkxOSwwLDAsMSwyMS4zODIsMjUuMThaXCIvPjxwYXRoIGQ9XCJNMjMuODEyLDEwLjc4M2MtMi40NDQtNC4xOTItNy43My02LjUyOC0xMi4yNy01LjA5My0xLjAwNy4yNDgtMS4wNjUsMS41MzUtMS4wNTIsMS41MTcsMS43NzYtLjc2NywyLjk1My45MTksNC41NjYsMi44OWEzNi45LDM2LjksMCwwLDEsNS4yMDksOC45NzFjLjg5LDIuMiwxLjQsNC4yNjcuMjcsNS4zMTJhMS41LDEuNSwwLDAsMCwxLjkwOS0uMjc0QTEwLjY0NiwxMC42NDYsMCwwLDAsMjMuODEyLDEwLjc4M1pcIiBzdHlsZT1cImZpbGw6IzUwMmQxNlwiLz48cGF0aCBkPVwiTTIzLjY0OSwxMC4zNDZhOS4zMTQsOS4zMTQsMCwwLDEtMi41MTgsNy43MjVjLS40NTUuNDg2LS44NzMuMTc3LTEuMjYzLjA2My4xMzguMzEzLjI3MS42MjYuNC45MzYuODksMi4yLDEuNCw0LjI2Ni4yNzEsNS4zMTJhMS41LDEuNSwwLDAsMCwxLjkwOS0uMjc0QzI2LjA4OSwyMC4xODMsMjYuMzU3LDE0LjkxOSwyMy42NDksMTAuMzQ2WlwiIHN0eWxlPVwiZmlsbC1vcGFjaXR5OjAuMzEzNzI1NTAxMjk4OTA0NFwiLz5gLFxuXHRcIlN0YW5cIjogYDx0aXRsZT5maWxlX3R5cGVfc3RhbjwvdGl0bGU+PHBhdGggZD1cIk0xNiwyQTE0LDE0LDAsMCwwLDUuNjg4LDI1LjQ2OWMxLjctLjUxNCwzLjQxMS0uOTkyLDQuODA2LTEuMzU3LDQuMDM3LTEuMDU0LDEwLjk0OC0yLjgzNiwxMS45NDYtNS4wODItLjI4Ljc4LTEuMjE4LDIuODctMS4yMTgsMi44Ny0xLjI3OSwxLjI0Ny03LjA5LDIuNjMxLTEwLjkxNywzLjM2Ny0xLjIyLjIzNS0yLjYxNC41MDctNC4wMjYuODA2QTE0LDE0LDAsMCwwLDI4LjQ2Nyw5LjYyOGMtMi41MjYuNDA4LTEwLjUsMS44NTQtMTIuNTM5LDIuMzE1LTIuMjU1LjUwOS02Ljc4OSwxLjQzMy03LjY5NCwyLjk5M0M4LjgsMTMuNSwxMC40OTIsOS43NDQsMTAuNDkyLDkuNzQ0YzEuMjE2LTIsNi42LTMuNDI1LDEwLjM1OC00LjQ2My44NzYtLjI0MiwxLjkyMi0uNTM5LDMuMDIzLS44NThBMTMuOTM0LDEzLjkzNCwwLDAsMCwxNiwyWlwiIHN0eWxlPVwiZmlsbDojYjIwMDFkXCIvPjxwYXRoIGQ9XCJNOC4yMjMsMTQuOTg3Yy0uMjUyLDEuMTc1LDMuNTIsMi4zMTMsNi45MjEsMy4zODlhMjYuMzYyLDI2LjM2MiwwLDAsMSw1LjY2NywyLjE5MiwzLjA4NSwzLjA4NSwwLDAsMCwxLjY2Mi0xLjYxNGMuMzc3LTEuNDg5LTMuMDEzLTMuMzkzLTUuMjc0LTQuMjI5YTMzLjMzNywzMy4zMzcsMCwwLDEtNC40MDctMi4wNDJjLTQuMzE2LDEuMTQzLTQuNTY5LDIuMy00LjU2OSwyLjNaXCIgc3R5bGU9XCJmaWxsOiM1OTA4MTVcIi8+YCxcblx0XCJTdGF0YSBBZG9cIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE2XCIgeTE9XCIyXCIgeDI9XCIxNlwiIHkyPVwiMzBcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM4YWE3YzBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjM2M2ZThmXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfc3RhdGE8L3RpdGxlPjxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMjhcIiByeD1cIjEuNTU2XCIgcnk9XCIxLjU1NlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxyZWN0IHg9XCIxMy4xNzFcIiB5PVwiNi4wMTVcIiB3aWR0aD1cIjUuNzU2XCIgaGVpZ2h0PVwiNS43NTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiMjAuMzI2XCIgeT1cIjYuMDE1XCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjIwLjMyNlwiIHk9XCIxMy4xNzFcIiB3aWR0aD1cIjUuNzU2XCIgaGVpZ2h0PVwiNS43NTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiMTMuMTcxXCIgeT1cIjEzLjE3MVwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCI2LjAxNVwiIHk9XCIxMy4xNzFcIiB3aWR0aD1cIjUuNzU2XCIgaGVpZ2h0PVwiNS43NTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiNi4wMTVcIiB5PVwiMjAuMzI2XCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjEzLjE3MVwiIHk9XCIyMC4zMjZcIiB3aWR0aD1cIjUuNzU2XCIgaGVpZ2h0PVwiNS43NTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIlN0eWx1c1wiOiBgPHRpdGxlPmZpbGVfdHlwZV9zdHlsdXM8L3RpdGxlPjxwYXRoIGQ9XCJNNi4zMTUsMjAuNzc2Yy43MjYtLjg2OS44MTItMS43NjYuMjQ5LTMuNDMyLS4zNTYtMS4wNTQtLjk0Ny0xLjg2NS0uNTEzLTIuNTIxLjQ2My0uNywxLjQ0NS0uMDIxLjYyNy45MTFsLjE2NC4xMTRjLjk4My4xMTQsMS40NjctMS4yMzIuNzMzLTEuNjE2LTEuOTM3LTEuMDExLTMuNjMxLjkzMy0yLjg4NCwzLjE4My4zMi45NTQuNzY5LDEuOTY1LjQwNiwyLjc3QTEuNzk0LDEuNzk0LDAsMCwxLDMuNzczLDIxLjNjLS44NDcuMDQzLS4yODUtMS45LjY5MS0yLjM4NS4wODUtLjA0My4yMDYtLjEuMDkzLS4yNDJhMi4xMzQsMi4xMzQsMCwwLDAtMi4zMTQsMS4yQzEuMDYxLDIyLjEyMSw0LjQ4NSwyMi45NTQsNi4zMTUsMjAuNzc2WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMjcuNDYyLDE0LjE0Yy4yNzguNjg0LjcsMS4zNi40NDksMS45NTgtLjIwNi41MTMtLjQ3Ny43MjYtLjc3Ni43NzYtLjQyLjA3MS0uMzA2LTEuMjQ2LjQxMy0xLjYzOC4wNjQtLjAzNi4xNTctLjIwNi4wNzEtLjMwNmExLjYzNiwxLjYzNiwwLDAsMC0xLjcuOTYxYy0uOCwxLjY4NywxLjgyMywyLjE1LDMuMTEyLjQ5MS41MTMtLjY2Mi41MzQtMS4zMTcuMDQzLTIuNTA2LS4zMTMtLjc1NS0uNzktMS4zMTctLjQ5MS0xLjgxNi4zMi0uNTI3LDEuMDg5LS4wNzEuNTEzLjYzNGwuMTI4LjA3MWMuNzQ4LjA0MywxLjA1NC0uOTU0LjQ4NC0xLjJBMS44MzQsMS44MzQsMCwwLDAsMjcuNDYyLDE0LjE0WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMTcuOTUsMTIuMzM4Yy0uNTItLjQxMy0xLjk3OS4yNzgtMi4zOTIsMS4zYTE2LjIxMywxNi4yMTMsMCwwLDEtMi4wNDMsNC4wMzdjLS44Ljg3Ni0uODc2LjItLjgtLjMwNkExNS4zMjcsMTUuMzI3LDAsMCwxLDE0LjcsMTIuNjUyYy0uMjM1LS4zNDktMS43NzMtLjMtMi44NDEsMS4zNi0uNC42MjctMS4zMSwyLjcxMy0yLjMyMSw0LjM1OC0uMjIxLjM1Ni0uNS4xMDctLjI4NS0uNzI2YTM5LjgsMzkuOCwwLDAsMSwxLjg3My01LjY4MiwzOS4wNzIsMzkuMDcyLDAsMCwxLDYuOTIxLS44MTljLjI2My0uMDcxLjQ0MS0uMzA2LDAtLjMyYTQ2Ljc3OCw0Ni43NzgsMCwwLDAtNi41OTMuNDQxLDQuOTIzLDQuOTIzLDAsMCwxLDEuNDQ1LTEuOTQ0LDEuNzg3LDEuNzg3LDAsMCwwLTIuMjY0LjcxOSwxMi4yODcsMTIuMjg3LDAsMCwwLS44MTksMS40NTMsMjQuMTk0LDI0LjE5NCwwLDAsMC0zLjk4Ljg2MmMtLjc4My4zLS43LDEuMjQ2LS4yMjEsMS4wNjhhMzEuNjMxLDMxLjYzMSwwLDAsMSwzLjgxNi0xLjEsMzAuMjkyLDMwLjI5MiwwLDAsMC0xLjg2NSw1LjY4MmMtLjQ0MSwyLjQ5MiwxLjEsMi40NzgsMS44NTgsMS41LjgxOS0xLjA3NSwyLjUyOC00Ljg1NiwyLjc5MS01LjI1NS4wNzgtLjEzNS4xODUtLjA2NC4xMjguMDU3LTEuOTA4LDMuODA5LTEuNzQ0LDUuMjgzLS4yLDQuOTU2YTQuOTI5LDQuOTI5LDAsMCwwLDIuMjE0LTEuOTY1Yy4wNjQtLjE1LjItLjEzNS4xNzEtLjA3MS0xLjIxLDMuMTQtMi43NDgsNS42ODItMy43ODEsNi40NzktLjk0LjcxOS0xLjYzOC0uODQsMS42ODctMy4wNzYuNDkxLS4zMzUuMjYzLS43OS0uMjkyLS42MzRoMGEyOS43OTMsMjkuNzkzLDAsMCwwLTguNzg2LDMuMzI1Yy0uMTY0LjExNC0uMzEzLjIwNi0uMzA2LjQ0MS4wMDcuMTM1LjI0Mi4wODUuMzU2LjAxNEEyMi43NzEsMjIuNzcxLDAsMCwxLDExLjEsMjAuOWEuMTU4LjE1OCwwLDAsMCwuMTE0LjAwN2MuMTIxLS4wMjguMTE0LjAzNi4wMzYuMDg1LS4xNzguMS0uMzU2LjE5Mi0uNC4yMDYtMS43NjYuNjkxLTIuODM0LDIuMjE0LTIuNDU2LDIuOTkuMzIuNjY5LDIuMDUxLjQyNywyLjg2OS0uMDE0LDIuMDA4LTEuMDg5LDMuNDY4LTMuMjI1LDQuNDY0LTYuMTczQzE2LjYsMTUuMzg2LDE3LjY5MywxMi40MjQsMTcuOTUsMTIuMzM4WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMjkuNjIsMTguMzY5YTQ4LjE0NSw0OC4xNDUsMCwwLDAtMTMuNDI5Ljk2OGMtLjkyNi4yNDItLjY2OS43MzMtLjIuNjQxLjAwNywwLC4yMDYtLjA1LjIxNC0uMDVhNDIuMjc5LDQyLjI3OSwwLDAsMSwxMi4zNzUtLjI0MkMyOS4wMTQsMTkuNzY1LDMwLjMxNywxOC40NjIsMjkuNjIsMTguMzY5WlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMTguODYxLDE3Ljk4NWMuOTExLS40NTYsMi4yNjQtMy4yNzUsMy4xNTQtNC44Mi4wNjQtLjExNC4xNzgtLjAyMS4xMTQuMDU3LTIuMjUsMy44NzMtMS4zLDQuMzIyLS40MDYsNC4yNjUsMS4xODktLjA3MSwyLjI4Ni0xLjc4LDIuNTI4LTIuMTY1LjEtLjE1LjE1Ny0uMDI4LjEuMDc4LS4wNTcuMTc4LS4yNjMuNDkxLS40NTYuOTE5LS4yNzEuNjA1LjAxNC44NC4yNDkuOTQ3LjM3LjE3OCwxLjM4MS4wNjQsMS41MzgtLjU1NS0xLjAxMS0uMDIxLDEuNDEtNC43OTIsMS42NTktNS4wODRhMS43MTgsMS43MTgsMCwwLDAtMi4yLjk3NWMtMS4wMTgsMi4wMTUtMS44NzMsMy42MzgtMi40MDcsMy42NjctMS4wNC4wNTcsMS4yLTQuNDkzLDEuNTU5LTQuNjM1LS4yMjEtLjMyLTEuNjM4LS4xODUtMi40MjgsMS4wNC0uMjg1LjQ0MS0yLjAyMiwzLjUxNy0yLjQ0OSw0LjAyMy0uNzU1LjktLjgxMi4xMjgtLjYtLjc2OWExMC41NjksMTAuNTY5LDAsMCwxLC4zNDktMS4xMzIsNS4zMjQsNS4zMjQsMCwwLDEsMS4zNi0xLjg0NGMyLjItMi40NDIsMy40Ni00LjQyMiwyLjk2Mi01LjItLjQ0MS0uNjkxLTEuOTE1LS4zODQtMi44NjIsMS4wNC0xLjc0NCwyLjYxMy0zLjM1NCw2LjE5NS0zLjU2LDcuODMyUzE4LjA1NiwxOC4zODMsMTguODYxLDE3Ljk4NVptLjkyNi00Ljc5MmMuMDc4LS4xNzguMTI4LS4yMjguMjYzLS41MjdoMEEyNC45MzQsMjQuOTM0LDAsMCwxLDIyLjQ5Miw4LjI4Yy40Mi0uNDQxLDEuMDExLjE1Ny0uMDU3LDEuNzk0YTE2LjQ2MiwxNi40NjIsMCwwLDEtMi4xMTUsMi42NDJ2LjAwN2MtLjIuMjIxLS4zNzcuNDA2LS40NTYuNTEzQzE5LjgwOCwxMy4zMDcsMTkuNzQ0LDEzLjI5MiwxOS43ODcsMTMuMTkzWlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPmAsXG5cdFwiU1ZHXCI6IGA8cGF0aCBkPVwiTTcuNjc0LDE0LjQ4OGEyLjIxOCwyLjIxOCwwLDEsMCwwLDMuMTM3SDI0LjMyNmEyLjIxOCwyLjIxOCwwLDEsMCwwLTMuMTM3WlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDozLjczMDAwMDAxOTA3MzQ5cHhcIi8+PHBhdGggZD1cIk0xMS4yMjIsOS4wNkEyLjIxOCwyLjIxOCwwLDEsMCw5LDExLjI3OEwyMC43NzgsMjMuMDUyQTIuMjE4LDIuMjE4LDAsMSwwLDIzLDIwLjgzNFpcIiBzdHlsZT1cImZpbGw6I2ZmYjEzYjtzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6My43MzAwMDAwMTkwNzM0OXB4XCIvPjxwYXRoIGQ9XCJNMTcuNTY4LDcuNzNhMi4yMTgsMi4yMTgsMCwxLDAtMy4xMzcsMFYyNC4zODJhMi4yMTgsMi4yMTgsMCwxLDAsMy4xMzcsMFpcIiBzdHlsZT1cImZpbGw6I2ZmYjEzYjtzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6My43MzAwMDAwMTkwNzM0OXB4XCIvPjxwYXRoIGQ9XCJNMjMsMTEuMjc4QTIuMjE4LDIuMjE4LDAsMSwwLDIwLjc3OCw5LjA2TDksMjAuODM0YTIuMjE4LDIuMjE4LDAsMSwwLDIuMjE4LDIuMjE4WlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiO3N0cm9rZTojMDAwO3N0cm9rZS13aWR0aDozLjczMDAwMDAxOTA3MzQ5cHhcIi8+PHBhdGggZD1cIk03LjY3NCwxNC40ODhhMi4yMTgsMi4yMTgsMCwxLDAsMCwzLjEzN0gyNC4zMjZhMi4yMTgsMi4yMTgsMCwxLDAsMC0zLjEzN1pcIiBzdHlsZT1cImZpbGw6I2ZmYjEzYlwiLz48cGF0aCBkPVwiTTExLjIyMiw5LjA2QTIuMjE4LDIuMjE4LDAsMSwwLDksMTEuMjc4TDIwLjc3OCwyMy4wNTJBMi4yMTgsMi4yMTgsMCwxLDAsMjMsMjAuODM0WlwiIHN0eWxlPVwiZmlsbDojZmZiMTNiXCIvPjxwYXRoIGQ9XCJNMTcuNTY4LDcuNzNhMi4yMTgsMi4yMTgsMCwxLDAtMy4xMzcsMFYyNC4zODJhMi4yMTgsMi4yMTgsMCwxLDAsMy4xMzcsMFpcIiBzdHlsZT1cImZpbGw6I2ZmYjEzYlwiLz48cGF0aCBkPVwiTTIzLDExLjI3OEEyLjIxOCwyLjIxOCwwLDEsMCwyMC43NzgsOS4wNkw5LDIwLjgzNGEyLjIxOCwyLjIxOCwwLDEsMCwyLjIxOCwyLjIxOFpcIiBzdHlsZT1cImZpbGw6I2ZmYjEzYlwiLz48cGF0aCBkPVwiTTIsMTYuMDU2SDMwVjI1Ljk1YTQuMDM1LDQuMDM1LDAsMCwxLTQuMTA2LDQuMTA2SDYuMTA2QTQuMDM1LDQuMDM1LDAsMCwxLDIsMjUuOTVaXCIvPjxwYXRoIGQ9XCJNNi4yLDIzLjA0NUEzLjYyOCwzLjYyOCwwLDEsMSwxMi40LDIwLjQ4SDEwLjI3QTEuNSwxLjUsMCwxLDAsNy43LDIxLjU0MWgwYTEuNiwxLjYsMCwwLDAsMS4wNjIuNDQxaDBhNC4xMTgsNC4xMTgsMCwwLDEsMi41NjYsMS4wNjNoMGEzLjYyOCwzLjYyOCwwLDEsMS02LjE5NCwyLjU2NUg3LjI2NEExLjUsMS41LDAsMSwwLDkuODMsMjQuNTVoMGExLjk0OCwxLjk0OCwwLDAsMC0xLjA2My0uNDRoMEE0LjQ2NSw0LjQ2NSwwLDAsMSw2LjIsMjMuMDQ1WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTkuNjUxLDE2Ljg1MiwxNy4wODUsMjkuMjRIMTQuOTZMMTIuNCwxNi44NTJIMTQuNTJsMS41LDcuMjU1LDEuNS03LjI1NVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTIzLjI4LDIxLjk4M2gzLjYyOHYzLjYyOGgwYTMuNjI4LDMuNjI4LDAsMSwxLTcuMjU3LDBoMFYyMC40OGgwYTMuNjI4LDMuNjI4LDAsMCwxLDcuMjU3LDBIMjQuNzgzYTEuNSwxLjUsMCwxLDAtMy4wMDUsMHY1LjEzaDBhMS41LDEuNSwwLDAsMCwzLjAwNSwwaDB2LTEuNWgtMS41VjIxLjk4M1pcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIlN3aWZ0XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItMTM0LjQ5NFwiIHkxPVwiLTE3MS44MlwiIHgyPVwiLTEzNC40OTdcIiB5Mj1cIi0xNzEuODlcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgyNDAsIDAsIDAsIC0yMDUuNiwgMzIyOTUsIC0zNTMxMi41ODUpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZjg4NTM1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZkMjIyMVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3N3aWZ0PC90aXRsZT48cGF0aCBkPVwiTTE5LjQyMiw0LjAwN3M2LjIxNywzLjU1NCw3Ljg0NCw5LjJjMS40NjYsNS4xLjI5Miw3LjUzNC4yOTIsNy41MzRhOC45MTUsOC45MTUsMCwwLDEsMS43NDIsMi44LDQuODI1LDQuODI1LDAsMCwxLC4yOSw0LjQ1M3MtLjEtMi4wOC0zLjItMi41MTFjLTIuODQxLS40LTMuODc0LDIuMzY2LTkuMywyLjIzMkExOC40MzUsMTguNDM1LDAsMCwxLDIsMTkuMzU0QzQuNjUxLDIwLjgsOC4xMjQsMjMuMDQ1LDEyLjQ0OSwyMi43czUuMjI4LTEuNjc0LDUuMjI4LTEuNjc0QTY2LjksNjYuOSwwLDAsMSw0Ljg5MSw3LjY0M2MzLjQsMi44NDUsMTEuODIyLDguNTA3LDExLjYyNiw4LjM2M0E3NS44MjYsNzUuODI2LDAsMCwxLDguMDkyLDYuMjRTMjAuNzI4LDE2LjYyOSwyMS43NDUsMTYuNTYzYy40MTgtLjg2MSwyLjU3OS01LjMxOC0yLjMyNC0xMi41NTdaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcblx0XCJTeXN0ZW1kIGNvbmZpZ3VyYXRpb24gZmlsZVwiOiBgPHBhdGggZD1cIk0yLDEydjhINS4yNTZWMTguNzY5SDMuM1YxMy4yMzFINS4yNTZWMTJaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yNi43NDQsMTJ2MS4yMzFIMjguN3Y1LjUzOEgyNi43NDRWMjBIMzBWMTJaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xNy42MjgsMTZsNS4yMS0yLjc2OXY1LjUzOFpcIiBzdHlsZT1cImZpbGw6IzMwZDQ3NVwiLz48ZWxsaXBzZSBjeD1cIjEyLjA5M1wiIGN5PVwiMTZcIiByeD1cIjIuOTNcIiByeT1cIjIuNzY5XCIgc3R5bGU9XCJmaWxsOiMzMGQ0NzVcIi8+YCxcblx0XCJUNCB0ZW1wbGF0aW5nXCI6IGA8cGF0aCBkPVwiTTE5LjU0NSw2LjAzNUgxMy4yN1YyNEg4LjNWNi4wMzVIMi4wNTVWMmgxNy40OVpcIiBzdHlsZT1cImZpbGw6IzFlODhlNVwiLz48cGF0aCBkPVwiTTI3LjU2NywxMFYyMi42MDhoMi40VjI1LjloLTIuNFYzMEgyMy41NTFWMjUuOUgxNC44MzRWMjIuNDU1cTEuMTU4LTEuMywyLjQtMi44Mzh0Mi40LTMuMTczcTEuMTU4LTEuNjMyLDIuMTU1LTMuMjg1QTMyLjkyNSwzMi45MjUsMCwwLDAsMjMuNDgxLDEwWk0xOC43ODEsMjIuNjA4aDQuNzdWMTUuNjIxcS0uNDg4LjkwNy0xLjA2LDEuODM0dC0xLjIsMS44MjdxLS42MjguOS0xLjI2OSwxLjc0M1QxOC43ODEsMjIuNjA4WlwiIHN0eWxlPVwiZmlsbDojMWU4OGU1XCIvPmAsXG5cdFwiVDQgVGV4dCBUZW1wbGF0ZXMgKEMjKVwiOiBgPHBhdGggZD1cIk0xOS41NDUsNi4wMzVIMTMuMjdWMjRIOC4zVjYuMDM1SDIuMDU1VjJoMTcuNDlaXCIgc3R5bGU9XCJmaWxsOiMxZTg4ZTVcIi8+PHBhdGggZD1cIk0yNy41NjcsMTBWMjIuNjA4aDIuNFYyNS45aC0yLjRWMzBIMjMuNTUxVjI1LjlIMTQuODM0VjIyLjQ1NXExLjE1OC0xLjMsMi40LTIuODM4dDIuNC0zLjE3M3ExLjE1OC0xLjYzMiwyLjE1NS0zLjI4NUEzMi45MjUsMzIuOTI1LDAsMCwwLDIzLjQ4MSwxMFpNMTguNzgxLDIyLjYwOGg0Ljc3VjE1LjYyMXEtLjQ4OC45MDctMS4wNiwxLjgzNHQtMS4yLDEuODI3cS0uNjI4LjktMS4yNjksMS43NDNUMTguNzgxLDIyLjYwOFpcIiBzdHlsZT1cImZpbGw6IzFlODhlNVwiLz5gLFxuXHRcIlQ0IFRleHQgVGVtcGxhdGVzIChWQilcIjogYDxwYXRoIGQ9XCJNMTkuNTQ1LDYuMDM1SDEzLjI3VjI0SDguM1Y2LjAzNUgyLjA1NVYyaDE3LjQ5WlwiIHN0eWxlPVwiZmlsbDojMWU4OGU1XCIvPjxwYXRoIGQ9XCJNMjcuNTY3LDEwVjIyLjYwOGgyLjRWMjUuOWgtMi40VjMwSDIzLjU1MVYyNS45SDE0LjgzNFYyMi40NTVxMS4xNTgtMS4zLDIuNC0yLjgzOHQyLjQtMy4xNzNxMS4xNTgtMS42MzIsMi4xNTUtMy4yODVBMzIuOTI1LDMyLjkyNSwwLDAsMCwyMy40ODEsMTBaTTE4Ljc4MSwyMi42MDhoNC43N1YxNS42MjFxLS40ODguOTA3LTEuMDYsMS44MzR0LTEuMiwxLjgyN3EtLjYyOC45LTEuMjY5LDEuNzQzVDE4Ljc4MSwyMi42MDhaXCIgc3R5bGU9XCJmaWxsOiMxZTg4ZTVcIi8+YCxcblx0XCJUY2xcIjogYDxwYXRoIGQ9XCJNMjEuOTQyLDIuODc2Yy4wNCwyLjQ2OC0uMDMzLDQuOTEtMi4xNjksNy4yM2wtLjA3OS4wODloLjExOWwuODczLjAxM2MtMS40MTgsMi45NS0yLjM0MSw1Ljg5Mi00LjM4LDguODNsLS4wNzMuMTA2LjEyNi0uMDIzLDEuMDc4LS4yYTUuODUxLDUuODUxLDAsMCwxLTMuNDg0LDMuNjVjLS4zOS01LjQ1NSwyLjMzMy0xMC4yNyw0LjY0NS0xNS4wNzFsLjAwNy0uMDEzLS4wODYtLjA2Yy0zLjc4Niw0LjIzMy01LjQ5MSwxMC4yLTYuMTM2LDE1LjEyN2E0LjU4Miw0LjU4MiwwLDAsMS0yLjE0NS0yLjk4OGwuOS4zNzcuMDkzLjA0LS4wMi0uMWMtLjY4MS0zLjAyOC4zNzYtNS4yLDEuNC04LjA1NmwuNzM3LjQ5My4wODYuMDYsMC0uMWMtLjA1OC0yLjMyLDEuNS00LjY0OSwzLjU3Ny02LjcyN2wuMjg4Ljc3LjA0LjEuMDU2LS4xLjYzMS0xLjA1MSwwLS4wMDdBNi4xLDYuMSwwLDAsMSwyMS45NDIsMi44NzZaXCIgc3R5bGU9XCJmaWxsOiNjM2IxNWZcIi8+PHBhdGggZD1cIk0yMS45NDgsMi44NzVhNi4xMzEsNi4xMzEsMCwwLDAtMy45MjYsMi4zODhsMCwuMDA3LS42MzEsMS4wNTEtLjA1Ni4xLS4wNC0uMUwxNyw1LjU0NGMtMi4wNzIsMi4wNzgtMy42MzUsNC40MDctMy41NzcsNi43MjdsMCwuMS0uMDg2LS4wNi0uNzM3LS40OTNjLTEuMDI1LDIuODU2LTIuMDgzLDUuMDI5LTEuNCw4LjA1NmwuMDIuMS0uMDkzLS4wNC0uODg2LS4zNzRjMCwuMDE4LjAwNy4wMzUuMDEuMDUzYTQuNTMzLDQuNTMzLDAsMCwwLDIuMTI2LDIuOTMyYy4wNS0uMzgxLjEwNS0uNzcxLjE2OS0xLjE2NC0xLjU0My0zLjYxNC0uMi02LjI3MS40MDctOC42NjFsLjkzOS41NDJjLS4xMy0yLjIzOCwxLjE4NC00LjY1MSwyLjg5My02Ljc1N2wuNS44NzNDMTguNTU1LDQuNzY5LDE5LjU2LDMuNzIsMjEuOTQ4LDIuODc1WlwiIHN0eWxlPVwiZmlsbDojZWZmMWNiO3N0cm9rZTojZWZmMWNiXCIvPjxwYXRoIGQ9XCJNMjIuNTE4LDJsLS4wNTYuMDFjLTIuMDgyLjM2My00LjEyMSwxLjEyOC01LjAxNSwyLjk1OWwtLjM3Ny0uNjU4LS4wMzMtLjA2LS4wNS4wNWEyMC44NSwyMC44NSwwLDAsMC0yLjkzOSwzLjVBNS45MzksNS45MzksMCwwLDAsMTIuODM1LDExbC0uNTMyLS42NjQtLjA1My0uMDY2LS4wMzYuMDc2YTI3LjUzNSwyNy41MzUsMCwwLDAtMS42OTMsNC43LDYuNzMsNi43MywwLDAsMC0uMTU5LDMuNzE5bC0uODc2LS41MDktLjA3My0uMDQzLS4wMDcuMDg2YTUuNTI5LDUuNTI5LDAsMCwwLDIuMDE3LDQuODQzbC0uOTcyLjI0MS0uMi4wNS4yLjA1M2E0LjI1OCw0LjI1OCwwLDAsMSwxLjQ1NS42LDEuMzI1LDEuMzI1LDAsMCwxLC41MTYsMS4zVjI4LjFsLjAxLjAxMywxLjIxNywxLjc0NS4xLjEzOVYyNS43MTlhMy40NjYsMy40NjYsMCwwLDEsLjYyMS0xLjQ4NEExLjYzOSwxLjYzOSwwLDAsMSwxNS41LDIzLjdsLjE4Mi0uMDIzLS4xNjUtLjA3Ni0uNjQxLS4zYTkuMTEyLDkuMTEyLDAsMCwwLDMuNjkzLTUuMzIybC4wMi0uMDg2LS4wODMuMDIzLS43OTMuMjE1YTExLjY2OSwxMS42NjksMCwwLDAsMi4wODktMy41QzIwLjUxMiwxMywyMS4xOCwxMS4xNjYsMjEuNzI4LDkuN2wuMDMtLjA3OS0uMDgzLjAwNy0uNjEyLjA0M2E2LjY1NSw2LjY1NSwwLDAsMCwxLjM4Mi0zLjUyNywxNy4wMzksMTcuMDM5LDAsMCwwLC4wNzktNC4wODZabS0uNTc1Ljg3NmMuMDQsMi40NjgtLjAzMyw0LjkxLTIuMTY5LDcuMjNsLS4wNzkuMDg5aC4xMTlsLjg3My4wMTNjLTEuNDE4LDIuOTUtMi4zNDEsNS44OTItNC4zOCw4LjgzbC0uMDczLjEwNi4xMjYtLjAyMywxLjA3OC0uMmE1Ljg1MSw1Ljg1MSwwLDAsMS0zLjQ4NCwzLjY1Yy0uMzktNS40NTUsMi4zMzMtMTAuMjcsNC42NDUtMTUuMDcxbC4wMDctLjAxMy0uMDg2LS4wNmMtMy43ODYsNC4yMzMtNS40OTEsMTAuMi02LjEzNiwxNS4xMjdhNC41ODIsNC41ODIsMCwwLDEtMi4xNDUtMi45ODhsLjkuMzc3LjA5My4wNC0uMDItLjFjLS42ODEtMy4wMjguMzc2LTUuMiwxLjQtOC4wNTZsLjczNy40OTMuMDg2LjA2LDAtLjFjLS4wNTgtMi4zMiwxLjUtNC42NDksMy41NzctNi43MjdsLjI4OC43Ny4wNC4xLjA1Ni0uMS42MzEtMS4wNTEsMC0uMDA3QTYuMSw2LjEsMCwwLDEsMjEuOTQyLDIuODc2WlwiLz5gLFxuXHRcIlRlbXBsYXRlIFRvb2xraXQgMlwiOiBgPHBhdGggZD1cIk04LjkwNywyMy4wMjFIOC44NzhhMy4zMDUsMy4zMDUsMCwwLDEtMi4wMTEtLjY2MUEyLjU2MSwyLjU2MSwwLDAsMSw1LjgzLDIwLjMzNFYxNi4xSDQuMjg4YTMuMDUsMy4wNSwwLDAsMS0yLjczOC0xLjY5LDMuMywzLjMsMCwwLDEsLjQ0MS0zLjUzLDIuMjY1LDIuMjY1LDAsMCwxLDEuODE1LS45aDkuNjVhMy4wNSwzLjA1LDAsMCwxLDIuNzM4LDEuNjksMy4zLDMuMywwLDAsMS0uNDQxLDMuNTMsMi4yNjUsMi4yNjUsMCwwLDEtMS44MTUuOUgxMS45NTV2NC4yMzFhMi41NjEsMi41NjEsMCwwLDEtMS4wMzcsMi4wMjZBMy4zMDUsMy4zMDUsMCwwLDEsOC45MDcsMjMuMDIxWk00LjI2NCwxMS42MzZhMS4zOSwxLjM5LDAsMCwwLTEuMzg4LDEuMzg4di4wMzNhMS4zOSwxLjM5LDAsMCwwLDEuMzg4LDEuMzg4SDcuNDg3djUuODgxYzAsLjU3Mi42MjQsMS4wMzcsMS4zOSwxLjAzN2guMDI5Yy43NjcsMCwxLjM5LS40NjUsMS4zOS0xLjAzN1YxNC40NDZoMy4yMjNhMS4zOSwxLjM5LDAsMCwwLDEuMzg4LTEuMzg4di0uMDMzYTEuMzksMS4zOSwwLDAsMC0xLjM4OC0xLjM4OFpcIiBzdHlsZT1cImZpbGw6IzAxNWQ5YVwiLz48cGF0aCBkPVwiTTE0Ljk4MSwxMi45NTN2LjAzM2ExLjUzMywxLjUzMywwLDAsMS0xLjUzMywxLjUzM0gxMC4zN3Y1LjczN2ExLjM5MywxLjM5MywwLDAsMS0xLjUzNSwxLjE4MUg4LjgwNmExLjM5MywxLjM5MywwLDAsMS0xLjUzNS0xLjE4MVYxNC41MThINC4xOTJBMS41MzMsMS41MzMsMCwwLDEsMi42NiwxMi45ODZ2LS4wMzNBMS41MzMsMS41MzMsMCwwLDEsNC4xOTIsMTEuNDJoOS4yNTdBMS41MzMsMS41MzMsMCwwLDEsMTQuOTgxLDEyLjk1M1ptLTQuMjIzLDkuMjIyYTIuNDE4LDIuNDE4LDAsMCwwLC45OC0xLjkxMlYxNS44ODhoMi4xMjdhMi4xMTQsMi4xMTQsMCwwLDAsMS43LS44NDYsMi45OTIsMi45OTIsMCwwLDAtMi4xOC00Ljk5SDMuNzM1YTIuMTE0LDIuMTE0LDAsMCwwLTEuNy44NDYsMi45OTIsMi45OTIsMCwwLDAsMi4xOCw0Ljk5SDUuOXY0LjM3NWEyLjQxOCwyLjQxOCwwLDAsMCwuOTgsMS45MTIsMy4xNiwzLjE2LDAsMCwwLDEuOTIzLjYzMWguMDI5QTMuMTYsMy4xNiwwLDAsMCwxMC43NTgsMjIuMTc0WlwiIHN0eWxlPVwiZmlsbDojM2JjZWZjXCIvPjxwYXRoIGQ9XCJNMjMuNjA3LDIzLjAyMWgtLjAyOWEzLjMwNSwzLjMwNSwwLDAsMS0yLjAxMS0uNjYxLDIuNTYxLDIuNTYxLDAsMCwxLTEuMDM3LTIuMDI2VjE2LjFIMTguOTg4YTMuMDUsMy4wNSwwLDAsMS0yLjczOC0xLjY5LDMuMywzLjMsMCwwLDEsLjQ0MS0zLjUzLDIuMjY1LDIuMjY1LDAsMCwxLDEuODE1LS45aDkuNjVhMy4wNSwzLjA1LDAsMCwxLDIuNzM4LDEuNjksMy4zLDMuMywwLDAsMS0uNDQxLDMuNTMsMi4yNjUsMi4yNjUsMCwwLDEtMS44MTUuOUgyNi42NTV2NC4yMzFhMi41NjEsMi41NjEsMCwwLDEtMS4wMzcsMi4wMjZBMy4zMDUsMy4zMDUsMCwwLDEsMjMuNjA3LDIzLjAyMVpNMTguOTY0LDExLjYzNmExLjM5LDEuMzksMCwwLDAtMS4zODgsMS4zODh2LjAzM2ExLjM5LDEuMzksMCwwLDAsMS4zODgsMS4zODhoMy4yMjN2NS44ODFjMCwuNTcyLjYyNCwxLjAzNywxLjM5LDEuMDM3aC4wMjljLjc2NywwLDEuMzktLjQ2NSwxLjM5LTEuMDM3VjE0LjQ0NmgzLjIyM2ExLjM5LDEuMzksMCwwLDAsMS4zODgtMS4zODh2LS4wMzNhMS4zOSwxLjM5LDAsMCwwLTEuMzg4LTEuMzg4WlwiIHN0eWxlPVwiZmlsbDojMDE1ZDlhXCIvPjxwYXRoIGQ9XCJNMjkuNjgxLDEyLjk1M3YuMDMzYTEuNTMzLDEuNTMzLDAsMCwxLTEuNTMzLDEuNTMzSDI1LjA3djUuNzM3YTEuMzkzLDEuMzkzLDAsMCwxLTEuNTM1LDEuMTgxaC0uMDI5YTEuMzkzLDEuMzkzLDAsMCwxLTEuNTM1LTEuMTgxVjE0LjUxOEgxOC44OTJhMS41MzMsMS41MzMsMCwwLDEtMS41MzMtMS41MzN2LS4wMzNhMS41MzMsMS41MzMsMCwwLDEsMS41MzMtMS41MzNoOS4yNTdBMS41MzMsMS41MzMsMCwwLDEsMjkuNjgxLDEyLjk1M1ptLTQuMjIzLDkuMjIyYTIuNDE4LDIuNDE4LDAsMCwwLC45OC0xLjkxMlYxNS44ODhoMi4xMjdhMi4xMTQsMi4xMTQsMCwwLDAsMS43LS44NDYsMi45OTIsMi45OTIsMCwwLDAtMi4xOC00Ljk5aC05LjY1YTIuMTE0LDIuMTE0LDAsMCwwLTEuNy44NDYsMi45OTIsMi45OTIsMCwwLDAsMi4xOCw0Ljk5SDIwLjZ2NC4zNzVhMi40MTgsMi40MTgsMCwwLDAsLjk4LDEuOTEyLDMuMTYsMy4xNiwwLDAsMCwxLjkyMy42MzFoLjAyOUEzLjE2LDMuMTYsMCwwLDAsMjUuNDU4LDIyLjE3NFpcIiBzdHlsZT1cImZpbGw6IzNiY2VmY1wiLz5gLFxuXHRcIlRlWFwiOiBgPHBhdGggZD1cIk0xMS4zMzMsMTMuMTIyYy0uMTI4LTEuNTYyLS4yNDEtMi43NTYtMi4yODctMi43NTZINy45MXY4LjRoMi4xNDV2LjYxMWwtMy4wODMtLjAyOS0zLjA4Mi4wMjl2LS42MTFINi4wMzR2LTguNEg0Ljg4NGMtMi4wNDYsMC0yLjE1OSwxLjIwOC0yLjI4NywyLjc1NkgybC4yODQtMy4zNjdoOS4zNjJsLjI4NCwzLjM2N2gtLjZaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+PHBhdGggZD1cIk0xOS4yODksMjIuNTNIMTAuNDFWMjEuOTJoMS41MDZWMTMuNDY3SDEwLjQxdi0uNjExaDguNjM3bC40MTIsMy4zNjdoLS42Yy0uMjEzLTEuODMzLS42ODItMi43NTYtMi44NTUtMi43NTZIMTMuNzkxVjE3LjJoLjgzOGMxLjM2NCwwLDEuNTA1LS42LDEuNTA1LTEuNjYyaC42djMuOTM1aC0uNmMwLTEuMDgtLjE0Mi0xLjY2Mi0xLjUwNS0xLjY2MmgtLjgzOHY0LjEwNmgyLjIxNmMyLjQ3MiwwLDMtMS4xMDgsMy4zLTMuMjI1aC42WlwiIHN0eWxlPVwiZmlsbDojY2ZjZmNmXCIvPjxwYXRoIGQ9XCJNMjcuNzI3LDE5LjE4NmMtLjU0LDAtMS45NiwwLTIuNDE1LjAyOVYxOC42aDEuMTc5bC0yLjU1Ny0zLjU1Mi0yLjUyOSwzLjM4MUE0LjEsNC4xLDAsMCwwLDIyLjcsMTguNnYuNjExYy0uMzU1LS4wMjktMS41NzYtLjAyOS0yLjAxNy0uMDI5LS40LDAtMS41NDgsMC0xLjg3NS4wMjlWMTguNmguMzgzYTcuNDU5LDcuNDU5LDAsMCwwLC44MjQtLjA0M2MuNS0uMDQzLjU0LS4wODUuNjY3LS4yNTZMMjMuNTM2LDE0LjVsLTMuMTUzLTQuNDE4SDE5VjkuNDdjLjM4NC4wMjgsMS43OS4wMjgsMi4yNzMuMDI4LjU4MiwwLDEuOTE4LDAsMi40MjktLjAyOHYuNjExSDIyLjUyOGwyLjExNywyLjk1NSwyLjA3NC0yLjc4NGE0LjEsNC4xLDAsMCwwLTEuMjkzLS4xN1Y5LjQ3Yy4zNTYuMDI4LDEuNTkxLjAyOCwyLjAzMi4wMjguNCwwLDEuNTM0LDAsMS44NjEtLjAyOHYuNjExaC0uMzY5YTUuMjY0LDUuMjY0LDAsMCwwLS44MzguMDQzYy0uNDY5LjA0My0uNTI2LjA3MS0uNjY3LjI1NmwtMi40LDMuMjFMMjguNjM2LDE4LjZIMzB2LjYxMUMyOS42NDUsMTkuMTg2LDI4LjE4MiwxOS4xODYsMjcuNzI3LDE5LjE4NlpcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz5gLFxuXHRcIlRleHRpbGVcIjogYDxwYXRoIGQ9XCJNMjguNjgxLDI2LjA3NUgzLjMxOUExLjMxNywxLjMxNywwLDAsMSwyLDI0Ljc1NlY3LjI0NEExLjMxNywxLjMxNywwLDAsMSwzLjMxOSw1LjkyNUgyOC42ODFBMS4zMTcsMS4zMTcsMCwwLDEsMzAsNy4yNDRWMjQuNzZBMS4zMTYsMS4zMTYsMCwwLDEsMjguNjgxLDI2LjA3NVpcIiBzdHlsZT1cImZpbGw6I2ZmZTdhY1wiLz48cGF0aCBkPVwiTTYuMDY2LDEyLjg0OGE0Ljk4Nyw0Ljk4NywwLDAsMSwxLjUwOC0uNjU5VjEwLjY2NGEzLjcsMy43LDAsMCwxLC43NDMtLjMzLDcuODY5LDcuODY5LDAsMCwxLDEuMzI3LS4zNDdoLjY0MnYyLjM5MWgyLjQ4NFYxMy42SDEwLjI4NnY0Ljg0OGEzLjE3MiwzLjE3MiwwLDAsMCwuMjksMS42MDksMS4wNywxLjA3LDAsMCwwLC45NzEuNDQ4LDcuMTI3LDcuMTI3LDAsMCwwLC43Ni0uMDQ4LDMuMzM4LDMuMzM4LDAsMCwwLC43ODItLjE4bC4xMzIuNjJhMi4zODgsMi4zODgsMCwwLDEtLjUuMzU2LDUuNDU3LDUuNDU3LDAsMCwxLS43NTIuMzU2LDUuODM3LDUuODM3LDAsMCwxLS45MjMuMjgxQTQuNzY5LDQuNzY5LDAsMCwxLDEwLDIyYTIuMzg1LDIuMzg1LDAsMCwxLTEuODI0LS42MzcsMi45NDcsMi45NDcsMCwwLDEtLjYtMi4wNjJWMTMuNTkxSDYuMDY2WlwiLz48cGF0aCBkPVwiTTE0LjYwNywyMC40NTNhMS40NDcsMS40NDcsMCwwLDEsLjQzMS0xLjA5LDEuNTkxLDEuNTkxLDAsMCwxLDEuMTQ3LS40MTMsMS42NDksMS42NDksMCwwLDEsMS4xNjUuNDEzLDEuNDIyLDEuNDIyLDAsMCwxLC40NTMsMS4wOSwxLjM2OSwxLjM2OSwwLDAsMS0uNDUzLDEuMDgxLDEuNjkyLDEuNjkyLDAsMCwxLTEuMTY1LjQsMS42MSwxLjYxLDAsMCwxLTEuMTQ3LS40QTEuNDI3LDEuNDI3LDAsMCwxLDE0LjYwNywyMC40NTNaXCIvPmAsXG5cdFwiVE9NTFwiOiBgPHBhdGggZD1cIk0yMi43Niw2LjgzdjMuMjVoLTVWMjUuMTdIMTQuMjZWMTAuMDhoLTVWNi44M1pcIiBzdHlsZT1cImZpbGw6IzdmN2Y3ZlwiLz48cGF0aCBkPVwiTTIsMkg4LjJWNS4wOUg1LjM0djIxLjhIOC4yVjMwSDJaXCIgc3R5bGU9XCJmaWxsOiNiZmJmYmZcIi8+PHBhdGggZD1cIk0zMCwzMEgyMy44VjI2LjkxaDIuODZWNS4xMUgyMy44VjJIMzBaXCIgc3R5bGU9XCJmaWxsOiNiZmJmYmZcIi8+YCxcblx0XCJUU0NvbmZpZ1wiOiBgPHBhdGggZD1cIk0yMy44MjcsOC4yNDNBNC40MjQsNC40MjQsMCwwLDEsMjYuMDUsOS41MjRhNS44NTMsNS44NTMsMCwwLDEsLjg1MiwxLjE0M2MuMDExLjA0NS0xLjUzNCwxLjA4My0yLjQ3MSwxLjY2Mi0uMDM0LjAyMy0uMTY5LS4xMjQtLjMyMi0uMzVhMi4wMTQsMi4wMTQsMCwwLDAtMS42Ny0xYy0xLjA3Ny0uMDc0LTEuNzcxLjQ5LTEuNzY2LDEuNDMzYTEuMywxLjMsMCwwLDAsLjE1My42NjZjLjIzNy40OS42NzcuNzg0LDIuMDU5LDEuMzgzLDIuNTQ0LDEuMSwzLjYzNiwxLjgxNyw0LjMxLDIuODQzYTUuMTU4LDUuMTU4LDAsMCwxLC40MTYsNC4zMzMsNC43NjQsNC43NjQsMCwwLDEtMy45MzIsMi44MTUsMTAuOSwxMC45LDAsMCwxLTIuNzA4LS4wMjgsNi41MzEsNi41MzEsMCwwLDEtMy42MTYtMS44ODQsNi4yNzgsNi4yNzgsMCwwLDEtLjkyNi0xLjM3MSwyLjY1NSwyLjY1NSwwLDAsMSwuMzI3LS4yMDhjLjE1OC0uMDkuNzU2LS40MzQsMS4zMi0uNzYxbDEuMDI0LS42LjIxNC4zMTJhNC43NzEsNC43NzEsMCwwLDAsMS4zNSwxLjI5MiwzLjMsMy4zLDAsMCwwLDMuNDU4LS4xNzUsMS41NDUsMS41NDUsMCwwLDAsLjItMS45NzRjLS4yNzYtLjQtLjg0LS43MjctMi40NDMtMS40MjJhOC44LDguOCwwLDAsMS0zLjM0OS0yLjA1NSw0LjY4Nyw0LjY4NywwLDAsMS0uOTc2LTEuNzc3LDcuMTE2LDcuMTE2LDAsMCwxLS4wNjItMi4yNjgsNC4zMzIsNC4zMzIsMCwwLDEsMy42NDQtMy4zNzRBOSw5LDAsMCwxLDIzLjgyNyw4LjI0M1pNMTUuNDg0LDkuNzI2bC4wMTEsMS40NTRoLTQuNjNWMjQuMzI4SDcuNlYxMS4xODNIMi45N1Y5Ljc1NWExMy45ODYsMTMuOTg2LDAsMCwxLC4wNC0xLjQ2NmMuMDE3LS4wMjMsMi44MzItLjAzNCw2LjI0NS0uMDI4bDYuMjExLjAxN1pcIiBzdHlsZT1cImZpbGw6IzAwN2FjY1wiLz48cGF0aCBkPVwiTTI3LjA3NSwyNS4xMDdsLjM2My0uMzYxYzEuNjguMDU1LDEuNzA2LDAsMS43OC0uMTc3bC40NjItMS4xMjQuMDM0LS4xMDctLjAzOC0uMDkzYy0uMDItLjA0OS0uMDgxLS4yLTEuMTMtMS4ydi0uNTI2YzEuMjExLTEuMTY2LDEuMTg1LTEuMjI2LDEuMTE2LTEuNGwtLjQ2LTEuMTM2Yy0uMDY5LS4xNy0uMS0uMjM3LTEuNzYzLS4xOTFsLS4zNjQtLjM2N2E4LjEzOCw4LjEzOCwwLDAsMC0uMDU3LTEuNjU3bC0uMDQ3LS4xMDYtMS4yLS41MjVjLS4xNzctLjA4MS0uMjM5LS4xMS0xLjM3MiwxLjEyNGwtLjUwOS0uMDA4Yy0xLjE2Ny0xLjI0NS0xLjIyMi0xLjIyMy0xLjQtMS4xNTJsLTEuMTE1LjQ1MmMtLjE3NS4wNzEtLjIzNi4xLS4xNjksMS43OWwtLjM2LjM1OWMtMS42OC0uMDU1LTEuNywwLTEuNzc4LjE3N0wxOC42MDYsMjBsLS4wMzYuMTA4LjAzOC4wOTRjLjAyLjA0OC4wNzguMTk0LDEuMTMsMS4ydi41MjVjLTEuMjExLDEuMTY2LTEuMTg0LDEuMjI2LTEuMTE1LDEuNGwuNDU5LDEuMTM3Yy4wNy4xNzQuMS4yMzYsMS43NjMuMTkybC4zNjMuMzc3YTguMTY5LDguMTY5LDAsMCwwLC4wNTUsMS42NTRsLjA0Ny4xMDcsMS4yMDguNTI4Yy4xNzYuMDczLjIzNi4xLDEuMzY2LTEuMTNsLjUwOS4wMDZjMS4xNjgsMS4yNDcsMS4yMjgsMS4yMjMsMS40LDEuMTU0bDEuMTEzLS40NUMyNy4wODIsMjYuODI3LDI3LjE0MywyNi44LDI3LjA3NSwyNS4xMDdabS00Ljc4OC0yLjYzMmEyLDIsMCwxLDEsMi42MTgsMS4xNEEyLjAyMywyLjAyMywwLDAsMSwyMi4yODcsMjIuNDc1WlwiIHN0eWxlPVwiZmlsbDojOTliOGM0XCIvPmAsXG5cdFwiVHdpZ1wiOiBgPHBhdGggZD1cIk00LjU3NCw1LjQ2M2MuMjYyLjQsMi41LTEuNjA4LDQuNDU0LTEuMTYxLDIuMDYxLjQ3Miw0LjAxNCwzLjcyNCw0Ljg0OCwxMy43YTQwLjE4LDQwLjE4LDAsMCwxLDMuNTQxLDMuNjFxLjUzLjYxNCwxLjAxMywxLjIyYTExLjg0NywxMS44NDcsMCwwLDEsLjIyOS0xLjQsMTIuMywxMi4zLDAsMCwxLDEuOTgxLTQuNEExOS4xNTEsMTkuMTUxLDAsMCwwLDE3LjI3Miw3LjljLTEuMDMtMS40NDUtNC42LTYuNDc4LTguNTQ2LTUuODQzQzYuMTgyLDIuNDY1LDQuMyw1LjA1NCw0LjU3NCw1LjQ2M1pcIiBzdHlsZT1cImZpbGw6IzYzYmY2YVwiLz48cGF0aCBkPVwiTTI0LjQsMzBjLS4zMi0yLjU2Ny0uNDQ4LTQuNzYtLjUtNi40NDktLjA5NC0zLjIzMi4xLTQuNTQxLjktNS43NTYuMTkzLS4yOTUsMS4yODgtMS45NzUsMi41OC0xLjg2MywxLjQ2Ni4xMjgsMi4yMTMsMi40MTQsMi4zNjIsMi4zMzcuMTc1LS4wOS0uMzYtMy41NDMtMi41MzItNC40MzEtMi42LTEuMDYzLTYuMzEyLDIuMDctNy44LDUuMTU0YTEyLjIyMywxMi4yMjMsMCwwLDAtLjg1NywyLjgxLDMyLjU1NSwzMi41NTUsMCwwLDAtLjcxLDguMlpcIiBzdHlsZT1cImZpbGw6Izc0ZDc0ZFwiLz48cGF0aCBkPVwiTTIuMjM4LDEzLjkzNWMuMTQ1LS40NDcsMi40NjgtLjI1OSw0LjU0LjI5MywyLjUuNjY2LDcsMi4zNDQsMTEuNjUxLDguNjA2QTEyLjU0NCwxMi41NDQsMCwwLDEsMjAuMjc5LDMwSDEwLjM4NmEyMS44NzUsMjEuODc1LDAsMCwwLS4xNzUtNC42MiwxNC45LDE0LjksMCwwLDAtMi40NTktNy4xNThDNS40NDEsMTUuMTU5LDIuMDU1LDE0LjUsMi4yMzgsMTMuOTM1WlwiIHN0eWxlPVwiZmlsbDojNzhkYzUwXCIvPjxwYXRoIGQ9XCJNMTcuMywyMS4zMjNhMS43NTMsMS43NTMsMCwxLDEtLjUxMy0xLjI0QTEuNzQ4LDEuNzQ4LDAsMCwxLDE3LjMsMjEuMzIzWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjEuOTc1LDIxLjMyM2ExLjc1MywxLjc1MywwLDEsMS0uNTEzLTEuMjRBMS43NDgsMS43NDgsMCwwLDEsMjEuOTc1LDIxLjMyM1pcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIlR5cGVTY3JpcHRcIjogYDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMjhcIiByeD1cIjEuMzEyXCIgc3R5bGU9XCJmaWxsOiMzMTc4YzZcIi8+PHBhdGggZD1cIk0xOC4yNDUsMjMuNzU5djMuMDY4YTYuNDkyLDYuNDkyLDAsMCwwLDEuNzY0LjU3NSwxMS41NiwxMS41NiwwLDAsMCwyLjE0Ni4xOTIsOS45NjgsOS45NjgsMCwwLDAsMi4wODgtLjIxMSw1LjExLDUuMTEsMCwwLDAsMS43MzUtLjcsMy41NDIsMy41NDIsMCwwLDAsMS4xODEtMS4yNjYsNC40NjksNC40NjksMCwwLDAsLjE4Ni0zLjM5NCwzLjQwOSwzLjQwOSwwLDAsMC0uNzE3LTEuMTE3LDUuMjM2LDUuMjM2LDAsMCwwLTEuMTIzLS44NzcsMTIuMDI3LDEyLjAyNywwLDAsMC0xLjQ3Ny0uNzM0cS0uNi0uMjQ5LTEuMDgtLjQ4NGE1LjUsNS41LDAsMCwxLS44MTMtLjQ3OSwyLjA4OSwyLjA4OSwwLDAsMS0uNTE2LS41MTgsMS4wOTEsMS4wOTEsMCwwLDEtLjE4MS0uNjE4LDEuMDM5LDEuMDM5LDAsMCwxLC4xNjItLjU3MSwxLjQsMS40LDAsMCwxLC40NTktLjQzNiwyLjQzOSwyLjQzOSwwLDAsMSwuNzI2LS4yODMsNC4yMTEsNC4yMTEsMCwwLDEsLjk1Ni0uMSw1Ljk0Miw1Ljk0MiwwLDAsMSwuODA4LjA1OCw2LjI5Miw2LjI5MiwwLDAsMSwuODU2LjE3Nyw1Ljk5NCw1Ljk5NCwwLDAsMSwuODM2LjMsNC42NTcsNC42NTcsMCwwLDEsLjc1MS40MjJWMTMuOWE3LjUwOSw3LjUwOSwwLDAsMC0xLjUyNS0uNCwxMi40MjYsMTIuNDI2LDAsMCwwLTEuOS0uMTI5LDguNzY3LDguNzY3LDAsMCwwLTIuMDY0LjIzNSw1LjIzOSw1LjIzOSwwLDAsMC0xLjcxNi43MzMsMy42NTUsMy42NTUsMCwwLDAtMS4xNzEsMS4yNzEsMy43MzEsMy43MzEsMCwwLDAtLjQzMSwxLjg0NSwzLjU4OCwzLjU4OCwwLDAsMCwuNzg5LDIuMzQsNiw2LDAsMCwwLDIuMzk1LDEuNjM5cS42My4yNiwxLjE3NS41MDlhNi40NTgsNi40NTgsMCwwLDEsLjk0Mi41MTcsMi40NjMsMi40NjMsMCwwLDEsLjYyNi41ODUsMS4yLDEuMiwwLDAsMSwuMjMuNzE5LDEuMSwxLjEsMCwwLDEtLjE0NC41NTIsMS4yNjksMS4yNjksMCwwLDEtLjQzNS40NDEsMi4zODEsMi4zODEsMCwwLDEtLjcyNi4yOTIsNC4zNzcsNC4zNzcsMCwwLDEtMS4wMTguMTA1LDUuNzczLDUuNzczLDAsMCwxLTEuOTY5LS4zNUE1Ljg3NCw1Ljg3NCwwLDAsMSwxOC4yNDUsMjMuNzU5Wm0tNS4xNTQtNy42MzhoNFYxMy41OTRINS45Mzh2Mi41MjdIOS45MlYyNy4zNzVoMy4xNzFaXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+YCxcblx0XCJUeXBvU2NyaXB0XCI6IGA8cGF0aCBkPVwiTTIzLjA5MywyMS4zYTMuODQ3LDMuODQ3LDAsMCwxLTEuMTguMTY1Yy0zLjU1NSwwLTguNzc4LTEyLjQyNC04Ljc3OC0xNi41NTksMC0xLjUyMy4zNjItMi4wMzEuODctMi40NjZDOS42NTMsMi45NDMsNC40Myw0LjUzOSwyLjc2MSw2LjU3YTQuMDQ4LDQuMDQ4LDAsMCwwLS41OCwyLjMyMUMyLjE4MSwxNS4zNDgsOS4wNzIsMzAsMTMuOTMzLDMwYzIuMjQ4LDAsNi4wNDEtMy43LDkuMTYtOC43XCIgc3R5bGU9XCJmaWxsOiNmZjg3MDBcIi8+PHBhdGggZD1cIk0yMC44MjMsMmM0LjUsMCw5LC43MjUsOSwzLjI2NCwwLDUuMTUxLTMuMjY0LDExLjM4OS00LjkzMywxMS4zODktMi45NzQsMC02LjY3My04LjI2OS02LjY3My0xMi40LDAtMS44ODYuNzI1LTIuMjQ5LDIuNjExLTIuMjQ5XCIgc3R5bGU9XCJmaWxsOiNmZjg3MDBcIi8+YCxcblx0XCJWXCI6IGA8cGF0aCBkPVwiTTIwLjQ2NywyOS4yODgsMjkuOTUyLDIuOTEzYS41LjUsMCwwLDAtLjU2Ni0uNzI4TDIxLjkyNywyLjlhMS40NjQsMS40NjQsMCwwLDAtMS4xNDEuOUwxMi4wMDcsMjkuMDA2YS41NzMuNTczLDAsMCwwLC41NzguODEzaDcuMjZhLjY1Ny42NTcsMCwwLDAsLjU3Ny0uNFpcIiBzdHlsZT1cImZpbGw6IzUzNmI4YVwiLz48cGF0aCBkPVwiTTIuNjE0LDIuMTg1bDcuNDU5LjcxOWExLjQ2NiwxLjQ2NiwwLDAsMSwxLjE0Mi45TDIwLjE4LDI5LjQxM2EuMjg2LjI4NiwwLDAsMS0uMjg5LjQwNkgxMi41ODVhMS4zMTEsMS4zMTEsMCwwLDEtMS4xNTItLjgxTDIuMDQ4LDIuOTEzQS41LjUsMCwwLDEsMi42MTQsMi4xODVaXCIgc3R5bGU9XCJmaWxsOiM1ZDg3YmZcIi8+YCxcblx0XCJWYWxhXCI6IGA8cGF0aCBkPVwiTTEyLjUwOSwxNy4xOTNjLS4xNjUtNi44MzYtLjMyNS0xMi40NTUtLjM1Ny0xMi40ODdBNy45MTYsNy45MTYsMCwwLDAsOS44NzksNS44NzQsNy42MDYsNy42MDYsMCwwLDAsNy4zMjQsOS4xODhhOC40MjIsOC40MjIsMCwwLDAtLjU4NywzLjU0Myw0LjY2NSw0LjY2NSwwLDAsMCwuMiwxLjk2MiwzLjQxNywzLjQxNywwLDAsMSwuMTgyLjU2Yy0uMDEyLjAwOS0uMzM4LS4wMTgtLjcyNC0uMDYxLTEuODY4LS4yMDctMi43ODYtMS4wNS0zLTIuNzU3QTYuMzEyLDYuMzEyLDAsMCwxLDQuODUsNy43MTlhMTUuMTM0LDE1LjEzNCwwLDAsMSw4LjQxNC01LjE2MywxMi44OTEsMTIuODkxLDAsMCwxLDIuNTQyLS4yMzVsMS43NDgtLjA1LjA1OSwyLjUwNmMuMDMyLDEuMzc4LjEsNi4zNTguMTYxLDExLjA2N3MtLjI1Miw4LjI5LS4yMTksOC40QzE5LjUsMTcuODc5LDIyLDEzLjA3MywyNC4zNjcsNi4yNTNsMS40MjctMy45ODNIMjguNTRjLS4wMjIuMDYzLTIuNzUxLDYuNS01LjUxNCwxMy45MTZsLTUuNDczLDEzLjU1SDEyLjk3NkMxMi45NzYsMjcuOTA2LDEyLjUzNSwxOC40ODYsMTIuNTA5LDE3LjE5M1pcIiBzdHlsZT1cImZpbGw6IzQwMzc1N1wiLz48cGF0aCBkPVwiTTE3LjczMiwzMEgxMi43MTN2LS4yNjNjMC0xLjEzNy0uMTctNS4xOTItLjMwNy04LjQ1Mi0uMDgxLTEuOTI5LS4xNS0zLjYtLjE2MS00LjA4Ny0uMTU2LTYuNDc5LS4yODYtMTEtLjMzNi0xMi4xNjNhMTEuNjc0LDExLjY3NCwwLDAsMC0xLjg3NCwxLjA0OSw3LjM0OCw3LjM0OCwwLDAsMC0yLjQ2NiwzLjJBOC4xNDYsOC4xNDYsMCwwLDAsNywxMi43MzEsNC4zNyw0LjM3LDAsMCwwLDcuMTg1LDE0LjZjLjIxNS41NjkuMjczLjcyMy4xLjg1OS0uMDkzLjA3My0uMTA3LjA4NC0uOTE2LS4wMDctMS45NzYtLjIxOS0zLTEuMTY3LTMuMjM0LTIuOTg2QTYuNTY4LDYuNTY4LDAsMCwxLDQuNjQsNy41NjEsMTUuNDM5LDE1LjQzOSwwLDAsMSwxMy4yLDIuMywxMy4xNzYsMTMuMTc2LDAsMCwxLDE1LjgsMi4wNThMMTcuODExLDJsLjA2NSwyLjc3Yy4wMzIsMS4zOTIuMTA2LDYuNDYxLjE2MSwxMS4wNy4wMzEsMi42MTYtLjA1Miw0LjkxNS0uMTI0LDYuNDMuOTMxLTIuNzYzLDEuOTU4LTUuMjcsMy4wMzMtNy45LDEuMDQzLTIuNTQ3LDIuMTIyLTUuMTgsMy4xNzMtOC4yMDdsMS40OTEtNC4xNmgzLjNsLS4xMjUuMzUxYzAsLjAwNy0uMDMxLjA3Ni0uMDg0LjItMS4xLDIuNjIyLTMuMjU5LDcuODg5LTUuNDMsMTMuNzE3Wm0tNC40OTUtLjUyNmg0LjE0bDUuNDA3LTEzLjM4NmMyLjEyNC01LjcsNC4yNDMtMTAuODc2LDUuMzYyLTEzLjU1NUgyNS45NzlMMjQuNjE0LDYuMzQyYy0xLjA1NSwzLjAzOC0yLjEzNyw1LjY3OC0zLjE4Myw4LjIzMS0xLjMxMSwzLjItMi41NSw2LjIyNi0zLjYyNiw5Ljc0N2wtLjI1NS44MzEtLjI0OC0uODMzYTMuMjc0LDMuMjc0LDAsMCwxLC4wMjEtLjgzOWMuMDc0LTEuMzUuMjI5LTQuMTU4LjE4OC03LjYzMy0uMDU1LTQuNjA3LS4xMjktOS42NzQtLjE2MS0xMS4wNjRMMTcuMywyLjU0MWwtMS40ODQuMDQzYTEyLjcyOSwxMi43MjksMCwwLDAtMi40OS4yMjhBMTQuODg3LDE0Ljg4NywwLDAsMCw1LjA2LDcuODc3YTYuMDcxLDYuMDcxLDAsMCwwLTEuNCw0LjUyNGMuMiwxLjU4LDEuMDI4LDIuMzM2LDIuNzcsMi41MjlsLjMzMy4wMzVjLS4wMTktLjA1NC0uMDQxLS4xMTQtLjA2Ni0uMTc5YTQuODkzLDQuODkzLDAsMCwxLS4yMTktMi4wNTUsOC43LDguNywwLDAsMSwuNi0zLjYzOCw3Ljg4Myw3Ljg4MywwLDAsMSwyLjY0NC0zLjQzYy4wMjItLjAxNiwyLjIzMi0xLjUyNSwyLjYxNS0xLjE0Mi4wOTIuMDkyLjEzMS4xMzEuNDMzLDEyLjY2NmgwYy4wMS40ODUuMDgsMi4xNDkuMTYsNC4wNzZDMTMuMDYsMjQuMzEzLDEzLjIxNywyOC4wNiwxMy4yMzcsMjkuNDc0WlwiIHN0eWxlPVwiZmlsbDojYzhjOGM4XCIvPmAsXG5cdFwiVkIuTmV0XCI6IGA8cGF0aCBkPVwiTTYuNjcsNy44MzYsOSwxOC45MTUsMTEuMzM2LDcuODM2SDE2TDExLjMzNiwyNC4xNjRINi42NzJMMiw3LjgzNlpcIiBzdHlsZT1cImZpbGw6IzAwNTE5YVwiLz48cGF0aCBkPVwiTTE4LjMzMSw3LjgzNmg3LjZhNC4wOCw0LjA4LDAsMCwxLDIuOSwxLjc0OSwzLjc4LDMuNzgsMCwwLDEsLjU3MSwyLjA0LDMuOTg1LDMuOTg1LDAsMCwxLS41NzEsMi4wMzQsNC4xMDgsNC4xMDgsMCwwLDEtMi4zNDEsMS43NjMsNC4xLDQuMSwwLDAsMSwyLjkyOSwxLjc1NiwzLjgsMy44LDAsMCwxLC41OCwyLjEsNC42NjMsNC42NjMsMCwwLDEtLjU3OSwyLjU0Niw1LjA0Nyw1LjA0NywwLDAsMS0zLjUsMi4zMzhIMTguMzMxWk0yMywxNC4yNTJoMS4xNjZhMS43NTQsMS43NTQsMCwwLDAsMC0zLjVIMjNabTAsN0gyNC4zOWEyLjA0NywyLjA0NywwLDAsMCwwLTQuMDg5SDIzWlwiIHN0eWxlPVwiZmlsbDojMDA1MTlhXCIvPmAsXG5cdFwiVkJBXCI6IGA8cG9seWdvbiBwb2ludHM9XCIxMC40NTcgMTEuMDkyIDE2LjAxNCAxMy44MzkgMTYuMDE0IDE4LjMwNyAxMC40NTcgMTUuMzgyIDEwLjQ1NyAxMS4wOTJcIiBzdHlsZT1cImZpbGw6IzY0ODNjMFwiLz48cGF0aCBkPVwiTTE2LjIsMTguNjEzbC01LjkyNi0zLjEyVjEwLjhMMTYuMiwxMy43MjRaTTEwLjY0MiwxNS4yNywxNS44MywxOFYxMy45NTNsLTUuMTg4LTIuNTY0WlwiLz48cG9seWdvbiBwb2ludHM9XCIxNi4zNzEgMTMuODM5IDE2LjM3MSAxOC4zMDcgMjEuMzE1IDE1LjgxNCAyMS4zMTUgMTEuMzU0IDE2LjM3MSAxMy44MzlcIiBzdHlsZT1cImZpbGw6IzY0ODNjMFwiLz48cGF0aCBkPVwiTTE2LjE4NiwxOC42MDdWMTMuNzI1bDUuMzEzLTIuNjd2NC44NzNabS4zNjktNC42NTV2NC4wNTVMMjEuMTMsMTUuN1YxMS42NTNaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjEwLjcwMyAxMC43OTcgMTYuMTg2IDEzLjU4IDIxLjA4MiAxMS4wNjQgMTUuNzc3IDguMzg5IDEwLjcwMyAxMC43OTdcIiBzdHlsZT1cImZpbGw6IzY0ODNjMFwiLz48cGF0aCBkPVwiTTE2LjE4NywxMy43ODhsLTUuOS0zLDUuNS0yLjYwOCw1LjcwOSwyLjg3OVpNMTEuMTIyLDEwLjhsNS4wNjQsMi41Nyw0LjQ5LTIuMzA4LTQuOS0yLjQ3MVpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTguOTU3IDE1LjgyOSAyNC41MTUgMTguNTc1IDI0LjUxNSAyMy4wNDMgMTguOTU3IDIwLjExOCAxOC45NTcgMTUuODI5XCIgc3R5bGU9XCJmaWxsOiM5NTI3ODFcIi8+PHBhdGggZD1cIk0yNC43LDIzLjM0OWwtNS45MjYtMy4xMnYtNC43TDI0LjcsMTguNDZabS01LjU1Ny0zLjM0Myw1LjE4OCwyLjczMVYxOC42ODlsLTUuMTg4LTIuNTY0WlwiLz48cG9seWdvbiBwb2ludHM9XCIyNC44NzEgMTguNTc1IDI0Ljg3MSAyMy4wNDMgMjkuODE1IDIwLjU1IDI5LjgxNSAxNi4wOSAyNC44NzEgMTguNTc1XCIgc3R5bGU9XCJmaWxsOiM5NTI3ODFcIi8+PHBhdGggZD1cIk0yNC42ODcsMjMuMzQzVjE4LjQ2MUwzMCwxNS43OTF2NC44NzNabS4zNjktNC42NTV2NC4wNTVsNC41NzUtMi4zMDhWMTYuMzg5WlwiLz48cG9seWdvbiBwb2ludHM9XCIxOS4yMDMgMTUuNTQ2IDI0LjY4NyAxOC4zMjkgMjkuNTgzIDE1LjgxMiAyNC4zNjQgMTMuMzQ2IDE5LjIwMyAxNS41NDZcIiBzdHlsZT1cImZpbGw6Izk1Mjc4MVwiLz48cGF0aCBkPVwiTTI0LjY4NywxOC41MzZsLTUuOTItMy4wMDUsNS42LTIuMzg3TDMwLDE1LjgwNVpNMTkuNjQsMTUuNTZsNS4wNDYsMi41NjEsNC40NzktMi4zLTQuODA2LTIuMjdaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuMTkgMTUuNDk2IDcuNzQ4IDE4LjI0MyA3Ljc0OCAyMi43MTEgMi4xOSAxOS43ODYgMi4xOSAxNS40OTZcIiBzdHlsZT1cImZpbGw6I2Q4N2IzMFwiLz48cGF0aCBkPVwiTTcuOTMyLDIzLjAxNywyLjAwNiwxOS45VjE1LjJsNS45MjYsMi45MjlaTTIuMzc1LDE5LjY3NGw1LjE4OCwyLjczMVYxOC4zNTdMMi4zNzUsMTUuNzkzWlwiLz48cG9seWdvbiBwb2ludHM9XCI4LjEwNCAxOC4yNDMgOC4xMDQgMjIuNzExIDEzLjA0OCAyMC4yMTggMTMuMDQ4IDE1Ljc1OCA4LjEwNCAxOC4yNDNcIiBzdHlsZT1cImZpbGw6I2Q4N2IzMFwiLz48cGF0aCBkPVwiTTcuOTIsMjMuMDExVjE4LjEyOWw1LjMxMy0yLjY3djQuODczWm0uMzY5LTQuNjU1djQuMDU1TDEyLjg2NCwyMC4xVjE2LjA1N1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMi40MzYgMTUuMjEzIDcuOTIgMTcuOTk3IDEyLjgxNiAxNS40OCA3LjU5NyAxMy4wMTQgMi40MzYgMTUuMjEzXCIgc3R5bGU9XCJmaWxsOiNkODdiMzBcIi8+PHBhdGggZD1cIk03LjkyLDE4LjIsMiwxNS4ybDUuNi0yLjM4Nyw1LjYzMiwyLjY2MVpNMi44NzMsMTUuMjI4bDUuMDQ2LDIuNTYxLDQuNDc5LTIuMy00LjgwNi0yLjI3WlwiLz48cG9seWdvbiBwb2ludHM9XCIxMC44NzUgMTYuMjk2IDE2LjQzMiAxOS4wNDIgMTYuNDMyIDIzLjUxMSAxMC44NzUgMjAuNTg1IDEwLjg3NSAxNi4yOTZcIiBzdHlsZT1cImZpbGw6I2UwZDQwMFwiLz48cGF0aCBkPVwiTTE2LjYxNywyMy44MTYsMTAuNjkxLDIwLjdWMTZsNS45MjYsMi45MjlaTTExLjA2LDIwLjQ3NGw1LjE4OCwyLjczMVYxOS4xNTdMMTEuMDYsMTYuNTkzWlwiLz48cG9seWdvbiBwb2ludHM9XCIxNi43ODkgMTkuMDQyIDE2Ljc4OSAyMy41MTEgMjEuNzMzIDIxLjAxNyAyMS43MzMgMTYuNTU3IDE2Ljc4OSAxOS4wNDJcIiBzdHlsZT1cImZpbGw6I2UwZDQwMFwiLz48cGF0aCBkPVwiTTE2LjYsMjMuODExVjE4LjkyOWw1LjMxMy0yLjY3djQuODczWm0uMzY5LTQuNjU1djQuMDU1TDIxLjU0OSwyMC45VjE2Ljg1N1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTEuMTIxIDE2LjAwMSAxNi42MDUgMTguNzg0IDIxLjUwMSAxNi4yNjcgMTYuMTk2IDEzLjU5MyAxMS4xMjEgMTYuMDAxXCIgc3R5bGU9XCJmaWxsOiNlMGQ0MDBcIi8+PHBhdGggZD1cIk0xNi42MDUsMTguOTkxbC01LjktMyw1LjUtMi42MDgsNS43MDksMi44NzlaTTExLjU0LDE2LjAwNmw1LjA2NCwyLjU3LDQuNDktMi4zMDgtNC45LTIuNDcxWlwiLz5gLFxuXHRcIlZlbG9jaXR5XCI6IGA8cGF0aCBkPVwiTTE2LjI0NSwyNC4xODdBOC4zNTIsOC4zNTIsMCwxLDEsMjQuNiwxNS44MzUsOC4zNjIsOC4zNjIsMCwwLDEsMTYuMjQ1LDI0LjE4N1ptMC0xNC43NjJhNi40MSw2LjQxLDAsMSwwLDYuNDEsNi40MUE2LjQxNyw2LjQxNywwLDAsMCwxNi4yNDUsOS40MjVaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI5LjEzMiA4LjU1MSAyNS40NTEgNi41MzEgMjUuNDUxIDcuNDc0IDE1LjgyMSA3LjQ3NCAxNS44MjEgOS40MjQgMjUuNDUxIDkuNDI0IDI1LjQ1MSAxMC41NzEgMjkuMTMyIDguNTUxXCIgc3R5bGU9XCJmaWxsOiMyNjI2OTJcIi8+PHBvbHlnb24gcG9pbnRzPVwiOC45ODQgMiA2Ljk2NCA1LjY4NyA3LjkwNiA1LjY4NyA3LjkwNiAxNS4zMjggOS44NTcgMTUuMzI4IDkuODU3IDUuNjg3IDExLjAwNCA1LjY4NyA4Ljk4NCAyXCIgc3R5bGU9XCJmaWxsOiMyNjI2OTNcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjMuNzA1IDMwIDIxLjY4NSAyNi4yNDMgMjIuNjI4IDI2LjI0MyAyMi42MjggMTYuNDE3IDI0LjU3OCAxNi40MTcgMjQuNTc4IDI2LjI0MyAyNS43MjUgMjYuMjQzIDIzLjcwNSAzMFwiIHN0eWxlPVwiZmlsbDojMjYyNjkzXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuODY4IDIzLjMyIDYuNjM0IDIxLjMgNi42MzQgMjIuMjQyIDE2LjQ4NCAyMi4yNDIgMTYuNDg0IDI0LjE5MiA2LjYzNCAyNC4xOTIgNi42MzQgMjUuMzQgMi44NjggMjMuMzJcIiBzdHlsZT1cImZpbGw6IzI2MjY5MlwiLz5gLFxuXHRcIlZlcmlsb2dcIjogYDxwYXRoIGQ9XCJNMjkuMDA3LDE3LjRoLjAzN2ExLjQ0OSwxLjQ0OSwwLDAsMCwuOTM4LS4zMTYsMS40NzMsMS40NzMsMCwwLDAsLjUxOS0xLjAzMVYxNS45YTEuNDEzLDEuNDEzLDAsMCwwLTEuMzc2LTEuM2gtLjAwOWMtLjY4NywwLTEuMzc0LDAtMi4wNjIsMEgyNS41VjExLjk1NmwzLjUxMywwaC4wMzRBMS40MTEsMS40MTEsMCwwLDAsMzAuNSwxMC42bDAtLjA5LDAtLjAzMmExLjQxMiwxLjQxMiwwLDAsMC0uNjQ2LTEuMSwxLjQ1NSwxLjQ1NSwwLDAsMC0uODM1LS4yMjVIMjUuNDU2YTIuOTYsMi45NiwwLDAsMC0uMjc4LTEuMDM0LDIuOTA5LDIuOTA5LDAsMCwwLTEuNy0xLjQ2MSwyLjY4NCwyLjY4NCwwLDAsMC0uNjI5LS4xM1Y0Ljk0N2MwLS42OSwwLTEuMzgsMC0yLjA2M0ExLjQxNCwxLjQxNCwwLDAsMCwyMS40ODEsMS41aC0uMTE2YTEuNCwxLjQsMCwwLDAtMS4zMTksMS4zODhxMCwxLjE1NCwwLDIuMzA2VjYuNUgxNy40VjQuOTgxYzAtLjcsMC0xLjQsMC0yLjA4N0ExLjQxLDEuNDEsMCwwLDAsMTYuMDUzLDEuNUgxNS45YTEuNDA4LDEuNDA4LDAsMCwwLTEuMywxLjM4M2MwLC42ODgsMCwxLjM3NiwwLDIuMDY0VjYuNTA4cS0xLjMxOSwwLTIuNjM5LDBWNC44ODhjMC0uNjY2LDAtMS4zMzIsMC0xLjk4OWExLjM2NiwxLjM2NiwwLDAsMC0uNC0uOTc1LDEuNCwxLjQsMCwwLDAtLjk4NC0uNDI0SDEwLjVBMS40MSwxLjQxLDAsMCwwLDkuMTU5LDIuODgxYzAsLjY4MywwLDEuMzY2LDAsMi4wNDl2MS42YTIuOTMzLDIuOTMzLDAsMCwwLTIuNDY2LDEuOSwyLjg3OCwyLjg3OCwwLDAsMC0uMTYxLjcyNkg0Ljk1N2MtLjY5MywwLTEuMzg2LDAtMi4wNzMsMEgyLjg3NkExLjQxMywxLjQxMywwLDAsMCwxLjUsMTAuNXYuMDk1YTEuNDE3LDEuNDE3LDAsMCwwLC41NzUsMS4wOTEsMS40NjMsMS40NjMsMCwwLDAsLjg4Ny4yNzNoLjAxN2wzLjUyMiwwVjE0LjZINC45NDhjLS42ODYsMC0xLjM3NSwwLTIuMDU3LDBBMS40MjgsMS40MjgsMCwwLDAsMS41LDE1LjkxM1YxNi4xYTEuNCwxLjQsMCwwLDAsMS4zODYsMS4zYy43MTEsMCwxLjQyMywwLDIuMTM1LDBINi41VjIwLjA1bC0uMjkyLDBjLS42MTMtLjAwNy0xLjIyNiwwLTEuODM4LDBIMy4wODdhMS42MzMsMS42MzMsMCwwLDAtLjkxOC4yMTFBMS40MzcsMS40MzcsMCwwLDAsMS41LDIxLjRWMjEuNWExLjQxNywxLjQxNywwLDAsMCwxLjM3NSwxLjMzN2guMDA1cS42NDUsMCwxLjI5LDBINi41NDZhMi44MzIsMi44MzIsMCwwLDAsMS45NzgsMi41LDIuNzEyLDIuNzEyLDAsMCwwLC42MzEuMTI4djEuNjJjMCwuNjc4LDAsMS4zNTQsMCwyLjAyNWExLjQsMS40LDAsMSwwLDIuOC0uMDkybDAtMy41MjdIMTQuNnYzLjUxNkExLjQxNCwxLjQxNCwwLDAsMCwxNS45NDcsMzAuNUgxNi4xYTEuNDExLDEuNDExLDAsMCwwLDEuMy0xLjM4NXEuMDA2LTEuMDY2LDAtMi4xMzFWMjUuNWgyLjY0NFYyOS4xQTEuNDIzLDEuNDIzLDAsMCwwLDIxLjQsMzAuNWguMTE5YTEuNDA4LDEuNDA4LDAsMCwwLDEuMTYtLjc0MSwxLjY0MywxLjY0MywwLDAsMCwuMTY3LS44MzNWMjUuNDc0YTIuNjcxLDIuNjcxLDAsMCwwLC42Mi0uMTI4LDIuOTI4LDIuOTI4LDAsMCwwLDEuODg2LTEuODg4LDIuODM0LDIuODM0LDAsMCwwLC4xMjMtLjYxM2gxLjU4MWMuNjg3LDAsMS4zNzUsMCwyLjA1NywwaC4wMDhBMS40MjIsMS40MjIsMCwwLDAsMzAuNSwyMS40ODF2LS4xMThhMS40MDksMS40MDksMCwwLDAtMS4zODItMS4zMThoMGMtLjcxOCwwLTEuNDM2LDAtMi4xNTQsMEgyNS41VjE3LjRaXCIgc3R5bGU9XCJmaWxsOiNjNWM1YzU7b3BhY2l0eTowLjNcIi8+PHBhdGggZD1cIk0xMC41MTUsMmguMDU2YS45MS45MSwwLDAsMSwuODg2Ljg5M2MuMDA2LDEuMTA4LDAsMi4yMTYsMCwzLjMyNC0uNiwwLTEuMiwwLTEuOCwwLDAtMS4xMTEsMC0yLjIyMiwwLTMuMzMzQS45MDcuOTA3LDAsMCwxLDEwLjUxNSwyWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMTUuOTM3LDJoLjExNmEuOTEyLjkxMiwwLDAsMSwuODQ2Ljg4OWMuMDA2LDEuMTA5LDAsMi4yMTksMCwzLjMyOUgxNS4xYzAtMS4xMSwwLTIuMjIsMC0zLjMzQS45MTEuOTExLDAsMCwxLDE1LjkzNywyWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMjEuMzkyLDJoLjA4OWEuOTA3LjkwNywwLDAsMSwuODU5Ljg4MWMuMDA3LDEuMTEyLDAsMi4yMjUsMCwzLjMzN2gtMS44YzAtMS4xMDksMC0yLjIxNywwLTMuMzI2QS45MTIuOTEyLDAsMCwxLDIxLjM5MiwyWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMiwxMC41MThhLjkwOC45MDgsMCwwLDEsLjg4Mi0uODU5YzEuMTEyLS4wMDcsMi4yMjMsMCwzLjMzNCwwcTAsLjksMCwxLjhjLTEuMDc5LDAtMi4xNTgsMC0zLjIzNywwYS45ODMuOTgzLDAsMCwxLS42LS4xNzNBLjkyNC45MjQsMCwwLDEsMiwxMC41NzFaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yNS43ODYsOS42NTVoMy4yMzNhMSwxLDAsMCwxLC41NjEuMTQzLjkyNC45MjQsMCwwLDEsLjQyLjcxNnYuMDU4YS45MzMuOTMzLDAsMCwxLS4zLjY1MS45NTcuOTU3LDAsMCwxLS42NzcuMjM0Yy0xLjA3OSwwLTIuMTU4LDAtMy4yMzcsMFEyNS43ODYsMTAuNTU2LDI1Ljc4Niw5LjY1NVpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTIsMTUuOTQ0YS45MTMuOTEzLDAsMCwxLC44ODgtLjg0MmMxLjEwOS0uMDA3LDIuMjE5LDAsMy4zMjgsMHEwLC45LDAsMS44Yy0xLjEwOSwwLTIuMjE3LDAtMy4zMjYsMEEuOTE1LjkxNSwwLDAsMSwyLDE2LjA2M1pcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTI1Ljc4NiwxNS4xYzEuMTA5LDAsMi4yMTgsMCwzLjMyNiwwYS45MTQuOTE0LDAsMCwxLC44ODkuODM1di4xMTdhLjk0Ni45NDYsMCwwLDEtLjMzMS42NDEuOTczLjk3MywwLDAsMS0uNjUxLjIwN0gyNS43ODZRMjUuNzg1LDE2LDI1Ljc4NiwxNS4xWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMi40MzMsMjAuNjc4YTEuMTIxLDEuMTIxLDAsMCwxLC42NDMtLjEzNmMxLjA0My4wMDYsMi4wODYtLjAwNiwzLjEyOS4wMDYuMDI4LjYsMCwxLjIuMDEyLDEuOC0xLjExLDAtMi4yMjEsMC0zLjMzMSwwQS45MTEuOTExLDAsMCwxLDIsMjEuNDgzVjIxLjRBLjkyNS45MjUsMCwwLDEsMi40MzMsMjAuNjc4WlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMjUuNzg2LDIwLjU0M2MxLjEwOCwwLDIuMjE2LDAsMy4zMjQsMGEuOTE0LjkxNCwwLDAsMSwuODkuODQ3di4wOWEuOTExLjkxMSwwLDAsMS0uODg4Ljg1OWMtMS4xMDkuMDA3LTIuMjE4LDAtMy4zMjYsMEMyNS43ODYsMjEuNzQzLDI1Ljc4NSwyMS4xNDMsMjUuNzg2LDIwLjU0M1pcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTkuNjU2LDI1Ljc4MWgxLjhjMCwxLjA4MSwwLDIuMTYyLDAsMy4yNDNhLjk1Ny45NTcsMCwwLDEtLjIzNS42NzcuOTMxLjkzMSwwLDAsMS0uNjUzLjNoLS4wNTJhLjkwNy45MDcsMCwwLDEtLjg2LS44ODJDOS42NTEsMjguMDA2LDkuNjU4LDI2Ljg5NCw5LjY1NiwyNS43ODFaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0xNS4xLDI1Ljc4MWgxLjhjMCwxLjExLDAsMi4yMiwwLDMuMzNhLjkxNC45MTQsMCwwLDEtLjgzNi44ODloLS4xMTZhLjk0Ljk0LDAsMCwxLS42MTktLjMwNi45NjIuOTYyLDAsMCwxLS4yMjgtLjY3M1ExNS4xLDI3LjQsMTUuMSwyNS43ODFaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yMC41NDcsMjkuMTA2YzAtMS4xMDgsMC0yLjIxNywwLTMuMzI1aDEuOGMwLDEuMDQ4LDAsMi4xLDAsMy4xNDRhMS4xNzgsMS4xNzgsMCwwLDEtLjEwNS41OS45Mi45MiwwLDAsMS0uNzU2LjQ4NEgyMS40QS45MTEuOTExLDAsMCwxLDIwLjU0NywyOS4xMDZaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yNC43MzIsOC4zNDlBMi40MjksMi40MjksMCwwLDAsMjMuMzEsNy4xMzEsMy4yNDUsMy4yNDUsMCwwLDAsMjIuMjU0LDdjLTQuMy4wMDgtOC42LS4wMTEtMTIuOTA1LjAxQTIuNDM2LDIuNDM2LDAsMCwwLDcuMTU3LDguNjA2LDMuNjExLDMuNjExLDAsMCwwLDcsOS45MzRxMCw2LjI1LDAsMTIuNWEyLjY3MywyLjY3MywwLDAsMCwuMjY4LDEuMjE5QTIuNDMxLDIuNDMxLDAsMCwwLDguNjg4LDI0Ljg3LDMuNzU2LDMuNzU2LDAsMCwwLDkuOTI3LDI1SDIyLjA3YTMuNzYyLDMuNzYyLDAsMCwwLDEuMjQzLS4xMjdBMi40MjksMi40MjksMCwwLDAsMjQuODc1LDIzLjMsMy44LDMuOCwwLDAsMCwyNSwyMi4wNzFxMC02LjI1LDAtMTIuNUEyLjY4NiwyLjY4NiwwLDAsMCwyNC43MzIsOC4zNDlaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk03LjUsOC4zMDdsLjA4NC0uMnEuOTY4LDAsMS45MzUuMDI0aC4zOTRxLjE3OSwwLC4zOTQtLjAxMi43NzYtLjAzNiwyLjgwNy0uMDM2LjQwNiwwLC43ODguMDA2dC43NDEuMDE4YS4yMzQuMjM0LDAsMCwxLC4xMDguMTA4bC0uMDI0LjE5MXEtLjA3Mi4xMTktLjM1OC4xMTloLS4xYTEwLjMsMTAuMywwLDAsMC0xLjEuMDU0LDIuMTc5LDIuMTc5LDAsMCwwLTEsLjI0NS40MzIuNDMyLDAsMCwwLS4xNTUuMzQ2LDQuMDUsNC4wNSwwLDAsMCwuMzk0LDEuNGwxLjgxOCw0LjIxNy42MzQsMS40cS45MjEsMi4yMjIsMS44MTksNC41MzkuMS4yNTEuMTc5LjQ1NGwuOC0xLjk1OXEuNjItMS40ODEsMS4yNTItMy4xNTRsLjgyMy0yLjI0NnEuMDI0LS4wNzIuMTMxLS40NzhhMTcuMDI2LDE3LjAyNiwwLDAsMCwxLjE1Ny00LC41NjEuNTYxLDAsMCwwLS4xNjEtLjM2NCwxLjE2NSwxLjE2NSwwLDAsMC0uNTItLjMsNy43MjMsNy43MjMsMCwwLDAtLjkzMi0uMTQzbC0uODg0LS4xMDhhLjMzNy4zMzcsMCwwLDEtLjEwOC0uMmwuMDM2LS4xLDMuODctLjAzNkgyMy42YTMuMSwzLjEsMCwwLDEsLjg4NS4wODRsLjAxMi4xYS42NDEuNjQxLDAsMCwxLS4wNzIuMjUxLDIuNDQ5LDIuNDQ5LDAsMCwxLS41MjYuMTE5LDMuNiwzLjYsMCwwLDAtMS4yNDQuMjgxLDEuODE1LDEuODE1LDAsMCwwLS41LjY4N2wtMy4xMzQsNy43NjVxLTEuNDY2LDMuNS0yLjA4Niw1LjQyM2wtLjM0NSwxLjAzOWEuNTMxLjUzMSwwLDAsMS0uMjYzLjEsMS4zODMsMS4zODMsMCwwLDEtLjMtLjAzNnEtMS40MjItMy42NzYtMi4zMTgtNS42ODFMMTAuMDU1LDkuOTJhMy4yNDcsMy4yNDcsMCwwLDAtLjU5MS0uODksNS40NjMsNS40NjMsMCwwLDAtMS4zNzktLjQyNCw0LjM0Nyw0LjM0NywwLDAsMS0uNDY2LS4xMTlBLjMyNi4zMjYsMCwwLDEsNy41LDguMzA3WlwiIHN0eWxlPVwiZmlsbDojYzVjMmZmXCIvPmAsXG5cdFwiVkhETFwiOiBgPHBhdGggZD1cIk0yLDJIMzBWMzBIMlptMS42ODkuMDY3QTEuNjI0LDEuNjI0LDAsMCwwLDIuMDYzLDMuNjkyVjI4LjMxNEExLjYyNSwxLjYyNSwwLDAsMCwzLjY4OSwyOS45NEgyOC4zMTZhMS42MjUsMS42MjUsMCwwLDAsMS42MjYtMS42MjZWMy42OTJhMS42MjQsMS42MjQsMCwwLDAtMS42MjYtMS42MjVaTTMuMDA4LDI4LjA3OWEuOTExLjkxMSwwLDAsMCwuOTExLjkxMkgyOC4wODNhLjkxMS45MTEsMCwwLDAsLjkxMS0uOTEyVjMuOTE5YS45MS45MSwwLDAsMC0uOTExLS45MTFIMy45MTlhLjkxLjkxLDAsMCwwLS45MTEuOTExWlwiIHN0eWxlPVwiZmlsbDojMGQ5YjM1XCIvPjxwb2x5Z29uIHBvaW50cz1cIjI1LjUyIDUuNTAyIDE4Ljg1OCAyNi40OTEgMTMuMTU0IDI2LjQ5MSA2LjQ5MiA1LjUwMiAxMC41MDggNS41MDIgMTYuMDI5IDIyLjc5NSAyMS41MDQgNS41MDIgMjUuNTIgNS41MDJcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcInZpbVwiOiBgPGRlZnM+PGNsaXBQYXRoIGlkPVwiYVwiPjxwb2x5Z29uIHBvaW50cz1cIjIgMiAzMCAyIDMwIDMwIDIgMzAgMiAyIDIgMlwiIHN0eWxlPVwiZmlsbDpub25lO2NsaXAtcnVsZTpldmVub2RkXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfdmltPC90aXRsZT48cG9seWdvbiBwb2ludHM9XCIyOS45ODkgMTUuODU2IDE1Ljg1NiAyLjAxMSAyLjAxMSAxNi4xMzYgMTUuODU2IDI5Ljk4OSAyOS45ODkgMTUuODU2IDI5Ljk4OSAxNS44NTZcIiBzdHlsZT1cImZpbGw6IzIzMWYyMDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48ZyBzdHlsZT1cImNsaXAtcGF0aDp1cmwoI2EpXCI+PHBvbHlnb24gcG9pbnRzPVwiMjkuOTg5IDE1Ljg1NiAxNS44NTYgMi4wMTEgMi4wMTEgMTYuMTM2IDE1Ljg1NiAyOS45ODkgMjkuOTg5IDE1Ljg1NiAyOS45ODkgMTUuODU2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PC9nPjxwb2x5Z29uIHBvaW50cz1cIjI4LjU3NSAxNS44NTYgMjkuNDIyIDE1Ljg1NiAxNS44NTYgMjkuNDIyIDE1Ljg1NiAyOC41NzUgMjguNTc1IDE1Ljg1NiAyOC41NzUgMTUuODU2XCIgc3R5bGU9XCJmaWxsOiMyOTY5NWQ7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjguNTc1IDE1Ljg1NiAyOS40MjIgMTUuODU2IDE1Ljg1NiAyOS40MjIgMTUuODU2IDI4LjU3NSAyOC41NzUgMTUuODU2IDI4LjU3NSAxNS44NTZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIyLjU3OCAxNi4xMzYgMy40MjUgMTYuMTM2IDE1Ljg1NiAyOC41NzUgMTUuODU2IDI5LjQyMiAyLjU3OCAxNi4xMzYgMi41NzggMTYuMTM2XCIgc3R5bGU9XCJmaWxsOiMzMTczNjc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMi41NzggMTYuMTM2IDMuNDI1IDE2LjEzNiAxNS44NTYgMjguNTc1IDE1Ljg1NiAyOS40MjIgMi41NzggMTYuMTM2IDIuNTc4IDE2LjEzNlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljg1NiAzLjQxOCAxNS44NTYgMi41NzggMi41NzggMTYuMTM2IDMuNDI1IDE2LjEzNiAxNS44NTYgMy40MTggMTUuODU2IDMuNDE4XCIgc3R5bGU9XCJmaWxsOiM2MGMyYWM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuODU2IDMuNDE4IDE1Ljg1NiAyLjU3OCAyLjU3OCAxNi4xMzYgMy40MjUgMTYuMTM2IDE1Ljg1NiAzLjQxOCAxNS44NTYgMy40MThcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNS44NTYgMi41NzggMTUuODU2IDMuNDE4IDI4LjU3NSAxNS44NTYgMjkuNDIyIDE1Ljg1NiAxNS44NTYgMi41NzggMTUuODU2IDIuNTc4XCIgc3R5bGU9XCJmaWxsOiM0M2I1NGE7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuODU2IDIuNTc4IDE1Ljg1NiAzLjQxOCAyOC41NzUgMTUuODU2IDI5LjQyMiAxNS44NTYgMTUuODU2IDIuNTc4IDE1Ljg1NiAyLjU3OFwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljg1NiAyOC41NzUgMjguNTc1IDE1Ljg1NiAxNS44NTYgMy40MTggMy40MjUgMTYuMTM2IDE1Ljg1NiAyOC41NzUgMTUuODU2IDI4LjU3NVwiIHN0eWxlPVwiZmlsbDojM2M4Mzc2O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljg1NiAyOC41NzUgMjguNTc1IDE1Ljg1NiAxNS44NTYgMy40MTggMy40MjUgMTYuMTM2IDE1Ljg1NiAyOC41NzUgMTUuODU2IDI4LjU3NVwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE4LjQ5OCA2LjI0NiAxOS4zNDUgNy4xIDEzLjUwMiAxMy4wMjggMTMuNTAyIDcuMSAxNC4wNjkgNy4xIDE0LjkxNiA2LjI0NiAxNC45MTYgMy45OTIgMTQuMDY5IDMuMTM4IDQuNjUyIDMuMTM4IDMuODA1IDMuOTkyIDMuODA1IDYuMjQ2IDQuNjUyIDcuMSA1LjMxMiA3LjEgNS4zMTIgMjYuMzE0IDYuMzQ2IDI3LjE2MSA5LjI2NyAyNy4xNjEgMjkuNTE2IDYuMjQ2IDI5LjUxNiAzLjk5MiAyOC42NjkgMy4xMzggMTkuNDM4IDMuMTM4IDE4LjQ5OCAzLjk5MiAxOC40OTggNi4yNDYgMTguNDk4IDYuMjQ2XCIgc3R5bGU9XCJmaWxsOiMyMzFmMjA7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTguNDk4IDYuMjQ2IDE5LjM0NSA3LjEgMTMuNTAyIDEzLjAyOCAxMy41MDIgNy4xIDE0LjA2OSA3LjEgMTQuOTE2IDYuMjQ2IDE0LjkxNiAzLjk5MiAxNC4wNjkgMy4xMzggNC42NTIgMy4xMzggMy44MDUgMy45OTIgMy44MDUgNi4yNDYgNC42NTIgNy4xIDUuMzEyIDcuMSA1LjMxMiAyNi4zMTQgNi4zNDYgMjcuMTYxIDkuMjY3IDI3LjE2MSAyOS41MTYgNi4yNDYgMjkuNTE2IDMuOTkyIDI4LjY2OSAzLjEzOCAxOS40MzggMy4xMzggMTguNDk4IDMuOTkyIDE4LjQ5OCA2LjI0NiAxOC40OTggNi4yNDZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCI0LjkzMiA2LjUzMyA0LjM2NSA1Ljk2NiA0LjM2NSA0LjI3MiA0LjkzMiAzLjcwNSAxMy43ODkgMy42OTggMTQuMzQ5IDQuMjcyIDEzLjc4OSA0LjU0NCAxMy41MDIgNC4yNzIgNC45MzIgNS42NzkgNC45MzIgNi41MzMgNC45MzIgNi41MzNcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCI0LjkzMiA2LjUzMyA0LjM2NSA1Ljk2NiA0LjM2NSA0LjI3MiA0LjkzMiAzLjcwNSAxMy43ODkgMy42OTggMTQuMzQ5IDQuMjcyIDEzLjc4OSA0LjU0NCAxMy41MDIgNC4yNzIgNC45MzIgNS42NzkgNC45MzIgNi41MzMgNC45MzIgNi41MzNcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCI2LjYyNiAyNi41OTQgNS45NjYgMjYuMDI3IDUuOTY2IDYuNTI2IDYuNjI2IDUuOTY2IDYuNjI2IDI2LjU5NCA2LjYyNiAyNi41OTRcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCI2LjYyNiAyNi41OTQgNS45NjYgMjYuMDI3IDUuOTY2IDYuNTI2IDYuNjI2IDUuOTY2IDYuNjI2IDI2LjU5NCA2LjYyNiAyNi41OTRcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIyMC43NTkgNi41MzMgMjEuMzI2IDUuOTY2IDIxLjMyNiA3LjEgMTEuOTAyIDE2LjcwMyAxMi45NDIgMTQuNDQyIDIwLjc1OSA2LjUzMyAyMC43NTkgNi41MzNcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyMC43NTkgNi41MzMgMjEuMzI2IDUuOTY2IDIxLjMyNiA3LjEgMTEuOTAyIDE2LjcwMyAxMi45NDIgMTQuNDQyIDIwLjc1OSA2LjUzMyAyMC43NTkgNi41MzNcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCI2LjgyIDUuNjg2IDYuNjI2IDUuOTY2IDUuOTY2IDYuNTMzIDQuOTMyIDYuNTMzIDQuOTMyIDUuMzk5IDYuODIgNS42ODYgNi44MiA1LjY4NlwiIHN0eWxlPVwiZmlsbDojOTI5NDk3O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuODIgNS42ODYgNi42MjYgNS45NjYgNS45NjYgNi41MzMgNC45MzIgNi41MzMgNC45MzIgNS4zOTkgNi44MiA1LjY4NiA2LjgyIDUuNjg2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTIuOTQyIDYuNTMzIDEyLjk0MiAxNC40NDIgMTEuOTAyIDE2LjY5NiAxMS45MDIgNS45NTggMTMuNTAyIDUuOTU4IDEzLjc4OSA1LjY3OCAxMy41MDIgNC4yNzIgMTQuMzQ5IDQuMjcyIDE0LjM0OSA1Ljk2NiAxMy43ODkgNi41MzMgMTIuOTQyIDYuNTMzIDEyLjk0MiA2LjUzM1wiIHN0eWxlPVwiZmlsbDojOTI5NDk3O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjEyLjk0MiA2LjUzMyAxMi45NDIgMTQuNDQyIDExLjkwMiAxNi42OTYgMTEuOTAyIDUuOTU4IDEzLjUwMiA1Ljk1OCAxMy43ODkgNS42NzggMTMuNTAyIDQuMjcyIDE0LjM0OSA0LjI3MiAxNC4zNDkgNS45NjYgMTMuNzg5IDYuNTMzIDEyLjk0MiA2LjUzMyAxMi45NDIgNi41MzNcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxOS42MjUgNi41MzMgMTkuMDY1IDUuOTY2IDE5LjA2NSA0LjI3MiAxOS43MTggMy43MDUgMjguMjk1IDMuNzA1IDI4Ljk1NiA0LjI3MiAyOC4wMDggNS4xMTkgMTkuNjI1IDUuNjc5IDE5LjYyNSA2LjUzMyAxOS42MjUgNi41MzNcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxOS42MjUgNi41MzMgMTkuMDY1IDUuOTY2IDE5LjA2NSA0LjI3MiAxOS43MTggMy43MDUgMjguMjk1IDMuNzA1IDI4Ljk1NiA0LjI3MiAyOC4wMDggNS4xMTkgMTkuNjI1IDUuNjc5IDE5LjYyNSA2LjUzMyAxOS42MjUgNi41MzNcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIyOC45NTYgNS45NjYgOS4wNzQgMjYuNTk0IDYuNjI2IDI2LjU5NCA2LjYyNiAyNS43NDcgOC40MiAyNS43NDcgMjguMjk1IDUuMzk5IDI4LjAwOCA0LjI3MiAyOC45NTYgNC4yNzIgMjguOTU2IDUuOTY2IDI4Ljk1NiA1Ljk2NlwiIHN0eWxlPVwiZmlsbDojOTI5NDk3O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI4Ljk1NiA1Ljk2NiA5LjA3NCAyNi41OTQgNi42MjYgMjYuNTk0IDYuNjI2IDI1Ljc0NyA4LjQyIDI1Ljc0NyAyOC4yOTUgNS4zOTkgMjguMDA4IDQuMjcyIDI4Ljk1NiA0LjI3MiAyOC45NTYgNS45NjYgMjguOTU2IDUuOTY2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjEuNTEyIDUuNjg2IDIxLjMxOSA1Ljk2NiAyMC43NTkgNi41MzMgMTkuNjI1IDYuNTMzIDE5LjYyNSA1LjM5OSAyMS41MTIgNS42ODYgMjEuNTEyIDUuNjg2XCIgc3R5bGU9XCJmaWxsOiM5Mjk0OTc7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjEuNTEyIDUuNjg2IDIxLjMxOSA1Ljk2NiAyMC43NTkgNi41MzMgMTkuNjI1IDYuNTMzIDE5LjYyNSA1LjM5OSAyMS41MTIgNS42ODYgMjEuNTEyIDUuNjg2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTEuOTAyIDE2LjY5NiAxMS45MDIgNS45NTggMTMuNTAyIDUuOTU4IDEzLjc4OSA1LjY3OSAxMy43ODkgNC41NDQgMTMuNTAyIDQuMjY1IDUuMjEyIDQuMjY1IDQuOTMyIDQuNTQ0IDQuOTMyIDUuNjc5IDUuMjEyIDUuOTU4IDYuNjI2IDUuOTU4IDYuNjI2IDI1Ljc0NyA2Ljk5MiAyNi4wMjcgOC42MDcgMjYuMDI3IDI4LjM4OSA1LjM5OSAyOC4zODkgNC41ODggMjguMTAyIDQuMjY1IDE5LjkxMiA0LjI2NSAxOS42MjUgNC41NDQgMTkuNjI1IDUuNjg2IDE5LjkxMiA1Ljk2NiAyMS4zMjYgNS45NjYgMjEuMzI2IDcuMSAxMS45MDIgMTYuNjk2IDExLjkwMiAxNi42OTZcIiBzdHlsZT1cImZpbGw6I2QwZDJkMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxMS45MDIgMTYuNjk2IDExLjkwMiA1Ljk1OCAxMy41MDIgNS45NTggMTMuNzg5IDUuNjc5IDEzLjc4OSA0LjU0NCAxMy41MDIgNC4yNjUgNS4yMTIgNC4yNjUgNC45MzIgNC41NDQgNC45MzIgNS42NzkgNS4yMTIgNS45NTggNi42MjYgNS45NTggNi42MjYgMjUuNzQ3IDYuOTkyIDI2LjAyNyA4LjYwNyAyNi4wMjcgMjguMzg5IDUuMzk5IDI4LjM4OSA0LjU4OCAyOC4xMDIgNC4yNjUgMTkuOTEyIDQuMjY1IDE5LjYyNSA0LjU0NCAxOS42MjUgNS42ODYgMTkuOTEyIDUuOTY2IDIxLjMyNiA1Ljk2NiAyMS4zMjYgNy4xIDExLjkwMiAxNi42OTYgMTEuOTAyIDE2LjY5NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE3LjA0MSAxNi43MTEgMTcuNzAxIDE2LjE0NCAxOS4zOTUgMTYuMTQ0IDE5Ljg2OSAxNi43MTEgMTkuMzAyIDE4LjQwNSAxOC42NDkgMTguOTcyIDE2Ljk1NSAxOC45NzIgMTYuNDc0IDE4LjQwNSAxNy4wNDEgMTYuNzExIDE3LjA0MSAxNi43MTFcIiBzdHlsZT1cImZpbGw6IzIzMWYyMDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNy4wNDEgMTYuNzExIDE3LjcwMSAxNi4xNDQgMTkuMzk1IDE2LjE0NCAxOS44NjkgMTYuNzExIDE5LjMwMiAxOC40MDUgMTguNjQ5IDE4Ljk3MiAxNi45NTUgMTguOTcyIDE2LjQ3NCAxOC40MDUgMTcuMDQxIDE2LjcxMSAxNy4wNDEgMTYuNzExXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTcuNjA4IDI2LjAzNCAxOS4zMDkgMjAuOTUzIDE4Ljc0MiAyMC45NTMgMTkuMzA5IDE5LjI1MSAyMS44NDMgMTkuMjUxIDIyLjQxIDE5LjgxOSAyMi43OSAxOS44MTkgMjMuMzUgMTkuMjUxIDI1LjIzOCAxOS4yNTEgMjUuODA1IDE5LjgxOSAyNi4xNzggMTkuODE5IDI2Ljc0NSAxOS4yNTEgMjguODEyIDE5LjI1MSAyOS41NjYgMjAuMzg2IDI4LjMzMSAyNC40MDUgMjguODkxIDI0LjQwNSAyOC4zNDYgMjYuMDM0IDI0Ljk1MSAyNi4wMzQgMjYuMjc4IDIyLjA3OSAyNS40MzEgMjIuMDc5IDI0LjY0OSAyNC4zOTEgMjUuMjA5IDI0LjM5MSAyNC42NzggMjYuMDM0IDIxLjI4MyAyNi4wMzQgMjIuNjAzIDIyLjA3OSAyMS43NTYgMjIuMDc5IDIwLjk2NyAyNC40MDUgMjEuNTM0IDI0LjQwNSAyMS4wMDMgMjYuMDM0IDE3LjYwOCAyNi4wMzQgMTcuNjA4IDI2LjAzNFwiIHN0eWxlPVwiZmlsbDojMjMxZjIwO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE3LjYwOCAyNi4wMzQgMTkuMzA5IDIwLjk1MyAxOC43NDIgMjAuOTUzIDE5LjMwOSAxOS4yNTEgMjEuODQzIDE5LjI1MSAyMi40MSAxOS44MTkgMjIuNzkgMTkuODE5IDIzLjM1IDE5LjI1MSAyNS4yMzggMTkuMjUxIDI1LjgwNSAxOS44MTkgMjYuMTc4IDE5LjgxOSAyNi43NDUgMTkuMjUxIDI4LjgxMiAxOS4yNTEgMjkuNTY2IDIwLjM4NiAyOC4zMzEgMjQuNDA1IDI4Ljg5MSAyNC40MDUgMjguMzQ2IDI2LjAzNCAyNC45NTEgMjYuMDM0IDI2LjI3OCAyMi4wNzkgMjUuNDMxIDIyLjA3OSAyNC42NDkgMjQuMzkxIDI1LjIwOSAyNC4zOTEgMjQuNjc4IDI2LjAzNCAyMS4yODMgMjYuMDM0IDIyLjYwMyAyMi4wNzkgMjEuNzU2IDIyLjA3OSAyMC45NjcgMjQuNDA1IDIxLjUzNCAyNC40MDUgMjEuMDAzIDI2LjAzNCAxNy42MDggMjYuMDM0IDE3LjYwOCAyNi4wMzRcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIyOC41NTQgMTkuODE5IDI4Ljk5MiAyMC40NDMgMjcuNTk5IDI0LjkwNyAyOC4xNTkgMjQuOTA3IDI3Ljk3MiAyNS40NjcgMjUuNzExIDI1LjQ2NyAyNy4wMzIgMjEuNTEyIDI1LjA1MSAyMS41MTIgMjMuOTI0IDI0LjkwNyAyNC40ODQgMjQuOTA3IDI0LjI5NyAyNS40NjcgMjIuMDM2IDI1LjQ2NyAyMy4zNTcgMjEuNTEyIDIxLjM3NiAyMS41MTIgMjAuMjQ5IDI0LjkwNyAyMC44MTYgMjQuOTA3IDIwLjYyMiAyNS40NjcgMTguMzYxIDI1LjQ2NyAyMC4wNjMgMjAuMzg2IDE5LjQ5NSAyMC4zODYgMTkuNjgyIDE5LjgxOSAyMS43NTYgMTkuODE5IDIyLjMyMyAyMC4zODYgMjIuODgzIDIwLjM4NiAyMy40NSAxOS44MTkgMjUuMTQ0IDE5LjgxOSAyNS43MTEgMjAuMzg2IDI2LjI3OCAyMC4zODYgMjYuODQ1IDE5LjgxOSAyOC41NTQgMTkuODE5IDI4LjU1NCAxOS44MTlcIiBzdHlsZT1cImZpbGw6I2QwZDJkMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyOC41NTQgMTkuODE5IDI4Ljk5MiAyMC40NDMgMjcuNTk5IDI0LjkwNyAyOC4xNTkgMjQuOTA3IDI3Ljk3MiAyNS40NjcgMjUuNzExIDI1LjQ2NyAyNy4wMzIgMjEuNTEyIDI1LjA1MSAyMS41MTIgMjMuOTI0IDI0LjkwNyAyNC40ODQgMjQuOTA3IDI0LjI5NyAyNS40NjcgMjIuMDM2IDI1LjQ2NyAyMy4zNTcgMjEuNTEyIDIxLjM3NiAyMS41MTIgMjAuMjQ5IDI0LjkwNyAyMC44MTYgMjQuOTA3IDIwLjYyMiAyNS40NjcgMTguMzYxIDI1LjQ2NyAyMC4wNjMgMjAuMzg2IDE5LjQ5NSAyMC4zODYgMTkuNjgyIDE5LjgxOSAyMS43NTYgMTkuODE5IDIyLjMyMyAyMC4zODYgMjIuODgzIDIwLjM4NiAyMy40NSAxOS44MTkgMjUuMTQ0IDE5LjgxOSAyNS43MTEgMjAuMzg2IDI2LjI3OCAyMC4zODYgMjYuODQ1IDE5LjgxOSAyOC41NTQgMTkuODE5IDI4LjU1NCAxOS44MTlcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cGF0aCBkPVwiTTE5LjAyMiwxOS4yNTEsMTcuMjkyLDI0LjRoLjU4OWwtLjU2LDEuNjM3SDEzLjkzM2wxLjY5NC01LjA4MkgxNS4wNmwzLjk2Mi0xLjdabS0zLjk2MiwxLjcuNTY3LTEuN2gzLjRsLTMuOTYyLDEuN1pcIiBzdHlsZT1cImZpbGw6IzIzMWYyMDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE5LjAyMiwxOS4yNTEsMTcuMjkyLDI0LjRoLjU4OWwtLjU2LDEuNjM3SDEzLjkzM2wxLjY5NC01LjA4MkgxNS4wNmwzLjk2Mi0xLjdabS0zLjk2MiwxLjcuNTY3LTEuN2gzLjRsLTMuOTYyLDEuN1pcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNi45NDcgMjUuNDY3IDE3LjEzNCAyNC45MDcgMTYuNTY3IDI0LjkwNyAxOC4yNjggMTkuODE5IDE1LjkxNCAxOS44MTkgMTUuNzIgMjAuMzg2IDE2LjM4IDIwLjM4NiAxNC42ODYgMjUuNDY3IDE2Ljk0NyAyNS40NjcgMTYuOTQ3IDI1LjQ2N1wiIHN0eWxlPVwiZmlsbDojZDBkMmQzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2Ljk0NyAyNS40NjcgMTcuMTM0IDI0LjkwNyAxNi41NjcgMjQuOTA3IDE4LjI2OCAxOS44MTkgMTUuOTE0IDE5LjgxOSAxNS43MiAyMC4zODYgMTYuMzggMjAuMzg2IDE0LjY4NiAyNS40NjcgMTYuOTQ3IDI1LjQ2NyAxNi45NDcgMjUuNDY3XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTguODI4IDE4LjEyNSAxOS4yMDggMTYuOTkxIDE5LjAyMiAxNi43MTEgMTcuODg4IDE2LjcxMSAxNy41MTQgMTYuOTkxIDE3LjEzNCAxOC4xMjUgMTcuMzI4IDE4LjQwNSAxOC40NjIgMTguNDA1IDE4LjgyOCAxOC4xMjUgMTguODI4IDE4LjEyNVwiIHN0eWxlPVwiZmlsbDojZDBkMmQzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE4LjgyOCAxOC4xMjUgMTkuMjA4IDE2Ljk5MSAxOS4wMjIgMTYuNzExIDE3Ljg4OCAxNi43MTEgMTcuNTE0IDE2Ljk5MSAxNy4xMzQgMTguMTI1IDE3LjMyOCAxOC40MDUgMTguNDYyIDE4LjQwNSAxOC44MjggMTguMTI1IDE4LjgyOCAxOC4xMjVcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz5gLFxuXHRcIlZpc3VhbCBCYXNpY1wiOiBgPHBhdGggZD1cIk02LjY3LDcuODM2LDksMTguOTE1LDExLjMzNiw3LjgzNkgxNkwxMS4zMzYsMjQuMTY0SDYuNjcyTDIsNy44MzZaXCIgc3R5bGU9XCJmaWxsOiMwMDUxOWFcIi8+PHBhdGggZD1cIk0xOC4zMzEsNy44MzZoNy42YTQuMDgsNC4wOCwwLDAsMSwyLjksMS43NDksMy43OCwzLjc4LDAsMCwxLC41NzEsMi4wNCwzLjk4NSwzLjk4NSwwLDAsMS0uNTcxLDIuMDM0LDQuMTA4LDQuMTA4LDAsMCwxLTIuMzQxLDEuNzYzLDQuMSw0LjEsMCwwLDEsMi45MjksMS43NTYsMy44LDMuOCwwLDAsMSwuNTgsMi4xLDQuNjYzLDQuNjYzLDAsMCwxLS41NzksMi41NDYsNS4wNDcsNS4wNDcsMCwwLDEtMy41LDIuMzM4SDE4LjMzMVpNMjMsMTQuMjUyaDEuMTY2YTEuNzU0LDEuNzU0LDAsMCwwLDAtMy41SDIzWm0wLDdIMjQuMzlhMi4wNDcsMi4wNDcsMCwwLDAsMC00LjA4OUgyM1pcIiBzdHlsZT1cImZpbGw6IzAwNTE5YVwiLz5gLFxuXHRcIldlYkFzc2VtYmx5XCI6IGA8cGF0aCBkPVwiTTE5LjE1MywyLjM1VjIuNWEzLjIsMy4yLDAsMSwxLTYuNCwwaDBWMi4zNUgyVjMwLjI2OUgyOS45MTlWMi4zNVpcIiBzdHlsZT1cImZpbGw6IzY1NGZmMFwiLz48cGF0aCBkPVwiTTguNDg1LDE3LjRoMS44NUwxMS42LDI0LjEyM2guMDIzTDEzLjE0LDE3LjRoMS43MzFsMS4zNzEsNi44MWguMDI3bDEuNDQtNi44MWgxLjgxNWwtMi4zNTgsOS44ODVIMTUuMzI5bC0xLjM2LTYuNzI4aC0uMDM2bC0xLjQ1Niw2LjcyOGgtMS44N1ptMTMuMTI0LDBoMi45MTdsMi45LDkuODg1SDI1LjUxNWwtLjYzLTIuMkgyMS41NjJsLS40ODYsMi4ySDE5LjIxN1ptMS4xMSwyLjQzNy0uODA3LDMuNjI3aDIuNTEyTDIzLjUsMTkuODMyWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiV29sZnJhbSBsYW5ndWFnZVwiOiBgPHBhdGggZD1cIk0zMCwyMC41NSwyNS45NCwxNiwzMCwxMS40NWwtNS45NDgtMS4yOTQuNTk1LTYuMDY3TDE5LjA3MSw2LjU0MywxNS45OTMsMS4yNzksMTIuOTI5LDYuNTQzLDcuMzUzLDQuMDg5bC41OTUsNi4wNjdMMiwxMS40NSw2LjA1OSwxNiwyLDIwLjU1bDUuOTQ4LDEuMjk0LS41OTUsNi4wNjcsNS41NzYtMi40NTQsMy4wNzgsNS4yNjQsMy4wNjMtNS4yNjQsNS41OTEsMi40NTQtLjYxLTYuMDY3WlwiIHN0eWxlPVwiZmlsbDojZDEwXCIvPjxwYXRoIGQ9XCJNMTkuMzUzLDExLjQ1YTYuOTY4LDYuOTY4LDAsMCwxLTMuNDIuODYyLDUuNDQ2LDUuNDQ2LDAsMCwxLTMuMjEyLS44NjJBNy4xLDcuMSwwLDAsMSwxMi41LDE0LjhhNi4yMjUsNi4yMjUsMCwwLDEtMS44NzQsMi45MTQsNy40NTQsNy40NTQsMCwwLDEsMy4xMzgsMS4xOSw5LjY1OSw5LjY1OSwwLDAsMSwyLjIxNiwyLjcyMSw4LjE5NCw4LjE5NCwwLDAsMSwyLjE0MS0yLjY5MSw3LjYwNSw3LjYwNSwwLDAsMSwzLjI0Mi0xLjIsMTIuNTYyLDEyLjU2MiwwLDAsMS0xLjkzMy0yLjk0NEE2LjcxOCw2LjcxOCwwLDAsMSwxOS4zNTMsMTEuNDVabS0xLjksNi41NDNhNS4yMzMsNS4yMzMsMCwwLDAtMS40NTcsMS42MzYsNi4yMzYsNi4yMzYsMCwwLDAtMS41LTEuNjIxLDUuMTkxLDUuMTkxLDAsMCwwLTEuOTQ4LS44NDgsNi44MzksNi44MzksMCwwLDAsMS4xMTUtMi4wMDcsNi4xOCw2LjE4LDAsMCwwLC4yMjMtMi4wODIsNi4zMTcsNi4zMTcsMCwwLDAsMi4wODIuNDQ2LDYuNTUyLDYuNTUyLDAsMCwwLDIuMTcxLS40NjEsNC41MjEsNC41MjEsMCwwLDAsLjA3NCwyLjE1Niw2LjcxLDYuNzEsMCwwLDAsMS4yNDksMS45MzNBNy4wMzEsNy4wMzEsMCwwLDAsMTcuNDUsMTcuOTkzWm00LjIzOC00LjAxNWMtLjM1Ny0xLjE3NS42NTQtNi43MDYuNjU0LTYuNzA2UzE4LjU1LDkuODQ0LDE1Ljg4OCw5Ljg0NHMtNi4yMy0yLjU3Mi02LjIzLTIuNTcyLDEuMTc1LDQuMDE1LjQ2MSw2LjU4Ny00LjM4Nyw1LjQ3Mi00LjM4Nyw1LjQ3Miw0Ljc4OC4yODMsNi42LDEuNSwzLjY1OCw1Ljk0OCwzLjY1OCw1Ljk0OCwyLjQ1NC01LjIsMy40OC01Ljk0OCw2LjgtMS41LDYuOC0xLjUtNC4yMjMtNC4xNzgtNC41OC01LjM1M1ptLTIuODQsNS45NjNhOS40NDQsOS40NDQsMCwwLDAtMi44NCw0LjE3OHMtMS40MTMtMy4xNTItMi45NzQtNC4yMjNTOC4zLDE4LjU0Myw4LjMsMTguNTQzczIuNDU0LTIuMTcxLDMuMDQ4LTQuMWExMS45MjMsMTEuOTIzLDAsMCwwLS4xLTQuOTUyLDExLjMsMTEuMywwLDAsMCw0LjY2OSwxLjYyMWMyLjAzNywwLDQuODQ4LTEuNjIxLDQuODQ4LTEuNjIxcy0uODE4LDMuMDMzLS4xNjQsNC45MjIsMy4xMDgsNC4xMzQsMy4xMDgsNC4xMzRhMTAuNTU3LDEwLjU1NywwLDAsMC00Ljg2MiwxLjRaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJYTUxcIjogYDxwYXRoIGQ9XCJNMjAuNDIsMjEuMTU3bDIuMjExLDIuMjExTDMwLDE2LDIyLjYzMSw4LjYzMSwyMC40MiwxMC44NDMsMjUuNTgsMTZaXCIgc3R5bGU9XCJmaWxsOiNmMTY2MmFcIi8+PHBhdGggZD1cIk0xMS41OCwxMC44NDMsOS4zNjksOC42MzEsMiwxNmw3LjM2OSw3LjM2OSwyLjIxMS0yLjIxMUw2LjQyLDE2WlwiIHN0eWxlPVwiZmlsbDojZjE2NjJhXCIvPjxwYXRoIGQ9XCJNMTcuNDExLDcuNjc3bDEuNi40MzctNC40MiwxNi4yMDktMS42LS40MzcsNC40Mi0xNi4yMDlaXCIgc3R5bGU9XCJmaWxsOiNmMTY2MmFcIi8+YCxcblx0XCJYUXVlcnlcIjogYDxwYXRoIGQ9XCJNMjAuNDIsMjEuMTU3bDIuMjExLDIuMjExTDMwLDE2LDIyLjYzMSw4LjYzMSwyMC40MiwxMC44NDMsMjUuNTgsMTZaTTExLjU4LDEwLjg0Myw5LjM2OSw4LjYzMSwyLDE2bDcuMzY5LDcuMzY5LDIuMjExLTIuMjExTDYuNDIsMTZabTUuODMxLTMuMTY2LDEuNi40MzctNC40MiwxNi4yMDktMS42LS40MzdaXCIgc3R5bGU9XCJmaWxsOiNmMTY2MmFcIi8+PHBhdGggZD1cIk0yMC4zMzIsMTguNDYyYTMuMzU0LDMuMzU0LDAsMCwxLC45NzUtMS40MjMsNC4wMTQsNC4wMTQsMCwwLDEsMS42MTctLjhBOS4xMTgsOS4xMTgsMCwwLDEsMjUuMTM4LDE2YTUuNDcyLDUuNDcyLDAsMCwxLDMuNjgxLDEuMDM5QTMuNSwzLjUsMCwwLDEsMzAsMTkuODA4YTQuNDcsNC40NywwLDAsMS0uMjQsMS40OTEsMy4xMjQsMy4xMjQsMCwwLDEtLjgzOCwxLjIzOWwtMS42NzUsMS42YTEuNTEyLDEuNTEyLDAsMCwwLS40MjQuNzg5LDUuMzA3LDUuMzA3LDAsMCwwLS4xLDEuMUgyM3YtLjU0YTYuMzIsNi4zMiwwLDAsMSwuMjA3LTEuNzc4LDIuODg2LDIuODg2LDAsMCwxLC43OC0xLjI0bDEuMzUyLTEuMjg5YTEuODQsMS44NCwwLDAsMCwuNTYzLS44OTQsMy42ODIsMy42ODIsMCwwLDAsLjEtLjgsMS41LDEuNSwwLDAsMC0uMjUyLS45LjkuOSwwLDAsMC0uNzc5LS4zNDYsMS4yNTUsMS4yNTUsMCwwLDAtLjQ4My4wODYuNzI0LjcyNCwwLDAsMC0uMzQ0LjMzNywyLjM0NywyLjM0NywwLDAsMC0uMjE3LjcyMSw3LjYxNCw3LjYxNCwwLDAsMC0uMDgxLDEuMjRIMjBBNi4xNTUsNi4xNTUsMCwwLDEsMjAuMzMyLDE4LjQ2MlptNi40NTcsOC41VjMwSDIyLjkzNlYyNi45NjJaXCIgc3R5bGU9XCJmaWxsOiNmY2JhMDBcIi8+YCxcblx0XCJZQU1MXCI6IGA8cGF0aCBkPVwiTTIsMTIuMjE4Yy43NTUsMCwxLjUxLS4wMDgsMi4yNjQsMGwuMDUzLjAzOFE1LjcsMTMuNjM4LDcuMDc4LDE1LjAxNGMuODkxLS45MDYsMS44LTEuNzk0LDIuNy0yLjcuMDUzLS4wNTIuMTEtLjExMy4xOTItLjEuNjA4LDAsMS4yMTUsMCwxLjgyMywwYTEuNCwxLjQsMCwwLDEsLjM1My4wMTljLS43LjY3LTEuMzc3LDEuMzY5LTIuMDY5LDIuMDVMNS41NDUsMTguOGMtLjMzMS4zMjQtLjY0OC42NjMtLjk4OS45NzUtLjc1NC4wMjItMS41MTEuMDA3LTIuMjY2LjAwNywxLjIyMy0xLjIwOSwyLjQzMS0yLjQzMywzLjY1OC0zLjYzN0M0LjYyNywxNC44NDEsMy4zMTgsMTMuNTI1LDIsMTIuMjE4WlwiIHN0eWxlPVwiZmlsbDojZmZlODg1XCIvPjxwYXRoIGQ9XCJNMTIuNywxMi4yMThjLjYxMywwLDEuMjI2LDAsMS44MzksMHEwLDMuNzgzLDAsNy41NjZjLS42MTEsMC0xLjIyMi4wMTItMS44MzItLjAwOCwwLTEuNjY0LDAtMy4zMjksMC00Ljk5NC0xLjYsMS42MDctMy4yMDksMy4yLTQuODExLDQuOC0uMDg5LjA4LS4xNjYuMjE3LS4zMDUuMTk0LS44MjQtLjAwNi0xLjY0OSwwLTIuNDc0LDBROC45MTYsMTYsMTIuNywxMi4yMThaXCIgc3R5bGU9XCJmaWxsOiNmZmU4ODVcIi8+PHBhdGggZD1cIk0xNC45NTgsMTIuMjJjLjQ3LS4wMDkuOTM5LDAsMS40MDksMCwuODM2Ljg1MywxLjY5LDEuNjg5LDIuNTM2LDIuNTMycTEuMjY4LTEuMjY3LDIuNTM5LTIuNTMyLjcsMCwxLjQsMC0uMDA4LDMuNzg0LDAsNy41NjdjLS40NzEsMC0uOTQzLjAwNi0xLjQxNCwwcS4wMDgtMi4zODcsMC00Ljc3M2MtLjg0NC44NDMtMS42NzYsMS43LTIuNTI2LDIuNTM2LS44NTYtLjgzNS0xLjY4Ny0xLjY5NS0yLjUzMi0yLjU0MSwwLDEuNTk0LS4wMDYsMy4xODguMDA2LDQuNzgxLS40NzIsMC0uOTQzLjAwNS0xLjQxNSwwUTE0Ljk1OCwxNiwxNC45NTgsMTIuMjJaXCIgc3R5bGU9XCJmaWxsOiNmZmU4ODVcIi8+PHBhdGggZD1cIk0yMy4yNTksMTIuMjE3Yy40NzIsMCwuOTQ0LS4wMDcsMS40MTYsMHEtLjAwNywzLjA4MywwLDYuMTY2YzEuMjYsMCwyLjUyMSwwLDMuNzgyLDAsLjA2My4wMDYuMTQ0LS4wMTIuMTkxLjA0NS40NDguNDU0LjkwNy45LDEuMzUzLDEuMzU0cS0zLjM3MS4wMDctNi43NDEsMFEyMy4yNjcsMTYsMjMuMjU5LDEyLjIxN1pcIiBzdHlsZT1cImZpbGw6I2ZmZTg4NVwiLz5gLFxuXHRcIllBTkdcIjogYDxwYXRoIGQ9XCJNOC44NzcsMjMuMTU5YzAtNS41MzUsMy45OTItNy4xNjgsNy44OTQtNy4xNjgsMy4zNTcsMCw1Ljk4OC0zLjgxMSw1Ljk4OC02LjYyNCwwLTMuNjIxLTIuNDg3LTUuODMxLTQuODgyLTcuMTJBMTMuODgxLDEzLjg4MSwwLDEsMCwxNC41LDI5LjhDMTAuNDkxLDI4LjI0OCw4Ljg3NywyNS4zMjQsOC44NzcsMjMuMTU5WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTQuNDgyLDI5LjkxN0ExNCwxNCwwLDAsMSwxNiwyYTE0LjE1NCwxNC4xNTQsMCwwLDEsMS44OTMuMTMxbC4wNC4wMTNjMi4yNTUsMS4yMTMsNC45NDQsMy40NTIsNC45NDQsNy4yMjMsMCwyLjcxNS0yLjU2NCw2Ljc0MS02LjEwNiw2Ljc0MS0yLjksMC03Ljc3Ni45MTYtNy43NzYsNy4wNSwwLDIuMDIyLDEuNDUxLDQuOTQ2LDUuNTQyLDYuNTMxWk0xNiwyLjIzNkExMy43NjUsMTMuNzY1LDAsMCwwLDEzLjYzNywyOS41NmMtMy41ODEtMS42ODQtNC44NzctNC40NDctNC44NzctNi40LDAtNi41NzYsNS42LTcuMjg2LDguMDEyLTcuMjg2LDMuNDA2LDAsNS44Ny0zLjg4Niw1Ljg3LTYuNTA2LDAtMy42NDUtMi42MDYtNS44Mi00LjgtNy4wMDZBMTMuOTI4LDEzLjkyOCwwLDAsMCwxNiwyLjIzNlpcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTI5Ljg4MiwxNmExMy44ODIsMTMuODgyLDAsMCwwLTEyLTEzLjc1MmMyLjQsMS4yODksNC44ODIsMy41LDQuODgyLDcuMTIsMCwyLjgxMy0yLjYzMSw2LjYyNC01Ljk4OCw2LjYyNC0zLjksMC03Ljg5NCwxLjYzMy03Ljg5NCw3LjE2OCwwLDIuMTY2LDEuNjEzLDUuMDg5LDUuNjE4LDYuNjQxQTEzLjg3NSwxMy44NzUsMCwwLDAsMjkuODgyLDE2WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxwYXRoIGQ9XCJNMTYsMzBhMTQuMiwxNC4yLDAsMCwxLTEuNTE4LS4wODNsLS4wMy0uMDA3Yy00LjItMS42MjgtNS42OTMtNC42NTQtNS42OTMtNi43NSwwLTYuNTc2LDUuNi03LjI4Niw4LjAxMi03LjI4NiwzLjQwNiwwLDUuODctMy44ODYsNS44Ny02LjUwNiwwLTMuNjU1LTIuNjIxLTUuODMzLTQuODItNy4wMTZsLjA3Mi0uMjIxQTE0LDE0LDAsMCwxLDE2LDMwWm0tMS40NzctLjMxNkExMy43NTYsMTMuNzU2LDAsMCwwLDI5Ljc2NCwxNiwxMy44MDcsMTMuODA3LDAsMCwwLDE4LjUsMi40NjZjMi4xMTUsMS4yNzIsNC4zNzcsMy40NDEsNC4zNzcsNi45LDAsMi43MTUtMi41NjQsNi43NDEtNi4xMDYsNi43NDEtMi45LDAtNy43NzYuOTE2LTcuNzc2LDcuMDVDOSwyNS4xNzgsMTAuNDQzLDI4LjEsMTQuNTIzLDI5LjY4NFpcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48Y2lyY2xlIGN4PVwiMTUuOTQzXCIgY3k9XCIyMi43ODdcIiByPVwiMS41MDZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48Y2lyY2xlIGN4PVwiMTYuMDA3XCIgY3k9XCI5LjE0MlwiIHI9XCIxLjUwNlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPmAsXG5cdFwiWmlnXCI6IGA8cG9seWdvbiBwb2ludHM9XCI1LjczMyAxOS43MzEgNS43MzMgMTIuMjY0IDguNTMzIDEyLjI2NCA4LjUzMyA4LjUzMSAyIDguNTMxIDIgMjMuNDY0IDUuNTQ3IDIzLjQ2NCA4LjkwNyAxOS43MzEgNS43MzMgMTkuNzMxXCIgc3R5bGU9XCJmaWxsOiNmN2E0MWRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjYuNDUzIDguNTMxIDIzLjA5MyAxMi4yNjQgMjYuMjY3IDEyLjI2NCAyNi4yNjcgMTkuNzMxIDIzLjQ2NyAxOS43MzEgMjMuNDY3IDIzLjQ2NCAzMCAyMy40NjQgMzAgOC41MzEgMjYuNDUzIDguNTMxXCIgc3R5bGU9XCJmaWxsOiNmN2E0MWRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjYuODc1IDYuNzA3IDIwLjUxMyA4LjUzMSA5LjQ2NyA4LjUzMSA5LjQ2NyAxMi4yNjQgMTYuODQ3IDEyLjI2NCA1LjExNSAyNS4yOTMgMTEuNDk3IDIzLjQ2NCAyMi41MzMgMjMuNDY0IDIyLjUzMyAxOS43MzEgMTUuMTQ4IDE5LjczMSAyNi44NzUgNi43MDdcIiBzdHlsZT1cImZpbGw6I2Y3YTQxZFwiLz5gXG59XG5leHBvcnQgY29uc3QgTEFOR1VBR0VfQ09MT1VSUyA6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge1xuXHRcIi5naXRpZ25vcmVcIjogJyNkZDRjMzUnLFxuXHRcIi5oZ2lnbm9yZVwiOiAnI2JmYmZiZicsXG5cdFwiLm5wbWlnbm9yZVwiOiAnI2NiMzgzNycsXG5cdFwiLnByb3BlcnRpZXNcIjogJyM5OWI4YzQnLFxuXHRcIjY1MDIgQXNzZW1ibHlcIjogJyMwMDAwYmYnLFxuXHRcIkFjdGlvblNjcmlwdFwiOiAnI2M0MTcxOCcsXG5cdFwiQWRhXCI6ICcjMGYyM2MzJyxcblx0XCJBTFwiOiAnIzJlYTk4ZScsXG5cdFwiQU5UTFI0XCI6ICcjZTQ0YTMyJyxcblx0XCJBcGFjaGUgQ29uZmlndXJhdGlvblwiOiAnI2M5MjAzNycsXG5cdFwiQXBleFwiOiAnIzBmOWJkNycsXG5cdFwiQVBMXCI6ICcjZDJkMmQyJyxcblx0XCJBcHBsZVNjcmlwdFwiOiAnI2E4YzJhYicsXG5cdFwiQXJkdWlub1wiOiAnIzJkOTA5NCcsXG5cdFwiQVJNIEFzc2VtYmx5XCI6ICcjMDAwMGJmJyxcblx0XCJBc2NpaURvY1wiOiAnI2U0MDA0NicsXG5cdFwiQVNQLk5FVCAoQyMpXCI6ICcjMzNhOWRjJyxcblx0XCJBdXRvSG90a2V5XCI6ICcjZDhkOGQ4Jyxcblx0XCJBdXRvSXRcIjogJyM1ZDgzYWMnLFxuXHRcIkF2cm8gSURMXCI6ICcjMDA0MGZmJyxcblx0XCJBV0tcIjogJyNkMmQyZDInLFxuXHRcIkJhdGNoXCI6ICcjZDliNDAwJyxcblx0XCJDI1wiOiAnIzM2ODgzMicsXG5cdFwiQ1wiOiAnIzAwNWY5MScsXG5cdFwiQysrXCI6ICcjOTg0YzkzJyxcblx0XCJDbG9qdXJlXCI6ICcjOTFkYzQ3Jyxcblx0XCJDTWFrZVwiOiAnIzAxYTMwMCcsXG5cdFwiQ09CT0xcIjogJyMwMDVjYTUnLFxuXHRcIkNvZmZlZVNjcmlwdFwiOiAnIzZmNGUzNycsXG5cdFwiQ3J5c3RhbFwiOiAnI2M4YzhjOCcsXG5cdFwiQ1NTXCI6ICcjMTU3MmI2Jyxcblx0XCJDU1ZcIjogJyNjMmMyYzInLFxuXHRcIkRcIjogJyNiMDM5MzEnLFxuXHRcIkRhcnRcIjogJyM1OGI2ZjAnLFxuXHRcIkRoYWxsXCI6ICcjYjdiN2I3Jyxcblx0XCJEaWZmXCI6ICcjYzAwMDAwJyxcblx0XCJEamFuZ28vSmluamEyXCI6ICcjZmYwMDAwJyxcblx0XCJEb2NrZXJcIjogJyMwMDk2ZTYnLFxuXHRcIkRPVCAoR3JhcGh2aXopXCI6ICcjNGVkMWY4Jyxcblx0XCJFZGl0b3JDb25maWdcIjogJyNlM2UzZjgnLFxuXHRcIkVKU1wiOiAnIzkwYTkzYScsXG5cdFwiRWxpeGlyXCI6ICcjNDUyNDU5Jyxcblx0XCJFbG1cIjogJyM4Y2Q2MzYnLFxuXHRcIkVSQlwiOiAnIzkyMWExZScsXG5cdFwiRXJsYW5nXCI6ICcjYTIwMDNlJyxcblx0XCJGI1wiOiAnIzM3OGJiYScsXG5cdFwiRmlyZXN0b3JlIHNlY3VyaXR5IHJ1bGVzXCI6ICcjZjY4MjBjJyxcblx0XCJGbG93XCI6ICcjZmZiMDQ3Jyxcblx0XCJGb3J0cmFuXCI6ICcjNzM0Zjk2Jyxcblx0XCJGcmVlTWFya2VyIFRlbXBsYXRlIExhbmd1YWdlXCI6ICcjMDA1MGIyJyxcblx0XCJHYW1lTWFrZXIgTGFuZ3VhZ2VcIjogJyM4YmMzNGEnLFxuXHRcIkctY29kZVwiOiAnI2JhMDAwMCcsXG5cdFwiR0RTY3JpcHRcIjogJyM0NzhjYmYnLFxuXHRcIkdpdFwiOiAnI2RkNGMzNScsXG5cdFwiR0xTTFwiOiAnIzQzODZiNScsXG5cdFwiR28gbW9kdWxlXCI6ICcjY2UzMjYyJyxcblx0XCJHb1wiOiAnIzAwYWNkNycsXG5cdFwiR3JhZGxlXCI6ICcjMDA2NTMzJyxcblx0XCJHcmFwaFFMXCI6ICcjZTEwMDk4Jyxcblx0XCJHcm9vdnlcIjogJyM2Mzk4YWEnLFxuXHRcIkhhbWxcIjogJyNlY2RmYTcnLFxuXHRcIkhhbmRsZWJhcnNcIjogJyNjMTk3NzAnLFxuXHRcIkhhc2tlbGxcIjogJyNDMDQ1MDQnLFxuXHRcIkhheGVcIjogJyNmNjg3MTInLFxuXHRcIkhMU0xcIjogJyMwMDAwZmYnLFxuXHRcIkhUTUxcIjogJyNlNDRmMjYnLFxuXHRcIkhUVFBcIjogJyMzYjYxYTYnLFxuXHRcIklkcmlzXCI6ICcjOGEwODE5Jyxcblx0XCJJbmlcIjogJyM5OWI4YzQnLFxuXHRcIklvXCI6ICcjYzJjMmMyJyxcblx0XCJKYXZhXCI6ICcjNTM4MmExJyxcblx0XCJKYXZhU2NyaXB0XCI6ICcjZjVkZTE5Jyxcblx0XCJKU09OXCI6ICcjZjVkZTE5Jyxcblx0XCJKU09ONVwiOiAnIzkwOTA5MCcsXG5cdFwiSnVsaWFcIjogJyM0MDYzZDgnLFxuXHRcIktvdGxpblwiOiAnIzlkNGI5ZCcsXG5cdFwiS3VzdG9cIjogJyM1OWI0ZDknLFxuXHRcIkxhVGVYXCI6ICcjY2ZjZmNmJyxcblx0XCJMZXNzXCI6ICcjMmE0Zjg0Jyxcblx0XCJMaXF1aWRcIjogJyMwMDQ5OTknLFxuXHRcIkxpc3BcIjogJyM4MzgxYzUnLFxuXHRcIkxpdmVTY3JpcHRcIjogJyMzMTdlYWMnLFxuXHRcIkxvZyBmaWxlXCI6ICcjMDBiZDAyJyxcblx0XCJMT0xDT0RFXCI6ICcjOGQyNzAxJyxcblx0XCJMdWFcIjogJyMwNTAwODAnLFxuXHRcIk1hcmtkb3duXCI6ICcjNzU1ODM4Jyxcblx0XCJNQVRMQUJcIjogJyNlZjZjM2UnLFxuXHRcIk1BWFNjcmlwdFwiOiAnIzAwNjk2YicsXG5cdFwiTUVMXCI6ICcjMDZhMGEyJyxcblx0XCJNb25nb0RCXCI6ICcjNDFhMjQ3Jyxcblx0XCJuZ2lueFwiOiAnIzAxOTYzOScsXG5cdFwiTmltXCI6ICcjZmZlOTUzJyxcblx0XCJOaXhcIjogJyM1Mjc3YzMnLFxuXHRcIk5TSVNcIjogJyNhNDJkMjYnLFxuXHRcIk9iamVjdCBQYXNjYWxcIjogJyNGRjYzNDQnLFxuXHRcIk9iamVjdGl2ZS1DXCI6ICcjYzJjMmMyJyxcblx0XCJPQ2FtbFwiOiAnI2YyOTEwNCcsXG5cdFwiT2N0YXZlXCI6ICcjNzdjY2UxJyxcblx0XCJPcGVuQ0xcIjogJyNGRjFDMUEnLFxuXHRcIlBhc2NhbFwiOiAnI0ZGNjM0NCcsXG5cdFwiUGVybFwiOiAnIzNhM2M1YicsXG5cdFwiUEhQXCI6ICcjNGM2Yjk2Jyxcblx0XCJQTC9TUUxcIjogJyNmZjAwMDAnLFxuXHRcIlBsYWluIHRleHRcIjogJyNjMmMyYzInLFxuXHRcIlBsYW50VU1MXCI6ICcjQTExRjQxJyxcblx0XCJQb3dlclF1ZXJ5XCI6ICcjY2ZjZmNmJyxcblx0XCJQb3dlclNoZWxsXCI6ICcjNTM5MWZlJyxcblx0XCJQcm9jZXNzaW5nXCI6ICcjMWM0YzcwJyxcblx0XCJQcm9sb2dcIjogJyNlYzFjMjQnLFxuXHRcIlByb3RvY29sIEJ1ZmZlcnNcIjogJyM5N2ZmMjcnLFxuXHRcIlB1Z1wiOiAnIzQ0MjgyMycsXG5cdFwiUHVwcGV0XCI6ICcjZmZhZTFhJyxcblx0XCJQdXJlU2NyaXB0XCI6ICcjMTYxNzFiJyxcblx0XCJQeXRob25cIjogJyMzNjcxQTEnLFxuXHRcIlEgKGtkYisgZGF0YWJhc2UpXCI6ICcjMWU3OGIzJyxcblx0XCJRI1wiOiBgIzMzMzNjY2AsXG5cdFwiUU1MXCI6ICcjNDFjZDUyJyxcblx0XCJSXCI6ICcjMjc2ZGMzJyxcblx0XCJSYWNrZXRcIjogJyM5ZjFkMjAnLFxuXHRcIlJhem9yIEMjXCI6ICcjMzY4ODMyJyxcblx0XCJSZWFjdCBKU1hcIjogJyMwMGQ4ZmYnLFxuXHRcIlJlYWN0IFRTWFwiOiAnIzAwN2FjYycsXG5cdFwiUmVhc29uXCI6ICcjZGQ0YjM5Jyxcblx0XCJSZWdvXCI6ICcjNzg5MjlhJyxcblx0XCJSZVNjcmlwdFwiOiAnI2U4NGY0ZicsXG5cdFwicmVTVCAocmVTdHJ1Y3R1cmVkVGV4dClcIjogJyNjZTNmMzEnLFxuXHRcIlJvYm90IEZyYW1ld29ya1wiOiBgYCxcblx0XCJSdWJ5XCI6ICcjYjMxMzAxJyxcblx0XCJSdXN0XCI6ICcjYTA0ZjEyJyxcblx0XCJTQVNcIjogJyMwMDJiYjUnLFxuXHRcIlNhc3MgKFNhc3MpXCI6ICcjY2Q2Nzk5Jyxcblx0XCJTYXNzIChTQ1NTKVwiOiAnI2NkNjc5OScsXG5cdFwiU2NhbGFcIjogYCNlNjJkMmEgYCxcblx0XCJTaGVsbCBzZXNzaW9uXCI6ICcjZDliNDAwJyxcblx0XCJTaGVsbFwiOiAnI2Q5YjQwMCcsXG5cdFwiU21hcnR5XCI6ICcjZjZlMjAwJyxcblx0XCJTb2xpZGl0eSAoRXRoZXJldW0pXCI6ICcjYzFjMWMxJyxcblx0XCJTb2x1dGlvbiBmaWxlXCI6ICcjODU0Y2M3Jyxcblx0XCJTUEFSUUxcIjogJyMwYzQ3OWMnLFxuXHRcIlNRRlwiOiAnI2MyYzJjMicsXG5cdFwiU1FGOiBTdGF0dXMgUXVvIEZ1bmN0aW9uIChBcm1hIDMpXCI6ICcjYzJjMmMyJyxcblx0XCJTUUxcIjogJyNmZmRhNDQnLFxuXHRcIlNxdWlycmVsXCI6ICcjYTA1YTJjJyxcblx0XCJTdGFuXCI6ICcjYjIwMDFkJyxcblx0XCJTdGF0YSBBZG9cIjogJyMzYzZlOGYnLFxuXHRcIlN0eWx1c1wiOiAnI2MyYzJjMicsXG5cdFwiU1ZHXCI6ICcjZmZiMTNiJyxcblx0XCJTd2lmdFwiOiAnI0ZBNUQyRCcsXG5cdFwiU3lzdGVtZCBjb25maWd1cmF0aW9uIGZpbGVcIjogJyMzMGQ0NzUnLFxuXHRcIlQ0IHRlbXBsYXRpbmdcIjogJyMxZTg4ZTUnLFxuXHRcIlQ0IFRleHQgVGVtcGxhdGVzIChDIylcIjogJyMxZTg4ZTUnLFxuXHRcIlQ0IFRleHQgVGVtcGxhdGVzIChWQilcIjogJyMxZTg4ZTUnLFxuXHRcIlRjbFwiOiAnI2VmZjFjYicsXG5cdFwiVGVtcGxhdGUgVG9vbGtpdCAyXCI6ICcjM2JjZWZjJyxcblx0XCJUZVhcIjogJyNjZmNmY2YnLFxuXHRcIlRleHRpbGVcIjogJyNmZmU3YWMnLFxuXHRcIlRPTUxcIjogJyNiZmJmYmYnLFxuXHRcIlRTQ29uZmlnXCI6ICcjMDA3YWNjJyxcblx0XCJUd2lnXCI6ICcjNzhkYzUwJyxcblx0XCJUeXBlU2NyaXB0XCI6ICcjMzE3OGM2Jyxcblx0XCJUeXBvU2NyaXB0XCI6ICcjZmY4NzAwJyxcblx0XCJWXCI6ICcjNWQ4N2JmJyxcblx0XCJWYWxhXCI6ICcjNDAzNzU3Jyxcblx0XCJWQi5OZXRcIjogJyMwMDUxOWEnLFxuXHRcIlZCQVwiOiAnI2Q4N2IzMCcsXG5cdFwiVmVsb2NpdHlcIjogJyMyNjI2OTInLFxuXHRcIlZlcmlsb2dcIjogJyMxYTM0OGYnLFxuXHRcIlZIRExcIjogJyMwZDliMzUnLFxuXHRcInZpbVwiOiAnIzQzYjU0YScsXG5cdFwiVmlzdWFsIEJhc2ljXCI6ICcjMDA1MTlhJyxcblx0XCJXZWJBc3NlbWJseVwiOiAnIzY1NGZmMCcsXG5cdFwiV29sZnJhbSBsYW5ndWFnZVwiOiAnI2QwMTAwMCcsXG5cdFwiWE1MXCI6ICcjZjE2NjJhJyxcblx0XCJYUXVlcnlcIjogJyNmMTY2MmEnLFxuXHRcIllBTUxcIjogJyNmZmU4ODUnLFxuXHRcIllBTkdcIjogJyMyMzFmMjAnLFxuXHRcIlppZ1wiOiAnI2Y3YTQxZCdcbn1cbiIsICJpbXBvcnQgeyBBcHAsIFBsdWdpblNldHRpbmdUYWIsIFNldHRpbmcsIE5vdGljZSwgVGV4dENvbXBvbmVudCwgRHJvcGRvd25Db21wb25lbnQsIFNsaWRlckNvbXBvbmVudCwgVG9nZ2xlQ29tcG9uZW50LCBFeHRyYUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IFBpY2tyIGZyb20gXCJAc2ltb253ZXAvcGlja3JcIjtcbmltcG9ydCB7IENvbG9yVHJhbnNsYXRvciB9IGZyb20gXCJjb2xvcnRyYW5zbGF0b3JcIjtcblxuaW1wb3J0IENvZGVTdHlsZXJQbHVnaW4gZnJvbSBcIi4vbWFpblwiO1xuaW1wb3J0IHsgQ29sb3VyLCBDU1MsIEhFWCwgRGlzcGxheSwgQ29kZVN0eWxlclNldHRpbmdzLCBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBQQVJBTUVURVJTLCBERUZBVUxUX1NFVFRJTkdTLCBMQU5HVUFHRV9OQU1FUywgTEFOR1VBR0VfSUNPTlNfREFUQSB9IGZyb20gJy4vU2V0dGluZ3MnO1xuaW1wb3J0IHsgdG9kbyB9IGZyb20gXCJub2RlOnRlc3RcIjtcblxuY29uc3QgRElTUExBWV9PUFRJT05TOiBSZWNvcmQ8RGlzcGxheSxzdHJpbmc+ID0ge1xuXHRcIm5vbmVcIjogXCJOZXZlclwiLFxuXHRcImlmX2hlYWRlcl9zaG93blwiOiBcIklmIEhlYWRlciBTaG93blwiLFxuXHRcImFsd2F5c1wiOiBcIkFsd2F5c1wiLFxufVxuXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcblx0cGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luO1xuXHRwaWNrcnM6IFJlY29yZDxzdHJpbmcsUGlja3JSZXNldHRhYmxlPjtcblx0ZGlzYWJsZWFibGVDb21wb25lbnRzOiBSZWNvcmQ8c3RyaW5nLEFycmF5PFRvZ2dsZUNvbXBvbmVudCB8IFNsaWRlckNvbXBvbmVudCB8IFRleHRDb21wb25lbnQgfCBFeHRyYUJ1dHRvbkNvbXBvbmVudD4+XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogQ29kZVN0eWxlclBsdWdpbikge1xuXHRcdHN1cGVyKGFwcCwgcGx1Z2luKTtcblx0XHR0aGlzLnBsdWdpbiA9IHBsdWdpbjtcblx0XHR0aGlzLnBpY2tycyA9IHt9XG5cdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHMgPSB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiAgQnVpbGRzIHRoZSBodG1sIHBhZ2UgdGhhdCBpcyBzaG93ZWQgaW4gdGhlIHNldHRpbmdzLlxuXHQgKi9cblx0ZGlzcGxheSgpIHtcblx0XHRjb25zdCB7Y29udGFpbmVyRWx9ID0gdGhpcztcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHt0ZXh0OiAnU2V0dGluZ3MgZm9yIHRoZSBDb2RlIFN0eWxlciBQbHVnaW4uJ30pO1xuXG5cdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHMgPSB7XG5cdFx0XHQnbGluZU51bWJlcnMnOiBbXSxcblx0XHRcdCd3cmFwTGluZXMnOiBbXSxcblx0XHRcdCdoZWFkZXJMYW5ndWFnZVRhZ3MnOiBbXSxcblx0XHRcdCdoZWFkZXJMYW5ndWFnZUljb25zJzogW10sXG5cdFx0XHQnZWRpdG9yQWN0aXZlTGluZUhpZ2hsaWdodCc6IFtdLFxuXHRcdFx0J2NvZGVibG9ja0FjdGl2ZUxpbmVIaWdobGlnaHQnOiBbXSxcblx0XHRcdCdncmFkaWVudEhpZ2hsaWdodGluZyc6IFtdLFxuXHRcdFx0J2xhbmd1YWdlQm9yZGVyQ29sb3VyJzogW10sXG5cdFx0fTtcblxuXHRcdC8vID09PT09PT09PT0gR2VuZXJhbCA9PT09PT09PT09XG5cblx0XHRsZXQgaWdub3JlVGltZW91dDogTm9kZUpTLlRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57fSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSWdub3JlIENvZGVibG9ja3MnKVxuXHRcdFx0LnNldERlc2MoJ0RlZmluZSBsYW5ndWFnZXMgaW4gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCB3aGljaCB0aGUgcGx1Z2luIHNob3VsZCBjb21wbGV0ZWx5IGlnbm9yZS4gWW91IGNhbiB1c2UgYSB3aWxkY2FyZCAoKikgZWl0aGVyIGF0IHRoZSBiZWdpbm5pbmcsIG9yIGF0IHRoZSBlbmQuIEZvciBleGFtcGxlOiBhZC0qIHdpbGwgZXhjbHVkZSBjb2RlYmxvY2tzIHdoZXJlIHRoZSBsYW5ndWFnZSBzdGFydHMgd2l0aCBhZC0gZS5nLjogYWQtaW5mbywgYWQtZXJyb3IgZXRjLicpXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdlLmcuIGRhdGF2aWV3LCBkYXRhdmlld2pzIGV0Yy4nKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRDb2RlYmxvY2tzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRDb2RlYmxvY2tzID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0Y2xlYXJUaW1lb3V0KGlnbm9yZVRpbWVvdXQpO1xuXHRcdFx0XHRcdGlnbm9yZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT50aGlzLnBsdWdpbi5yZXJlbmRlclByZXZpZXcoKSwxMDAwKTtcblx0XHRcdFx0fSkpO1xuXHRcdFx0XHQvL1RPRE8gKEBtYXl1cmFua3YpIFJlLXJlbmRlciAoTFApXG5cdFx0bGV0IGV4Y2x1ZGVUaW1lb3V0OiBOb2RlSlMuVGltZW91dCA9IHNldFRpbWVvdXQoKCk9Pnt9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdFeGNsdWRlIExhbmd1YWdlcycpXG5cdFx0XHQuc2V0RGVzYygnRGVmaW5lIGxhbmd1YWdlcyBpbiBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IHdoaWNoIHRoZSBwbHVnaW4gc2hvdWxkIG5vdCBkZWNvcmF0ZS4gWW91IGNhbiB1c2UgYSB3aWxkY2FyZCAoKikgZWl0aGVyIGF0IHRoZSBiZWdpbm5pbmcsIG9yIGF0IHRoZSBlbmQuIEZvciBleGFtcGxlOiBhZC0qIHdpbGwgZXhjbHVkZSBjb2RlYmxvY2tzIHdoZXJlIHRoZSBsYW5ndWFnZSBzdGFydHMgd2l0aCBhZC0gZS5nLjogYWQtaW5mbywgYWQtZXJyb3IgZXRjLicpXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdlLmcuIGFkLSosIHB5dGhvbiBldGMuJylcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXMgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHRjbGVhclRpbWVvdXQoZXhjbHVkZVRpbWVvdXQpO1xuXHRcdFx0XHRcdGV4Y2x1ZGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKT0+dGhpcy5wbHVnaW4ucmVyZW5kZXJQcmV2aWV3KCksMTAwMCk7XG5cdFx0XHRcdH0pKTtcblx0XHRcdFx0Ly9UT0RPIChAbWF5dXJhbmt2KSBSZS1yZW5kZXIgKExQKVxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ1N0eWxlIENvZGUgb24gRXhwb3J0Jylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBzdHlsaW5nIHdpbGwgYmUgYXBwbGllZCB3aGVuIGV4cG9ydGluZyB0byBQREYuJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVjb3JhdGVQcmludClcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmRlY29yYXRlUHJpbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgICAgICBcblx0XHRcdFx0fSkpO1xuXG5cdFx0Ly8gPT09PT09PT09PSBUaGVtZXMgPT09PT09PT09PVxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnVGhlbWUgU2V0dGluZ3MnfSk7XG5cblx0XHRsZXQgdGhlbWVEcm9wZG93bjogRHJvcGRvd25Db21wb25lbnQ7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNlbGVjdCBUaGVtZVwiKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHR0aGVtZURyb3Bkb3duID0gZHJvcGRvd247XG5cdFx0XHRcdHRoaXMudXBkYXRlRHJvcGRvd24odGhlbWVEcm9wZG93bix0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG5cdFx0XHRcdHRoZW1lRHJvcGRvd24ub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZSA9IHZhbHVlO1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0pXG5cdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRidXR0b24uc2V0VG9vbHRpcChcIlVwZGF0ZSB0aGVtZVwiKTtcblx0XHRcdFx0YnV0dG9uLnNldEljb24oJ3NhdmUnKTtcblx0XHRcdFx0YnV0dG9uLm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lIGluIERFRkFVTFRfU0VUVElOR1MudGhlbWVzKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnWW91IGNhbm5vdCB1cGRhdGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdID0gc3RydWN0dXJlZENsb25lKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG5cdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lfSB0aGVtZSBzYXZlZCBzdWNjZXNzZnVsbHkhYCk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0YnV0dG9uLnNldFRvb2x0aXAoXCJEZWxldGUgdGhlbWVcIik7XG5cdFx0XHRcdGJ1dHRvbi5zZXRJY29uKCd0cmFzaCcpO1xuXHRcdFx0XHRidXR0b24ub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWUudHJpbSgpLmxlbmd0aCA9PT0gMClcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoJ1NlbGVjdCBhIHRoZW1lIGZpcnN0IHRvIGRlbGV0ZScpOyAvL05PU09OQVJcblx0XHRcdFx0XHRlbHNlIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lIGluIERFRkFVTFRfU0VUVElOR1MudGhlbWVzKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnWW91IGNhbm5vdCBkZWxldGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0ZGVsZXRlIHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lfSB0aGVtZSBkZWxldGVkIHN1Y2Nlc3NmdWxseSFgKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lID0gXCJEZWZhdWx0XCI7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdKVxuXHRcdFx0XHRcdFx0dGhpcy51cGRhdGVEcm9wZG93bih0aGVtZURyb3Bkb3duLHRoaXMucGx1Z2luLnNldHRpbmdzKTtcblx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdGxldCBuZXdUaGVtZU5hbWU6IFRleHRDb21wb25lbnQ7XG5cdFx0bGV0IG5ld1RoZW1lRGVmYXVsdDogVG9nZ2xlQ29tcG9uZW50O1xuXHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lID0gJyc7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnQWRkIE5ldyBUaGVtZScpXG5cdFx0XHQuc2V0RGVzYygnQ3JlYXRlIGEgbmV3IHRoZW1lIGZyb20gdGhlIGN1cnJlbnQgc2V0dGluZ3MuJylcblx0XHRcdC5hZGRUZXh0KHRleHQgPT4ge25ld1RoZW1lTmFtZSA9IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdOZXcgdGhlbWUgbmFtZScpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZSlcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lID0gdmFsdWU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRidXR0b24uc2V0VG9vbHRpcChcIlNhdmUgdGhlbWVcIik7XG5cdFx0XHRcdGJ1dHRvbi5zZXRJY29uKCdwbHVzJyk7XG5cdFx0XHRcdGJ1dHRvbi5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUudHJpbSgpLmxlbmd0aCA9PT0gMClcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoJ1NldCBhIG5hbWUgZm9yIHlvdXIgdGhlbWUnKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0ZWxzZSBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUgaW4gREVGQVVMVF9TRVRUSU5HUy50aGVtZXMpXG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKCdZb3UgY2FuXFwndCBvdmVyd3JpdGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lIGluIHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lcykge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWVdID0gc3RydWN0dXJlZENsb25lKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoYCR7dGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWV9IHRoZW1lIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5IWApOyAvL05PU09OQVJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZV0gPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lKTtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZX0gdGhlbWUgc2F2ZWQgc3VjY2Vzc2Z1bGx5IWApOyAvL05PU09OQVJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZTtcblx0XHRcdFx0XHRcdHRoaXMudXBkYXRlRHJvcGRvd24odGhlbWVEcm9wZG93bix0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG5cdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUgPSAnJztcblx0XHRcdFx0XHRcdG5ld1RoZW1lTmFtZS5zZXRWYWx1ZShcIlwiKTtcblx0XHRcdFx0XHRcdG5ld1RoZW1lRGVmYXVsdC5zZXRWYWx1ZShmYWxzZSk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6ICdDb2RlYmxvY2sgQXBwZWFyYW5jZSd9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdDb2RlYmxvY2sgQmFja2dyb3VuZCBDb2xvdXInKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnY29kZWJsb2NrX2JhY2tncm91bmQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmNvZGVibG9jay5iYWNrZ3JvdW5kQ29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmNvZGVibG9jay5iYWNrZ3JvdW5kQ29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnQ29kZWJsb2NrIFRleHQgQ29sb3VyJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2NvZGVibG9ja190ZXh0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5jb2RlYmxvY2sudGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5jb2RlYmxvY2sudGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ1Vud3JhcCBjb2RlYmxvY2sgbGluZXMnKVxuXHRcdFx0LnNldERlc2MoJ0Nob29zZSB3aGV0aGVyIHRvIHVud3JhcCBsaW5lcyBpbiByZWFkaW5nIG1vZGUnKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLnVud3JhcExpbmVzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay51bndyYXBMaW5lcyA9IHZhbHVlO1xuXHRcdFx0XHRcdGlmICghdmFsdWUpXG5cdFx0XHRcdFx0XHR3cmFwTGluZXNBY3RpdmVUb2dnbGUuc2V0VmFsdWUoZmFsc2UpO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWyd3cmFwTGluZXMnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgIFxuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnJlcmVuZGVyUHJldmlldygpO1xuXHRcdFx0XHR9KSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnQ29kZWJsb2NrIEN1cnZhdHVyZScpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lcyBob3cgcm91bmRlZCB0aGUgY29kZWJsb2NrcyBhcHBlYXIgaW4gcGl4ZWxzLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoMCwyNSwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmN1cnZhdHVyZSlcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2suY3VydmF0dXJlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBjdXJ2YXR1cmUnKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2suY3VydmF0dXJlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmNvZGVibG9jay5jdXJ2YXR1cmU7XG5cdFx0XHRcdFx0XHRyZXNldHRhYmxlU2xpZGVyLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2suY3VydmF0dXJlKTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFx0XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6ICdHdXR0ZXIgQXBwZWFyYW5jZSd9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdFbmFibGUgTGluZSBOdW1iZXJzJylcblx0XHRcdC5zZXREZXNjKCdJZiBkaXNhYmxlZCwgdGhlIGJlbG93IHNldHRpbmdzIGFyZSBkaXNhYmxlZCB0b28uJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycylcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMgPSB2YWx1ZTtcblx0XHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGluZU51bWJlcnMnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgICAgICBcblx0XHRcdFx0fSkpO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0d1dHRlciBCYWNrZ3JvdW5kIENvbG91cicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdndXR0ZXJfYmFja2dyb3VuZCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uZ3V0dGVyLmJhY2tncm91bmRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uZ3V0dGVyLmJhY2tncm91bmRDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdFx0KCkgPT4gIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMsXG5cdFx0XHQpfSk7XG5cdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2xpbmVOdW1iZXJzJ10ucHVzaCh0aGlzLnBpY2tyc1snZ3V0dGVyX2JhY2tncm91bmQnXS5yZXNldEJ1dHRvbik7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnTGluZSBOdW1iZXIgQ29sb3VyJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2xpbmVfbnVtYmVyJyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIudGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIudGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0XHQoKSA9PiAhdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycyxcblx0XHRcdCl9KTtcblx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGluZU51bWJlcnMnXS5wdXNoKHRoaXMucGlja3JzWydsaW5lX251bWJlciddLnJlc2V0QnV0dG9uKTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdIaWdobGlnaHQgTGluZSBOdW1iZXJzJylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBoaWdobGlnaHRzIHdpbGwgYWxzbyBoaWdobGlnaHQgdGhlIGxpbmUgbnVtYmVycy4nKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4ge2xldCBoaWdobGlnaHRMaW5lTnVtYmVyc1RvZ2dsZSA9IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmd1dHRlci5oaWdobGlnaHQpXG5cdFx0XHRcdC5zZXREaXNhYmxlZCghdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycylcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5ndXR0ZXIuaGlnaGxpZ2h0ID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydsaW5lTnVtYmVycyddLnB1c2goaGlnaGxpZ2h0TGluZU51bWJlcnNUb2dnbGUpO1xuXHRcdFx0fSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSW5kaWNhdGUgQ3VycmVudCBMaW5lIE51bWJlcicpXG5cdFx0XHQuc2V0RGVzYygnSWYgZW5hYmxlZCwgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgaW4gY29kZWJsb2NrcyB3aWxsIGJlIGluZGljYXRlZCB3aXRoIGEgc2VwYXJhdGUgY29sb3VyLicpXG5cdFx0XHQuc2V0Q2xhc3MoJ2NvZGUtc3R5bGVyLXNwYWNlZCcpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7bGV0IGluZGljYXRlQ3VycmVudExpbmVOdW1iZXJUb2dnbGUgPSB0b2dnbGVcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5ndXR0ZXIuYWN0aXZlTGluZSlcblx0XHRcdFx0LnNldERpc2FibGVkKCF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmxpbmVOdW1iZXJzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmd1dHRlci5hY3RpdmVMaW5lID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydsaW5lTnVtYmVycyddLnB1c2goaW5kaWNhdGVDdXJyZW50TGluZU51bWJlclRvZ2dsZSk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnYWN0aXZlX2xpbmVfbnVtYmVyJyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIuYWN0aXZlVGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIuYWN0aXZlVGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0XHQoKSA9PiAhdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycyxcblx0XHRcdCl9KTtcblx0XHRcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDQnLCB7dGV4dDogJ0hlYWRlciBBcHBlYXJhbmNlJ30pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0hlYWRlciBCYWNrZ3JvdW5kIENvbG91cicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdoZWFkZXJfYmFja2dyb3VuZCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmJhY2tncm91bmRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmJhY2tncm91bmRDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdCl9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdIZWFkZXIgRm9udCBTaXplJylcblx0XHRcdC5zZXREZXNjKCdTZXQgdGhlIGZvbnQgc2l6ZSBmb3IgaGVhZGVyIGxhbmd1YWdlIHRhZ3MgYW5kIHRpdGxlcy4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHtcblx0XHRcdFx0bGV0IHJlc2V0dGFibGVTbGlkZXI6IFNsaWRlckNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRTbGlkZXIoKHNsaWRlcikgPT4ge3Jlc2V0dGFibGVTbGlkZXIgPSBzbGlkZXJcblx0XHRcdFx0XHQuc2V0TGltaXRzKDYsMzIsMSlcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5mb250U2l6ZSlcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIuZm9udFNpemUgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7YnV0dG9uXG5cdFx0XHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgZm9udCBzaXplJylcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmZvbnRTaXplID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmhlYWRlci5mb250U2l6ZTtcblx0XHRcdFx0XHRcdHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5mb250U2l6ZSk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSGVhZGVyIFRpdGxlIFRleHQgU3R5bGluZycpXG5cdFx0XHQuc2V0RGVzYygnU3R5bGUgdGhlIGhlYWRlciB0aXRsZSB0ZXh0IHVzaW5nIGJvbGQgYW5kIGl0YWxpYyB0b2dnbGVzLCBieSBzZXR0aW5nIGEgZm9udCBvciBieSBzZXR0aW5nIGEgdGV4dCBjb2xvdXIuJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHt0b2dnbGVcblx0XHRcdFx0LnNldFRvb2x0aXAoXCJUb2dnbGUgYm9sZCB0aXRsZSB0ZXh0XCIpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLnRpdGxlLnRleHRCb2xkKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0Qm9sZCA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7dG9nZ2xlXG5cdFx0XHRcdC5zZXRUb29sdGlwKFwiVG9nZ2xlIGl0YWxpYyB0aXRsZSB0ZXh0XCIpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLnRpdGxlLnRleHRJdGFsaWMpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLnRpdGxlLnRleHRJdGFsaWMgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LmFkZFRleHQodGV4dCA9PiB7dGV4dFxuXHRcdFx0XHQuc2V0UGxhY2Vob2xkZXIoJ0ZvbnQnKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0Rm9udClcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEZvbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnaGVhZGVyX3RpdGxlX3RleHQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhlYWRlci50aXRsZS50ZXh0Q29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhlYWRlci50aXRsZS50ZXh0Q29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bGV0IGNvbGxhcHNlUGxhY2Vob2xkZXJUaW1lb3V0OiBOb2RlSlMuVGltZW91dCA9IHNldFRpbWVvdXQoKCk9Pnt9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdDb2xsYXBzZSBQbGFjZWhvbGRlciBUZXh0Jylcblx0XHRcdC5zZXREZXNjKCdUaXRsZSBwbGFjZWhvbGRlciB0ZXh0IGZvciBjb2xsYXBzZWQgY29kZSB3aGVuIG5vIHRpdGxlIHBhcmFtZXRlciBpcyBzZXQuJylcblx0XHRcdC5hZGRUZXh0KHRleHQgPT4gdGV4dFxuXHRcdFx0XHQuc2V0UGxhY2Vob2xkZXIoJ0NvbGxhcHNlZCBDb2RlJylcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIuY29sbGFwc2VQbGFjZWhvbGRlcilcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIuY29sbGFwc2VQbGFjZWhvbGRlciA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdGNsZWFyVGltZW91dChjb2xsYXBzZVBsYWNlaG9sZGVyVGltZW91dCk7XG5cdFx0XHRcdFx0Y29sbGFwc2VQbGFjZWhvbGRlclRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT50aGlzLnBsdWdpbi5yZXJlbmRlclByZXZpZXcoKSwxMDAwKTtcblx0XHRcdFx0fSkpO1xuXHRcdFx0XHQvL1RPRE8gKEBtYXl1cmFua3YpIFJlLXJlbmRlciAoTFApXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSGVhZGVyIFNlcGFyYXRvciBDb2xvdXInKVxuXHRcdFx0LnNldERlc2MoJ0NvbG91ciBvZiB0aGUgbGluZSBzZXBhcmF0aW5nIHRoZSBjb2RlYmxvY2sgaGVhZGVyIGFuZCB0aGUgY29kZWJsb2NrLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdoZWFkZXJfc2VwYXJhdG9yJyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGluZUNvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGluZUNvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdFx0XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g1Jywge3RleHQ6ICdIZWFkZXIgTGFuZ3VhZ2UgVGFnIEFwcGVhcmFuY2UnfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnRGlzcGxheSBIZWFkZXIgTGFuZ3VhZ2UgVGFncycpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lIHdoZW4gdG8gc2hvdyBsYW5ndWFnZSB0YWdzIGluIHRoZSBoZWFkZXIuIFwiVGl0bGUgT25seVwiIHdpbGwgb25seSBzaG93IGxhbmd1YWdlIHRhZ3Mgd2hlbiB0aGUgdGl0bGUgcGFyYW1ldGVyIGlzIHNldC4gSWYgc2V0IHRvIFwiTm9uZVwiLCB0aGUgYmVsb3cgc2V0dGluZ3MgYXJlIGRpc2FibGVkIHRvby4nKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4gZHJvcGRvd25cblx0XHRcdFx0LmFkZE9wdGlvbnMoRElTUExBWV9PUFRJT05TKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5KVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlOiBEaXNwbGF5KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5ID0gdmFsdWU7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlVGFncyddLmZvckVhY2goY29tcG9uZW50ID0+IHtjb21wb25lbnQuc2V0RGlzYWJsZWQodmFsdWU9PT1cIm5vbmVcIil9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSkpO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0hlYWRlciBMYW5ndWFnZSBUYWcgQmFja2dyb3VuZCBDb2xvdXInKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnaGVhZGVyX2xhbmd1YWdlX3RhZ19iYWNrZ3JvdW5kJyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcuYmFja2dyb3VuZENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcuYmFja2dyb3VuZENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0XHQoKSA9PiB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXkgPT09ICdub25lJyxcblx0XHRcdCl9KTtcblx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10ucHVzaCh0aGlzLnBpY2tyc1snaGVhZGVyX2xhbmd1YWdlX3RhZ19iYWNrZ3JvdW5kJ10ucmVzZXRCdXR0b24pO1xuXHRcdGxldCBsYW5ndWFnZVRhZ3NCb2xkVG9nZ2xlOiBUb2dnbGVDb21wb25lbnQ7XG5cdFx0bGV0IGxhbmd1YWdlVGFnc0l0YWxpY1RvZ2dsZTogVG9nZ2xlQ29tcG9uZW50O1xuXHRcdGxldCBsYW5ndWFnZUljb25zRm9udFRleHQ6IFRleHRDb21wb25lbnQ7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSGVhZGVyIExhbmd1YWdlIFRhZyBUZXh0IFN0eWxpbmcnKVxuXHRcdFx0LnNldERlc2MoJ1N0eWxlIHRoZSBoZWFkZXIgbGFuZ3VhZ2UgdGFnIHRleHQgdXNpbmcgYm9sZCBhbmQgaXRhbGljIHRvZ2dsZXMsIGJ5IHNldHRpbmcgYSBmb250IG9yIGJ5IHNldHRpbmcgYSB0ZXh0IGNvbG91ci4nKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4ge2xhbmd1YWdlVGFnc0JvbGRUb2dnbGUgPSB0b2dnbGVcblx0XHRcdFx0LnNldFRvb2x0aXAoXCJUb2dnbGUgYm9sZCBsYW5ndWFnZSB0YWcgdGV4dFwiKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Qm9sZClcblx0XHRcdFx0LnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheT09PVwibm9uZVwiKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Qm9sZCA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlVGFncyddLnB1c2gobGFuZ3VhZ2VUYWdzQm9sZFRvZ2dsZSk7XG5cdFx0XHR9KVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4ge2xhbmd1YWdlVGFnc0l0YWxpY1RvZ2dsZSA9IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VG9vbHRpcChcIlRvZ2dsZSBpdGFsaWMgbGFuZ3VhZ2UgdGFnIHRleHRcIilcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEl0YWxpYylcblx0XHRcdFx0LnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheT09PVwibm9uZVwiKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0SXRhbGljID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10ucHVzaChsYW5ndWFnZVRhZ3NJdGFsaWNUb2dnbGUpO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRUZXh0KHRleHQgPT4ge2xhbmd1YWdlSWNvbnNGb250VGV4dCA9IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdGb250Jylcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEZvbnQpXG5cdFx0XHRcdC5zZXREaXNhYmxlZCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXk9PT1cIm5vbmVcIilcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEZvbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZVRhZ3MnXS5wdXNoKGxhbmd1YWdlSWNvbnNGb250VGV4dCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnaGVhZGVyX2xhbmd1YWdlX3RhZ190ZXh0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0XHQoKSA9PiB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXkgPT09ICdub25lJyxcblx0XHRcdCl9KTtcblx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10ucHVzaCh0aGlzLnBpY2tyc1snaGVhZGVyX2xhbmd1YWdlX3RhZ190ZXh0J10ucmVzZXRCdXR0b24pO1xuXHRcdFxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoNScsIHt0ZXh0OiAnSGVhZGVyIExhbmd1YWdlIEljb24gQXBwZWFyYW5jZSd9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdEaXNwbGF5IEhlYWRlciBMYW5ndWFnZSBJY29ucycpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lIHdoZW4gdG8gc2hvdyBsYW5ndWFnZSBpY29ucyB3aGVyZSBhdmFpbGFibGUuIFwiVGl0bGUgT25seVwiIHdpbGwgb25seSBzaG93IGxhbmd1YWdlIHRhZ3Mgd2hlbiB0aGUgdGl0bGUgcGFyYW1ldGVyIGlzIHNldC4gSWYgc2V0IHRvIFwiTm9uZVwiLCB0aGUgYmVsb3cgc2V0dGluZ3MgYXJlIGRpc2FibGVkIHRvby4nKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4gZHJvcGRvd25cblx0XHRcdFx0LmFkZE9wdGlvbnMoRElTUExBWV9PUFRJT05TKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheSlcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZTogRGlzcGxheSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXkgPSB2YWx1ZTtcblx0XHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VJY29ucyddLmZvckVhY2goY29tcG9uZW50ID0+IHtjb21wb25lbnQuc2V0RGlzYWJsZWQodmFsdWU9PT1cIm5vbmVcIil9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSkpO1xuXHRcdGxldCBsYW5ndWFnZUljb25zQ29sb3VyZWRUb2dnbGU6IFRvZ2dsZUNvbXBvbmVudDtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdMYW5ndWFnZSBJY29ucyBDb2xvdXJlZCcpXG5cdFx0XHQuc2V0RGVzYygnSWYgZGlzYWJsZWQsIGxhbmd1YWdlIGljb25zIHdpbGwgYmUgYmxhY2sgYW5kIHdoaXRlLicpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7bGFuZ3VhZ2VJY29uc0NvbG91cmVkVG9nZ2xlID0gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5Q29sb3VyKVxuXHRcdFx0XHQuc2V0RGlzYWJsZWQodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheT09PVwibm9uZVwiKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheUNvbG91ciA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VJY29ucyddLnB1c2gobGFuZ3VhZ2VJY29uc0NvbG91cmVkVG9nZ2xlKTtcblx0XHRcdH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0xhbmd1YWdlIEljb24gU2l6ZScpXG5cdFx0XHQuc2V0RGVzYygnU2V0IHRoZSBzaXplIG9mIHRoZSBkaXNwbGF5ZWQgbGFuZ3VhZ2UgaWNvbnMuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cygxMCw0MCwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuaWNvblNpemUpXG5cdFx0XHRcdFx0LnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXk9PT1cIm5vbmVcIilcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5pY29uU2l6ZSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlSWNvbnMnXS5wdXNoKHJlc2V0dGFibGVTbGlkZXIpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0bGV0IHJlc2V0QnV0dG9uOiBFeHRyYUJ1dHRvbkNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7cmVzZXRCdXR0b24gPSBidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXk9PT1cIm5vbmVcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGljb24gc2l6ZScpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplO1xuXHRcdFx0XHRcdFx0cmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuaWNvblNpemUpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlSWNvbnMnXS5wdXNoKHJlc2V0QnV0dG9uKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6ICdIaWdobGlnaHRpbmcgQXBwZWFyYW5jZSd9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdFZGl0b3IgQWN0aXZlIExpbmUgSGlnaGxpZ2h0Jylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBoaWdobGlnaHRzIHRoZSBhY3RpdmUgbGluZSBvdXRzaWRlIGNvZGVibG9ja3MuJylcblx0XHRcdC5zZXRDbGFzcygnY29kZS1zdHlsZXItc3BhY2VkJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHtyZXR1cm4gdG9nZ2xlXG5cdFx0XHRcdC5zZXRUb29sdGlwKCdUb2dnbGUgZWRpdG9yIGFjdGl2ZSBsaW5lIGhpZ2hsaWdodGluZycpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlRWRpdG9yTGluZSA9IHZhbHVlO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydlZGl0b3JBY3RpdmVMaW5lSGlnaGxpZ2h0J10uZm9yRWFjaChjb21wb25lbnQgPT4ge2NvbXBvbmVudC5zZXREaXNhYmxlZCghdmFsdWUpfSk7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2VkaXRvcl9hY3RpdmVfbGluZV9oaWdobGlnaHQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuYWN0aXZlRWRpdG9yTGluZUNvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmVDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdFx0KCkgPT4gIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmUsXG5cdFx0XHQpfSk7XG5cdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2VkaXRvckFjdGl2ZUxpbmVIaWdobGlnaHQnXS5wdXNoKHRoaXMucGlja3JzWydlZGl0b3JfYWN0aXZlX2xpbmVfaGlnaGxpZ2h0J10ucmVzZXRCdXR0b24pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0NvZGVibG9jayBBY3RpdmUgTGluZSBIaWdobGlnaHQnKVxuXHRcdFx0LnNldERlc2MoJ0lmIGVuYWJsZWQsIGhpZ2hsaWdodHMgdGhlIGFjdGl2ZSBsaW5lIGluc2lkZSBjb2RlYmxvY2tzLicpXG5cdFx0XHQuc2V0Q2xhc3MoJ2NvZGUtc3R5bGVyLXNwYWNlZCcpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7cmV0dXJuIHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZSlcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmUgPSB2YWx1ZTsgXG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2NvZGVibG9ja0FjdGl2ZUxpbmVIaWdobGlnaHQnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnY29kZWJsb2NrX2FjdGl2ZV9saW5lX2hpZ2hsaWdodCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5hY3RpdmVDb2RlYmxvY2tMaW5lQ29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZUNvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0XHQoKSA9PiAhdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZSxcblx0XHRcdCl9KTtcblx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snY29kZWJsb2NrQWN0aXZlTGluZUhpZ2hsaWdodCddLnB1c2godGhpcy5waWNrcnNbJ2NvZGVibG9ja19hY3RpdmVfbGluZV9oaWdobGlnaHQnXS5yZXNldEJ1dHRvbik7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnRGVmYXVsdCBIaWdobGlnaHQgQ29sb3VyJylcblx0XHRcdC5zZXREZXNjKCdVc2VkIGJ5IHRoZSBcXCdobFxcJyBwYXJhbWV0ZXIuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2RlZmF1bHRfaGlnaGxpZ2h0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmRlZmF1bHRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5kZWZhdWx0Q29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bGV0IG5ld0hpZ2hsaWdodFRleHQ6IFRleHRDb21wb25lbnQ7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIkFkZCBBbHRlcm5hdGl2ZSBIaWdobGlnaHRcIilcblx0XHRcdC5zZXREZXNjKCdEZWZpbmUgYSBuZXcgYWx0ZXJuYXRpdmUgaGlnaGxpZ2h0IG5hbWUuIFRoZSBjb2xvdXIgY2FuIGJlIG1vZGlmaWVkIGFmdGVyIGl0IGlzIGFkZGVkLicpXG5cdFx0XHQuYWRkVGV4dCh2YWx1ZSA9PiB7bmV3SGlnaGxpZ2h0VGV4dCA9IHZhbHVlXG5cdFx0XHRcdC5zZXRQbGFjZWhvbGRlcignZS5nLiBlcnJvciwgd2FybicpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHQgPSB2YWx1ZTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LmFkZEJ1dHRvbigoYnV0dG9uKSA9PiB7XG5cdFx0XHRcdGJ1dHRvbi5zZXRCdXR0b25UZXh0KFwiQWRkXCIpO1xuXHRcdFx0XHRidXR0b24ub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodC50cmltKCkgPT09IFwiXCIpXG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKFwiUGxlYXNlIGVudGVyIGEgY29sb3VyIG5hbWUuXCIpOyAvL05PU09OQVJcblx0XHRcdFx0XHRlbHNlIGlmICghL15bXlxcZF1cXHcqJC8udGVzdCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHQpKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShgXCIke3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodH1cIiBpcyBub3QgYSB2YWxpZCBjb2xvdXIgbmFtZS5gKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0ZWxzZSBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0LnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSAnaGwnKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIkNhbm5vdCBvdmVycmlkZSB0aGUgZGVmYXVsdCBoaWdobGlnaHQgcGFyYW1ldGVyLlwiKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0ZWxzZSBpZiAoUEFSQU1FVEVSUy5pbmNsdWRlcyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHQudHJpbSgpLnRvTG93ZXJDYXNlKCkpKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIkNhbm5vdCB1c2Ugb3RoZXIgZGVmYXVsdCBwYXJhbWV0ZXJzLlwiKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0IGluIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzKVxuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKGBBIGhpZ2hsaWdodCB3aXRoIHRoZSBuYW1lIFwiJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHR9XCIgYWxyZWFkeSBleGlzdHMuYCk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdFx0XHQvL1RPRE8gKEBtYXl1cmFua3YpIEZ1dHVyZTogRm9jdXMgb24gZXhpc3RpbmcgaGlnaGxpZ2h0ZXIgLSBgcmVuZGVyTWF0Y2hlc2Bcblx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBuZXdDb2xvdXIgPSBnZXRSYW5kb21Db2xvdXIoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0XSA9IG5ld0NvbG91cjtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMuZGFyay5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHRdID0gbmV3Q29sb3VyO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKGBBZGRlZCBoaWdobGlnaHQgXCIke3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodH1cIi5gKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodCA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdG5ld0hpZ2hsaWdodFRleHQuc2V0VmFsdWUoXCJcIik7XG5cdFx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5yZXJlbmRlclByZXZpZXcoKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0Y29uc3QgYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyID0gY29udGFpbmVyRWwuY3JlYXRlRGl2KCk7XG5cdFx0dGhpcy51cGRhdGVBbHRlcm5hdGl2ZUhpZ2hsaWdodHMoYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyKTtcblxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoNCcsIHt0ZXh0OiAnSW5saW5lIENvZGUgQXBwZWFyYW5jZSd9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdTeW50YXggSGlnaGxpZ2h0IElubGluZSBDb2RlJylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBpbiByZWFkaW5nIG1vZGUsIGlubGluZSBjb2RlIHdpbGwgYmUgc3ludGF4IGhpZ2hsaWdodGVkIGJhc2VkIG9uIGEgbGFuZ3VhZ2Ugc2V0IHdpdGggYHtsYW5ndWFnZX0gaGlnaGxpZ2h0ZWRfaW5saW5lX2NvZGVgLiBTZWUgdGhlIFJFQURNRSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnN5bnRheEhpZ2hsaWdodClcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuc3ludGF4SGlnaGxpZ2h0ID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnJlcmVuZGVyUHJldmlldygpO1xuXHRcdFx0XHR9KSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSW5saW5lIENvZGUgQmFja2dyb3VuZCBDb2xvdXInKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnaW5saW5lX2JhY2tncm91bmQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmlubGluZS5iYWNrZ3JvdW5kQ29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmlubGluZS5iYWNrZ3JvdW5kQ29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSW5saW5lIENvZGUgVGV4dCBDb2xvdXInKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnaW5saW5lX3RleHQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmlubGluZS50ZXh0Q29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmlubGluZS50ZXh0Q29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSW5saW5lIENvZGUgQWN0aXZlIFRleHQgQ29sb3VyJylcblx0XHRcdC5zZXREZXNjKCdUaGUgdGV4dCBjb2xvdXIgd2hlbiBlZGl0aW5nIGlubGluZSBjb2RlLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdpbmxpbmVfYWN0aXZlX3RleHQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmlubGluZS5hY3RpdmVUZXh0Q29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmlubGluZS5hY3RpdmVUZXh0Q29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSW5saW5lIENvZGUgRm9udCBXZWlnaHQnKVxuXHRcdFx0LnNldERlc2MoJ0RldGVybWluZXMgaG93IGJvbGQgaW5saW5lIGNvZGUgYXBwZWFycy4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHtcblx0XHRcdFx0bGV0IHJlc2V0dGFibGVTbGlkZXI6IFNsaWRlckNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRTbGlkZXIoKHNsaWRlcikgPT4ge3Jlc2V0dGFibGVTbGlkZXIgPSBzbGlkZXJcblx0XHRcdFx0XHQuc2V0TGltaXRzKDEsOSwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLmZvbnRXZWlnaHQpXG5cdFx0XHRcdFx0LnNldER5bmFtaWNUb29sdGlwKClcblx0XHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLmZvbnRXZWlnaHQgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge2J1dHRvblxuXHRcdFx0XHRcdC5zZXRJY29uKFwicmVzZXRcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGZvbnQgd2VpZ2h0Jylcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLmZvbnRXZWlnaHQgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuaW5saW5lLmZvbnRXZWlnaHQ7XG5cdFx0XHRcdFx0XHRyZXNldHRhYmxlU2xpZGVyLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuZm9udFdlaWdodCk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmxpbmUgQ29kZSBDdXJ2YXR1cmUnKVxuXHRcdFx0LnNldERlc2MoJ0RldGVybWluZXMgaG93IHJvdW5kZWQgaW5saW5lIGNvZGUgYXBwZWFyIGluIHBpeGVscy4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHtcblx0XHRcdFx0bGV0IHJlc2V0dGFibGVTbGlkZXI6IFNsaWRlckNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRTbGlkZXIoKHNsaWRlcikgPT4ge3Jlc2V0dGFibGVTbGlkZXIgPSBzbGlkZXJcblx0XHRcdFx0XHQuc2V0TGltaXRzKDAsMTIsMSlcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5jdXJ2YXR1cmUpXG5cdFx0XHRcdFx0LnNldER5bmFtaWNUb29sdGlwKClcblx0XHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLmN1cnZhdHVyZSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7YnV0dG9uXG5cdFx0XHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgY3VydmF0dXJlJylcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLmN1cnZhdHVyZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5pbmxpbmUuY3VydmF0dXJlO1xuXHRcdFx0XHRcdFx0cmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLmN1cnZhdHVyZSk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmxpbmUgQ29kZSBWZXJ0aWNhbCBQYWRkaW5nJylcblx0XHRcdC5zZXREZXNjKCdEZXRlcm1pbmVzIGhvdyBtdWNoIHZlcnRpY2FsIGlubmVyIHBhZGRpbmcgaW4gcGl4ZWxzIGlubGluZSBjb2RlIGhhcy4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHtcblx0XHRcdFx0bGV0IHJlc2V0dGFibGVTbGlkZXI6IFNsaWRlckNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRTbGlkZXIoKHNsaWRlcikgPT4ge3Jlc2V0dGFibGVTbGlkZXIgPSBzbGlkZXJcblx0XHRcdFx0XHQuc2V0TGltaXRzKDAsMTAsMSlcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5wYWRkaW5nVmVydGljYWwpXG5cdFx0XHRcdFx0LnNldER5bmFtaWNUb29sdGlwKClcblx0XHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnBhZGRpbmdWZXJ0aWNhbCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7YnV0dG9uXG5cdFx0XHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgdmVydGljYWwgcGFkZGluZycpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5wYWRkaW5nVmVydGljYWwgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuaW5saW5lLnBhZGRpbmdWZXJ0aWNhbDtcblx0XHRcdFx0XHRcdHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5wYWRkaW5nVmVydGljYWwpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSW5saW5lIENvZGUgSG9yaXpvbnRhbCBQYWRkaW5nJylcblx0XHRcdC5zZXREZXNjKCdEZXRlcm1pbmVzIGhvdyBtdWNoIGhvcml6b250YWwgaW5uZXIgcGFkZGluZyBpbiBwaXhlbHMgaW5saW5lIGNvZGUgaGFzLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoMCwxMCwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnBhZGRpbmdIb3Jpem9udGFsKVxuXHRcdFx0XHRcdC5zZXREeW5hbWljVG9vbHRpcCgpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5wYWRkaW5nSG9yaXpvbnRhbCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7YnV0dG9uXG5cdFx0XHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgaG9yaXpvbnRhbCBwYWRkaW5nJylcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnBhZGRpbmdIb3Jpem9udGFsID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmlubGluZS5wYWRkaW5nSG9yaXpvbnRhbDtcblx0XHRcdFx0XHRcdHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5wYWRkaW5nSG9yaXpvbnRhbCk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmxpbmUgQ29kZSBIb3Jpem9udGFsIE1hcmdpbicpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lcyBob3cgbXVjaCBob3Jpem9udGFsIG91dGVyIG1hcmdpbiBpcyBhZGRlZCB0byB0aGUgaW5saW5lIGNvZGUgaW4gcGl4ZWxzLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoMCw4LDEpXG5cdFx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUubWFyZ2luSG9yaXpvbnRhbClcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUubWFyZ2luSG9yaXpvbnRhbCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7YnV0dG9uXG5cdFx0XHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgaG9yaXpvbnRhbCBtYXJnaW4nKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUubWFyZ2luSG9yaXpvbnRhbCA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5pbmxpbmUubWFyZ2luSG9yaXpvbnRhbDtcblx0XHRcdFx0XHRcdHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5tYXJnaW5Ib3Jpem9udGFsKTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0lubGluZSBDb2RlIFRpdGxlIENvbG91cicpXG5cdFx0XHQuc2V0RGVzYygnVGhlIHRleHQgY29sb3VyIG9mIGlubGluZSBjb2RlIHRpdGxlcy4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQndGl0bGVfdGV4dCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaW5saW5lLnRpdGxlVGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5pbmxpbmUudGl0bGVUZXh0Q29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSW5saW5lIENvZGUgVGl0bGUgRm9udCBXZWlnaHQnKVxuXHRcdFx0LnNldERlc2MoJ0RldGVybWluZXMgaG93IGJvbGQgaW5saW5lIGNvZGUgdGl0bGVzIGFwcGVhci4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHtcblx0XHRcdFx0bGV0IHJlc2V0dGFibGVTbGlkZXI6IFNsaWRlckNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRTbGlkZXIoKHNsaWRlcikgPT4ge3Jlc2V0dGFibGVTbGlkZXIgPSBzbGlkZXJcblx0XHRcdFx0XHQuc2V0TGltaXRzKDEsOSwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnRpdGxlRm9udFdlaWdodClcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUudGl0bGVGb250V2VpZ2h0ID0gdmFsdWU7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBmb250IHdlaWdodCcpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS50aXRsZUZvbnRXZWlnaHQgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuaW5saW5lLnRpdGxlRm9udFdlaWdodDtcblx0XHRcdFx0XHRcdHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS50aXRsZUZvbnRXZWlnaHQpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHQvLyA9PT09PT09PT09IEFkdmFuY2VkID09PT09PT09PT1cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7dGV4dDogJ0FkdmFuY2VkIFNldHRpbmdzJ30pO1xuXHRcdFxuXG5cdFx0bGV0IHdyYXBMaW5lc0FjdGl2ZVRvZ2dsZTogVG9nZ2xlQ29tcG9uZW50O1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ1dyYXAgTGluZXMgb24gQ2xpY2snKVxuXHRcdFx0LnNldERlc2MoJ0lmIGVuYWJsZWQsIGluIHJlYWRpbmcgbW9kZSwgaG9sZGluZyBjbGljayBvbiBhIGNvZGVibG9jayB3aWxsIHdyYXAgdGhlIGxpbmVzIGZvciBiZXR0ZXIgdmlzaWJpbGl0eS4gVGhpcyBjYW4gb25seSBiZSB1c2VkIGlmIHRoZSBcIlVud3JhcCBMaW5lc1wiIHNldHRpbmcgaXMgZW5hYmxlZC4nKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4ge3dyYXBMaW5lc0FjdGl2ZVRvZ2dsZSA9IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay53cmFwTGluZXNBY3RpdmUpXG5cdFx0XHRcdC5zZXREaXNhYmxlZCghdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay51bndyYXBMaW5lcylcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2sud3JhcExpbmVzQWN0aXZlID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7IFxuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnJlcmVuZGVyUHJldmlldygpOyAgIFxuXHRcdFx0XHR9KVxuXHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snd3JhcExpbmVzJ10ucHVzaCh3cmFwTGluZXNBY3RpdmVUb2dnbGUpO1xuXHRcdFx0fSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnQnV0dG9uIENvbG91cicpXG5cdFx0XHQuc2V0RGVzYygnVXNlZCBmb3IgVUkgYnV0dG9ucyBsaWtlIHRoZSBjb3B5IGNvZGUgYnV0dG9uLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdkZWZhdWx0X2hpZ2hsaWdodCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uYWR2YW5jZWQuYnV0dG9uQ29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmFkdmFuY2VkLmJ1dHRvbkNvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0J1dHRvbiBBY3RpdmUgQ29sb3VyJylcblx0XHRcdC5zZXREZXNjKCdDb2xvdXIgYnV0dG9ucyB1c2Ugd2hlbiBhY3RpdmF0ZWQuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2RlZmF1bHRfaGlnaGxpZ2h0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5hZHZhbmNlZC5idXR0b25BY3RpdmVDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uYWR2YW5jZWQuYnV0dG9uQWN0aXZlQ29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnR3JhZGllbnQgSGlnaGxpZ2h0aW5nJylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBoaWdobGlnaHRzIGZhZGUgYXdheSB0byB0aGUgcmlnaHQuIFRoZSBzbGlkZXIgc2V0cyB0aGUgZ3JhZGllbnQgY29sb3VyIHN0b3AgYXMgYSBwZXJjZW50YWdlLicpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGVcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHMpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzID0gdmFsdWU7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2dyYWRpZW50SGlnaGxpZ2h0aW5nJ10uZm9yRWFjaChjb21wb25lbnQgPT4ge2NvbXBvbmVudC5zZXREaXNhYmxlZCghdmFsdWUpfSk7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHtcblx0XHRcdFx0bGV0IHJlc2V0dGFibGVTbGlkZXI6IFNsaWRlckNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRTbGlkZXIoKHNsaWRlcikgPT4ge3Jlc2V0dGFibGVTbGlkZXIgPSBzbGlkZXJcblx0XHRcdFx0XHQuc2V0TGltaXRzKDAsMTAwLDEpXG5cdFx0XHRcdFx0LnNldFZhbHVlKCt0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzQ29sb3VyU3RvcC5zbGljZSgwLC0xKSlcblx0XHRcdFx0XHQuc2V0RGlzYWJsZWQoIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHMpXG5cdFx0XHRcdFx0LnNldER5bmFtaWNUb29sdGlwKClcblx0XHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzQ29sb3VyU3RvcCA9IGAke3ZhbHVlfSVgO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydncmFkaWVudEhpZ2hsaWdodGluZyddLnB1c2gocmVzZXR0YWJsZVNsaWRlcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRsZXQgcmVzZXRCdXR0b246IEV4dHJhQnV0dG9uQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtyZXNldEJ1dHRvbiA9IGJ1dHRvblxuXHRcdFx0XHRcdC5zZXRJY29uKFwicmVzZXRcIilcblx0XHRcdFx0XHQuc2V0RGlzYWJsZWQoIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHMpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBjb2xvdXIgc3RvcCcpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0c0NvbG91clN0b3AgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzQ29sb3VyU3RvcDtcblx0XHRcdFx0XHRcdHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUoK3RoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHNDb2xvdXJTdG9wLnNsaWNlKDAsLTEpKTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydncmFkaWVudEhpZ2hsaWdodGluZyddLnB1c2gocmVzZXRCdXR0b24pO1xuXHRcdFx0XHR9KVxuXHRcdFx0fSlcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdMYW5ndWFnZSBDb2xvdXJlZCBCb3JkZXJzJylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBsYW5ndWFnZXMgd2l0aCBpY29ucyBkaXNwbGF5IGEgbGVmdCBib3JkZXIgd2l0aCB0aGUgY29sb3VyIG9mIHRoZSBpY29uLiBUaGUgc2xpZGVyIHNldHMgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIuJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyQ29sb3VyKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyQ29sb3VyID0gdmFsdWU7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2xhbmd1YWdlQm9yZGVyQ29sb3VyJ10uZm9yRWFjaChjb21wb25lbnQgPT4ge2NvbXBvbmVudC5zZXREaXNhYmxlZCghdmFsdWUpfSk7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHtcblx0XHRcdFx0bGV0IHJlc2V0dGFibGVTbGlkZXI6IFNsaWRlckNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRTbGlkZXIoKHNsaWRlcikgPT4ge3Jlc2V0dGFibGVTbGlkZXIgPSBzbGlkZXJcblx0XHRcdFx0XHQuc2V0TGltaXRzKDAsMjAsMSlcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyV2lkdGgpXG5cdFx0XHRcdFx0LnNldERpc2FibGVkKCF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJDb2xvdXIpXG5cdFx0XHRcdFx0LnNldER5bmFtaWNUb29sdGlwKClcblx0XHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJXaWR0aCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydsYW5ndWFnZUJvcmRlckNvbG91ciddLnB1c2gocmVzZXR0YWJsZVNsaWRlcik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRsZXQgcmVzZXRCdXR0b246IEV4dHJhQnV0dG9uQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtyZXNldEJ1dHRvbiA9IGJ1dHRvblxuXHRcdFx0XHRcdC5zZXRJY29uKFwicmVzZXRcIilcblx0XHRcdFx0XHQuc2V0RGlzYWJsZWQoIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlckNvbG91cilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGNvbG91ciBzdG9wJylcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJXaWR0aCA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlcldpZHRoO1xuXHRcdFx0XHRcdFx0cmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJXaWR0aCk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGFuZ3VhZ2VCb3JkZXJDb2xvdXInXS5wdXNoKHJlc2V0QnV0dG9uKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ1JlZGlyZWN0IExhbmd1YWdlIFNldHRpbmdzJylcblx0XHRcdC5zZXREZXNjKCdVc2UgdGhpcyB0ZXh0Ym94IHRvIHJlZGlyZWN0IHNwZWNpZmljIGxhbmd1YWdlIGNvbG91cnMgYW5kIGljb25zIGFzIGEgSlNPTiB3aXRoIGxhbmd1YWdlIG5hbWVzIGFzIGtleXMgYW5kIGVpdGhlciBhIGNvbG91ciBrZXksIGFuIGljb24ga2V5IG9yIGJvdGggYXMgdGhlIHZhbHVlIGZvciBhIGdpdmVuIGxhbmd1YWdlLiBDb2xvdXJzIHNob3VsZCBiZSBwYXNzZWQgYXMgQ1NTIGNvbG91cnMgYW5kIGljb25zIHNob3VsZCBiZSBwYXNzZWQgYXMgYSBzdHJpbmcgb2YgdGhlIGluc2lkZSBvZiBhbiBzdmcgZWxlbWVudC4gVGhpcyBzZXR0aW5nIGlzIHRoZW1lIGluZGVwZW5kZW50LicpXG5cdFx0XHQuc2V0Q2xhc3MoJ2NvZGUtc3R5bGVyLXNldHRpbmctdGV4dC1hcmVhJylcblx0XHRcdC5hZGRUZXh0QXJlYSh0ZXh0QXJlYSA9PiB0ZXh0QXJlYVxuXHRcdFx0XHQuc2V0VmFsdWUoSlNPTi5zdHJpbmdpZnkodGhpcy5wbHVnaW4uc2V0dGluZ3MucmVkaXJlY3RMYW5ndWFnZXMpPT09J3t9Jz8nJzpKU09OLnN0cmluZ2lmeSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZWRpcmVjdExhbmd1YWdlcyxudWxsLDQpKVxuXHRcdFx0XHQuc2V0UGxhY2Vob2xkZXIoSlNPTi5zdHJpbmdpZnkoe3RvbWw6IHtjb2xvdXI6ICcjMDEyMzQ1JywgaWNvbjogTEFOR1VBR0VfSUNPTlNfREFUQVsnQVBMJ119fSxudWxsLDQpKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKT0+e1xuXHRcdFx0XHRcdGlmICh2YWx1ZSA9PT0gJycpIHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnJlZGlyZWN0TGFuZ3VhZ2VzID0ge307XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MucmVkaXJlY3RMYW5ndWFnZXMgPSBKU09OLnBhcnNlKHZhbHVlKTtcblx0XHRcdFx0XHRcdFx0T2JqZWN0LmVudHJpZXModGhpcy5wbHVnaW4uc2V0dGluZ3MucmVkaXJlY3RMYW5ndWFnZXMpLmZvckVhY2goKFtsYW5ndWFnZU5hbWUsIGxhbmd1YWdlU2V0dGluZ3NdOiBbc3RyaW5nLCB7Y29sb3VyPzogQ29sb3VyLCBpY29uPzogc3RyaW5nfV0pPT57XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCdpY29uJyBpbiBsYW5ndWFnZVNldHRpbmdzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoTEFOR1VBR0VfTkFNRVNbbGFuZ3VhZ2VOYW1lXSBpbiB0aGlzLnBsdWdpbi5sYW5ndWFnZUljb25zKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRVUkwucmV2b2tlT2JqZWN0VVJMKHRoaXMucGx1Z2luLmxhbmd1YWdlSWNvbnNbTEFOR1VBR0VfTkFNRVNbbGFuZ3VhZ2VOYW1lXV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4ubGFuZ3VhZ2VJY29uc1tMQU5HVUFHRV9OQU1FU1tsYW5ndWFnZU5hbWVdXSA9IFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2A8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB2aWV3Qm94PVwiMCAwIDMyIDMyXCI+JHtsYW5ndWFnZVNldHRpbmdzLmljb259PC9zdmc+YF0sIHsgdHlwZTogXCJpbWFnZS9zdmcreG1sXCIgfSkpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdFx0fSBjYXRjaCB7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoJ0ludmFsaWQgSlNPTicpOyAvL05PU09OQVJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pKTtcblx0XHRcdFx0Ly9UT0RPIChAbWF5dXJhbmt2KSBSZS1yZW5kZXIgKFRlc3QpXG5cblxuXHRcdC8vID09PT09PT09PT0gRG9uYXRpb24gPT09PT09PT09PVxuXHRcdGNvbnN0IGRvbmF0aW9uRGl2ID0gY29udGFpbmVyRWwuY3JlYXRlRWwoXCJkaXZcIiwgeyBjbHM6IFwiY29kZS1zdHlsZXItZG9uYXRpb25cIiwgfSk7ICAgIFxuXHRcdGNvbnN0IGRvbmF0aW9uVGV4dCA9IGNyZWF0ZUVsKFwicFwiLCB7dGV4dDogXCJJZiB5b3UgbGlrZSB0aGlzIHBsdWdpbiwgYW5kIHdvdWxkIGxpa2UgdG8gaGVscCBzdXBwb3J0IGNvbnRpbnVlZCBkZXZlbG9wbWVudCwgdXNlIHRoZSBidXR0b24gYmVsb3chXCJ9KTtcblx0XHRkb25hdGlvbkRpdi5hcHBlbmRDaGlsZChkb25hdGlvblRleHQpO1xuXHRcdGNvbnN0IGRvbmF0aW9uQnV0dG9uID0gY3JlYXRlRWwoXCJhXCIsIHsgaHJlZjogXCJodHRwczovL3d3dy5idXltZWFjb2ZmZWUuY29tL21heXVyYW5rdjJcIn0pO1xuXHRcdGRvbmF0aW9uQnV0dG9uLmlubmVySFRNTCA9IGA8aW1nIHNyYz1cImh0dHBzOi8vaW1nLmJ1eW1lYWNvZmZlZS5jb20vYnV0dG9uLWFwaS8/dGV4dD1CdXkgbWUgYSBjb2ZmZWUmZW1vamk9JnNsdWc9bWF5dXJhbmt2MiZidXR0b25fY29sb3VyPWUzZTdlZmEwJmZvbnRfY29sb3VyPTI2MjYyNiZmb250X2ZhbWlseT1JbnRlciZvdXRsaW5lX2NvbG91cj0yNjI2MjYmY29mZmVlX2NvbG91cj1hMDUyMmRcIiBoZWlnaHQ9XCI0MnB4XCI+YDtcblx0XHRkb25hdGlvbkRpdi5hcHBlbmRDaGlsZChkb25hdGlvbkJ1dHRvbik7XG5cdH1cblxuXHQvLyBTZXR0aW5nIENyZWF0aW9uXG5cdGNyZWF0ZVBpY2tyKHBsdWdpbjogQ29kZVN0eWxlclBsdWdpbiwgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50LCBzZXR0aW5nOiBTZXR0aW5nLCBpZDogc3RyaW5nLCBnZXRSZWxldmFudFRoZW1lQ29sb3VyOiAocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpPT5Db2xvdXIsIHNhdmVSZWxldmFudFRoZW1lQ29sb3VyOiAocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cik9PnZvaWQsIGRpc2FibGVkPzogKCk9PmJvb2xlYW4pIHtcblx0XHRsZXQgcGlja3I6IFBpY2tyUmVzZXR0YWJsZSA9IG5ldyBQaWNrclJlc2V0dGFibGUocGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsZ2V0UmVsZXZhbnRUaGVtZUNvbG91cixzYXZlUmVsZXZhbnRUaGVtZUNvbG91cik7XG5cdFx0cGlja3Jcblx0XHRcdC5vbignc2hvdycsIChjb2xvdXI6IFBpY2tyLkhTVmFDb2xvciwgaW5zdGFuY2U6IFBpY2tyKSA9PiB7XG5cdFx0XHRcdGlmICh0eXBlb2YgZGlzYWJsZWQgIT09ICd1bmRlZmluZWQnICYmIGRpc2FibGVkKCkpXG5cdFx0XHRcdFx0aW5zdGFuY2UuaGlkZSgpXG5cdFx0XHRcdC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gKGluc3RhbmNlLmdldFJvb3QoKSBhcyBhbnkpLmludGVyYWN0aW9uLnJlc3VsdC5zZWxlY3QoKSkpXG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdzYXZlJywgKGNvbG91cjogUGlja3IuSFNWYUNvbG9yLCBpbnN0YW5jZTogUGlja3JSZXNldHRhYmxlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHNhdmVkQ29sb3VyOiBDb2xvdXIgPSBgIyR7Y29sb3VyLnRvSEVYQSgpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDEpfWA7XG5cdFx0XHRcdGluc3RhbmNlLmhpZGUoKTtcblx0XHRcdFx0aW5zdGFuY2UuYWRkU3dhdGNoKHNhdmVkQ29sb3VyKTtcblx0XHRcdFx0aW5zdGFuY2Uuc2F2ZUNvbG91cihzYXZlZENvbG91cik7XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdjYW5jZWwnLCAoaW5zdGFuY2U6IFBpY2tyUmVzZXR0YWJsZSkgPT4ge2luc3RhbmNlLmhpZGUoKX0pO1xuXHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge3BpY2tyLnJlc2V0QnV0dG9uID0gYnV0dG9uXG5cdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHQuc2V0RGlzYWJsZWQodHlwZW9mIGRpc2FibGVkICE9PSAndW5kZWZpbmVkJyAmJiBkaXNhYmxlZCgpKVxuXHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBjb2xvdXInKVxuXHRcdFx0Lm9uQ2xpY2soKCkgPT4ge3BpY2tyLnJlc2V0Q29sb3VyKCl9KTtcblx0XHR9KTtcblx0XHR0aGlzLnBpY2tyc1tpZF09cGlja3I7XG5cdH1cblx0XG5cdC8vIFNldHRpbmcgVXBkYXRlc1xuXHR1cGRhdGVEcm9wZG93bihkcm9wZG93bjogRHJvcGRvd25Db21wb25lbnQsIHNldHRpbmdzOiBDb2RlU3R5bGVyU2V0dGluZ3MpIHtcblx0XHRkcm9wZG93bi5zZWxlY3RFbC5lbXB0eSgpO1xuXHRcdE9iamVjdC5rZXlzKHNldHRpbmdzLnRoZW1lcykuZm9yRWFjaCgodGhlbWVfbmFtZTogc3RyaW5nKSA9PiB7XG5cdFx0XHRkcm9wZG93bi5hZGRPcHRpb24odGhlbWVfbmFtZSwgdGhlbWVfbmFtZSk7ICAgICAgICAgICAgXG5cdFx0fSlcblx0XHRkcm9wZG93bi5zZXRWYWx1ZShzZXR0aW5ncy5zZWxlY3RlZFRoZW1lKTtcblx0fVxuXHR1cGRhdGVBbHRlcm5hdGl2ZUhpZ2hsaWdodHMoYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCkge1xuXHRcdGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lci5lbXB0eSgpO1xuXHRcdE9iamVjdC5rZXlzKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzKS5mb3JFYWNoKChhbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWUpID0+IHtcblx0XHRcdG5ldyBTZXR0aW5nKGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcilcblx0XHRcdFx0LnNldE5hbWUoYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lKVxuXHRcdFx0XHQuc2V0RGVzYyhgVG8gaGlnaGxpZ2h0IGxpbmVzIHdpdGggdGhpcyBoaWdobGlnaHQsIHVzZSB0aGUgJHthbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWV9IHBhcmFtZXRlci5gKVxuXHRcdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRcdHRoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbixhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIsc2V0dGluZyxcblx0XHRcdFx0XHRcdGBhbHRlcm5hdGl2ZV9oaWdobGlnaHRfJHthbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWV9YCxcblx0XHRcdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lIGluIHJlbGV2YW50VGhlbWVDb2xvdXJzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzP3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzW2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZV06dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lXSxcblx0XHRcdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lXSA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7YnV0dG9uXG5cdFx0XHRcdFx0XHQuc2V0SWNvbihcInRyYXNoXCIpXG5cdFx0XHRcdFx0XHQuc2V0VG9vbHRpcChcIkRlbGV0ZSBoaWdobGlnaHRcIilcblx0XHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0ZGVsZXRlIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzW2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZV1cblx0XHRcdFx0XHRcdFx0ZGVsZXRlIHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzLmRhcmsuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lXVxuXHRcdFx0XHRcdFx0XHRuZXcgTm90aWNlKGBSZW1vdmVkIGhpZ2hsaWdodCBcIiR7YWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lfVwiLmApOyAvL05PU09OQVJcblx0XHRcdFx0XHRcdFx0dGhpcy51cGRhdGVBbHRlcm5hdGl2ZUhpZ2hsaWdodHMoYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyKTtcblx0XHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn1cblxuY2xhc3MgUGlja3JSZXNldHRhYmxlIGV4dGVuZHMgUGlja3Ige1xuXHRzYXZlQ29sb3VyOiAoc2F2ZUNvbG91cjogQ29sb3VyKT0+dm9pZDtcblx0cmVzZXRDb2xvdXI6ICgpPT52b2lkO1xuXHRnZXRDdXJyZW50Q29sb3VyOiAoYWNjZXNzVGhlbWU6IGJvb2xlYW4pPT52b2lkO1xuXHRyZXNldEJ1dHRvbjogRXh0cmFCdXR0b25Db21wb25lbnQ7XG5cblx0Y29uc3RydWN0b3IocGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luLCBjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIHNldHRpbmc6IFNldHRpbmcsIGdldFJlbGV2YW50VGhlbWVDb2xvdXI6IChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycyk9PkNvbG91ciwgc2F2ZVJlbGV2YW50VGhlbWVDb2xvdXI6IChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKT0+dm9pZCwgdG9vbHRpcD86IHN0cmluZykge1xuXHRcdGNvbnN0IHNldHRpbmdzOiBQaWNrci5PcHRpb25zID0ge1xuXHRcdFx0ZWw6IHNldHRpbmcuY29udHJvbEVsLmNyZWF0ZURpdih7Y2xzOiBcInBpY2tlclwifSksXG5cdFx0XHR0aGVtZTogJ25hbm8nLFxuXHRcdFx0ZGVmYXVsdDogZ2V0Q29sb3VyKGdldFJlbGV2YW50VGhlbWVDb2xvdXIocGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzKSksXG5cdFx0XHRwb3NpdGlvbjogXCJsZWZ0LW1pZGRsZVwiLFxuXHRcdFx0bG9ja09wYWNpdHk6IGZhbHNlLFxuXHRcdFx0Y29tcG9uZW50czoge1xuXHRcdFx0XHRwcmV2aWV3OiB0cnVlLFxuXHRcdFx0XHRodWU6IHRydWUsXG5cdFx0XHRcdG9wYWNpdHk6IHRydWUsXG5cdFx0XHRcdGludGVyYWN0aW9uOiB7XG5cdFx0XHRcdFx0aGV4OiB0cnVlLFxuXHRcdFx0XHRcdHJnYmE6IHRydWUsXG5cdFx0XHRcdFx0aHNsYTogZmFsc2UsXG5cdFx0XHRcdFx0aW5wdXQ6IHRydWUsXG5cdFx0XHRcdFx0Y2FuY2VsOiB0cnVlLFxuXHRcdFx0XHRcdHNhdmU6IHRydWUsXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0aTE4bjoge1xuXHRcdFx0XHQndWk6ZGlhbG9nJzogJ0NvbG91ciBwaWNrZXIgZGlhbG9nJyxcblx0XHRcdFx0J2J0bjp0b2dnbGUnOiAodHlwZW9mIHRvb2x0aXAgIT09ICd1bmRlZmluZWQnKT90b29sdGlwOidTZWxlY3QgY29sb3VyJyxcblx0XHRcdFx0J2J0bjpzd2F0Y2gnOiAnQ29sb3VyIHN3YXRjaCcsXG5cdFx0XHRcdCdidG46bGFzdC1jb2xvcic6ICdVc2UgcHJldmlvdXMgY29sb3VyJyxcblx0XHRcdH1cblx0XHR9O1xuXHRcdGlmIChjb250YWluZXJFbC5wYXJlbnRFbGVtZW50ICE9PSBudWxsKVxuXHRcdFx0c2V0dGluZ3MuY29udGFpbmVyID0gY29udGFpbmVyRWwucGFyZW50RWxlbWVudDtcblx0XHRzdXBlcihzZXR0aW5ncyk7XG5cdFx0dGhpcy5zYXZlQ29sb3VyID0gKHNhdmVDb2xvdXI6IENvbG91cikgPT4ge1xuXHRcdFx0c2F2ZVJlbGV2YW50VGhlbWVDb2xvdXIocGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzLHNhdmVDb2xvdXIpO1xuXHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdH07XG5cdFx0dGhpcy5yZXNldENvbG91ciA9ICgpID0+IHtcblx0XHRcdGNvbnN0IHJlc2V0Q29sb3VyOiBDb2xvdXIgPSBnZXRSZWxldmFudFRoZW1lQ29sb3VyKHBsdWdpbi5zZXR0aW5ncy50aGVtZXNbcGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLmNvbG91cnMpO1xuXHRcdFx0dGhpcy5zZXRDb2xvcihnZXRDb2xvdXIocmVzZXRDb2xvdXIpKTtcblx0XHRcdHRoaXMuc2F2ZUNvbG91cihyZXNldENvbG91cik7XG5cdFx0fTtcblx0fVxufVxuXG4vLyBDb2xvdXIgTWFuYWdlbWVudFxuZnVuY3Rpb24gZ2V0UmFuZG9tQ29sb3VyKCk6IENvbG91ciB7XG5cdGNvbnN0IGxldHRlcnMgPSBcIjAxMjM0NTY3ODlBQkNERUZcIjtcblx0bGV0IGNvbG91ciA9IFwiXCI7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgNjsgaSsrKVxuXHRcdGNvbG91ciArPSBsZXR0ZXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KV07XG5cdHJldHVybiBgIyR7Y29sb3VyfUZGYDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0Nzcyhwb3NzaWJsZUNzczogc3RyaW5nKTogcG9zc2libGVDc3MgaXMgQ1NTIHtcblx0cmV0dXJuIHBvc3NpYmxlQ3NzLnN0YXJ0c1dpdGgoJy0tJykgJiYgdHlwZW9mIHBvc3NpYmxlQ3NzID09PSAnc3RyaW5nJztcbn1cbmZ1bmN0aW9uIGNhbGMoY2FsY1N0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3Qgc3BsaXRTdHJpbmcgPSBjYWxjU3RyaW5nLnRyaW0oKS5yZXBsYWNlKC8oXFxkKiklL2csJyQxJykuc3BsaXQoJyAnKTtcblx0Y29uc3Qgb3BlcmF0b3JzOiB7W2tleTogc3RyaW5nXTogKG51bTE6bnVtYmVyLCBudW0yOm51bWJlcikgPT4gbnVtYmVyfSA9IHtcblx0XHQnKyc6IChudW0xOm51bWJlciwgbnVtMjpudW1iZXIpOm51bWJlciA9PiBNYXRoLm1heChudW0xK251bTIsMCksXG5cdFx0Jy0nOiAobnVtMTpudW1iZXIgLG51bTI6bnVtYmVyKTpudW1iZXIgPT4gTWF0aC5tYXgobnVtMS1udW0yLDApLFxuXHR9XG5cdGlmIChzcGxpdFN0cmluZy5sZW5ndGggPT09IDMpXG5cdFx0aWYgKHNwbGl0U3RyaW5nWzFdIGluIG9wZXJhdG9ycylcblx0XHRcdHJldHVybiBgJHtvcGVyYXRvcnNbc3BsaXRTdHJpbmdbMV1dKHBhcnNlRmxvYXQoc3BsaXRTdHJpbmdbMF0pLHBhcnNlRmxvYXQoc3BsaXRTdHJpbmdbMl0pKX0lYFxuXHRcblx0Y29uc29sZS53YXJuKCdXYXJuaW5nOiBDb3VsZG5cXCd0IHBhcnNlIGNhbGMgc3RyaW5nJyk7XG5cdHJldHVybiBjYWxjU3RyaW5nO1xufVxuZnVuY3Rpb24gZ2V0Q3NzVmFyaWFibGUoY3NzVmFyaWFibGU6IENTUyk6IEhFWCB7XG5cdGxldCB2YXJpYWJsZVZhbHVlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZShjc3NWYXJpYWJsZSkudHJpbSgpO1xuXHRpZiAodHlwZW9mIHZhcmlhYmxlVmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFyaWFibGVWYWx1ZS50cmltKCkuc3RhcnRzV2l0aCgnIycpKVxuXHRcdHJldHVybiBgIyR7dmFyaWFibGVWYWx1ZS50cmltKCkuc3Vic3RyaW5nKDEpfWA7XG5cdGVsc2UgaWYgKHZhcmlhYmxlVmFsdWUuc3RhcnRzV2l0aCgncmdiJykpXG5cdFx0cmV0dXJuIGAjJHtDb2xvclRyYW5zbGF0b3IudG9IRVhBKHZhcmlhYmxlVmFsdWUucmVwbGFjZSgvY2FsY1xcKCguKj8pXFwpL2csKG1hdGNoLGNhcHR1cmUpPT5jYWxjKGNhcHR1cmUpKSkuc3Vic3RyaW5nKDEpfWA7XG5cdGVsc2UgaWYgKHZhcmlhYmxlVmFsdWUuc3RhcnRzV2l0aCgnaHNsJykpXG5cdFx0cmV0dXJuIGAjJHtDb2xvclRyYW5zbGF0b3IudG9IRVhBKHZhcmlhYmxlVmFsdWUucmVwbGFjZSgvY2FsY1xcKCguKj8pXFwpL2csKG1hdGNoLGNhcHR1cmUpPT5jYWxjKGNhcHR1cmUpKSkuc3Vic3RyaW5nKDEpfWA7XG5cdGVsc2Vcblx0XHRjb25zb2xlLndhcm4oYFdhcm5pbmc6IENvdWxkbid0IGRldGVybWluZSBjb2xvdXIgZm9ybWF0IC0gJHt2YXJpYWJsZVZhbHVlfWApO1xuXHRyZXR1cm4gYCMke0NvbG9yVHJhbnNsYXRvci50b0hFWEEodmFyaWFibGVWYWx1ZSkuc3Vic3RyaW5nKDEpfWA7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sb3VyKHRoZW1lQ29sb3VyOiBDb2xvdXIpOiBDb2xvdXIge1xuXHRyZXR1cm4gaXNDc3ModGhlbWVDb2xvdXIpP2dldENzc1ZhcmlhYmxlKHRoZW1lQ29sb3VyKTp0aGVtZUNvbG91cjs7XG59XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRNb2RlKCkge1xuXHRjb25zdCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xuXHRpZiAoYm9keSAhPT0gbnVsbCl7XG5cdFx0aWYgKGJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCd0aGVtZS1saWdodCcpKVxuXHRcdFx0cmV0dXJuIFwibGlnaHRcIjtcblx0XHRlbHNlIGlmIChib2R5LmNsYXNzTGlzdC5jb250YWlucygndGhlbWUtZGFyaycpKVxuXHRcdFx0cmV0dXJuIFwiZGFya1wiO1xuXHR9XG5cdGNvbnNvbGUud2FybignV2FybmluZzogQ291bGRuXFwndCBnZXQgY3VycmVudCB0aGVtZScpO1xuXHRyZXR1cm4gXCJsaWdodFwiO1xufVxuIiwgInZhciB0PWZ1bmN0aW9uKCl7cmV0dXJuIHQ9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9MSxuPWFyZ3VtZW50cy5sZW5ndGg7cjxuO3IrKylmb3IodmFyIGkgaW4gZT1hcmd1bWVudHNbcl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJih0W2ldPWVbaV0pO3JldHVybiB0fSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gZSh0LGUscil7aWYocnx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciBuLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspIW4mJmkgaW4gZXx8KG58fChuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsMCxpKSksbltpXT1lW2ldKTtyZXR1cm4gdC5jb25jYXQobnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkpfXZhciByLG4saSxvOyFmdW5jdGlvbih0KXt0LkhFWD1cIkhFWFwiLHQuUkdCPVwiUkdCXCIsdC5IU0w9XCJIU0xcIix0LkNNWUs9XCJDTVlLXCJ9KHJ8fChyPXt9KSksZnVuY3Rpb24odCl7dC5BTkFMT0dPVVM9XCJBTkFMT0dPVVNcIix0LkNPTVBMRU1FTlRBUlk9XCJDT01QTEVNRU5UQVJZXCIsdC5TUExJVF9DT01QTEVNRU5UQVJZPVwiU1BMSVRfQ09NUExFTUVOVEFSWVwiLHQuVFJJQURJQz1cIlRSSUFESUNcIix0LlRFVFJBRElDPVwiVEVUUkFESUNcIix0LlNRVUFSRT1cIlNRVUFSRVwifShufHwobj17fSkpLGZ1bmN0aW9uKHQpe3QuQURESVRJVkU9XCJBRERJVElWRVwiLHQuU1VCVFJBQ1RJVkU9XCJTVUJUUkFDVElWRVwifShpfHwoaT17fSkpLGZ1bmN0aW9uKHQpe3QuYmxhY2s9XCIjMDAwMDAwXCIsdC5zaWx2ZXI9XCIjQzBDMEMwXCIsdC5ncmF5PVwiIzgwODA4MFwiLHQud2hpdGU9XCIjRkZGRkZGXCIsdC5tYXJvb249XCIjODAwMDAwXCIsdC5yZWQ9XCIjRkYwMDAwXCIsdC5wdXJwbGU9XCIjODAwMDgwXCIsdC5mdWNoc2lhPVwiI0ZGMDBGRlwiLHQuZ3JlZW49XCIjMDA4MDAwXCIsdC5saW1lPVwiIzAwRkYwMFwiLHQub2xpdmU9XCIjODA4MDAwXCIsdC55ZWxsb3c9XCIjRkZGRjAwXCIsdC5uYXZ5PVwiIzAwMDA4MFwiLHQuYmx1ZT1cIiMwMDAwRkZcIix0LnRlYWw9XCIjMDA4MDgwXCIsdC5hcXVhPVwiIzAwRkZGRlwiLHQub3JhbmdlPVwiI0ZGQTUwMFwiLHQuYWxpY2VibHVlPVwiI0YwRjhGRlwiLHQuYW50aXF1ZXdoaXRlPVwiI0ZBRUJEN1wiLHQuYXF1YW1hcmluZT1cIiM3RkZGRDRcIix0LmF6dXJlPVwiI0YwRkZGRlwiLHQuYmVpZ2U9XCIjRjVGNURDXCIsdC5iaXNxdWU9XCIjRkZFNEM0XCIsdC5ibGFuY2hlZGFsbW9uZD1cIiNGRkVCQ0RcIix0LmJsdWV2aW9sZXQ9XCIjOEEyQkUyXCIsdC5icm93bj1cIiNBNTJBMkFcIix0LmJ1cmx5d29vZD1cIiNERUI4ODdcIix0LmNhZGV0Ymx1ZT1cIiM1RjlFQTBcIix0LmNoYXJ0cmV1c2U9XCIjN0ZGRjAwXCIsdC5jaG9jb2xhdGU9XCIjRDI2OTFFXCIsdC5jb3JhbD1cIiNGRjdGNTBcIix0LmNvcm5mbG93ZXJibHVlPVwiIzY0OTVFRFwiLHQuY29ybnNpbGs9XCIjRkZGOERDXCIsdC5jcmltc29uPVwiI0RDMTQzQ1wiLHQuY3lhbj1cIiMwMEZGRkZcIix0LmRhcmtibHVlPVwiIzAwMDA4QlwiLHQuZGFya2N5YW49XCIjMDA4QjhCXCIsdC5kYXJrZ29sZGVucm9kPVwiI0I4ODYwQlwiLHQuZGFya2dyYXk9XCIjQTlBOUE5XCIsdC5kYXJrZ3JlZW49XCIjMDA2NDAwXCIsdC5kYXJrZ3JleT1cIiNBOUE5QTlcIix0LmRhcmtraGFraT1cIiNCREI3NkJcIix0LmRhcmttYWdlbnRhPVwiIzhCMDA4QlwiLHQuZGFya29saXZlZ3JlZW49XCIjNTU2QjJGXCIsdC5kYXJrb3JhbmdlPVwiI0ZGOEMwMFwiLHQuZGFya29yY2hpZD1cIiM5OTMyQ0NcIix0LmRhcmtyZWQ9XCIjOEIwMDAwXCIsdC5kYXJrc2FsbW9uPVwiI0U5OTY3QVwiLHQuZGFya3NlYWdyZWVuPVwiIzhGQkM4RlwiLHQuZGFya3NsYXRlYmx1ZT1cIiM0ODNEOEJcIix0LmRhcmtzbGF0ZWdyYXk9XCIjMkY0RjRGXCIsdC5kYXJrc2xhdGVncmV5PVwiIzJGNEY0RlwiLHQuZGFya3R1cnF1b2lzZT1cIiMwMENFRDFcIix0LmRhcmt2aW9sZXQ9XCIjOTQwMEQzXCIsdC5kZWVwcGluaz1cIiNGRjE0OTNcIix0LmRlZXBza3libHVlPVwiIzAwQkZGRlwiLHQuZGltZ3JheT1cIiM2OTY5NjlcIix0LmRpbWdyZXk9XCIjNjk2OTY5XCIsdC5kb2RnZXJibHVlPVwiIzFFOTBGRlwiLHQuZmlyZWJyaWNrPVwiI0IyMjIyMlwiLHQuZmxvcmFsd2hpdGU9XCIjRkZGQUYwXCIsdC5mb3Jlc3RncmVlbj1cIiMyMjhCMjJcIix0LmdhaW5zYm9ybz1cIiNEQ0RDRENcIix0Lmdob3N0d2hpdGU9XCIjRjhGOEZGXCIsdC5nb2xkPVwiI0ZGRDcwMFwiLHQuZ29sZGVucm9kPVwiI0RBQTUyMFwiLHQuZ3JlZW55ZWxsb3c9XCIjQURGRjJGXCIsdC5ncmV5PVwiIzgwODA4MFwiLHQuaG9uZXlkZXc9XCIjRjBGRkYwXCIsdC5ob3RwaW5rPVwiI0ZGNjlCNFwiLHQuaW5kaWFucmVkPVwiI0NENUM1Q1wiLHQuaW5kaWdvPVwiIzRCMDA4MlwiLHQuaXZvcnk9XCIjRkZGRkYwXCIsdC5raGFraT1cIiNGMEU2OENcIix0LmxhdmVuZGVyPVwiI0U2RTZGQVwiLHQubGF2ZW5kZXJibHVzaD1cIiNGRkYwRjVcIix0Lmxhd25ncmVlbj1cIiM3Q0ZDMDBcIix0LmxlbW9uY2hpZmZvbj1cIiNGRkZBQ0RcIix0LmxpZ2h0Ymx1ZT1cIiNBREQ4RTZcIix0LmxpZ2h0Y29yYWw9XCIjRjA4MDgwXCIsdC5saWdodGN5YW49XCIjRTBGRkZGXCIsdC5saWdodGdvbGRlbnJvZHllbGxvdz1cIiNGQUZBRDJcIix0LmxpZ2h0Z3JheT1cIiNEM0QzRDNcIix0LmxpZ2h0Z3JlZW49XCIjOTBFRTkwXCIsdC5saWdodGdyZXk9XCIjRDNEM0QzXCIsdC5saWdodHBpbms9XCIjRkZCNkMxXCIsdC5saWdodHNhbG1vbj1cIiNGRkEwN0FcIix0LmxpZ2h0c2VhZ3JlZW49XCIjMjBCMkFBXCIsdC5saWdodHNreWJsdWU9XCIjODdDRUZBXCIsdC5saWdodHNsYXRlZ3JheT1cIiM3Nzg4OTlcIix0LmxpZ2h0c2xhdGVncmV5PVwiIzc3ODg5OVwiLHQubGlnaHRzdGVlbGJsdWU9XCIjQjBDNERFXCIsdC5saWdodHllbGxvdz1cIiNGRkZGRTBcIix0LmxpbWVncmVlbj1cIiMzMkNEMzJcIix0LmxpbmVuPVwiI0ZBRjBFNlwiLHQubWFnZW50YT1cIiNGRjAwRkZcIix0Lm1lZGl1bWFxdWFtYXJpbmU9XCIjNjZDREFBXCIsdC5tZWRpdW1ibHVlPVwiIzAwMDBDRFwiLHQubWVkaXVtb3JjaGlkPVwiI0JBNTVEM1wiLHQubWVkaXVtcHVycGxlPVwiIzkzNzBEQlwiLHQubWVkaXVtc2VhZ3JlZW49XCIjM0NCMzcxXCIsdC5tZWRpdW1zbGF0ZWJsdWU9XCIjN0I2OEVFXCIsdC5tZWRpdW1zcHJpbmdncmVlbj1cIiMwMEZBOUFcIix0Lm1lZGl1bXR1cnF1b2lzZT1cIiM0OEQxQ0NcIix0Lm1lZGl1bXZpb2xldHJlZD1cIiNDNzE1ODVcIix0Lm1pZG5pZ2h0Ymx1ZT1cIiMxOTE5NzBcIix0Lm1pbnRjcmVhbT1cIiNGNUZGRkFcIix0Lm1pc3R5cm9zZT1cIiNGRkU0RTFcIix0Lm1vY2Nhc2luPVwiI0ZGRTRCNVwiLHQubmF2YWpvd2hpdGU9XCIjRkZERUFEXCIsdC5vbGRsYWNlPVwiI0ZERjVFNlwiLHQub2xpdmVkcmFiPVwiIzZCOEUyM1wiLHQub3JhbmdlcmVkPVwiI0ZGNDUwMFwiLHQub3JjaGlkPVwiI0RBNzBENlwiLHQucGFsZWdvbGRlbnJvZD1cIiNFRUU4QUFcIix0LnBhbGVncmVlbj1cIiM5OEZCOThcIix0LnBhbGV0dXJxdW9pc2U9XCIjQUZFRUVFXCIsdC5wYWxldmlvbGV0cmVkPVwiI0RCNzA5M1wiLHQucGFwYXlhd2hpcD1cIiNGRkVGRDVcIix0LnBlYWNocHVmZj1cIiNGRkRBQjlcIix0LnBlcnU9XCIjQ0Q4NTNGXCIsdC5waW5rPVwiI0ZGQzBDQlwiLHQucGx1bT1cIiNEREEwRERcIix0LnBvd2RlcmJsdWU9XCIjQjBFMEU2XCIsdC5yb3N5YnJvd249XCIjQkM4RjhGXCIsdC5yb3lhbGJsdWU9XCIjNDE2OUUxXCIsdC5zYWRkbGVicm93bj1cIiM4QjQ1MTNcIix0LnNhbG1vbj1cIiNGQTgwNzJcIix0LnNhbmR5YnJvd249XCIjRjRBNDYwXCIsdC5zZWFncmVlbj1cIiMyRThCNTdcIix0LnNlYXNoZWxsPVwiI0ZGRjVFRVwiLHQuc2llbm5hPVwiI0EwNTIyRFwiLHQuc2t5Ymx1ZT1cIiM4N0NFRUJcIix0LnNsYXRlYmx1ZT1cIiM2QTVBQ0RcIix0LnNsYXRlZ3JheT1cIiM3MDgwOTBcIix0LnNsYXRlZ3JleT1cIiM3MDgwOTBcIix0LnNub3c9XCIjRkZGQUZBXCIsdC5zcHJpbmdncmVlbj1cIiMwMEZGN0ZcIix0LnN0ZWVsYmx1ZT1cIiM0NjgyQjRcIix0LnRhbj1cIiNEMkI0OENcIix0LnRoaXN0bGU9XCIjRDhCRkQ4XCIsdC50b21hdG89XCIjRkY2MzQ3XCIsdC50dXJxdW9pc2U9XCIjNDBFMEQwXCIsdC52aW9sZXQ9XCIjRUU4MkVFXCIsdC53aGVhdD1cIiNGNURFQjNcIix0LndoaXRlc21va2U9XCIjRjVGNUY1XCIsdC55ZWxsb3dncmVlbj1cIiM5QUNEMzJcIix0LnJlYmVjY2FwdXJwbGU9XCIjNjYzMzk5XCJ9KG98fChvPXt9KSk7dmFyIGEsdSxjLHMsZCxoLGwsZj1PYmplY3Qua2V5cyhvKSxnPXtIRVg6W1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXSxSR0I6W1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXSxIU0w6W1wiaFwiLFwic1wiLFwibFwiLFwiYVwiXSxDTVlLOltcImNcIixcIm1cIixcInlcIixcImtcIixcImFcIl19LHA9e0JHUjpyLlJHQixBQkdSOnIuUkdCLEhMUzpyLkhTTCxBSExTOnIuSFNMLENLTVk6ci5DTVlLLEFDS01ZOnIuQ01ZS30sYj0oKGE9e30pW3IuSEVYXT0vXiMoPzooW2EtZlxcZF0pKFthLWZcXGRdKShbYS1mXFxkXSkoW2EtZlxcZF0pP3woW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pPykkL2ksYVtyLlJHQl09L15yZ2JhP1xccypcXChcXHMqKD86KCg/OlxcZCpcXC4pP1xcZCslPylcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyU/KVxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKD86XFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCspKT98KCg/OlxcZCpcXC4pP1xcZCslPylcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqKCg/OlxcZCpcXC4pP1xcZCslPykoPzpcXHMqXFwvXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKT8pXFxzKlxcKSQvLGFbci5IU0xdPS9eaHNsYT9cXHMqXFwoXFxzKig/OigtPyg/OlxcZCpcXC4pP1xcZCsoPzpkZWd8Z3JhZHxyYWR8dHVybik/KVxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrKSVcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyklKD86XFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCspKT98KC0/KD86XFxkKlxcLik/XFxkKyg/OmRlZ3xncmFkfHJhZHx0dXJuKT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrKSVcXHMqKCg/OlxcZCpcXC4pP1xcZCspJSg/OlxccypcXC9cXHMqKCg/OlxcZCpcXC4pP1xcZCslPykpPylcXHMqXFwpJC8sYVtyLkNNWUtdPS9eKD86ZGV2aWNlLWNteWt8Y215aylcXHMqXFwoXFxzKig/OigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyU/KVxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKD86XFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCspKT98KCg/OlxcZCpcXC4pP1xcZCslPylcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqKCg/OlxcZCpcXC4pP1xcZCslPykoPzpcXHMqXFwvXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKT8pXFxzKlxcKSQvLGEpLEY9L14oLT8oPzpcXGQqXFwuKT9cXGQrKSgoPzpkZWd8Z3JhZHxyYWR8dHVybik/KSQvLG09L14oXFxkKyg/OlxcLlxcZCspP3xcXC5cXGQrKSUkLyx5PS9eMHgoW2EtZlxcZF17MSwyfSkkL2ksQT0vXFx7KFxcZCspXFx9L2csRT1cIlRoZSBwcm92aWRlZCBzdHJpbmcgY29sb3IgZG9lc24ndCBoYXZlIGEgY29ycmVjdCBmb3JtYXRcIix2PVwiVGhlIHByb3ZpZGVkIGNvbG9yIG9iamVjdCBkb2Vzbid0IGhhdmUgdGhlIHByb3BlciBrZXlzIG9yIGZvcm1hdFwiLEg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9LEI9ZnVuY3Rpb24odCl7cmV0dXJuK1wiXCIuY29uY2F0KHQpLnJlcGxhY2UobSxcIiQxXCIpfSxDPWZ1bmN0aW9uKHQpe3JldHVybiBtLnRlc3QoXCJcIi5jb25jYXQodCkpP0IodCk6TWF0aC5taW4oK3QsMTAwKX0sTT1mdW5jdGlvbih0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodCs9dCkscGFyc2VJbnQodCwxNil9LFI9ZnVuY3Rpb24odCl7dmFyIGU9Ryh0LDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiAxPT09ZS5sZW5ndGg/XCIweDBcIi5jb25jYXQoZSk6XCIweFwiLmNvbmNhdChlKX0sRD1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksIWUmJm0udGVzdCh0KT9NYXRoLm1pbigyNTUqQih0KS8xMDAsMjU1KTp5LnRlc3QodCk/KDM9PT10Lmxlbmd0aCYmKHQrPXQuc2xpY2UoLTEpKSxlP0codCkvMjU1OkcodCkpOk1hdGgubWluKCt0LGU/MToyNTUpfSxTPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1pbihtLnRlc3QodCk/Qih0KS8xMDA6K3QsMSl9LEw9ZnVuY3Rpb24odCl7cmV0dXJuIGUoW10sdCwhMCkuc29ydCgpLmpvaW4oXCJcIikudG9VcHBlckNhc2UoKX0sRz1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPTYpO3ZhciByPU1hdGgucG93KDEwLGUpO3JldHVybiBNYXRoLnJvdW5kKCt0KnIpL3J9LGs9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBNYXRoLm1heChlLE1hdGgubWluKHQscikpfSxPPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gcjwwJiYocis9Nikscj49NiYmKHItPTYpLEcocjwxPzI1NSooKGUtdCkqcit0KTpyPDM/MjU1KmU6cjw0PzI1NSooKGUtdCkqKDQtcikrdCk6MjU1KnQpfSxYPWZ1bmN0aW9uKHQsZSxyKXtlLz0xMDA7dmFyIG49KHIvPTEwMCk8PS41P3IqKGUrMSk6citlLXIqZSxpPTIqci1uO3JldHVybntyOk8oaSxuLCh0Lz02MCkrMiksZzpPKGksbix0KSxiOk8oaSxuLHQtMil9fSxZPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybntyOkcoMjU1KigxLXQpKihuPTEtbikpLGc6RygyNTUqKDEtZSkqbiksYjpHKDI1NSooMS1yKSpuKX19LGo9ZnVuY3Rpb24odCxlLHIpe3QvPTI1NSxlLz0yNTUsci89MjU1O3ZhciBuPTEtTWF0aC5tYXgodCxlLHIpLGk9MS1uLG89aSYmKGktZSkvaSxhPWkmJihpLXIpL2k7cmV0dXJue2M6RygxMDAqKGkmJihpLXQpL2kpKSxtOkcoMTAwKm8pLHk6RygxMDAqYSksazpHKDEwMCpuKX19LEs9ZnVuY3Rpb24odCxlLHIsbil7dm9pZCAwPT09biYmKG49MSksdC89MjU1LGUvPTI1NSxyLz0yNTUsbj1NYXRoLm1pbihuLDEpO3ZhciBpPU1hdGgubWF4KHQsZSxyKSxvPU1hdGgubWluKHQsZSxyKSxhPWktbyx1PTAsYz0wLHM9KGkrbykvMjtpZigwIT09YSl7c3dpdGNoKGkpe2Nhc2UgdDp1PShlLXIpL2ElNjticmVhaztjYXNlIGU6dT0oci10KS9hKzI7YnJlYWs7Y2FzZSByOnU9KHQtZSkvYSs0fSh1PUcoNjAqdSkpPDAmJih1Kz0zNjApLGM9YS8oMS1NYXRoLmFicygyKnMtMSkpfXJldHVybntoOnUsczpHKDEwMCpjKSxsOkcoMTAwKnMpLGE6bn19LEk9ZnVuY3Rpb24odCxlKXtpZih0PDAmJih0Kz0zNjApLHQ+MzYwJiYodC09MzYwKSwzNjA9PT10fHwwPT09dClyZXR1cm4gdDt2YXIgcj1bWzAsMTIwXSxbMTIwLDE4MF0sWzE4MCwyNDBdLFsyNDAsMzYwXV0sbj1bWzAsNjBdLFs2MCwxMjBdLFsxMjAsMjQwXSxbMjQwLDM2MF1dLGk9ZT9uOnIsbz0wLGE9MCx1PTAsYz0wO3JldHVybihlP3I6bikuZmluZCgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gdD49ZVswXSYmdDxlWzFdJiYobz1lWzBdLGE9ZVsxXSx1PWlbcl1bMF0sYz1pW3JdWzFdLCEwKX0pKSx1KyhjLXUpLyhhLW8pKih0LW8pfSxQPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9ITEpO3ZhciByPUwoT2JqZWN0LmtleXModCkpO3JldHVybiBnW3Bbcl1dLnJlZHVjZSgoZnVuY3Rpb24ocixuKXt2YXIgaSxvLGE9dFtuXTtyZXR1cm4gdm9pZCAwIT09YSYmKGU/ci5wdXNoKChpPUcoYSwwKSwxPT09KG89RyhpLDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKS5sZW5ndGgmJihvPVwiMFwiLmNvbmNhdChvKSksbykpOnIucHVzaChhKSkscn0pLFtdKX0sVD1mdW5jdGlvbih0LGUpe3JldHVybiB0LnJlcGxhY2UoQSwoZnVuY3Rpb24odCxyKXtyZXR1cm5cIlwiLmNvbmNhdChlWytyLTFdKX0pKX0sdz0oKHU9e30pW3IuSEVYXT1mdW5jdGlvbih0KXt2YXIgZT1QKHQsITApLHI9ND09PWUubGVuZ3RoP1wiI3sxfXsyfXszfXs0fVwiOlwiI3sxfXsyfXszfVwiO3JldHVybiBUKHIsZSl9LHVbci5SR0JdPWZ1bmN0aW9uKHQpe3ZhciBlPVAodCkscj00PT09ZS5sZW5ndGg/XCJyZ2JhKHsxfSx7Mn0sezN9LHs0fSlcIjpcInJnYih7MX0sezJ9LHszfSlcIjtyZXR1cm4gVChyLGUpfSx1W3IuSFNMXT1mdW5jdGlvbih0KXt2YXIgZT1QKHQpLHI9ND09PWUubGVuZ3RoP1wiaHNsYSh7MX0sezJ9JSx7M30lLHs0fSlcIjpcImhzbCh7MX0sezJ9JSx7M30lKVwiO3JldHVybiBUKHIsZSl9LHVbci5DTVlLXT1mdW5jdGlvbih0KXt2YXIgZT1QKHQpLHI9NT09PWUubGVuZ3RoP1wiY215ayh7MX0lLHsyfSUsezN9JSx7NH0lLHs1fSlcIjpcImNteWsoezF9JSx7Mn0lLHszfSUsezR9JSlcIjtyZXR1cm4gVChyLGUpfSx1KSx4PWZ1bmN0aW9uKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXt2YXIgZT10Lm1hdGNoKEYpLHI9K2VbMV07c3dpdGNoKGVbMl0pe2Nhc2VcInJhZFwiOnQ9RygxODAqci9NYXRoLlBJKTticmVhaztjYXNlXCJ0dXJuXCI6dD1HKDM2MCpyKTticmVhaztkZWZhdWx0OnQ9cn19cmV0dXJuKHQ+MzYwfHx0PDApJiYodC09MzYwKk1hdGguZmxvb3IodC8zNjApKSx0fSxOPWZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1tLnRlc3QodCk/Qih0KS8xMDA6K3QpLGlzTmFOKCt0KXx8dD4xPzE6Ryh0KX0sVj1mdW5jdGlvbihyLG4sbyl7cmV0dXJuIG4ucmVkdWNlKChmdW5jdGlvbihuLGEpe3JldHVybiBlKGUoW10sbiwhMCksW3QodCh7fSxyKSx7aDpvPT09aS5BRERJVElWRT94KHIuaCthKTp4KEkoSShyLmgsITEpK2EsITApKX0pXSwhMSl9KSxbdCh7fSxyKV0pfSxVPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFYodCxbMzAsLTMwXSxlKX0scT1mdW5jdGlvbih0LGUpe3JldHVybiBWKHQsWzE4MF0sZSl9LCQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gVih0LFsxNTAsLTE1MF0sZSl9LF89ZnVuY3Rpb24odCxlKXtyZXR1cm4gVih0LFsxMjAsLTEyMF0sZSl9LFE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gVih0LFs2MCwtMTIwLDE4MF0sZSl9LHo9ZnVuY3Rpb24odCxlKXtyZXR1cm4gVih0LFs5MCwtOTAsMTgwXSxlKX0sSj1mdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9mdW5jdGlvbih0KXt2YXIgZTtpZihPYmplY3Qua2V5cyhyKS5zb21lKChmdW5jdGlvbihyKXtpZihiW3JdLnRlc3QodCkpcmV0dXJuIGU9ciwhMH0pKSwhZSYmfmYuaW5kZXhPZih0KSYmKGU9ci5IRVgpLCFlKXRocm93IG5ldyBFcnJvcihFKTtyZXR1cm4gZX0odCk6ZnVuY3Rpb24odCl7dmFyIGUsbj0hMSxpPUwoT2JqZWN0LmtleXModCkpO2lmKHBbaV0mJihlPXBbaV0pLGUmJmU9PT1yLlJHQil7dmFyIG89T2JqZWN0LmVudHJpZXModCkuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIXkudGVzdChcIlwiLmNvbmNhdCh0WzFdKSl9KSksYT1PYmplY3QuZW50cmllcyh0KS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4hKG0udGVzdChcIlwiLmNvbmNhdCh0WzFdKSl8fCF5LnRlc3QoXCJcIi5jb25jYXQodFsxXSkpJiYhaXNOYU4oK3RbMV0pJiYrdFsxXTw9MjU1KX0pKTtvJiZhJiYobj0hMCksb3x8KGU9ci5IRVgpfWlmKCFlfHxuKXRocm93IG5ldyBFcnJvcih2KTtyZXR1cm4gZX0odCl9LFc9KChjPXt9KVtyLkhFWF09ZnVuY3Rpb24odCl7dmFyIGU9KH5mLmluZGV4T2YodCk/b1t0XTp0KS5tYXRjaChiLkhFWCkscj17cjpNKGVbMV18fGVbNV0pLGc6TShlWzJdfHxlWzZdKSxiOk0oZVszXXx8ZVs3XSl9LG49ZVs0XXx8ZVs4XTtyZXR1cm4gdm9pZCAwIT09biYmKHIuYT1NKG4pLzI1NSkscn0sY1tyLlJHQl09ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaChiLlJHQikscj1EKGVbMV18fGVbNV0pLG49RChlWzJdfHxlWzZdKSxpPUQoZVszXXx8ZVs3XSksbz1lWzRdfHxlWzhdLGE9e3I6TWF0aC5taW4ociwyNTUpLGc6TWF0aC5taW4obiwyNTUpLGI6TWF0aC5taW4oaSwyNTUpfTtyZXR1cm4gdm9pZCAwIT09byYmKGEuYT1OKG8pKSxhfSxjW3IuSFNMXT1mdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoKGIuSFNMKSxyPXgoZVsxXXx8ZVs1XSksbj1DKGVbMl18fGVbNl0pLGk9QyhlWzNdfHxlWzddKSxvPWVbNF18fGVbOF0sYT1YKHIsbixpKTtyZXR1cm4gdm9pZCAwIT09byYmKGEuYT1OKG8pKSxhfSxjW3IuQ01ZS109ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaChiLkNNWUspLHI9UyhlWzFdfHxlWzZdKSxuPVMoZVsyXXx8ZVs3XSksaT1TKGVbM118fGVbOF0pLG89UyhlWzRdfHxlWzldKSxhPWVbNV18fGVbMTBdLHU9WShyLG4saSxvKTtyZXR1cm4gdm9pZCAwIT09YSYmKHUuYT1OKGEpKSx1fSxjKSxaPSgocz17fSlbci5IRVhdPWZ1bmN0aW9uKHQpe3ZhciBlPXtyOkQoXCJcIi5jb25jYXQodC5yKSksZzpEKFwiXCIuY29uY2F0KHQuZykpLGI6RChcIlwiLmNvbmNhdCh0LmIpKX07cmV0dXJuIEgodCxcImFcIikmJihlLmE9TWF0aC5taW4oRChcIlwiLmNvbmNhdCh0LmEpLCEwKSwxKSksZX0sc1tyLlJHQl09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuSEVYKHQpfSxzW3IuSFNMXT1mdW5jdGlvbih0KXt2YXIgZT1DKFwiXCIuY29uY2F0KHQucykpLHI9QyhcIlwiLmNvbmNhdCh0LmwpKSxuPVgoeCh0LmgpLGUscik7cmV0dXJuIEgodCxcImFcIikmJihuLmE9Tih0LmEpKSxufSxzW3IuQ01ZS109ZnVuY3Rpb24odCl7dmFyIGU9UyhcIlwiLmNvbmNhdCh0LmMpKSxyPVMoXCJcIi5jb25jYXQodC5tKSksbj1TKFwiXCIuY29uY2F0KHQueSkpLGk9UyhcIlwiLmNvbmNhdCh0LmspKSxvPVkoZSxyLG4saSk7cmV0dXJuIEgodCxcImFcIikmJihvLmE9Tih0LmEpKSxvfSxzKSx0dD1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1KKHQpKSxcInN0cmluZ1wiPT10eXBlb2YgdD9XW2VdKHQpOlpbZV0odCl9LGV0PSgoZD17fSlbci5IRVhdPWZ1bmN0aW9uKHQpe3JldHVybntyOlIodC5yKSxnOlIodC5nKSxiOlIodC5iKX19LGQuSEVYQT1mdW5jdGlvbih0KXt2YXIgZT1ldC5IRVgodCk7cmV0dXJuIGUuYT1IKHQsXCJhXCIpP1IoMjU1KnQuYSk6XCIweEZGXCIsZX0sZFtyLlJHQl09ZnVuY3Rpb24odCxlKXtyZXR1cm4gSCh0LFwiYVwiKSYmZGVsZXRlIHQuYSxvdCh0LGUpfSxkLlJHQkE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5hPUgodCxcImFcIik/Ryh0LmEpOjEsb3QodCxlKX0sZFtyLkhTTF09ZnVuY3Rpb24odCxlKXt2YXIgcj1LKHQucix0LmcsdC5iKTtyZXR1cm4gZGVsZXRlIHIuYSxhdChyLGUpfSxkLkhTTEE9ZnVuY3Rpb24odCxlKXt2YXIgcj1ldC5IU0wodCxlKTtyZXR1cm4gci5hPUgodCxcImFcIik/Ryh0LmEsZSk6MSxyfSxkW3IuQ01ZS109ZnVuY3Rpb24odCxlKXtyZXR1cm4gdXQoaih0LnIsdC5nLHQuYiksZSl9LGQuQ01ZS0E9ZnVuY3Rpb24odCxlKXt2YXIgcj1ldC5DTVlLKHQsZSk7cmV0dXJuIHIuYT1IKHQsXCJhXCIpP0codC5hLGUpOjEscn0sZCkscnQ9ZnVuY3Rpb24oZSxuLGksbyl7dmFyIGE9SihlKSx1PVwic3RyaW5nXCI9PXR5cGVvZiBlLGM9dHQoZSxhKSxzPVwic3RyaW5nXCI9PXR5cGVvZiBlJiZIKGMsXCJhXCIpfHxcInN0cmluZ1wiIT10eXBlb2YgZSYmSChlLFwiYVwiKSxkPUsoYy5yLGMuZyxjLmIsYy5hKTtzfHxkZWxldGUgZC5hO3ZhciBoPWk/ZC5sLyhuKzEpOigxMDAtZC5sKS8obisxKSxsPUFycmF5KG4pLmZpbGwobnVsbCkubWFwKChmdW5jdGlvbihlLHIpe3JldHVybiB0KHQoe30sZCkse2w6ZC5sK2gqKHIrMSkqKDEtMioraSl9KX0pKTtzd2l0Y2goYSl7Y2FzZSByLkhFWDpkZWZhdWx0OnJldHVybiBsLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHI9WChlLmgsZS5zLGUubCk7cmV0dXJuIHMmJihyLmE9ZS5hKSx1P3M/dy5IRVgob3QodCh0KHt9LHIpLHthOkcoMjU1KnIuYSl9KSxvKSk6dy5IRVgob3QocixvKSk6cz9ldC5IRVhBKHIpOmV0LkhFWChyKX0pKTtjYXNlIHIuUkdCOnJldHVybiBsLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9WCh0LmgsdC5zLHQubCk7cmV0dXJuIHMmJihlLmE9dC5hKSx1P3cuUkdCKG90KGUsbykpOnM/ZXQuUkdCQShlLG8pOmV0LlJHQihlLG8pfSkpO2Nhc2Ugci5IU0w6cmV0dXJuIGwubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdT93LkhTTChhdChlLG8pKTpzP2V0LkhTTEEodCh0KHt9LFgoZS5oLGUucyxlLmwpKSx7YTplLmF9KSxvKTpldC5IU0woWChlLmgsZS5zLGUubCksbyl9KSl9fSxudD0oKGg9e2J1aWxkSGFybW9ueTpmdW5jdGlvbih0LGUsbixpKXt2YXIgbz1KKHQpLGE9dHQodCxvKSx1PUsoYS5yLGEuZyxhLmIsYS5hKSxjPVwic3RyaW5nXCI9PXR5cGVvZiB0JiZIKGEsXCJhXCIpfHxcInN0cmluZ1wiIT10eXBlb2YgdCYmSCh0LFwiYVwiKSxzPVwic3RyaW5nXCI9PXR5cGVvZiB0O3N3aXRjaChvKXtjYXNlIHIuSEVYOmRlZmF1bHQ6cmV0dXJuIGM/dGhpcy5IRVhBKGF0KHUsMCksZSxuLHMpOnRoaXMuSEVYKGF0KHUsMCksZSxuLHMpO2Nhc2Ugci5IU0w6cmV0dXJuIGM/dGhpcy5IU0xBKHUsZSxuLHMsaSk6dGhpcy5IU0wodSxlLG4scyxpKTtjYXNlIHIuUkdCOnJldHVybiBjP3RoaXMuUkdCQSh1LGUsbixzLGkpOnRoaXMuUkdCKHUsZSxuLHMsaSl9fX0pW3IuSEVYXT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gZSh0LHIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4/dy5IRVgoWCh0LmgsdC5zLHQubCkpOmV0LkhFWChYKHQuaCx0LnMsdC5sKSl9KSl9LGguSEVYQT1mdW5jdGlvbihlLHIsbixpKXtyZXR1cm4gcihlLG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGk/dy5IRVgodCh0KHt9LFgoZS5oLGUucyxlLmwpKSx7YToyNTUqTihlLmEpfSkpOmV0LkhFWEEodCh0KHt9LFgoZS5oLGUucyxlLmwpKSx7YTpOKGUuYSl9KSl9KSl9LGhbci5SR0JdPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIGUodCxyKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuP3cuUkdCKG90KFgodC5oLHQucyx0LmwpLGkpKTpldC5SR0IoWCh0LmgsdC5zLHQubCksaSl9KSl9LGguUkdCQT1mdW5jdGlvbihlLHIsbixpLG8pe3JldHVybiByKGUsbikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gaT93LlJHQihvdCh0KHQoe30sWChlLmgsZS5zLGUubCkpLHthOk4oZS5hKX0pLG8pKTpldC5SR0JBKHQodCh7fSxYKGUuaCxlLnMsZS5sKSkse2E6TihlLmEpfSksbyl9KSl9LGhbci5IU0xdPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIGUodCxyKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuP3cuSFNMKGF0KHtoOnQuaCxzOnQucyxsOnQubH0saSkpOmV0LkhTTChYKHQuaCx0LnMsdC5sKSxpKX0pKX0saC5IU0xBPWZ1bmN0aW9uKGUscixuLGksbyl7cmV0dXJuIHIoZSxuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBpP3cuSFNMKGF0KHQodCh7fSxlKSx7YTpOKGUuYSl9KSxvKSk6ZXQuSFNMQSh0KHQoe30sWChlLmgsZS5zLGUubCkpLHthOk4oZS5hKX0pLG8pfSkpfSxoKSxpdD0oKGw9e21peDpmdW5jdGlvbihlLHIpe3ZhciBuLG8sYSx1LGMscyxkLGgsbCxmLGcscCxiLEYsbSx5PWUubWFwKChmdW5jdGlvbih0KXt2YXIgZT1KKHQpO3JldHVybiB0dCh0LGUpfSkpLEE9cj09PWkuU1VCVFJBQ1RJVkU/eS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLG8sYSx1LGMscyxkLGgsbCxmLGcscD0oZT10LnIscj10Lmcsbj10LmIsaT1NYXRoLm1pbihlLHIsbiksbz1NYXRoLm1pbigyNTUtZSwyNTUtciwyNTUtbiksYT1lLWksdT1yLWksYz1uLWkscz1NYXRoLm1pbihhLHUpLGQ9YS1zLGg9KHUrcykvMixsPShjK3UtcykvMixmPU1hdGgubWF4KGQsaCxsKS9NYXRoLm1heChhLHUsYyksZz1pc05hTihmKXx8Zj09PTEvMHx8Zjw9MD8xOmYse3I6ZC9nK28seTpoL2crbyxiOmwvZytvfSk7cmV0dXJuIEgodCxcImFcIikmJihwLmE9dC5hKSxwfSkpOm51bGw7ZnVuY3Rpb24gRShlKXt2YXIgbj1yPT09aS5BRERJVElWRT97cjowLGc6MCxiOjAsYTowfTp7cjowLHk6MCxiOjAsYTowfTtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7dmFyIG89SChuLFwiYVwiKT9uLmE6MSxhPXtyOk1hdGgubWluKGUucituLnIqbywyNTUpLGI6TWF0aC5taW4oZS5iK24uYipvLDI1NSksYToxLSgxLW8pKigxLWUuYSl9LHU9XCJnXCJpbiBlP2UuZzplLnksYz1cImdcImluIG4/bi5nOm4ueTtyZXR1cm4gdCh0KHt9LGEpLHI9PT1pLkFERElUSVZFP3tnOk1hdGgubWluKHUrYypvLDI1NSl9Ont5Ok1hdGgubWluKHUrYypvLDI1NSl9KX0pLG4pfWlmKHI9PT1pLkFERElUSVZFKW49RSh5KTtlbHNle3ZhciB2PUUoQSk7bz12LnIsYT12LnksdT12LmIsYz1NYXRoLm1pbihvLGEsdSkscz1NYXRoLm1pbigyNTUtbywyNTUtYSwyNTUtdSksZD1vLWMsaD1hLWMsbD11LWMsZj1NYXRoLm1pbihoLGwpLGc9ZCtoLWYscD1oK2YsYj0yKihsLWYpLEY9TWF0aC5tYXgoZyxwLGIpL01hdGgubWF4KGQsaCxsKSxtPWlzTmFOKEYpfHxGPT09MS8wfHxGPD0wPzE6Riwobj17cjpnL20rcyxnOnAvbStzLGI6Yi9tK3N9KS5hPXYuYX1yZXR1cm57cjpHKG4uciksZzpHKG4uZyksYjpHKG4uYiksYTprKG4uYSwwLDEpfX19KVtyLkhFWF09ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubWl4KHQsZSk7cmV0dXJuIGRlbGV0ZSBuLmEscj93LkhFWChuKTpldC5IRVgobil9LGwuSEVYQT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5taXgodCxlKTtyZXR1cm4gbi5hPXI/MjU1Kk4obi5hKTpOKG4uYSkscj93LkhFWChuKTpldC5IRVhBKG4pfSxsW3IuUkdCXT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLm1peCh0LGUpO3JldHVybiBkZWxldGUgaS5hLHI/dy5SR0IoaSk6ZXQuUkdCKGksbil9LGwuUkdCQT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLm1peCh0LGUpO3JldHVybiByP3cuUkdCKGkpOmV0LlJHQkEoaSxuKX0sbFtyLkhTTF09ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9dGhpcy5taXgodCxlKSxvPUsoaS5yLGkuZyxpLmIpO3JldHVybiBkZWxldGUgaS5hLGRlbGV0ZSBvLmEscj93LkhTTChvKTpldC5IU0woaSxuKX0sbC5IU0xBPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRoaXMubWl4KHQsZSksbz1LKGkucixpLmcsaS5iLGkuYSk7cmV0dXJuIHI/dy5IU0wobyk6ZXQuSFNMQShpLG4pfSxsKSxvdD1mdW5jdGlvbihlLHIpe3JldHVybiB0KHtyOkcoZS5yLHIpLGc6RyhlLmcsciksYjpHKGUuYixyKX0sSChlLFwiYVwiKT97YTpHKGUuYSxyKX06e30pfSxhdD1mdW5jdGlvbihlLHIpe3JldHVybiB0KHtoOkcoZS5oLHIpLHM6RyhlLnMsciksbDpHKGUubCxyKX0sSChlLFwiYVwiKT97YTpHKGUuYSxyKX06e30pfSx1dD1mdW5jdGlvbih0LGUpe3JldHVybntjOkcodC5jLGUpLG06Ryh0Lm0sZSkseTpHKHQueSxlKSxrOkcodC5rLGUpfX0sY3Q9ZnVuY3Rpb24odCxlLHIsbixpLG8pe3ZhciBhPWkodHQodCxlKSxuKTtyZXR1cm4gcj9vKGEpOmF9LHN0PWZ1bmN0aW9uKHQsZSxyLG4saSxvLGEpe3I8MSYmKHI9NSk7dmFyIHU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXItMSxpPShlLnItdC5yKS9uLG89KGUuZy10LmcpL24sYT0oZS5iLXQuYikvbix1PU4odC5hKSxjPShOKGUuYSktdSkvbjtyZXR1cm4gQXJyYXkocikuZmlsbChudWxsKS5tYXAoKGZ1bmN0aW9uKHIscyl7cmV0dXJuIDA9PT1zP3Q6cz09PW4/ZTp7cjpHKHQucitpKnMpLGc6Ryh0LmcrbypzKSxiOkcodC5iK2EqcyksYTpHKHUrYypzKX19KSl9KHR0KHQpLHR0KGUpLHIpO3JldHVybiB1Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9byh0LGkpO3JldHVybiBuP2EoZSk6ZX0pKX0sZHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsZSl7dm9pZCAwPT09ZSYmKGU9NiksdGhpcy5yZ2I9dHQodCksdGhpcy5fZGVjaW1hbHM9ZSx0aGlzLnVwZGF0ZUhTTCgpLHRoaXMudXBkYXRlQ01ZSygpfXJldHVybiBlLnByb3RvdHlwZS51cGRhdGVSR0I9ZnVuY3Rpb24oKXt0aGlzLnJnYj10KHQoe30sWCh0aGlzLmhzbC5oLHRoaXMuaHNsLnMsdGhpcy5oc2wubCkpLHthOnRoaXMuaHNsLmF9KX0sZS5wcm90b3R5cGUudXBkYXRlUkdCRnJvbUNNWUs9ZnVuY3Rpb24oKXt0aGlzLnJnYj10KHQoe30sWSh0aGlzLmNteWsuYyx0aGlzLmNteWsubSx0aGlzLmNteWsueSx0aGlzLmNteWsuaykpLHthOnRoaXMucmdiLmF9KX0sZS5wcm90b3R5cGUudXBkYXRlSFNMPWZ1bmN0aW9uKCl7dGhpcy5oc2w9Syh0aGlzLnJnYi5yLHRoaXMucmdiLmcsdGhpcy5yZ2IuYix0aGlzLnJnYi5hKX0sZS5wcm90b3R5cGUudXBkYXRlQ01ZSz1mdW5jdGlvbigpe3RoaXMuY215az1qKHRoaXMucmdiLnIsdGhpcy5yZ2IuZyx0aGlzLnJnYi5iKX0sZS5wcm90b3R5cGUudXBkYXRlUkdCQW5kQ01ZSz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnVwZGF0ZVJHQigpLHRoaXMudXBkYXRlQ01ZSygpLHRoaXN9LGUucHJvdG90eXBlLnVwZGF0ZUhTTEFuZENNWUs9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVIU0woKSx0aGlzLnVwZGF0ZUNNWUsoKSx0aGlzfSxlLnByb3RvdHlwZS51cGRhdGVSR0JBbmRIU0w9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVSR0JGcm9tQ01ZSygpLHRoaXMudXBkYXRlSFNMKCksdGhpc30sZS5wcm90b3R5cGUuc2V0RGVjaW1hbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RlY2ltYWxzPXQsdGhpc30sZS5wcm90b3R5cGUuc2V0SD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oc2wuaD14KHQpLHRoaXMudXBkYXRlUkdCQW5kQ01ZSygpfSxlLnByb3RvdHlwZS5zZXRTPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhzbC5zPWsodCwwLDEwMCksdGhpcy51cGRhdGVSR0JBbmRDTVlLKCl9LGUucHJvdG90eXBlLnNldEw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaHNsLmw9ayh0LDAsMTAwKSx0aGlzLnVwZGF0ZVJHQkFuZENNWUsoKX0sZS5wcm90b3R5cGUuc2V0Uj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZ2Iucj1rKHQsMCwyNTUpLHRoaXMudXBkYXRlSFNMQW5kQ01ZSygpfSxlLnByb3RvdHlwZS5zZXRHPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJnYi5nPWsodCwwLDI1NSksdGhpcy51cGRhdGVIU0xBbmRDTVlLKCl9LGUucHJvdG90eXBlLnNldEI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmdiLmI9ayh0LDAsMjU1KSx0aGlzLnVwZGF0ZUhTTEFuZENNWUsoKX0sZS5wcm90b3R5cGUuc2V0QT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oc2wuYT10aGlzLnJnYi5hPWsodCwwLDEpLHRoaXN9LGUucHJvdG90eXBlLnNldEM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY215ay5jPWsodCwwLDEwMCksdGhpcy51cGRhdGVSR0JBbmRIU0woKX0sZS5wcm90b3R5cGUuc2V0TT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXlrLm09ayh0LDAsMTAwKSx0aGlzLnVwZGF0ZVJHQkFuZEhTTCgpfSxlLnByb3RvdHlwZS5zZXRZPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNteWsueT1rKHQsMCwxMDApLHRoaXMudXBkYXRlUkdCQW5kSFNMKCl9LGUucHJvdG90eXBlLnNldEs9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY215ay5rPWsodCwwLDEwMCksdGhpcy51cGRhdGVSR0JBbmRIU0woKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiZGVjaW1hbHNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlY2ltYWxzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5oc2wuaCx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJTXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuaHNsLnMsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiTFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmhzbC5sLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIlJcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5yZ2Iucix0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJHXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMucmdiLmcsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiQlwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLnJnYi5iLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5oc2wuYSx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJDXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuY215ay5jLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIk1cIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5jbXlrLm0sdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiWVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmNteWsueSx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJLXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuY215ay5rLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhFWE9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXQuSEVYKHRoaXMucmdiKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIRVhBT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiBldC5IRVhBKHRoaXMucmdiKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJSR0JPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJue3I6dGhpcy5SLGc6dGhpcy5HLGI6dGhpcy5CfX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJSR0JBT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0KHQoe30sdGhpcy5SR0JPYmplY3QpLHthOnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhTTE9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57aDp0aGlzLkgsczp0aGlzLlMsbDp0aGlzLkx9fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhTTEFPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQodCh7fSx0aGlzLkhTTE9iamVjdCkse2E6dGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiQ01ZS09iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57Yzp0aGlzLkMsbTp0aGlzLk0seTp0aGlzLlksazp0aGlzLkt9fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkNNWUtBT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0KHQoe30sdGhpcy5DTVlLT2JqZWN0KSx7YTp0aGlzLkF9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIRVhcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuSEVYKHtyOnRoaXMuUixnOnRoaXMuRyxiOnRoaXMuQn0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhFWEFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuSEVYKHtyOnRoaXMuUixnOnRoaXMuRyxiOnRoaXMuQixhOjI1NSp0aGlzLkF9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJSR0JcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuUkdCKHtyOnRoaXMuUixnOnRoaXMuRyxiOnRoaXMuQn0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIlJHQkFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuUkdCKHtyOnRoaXMuUixnOnRoaXMuRyxiOnRoaXMuQixhOnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhTTFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5IU0woe2g6dGhpcy5ILHM6dGhpcy5TLGw6dGhpcy5MfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSFNMQVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5IU0woe2g6dGhpcy5ILHM6dGhpcy5TLGw6dGhpcy5MLGE6dGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiQ01ZS1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5DTVlLKHtjOnRoaXMuQyxtOnRoaXMuTSx5OnRoaXMuWSxrOnRoaXMuS30pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkNNWUtBXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LkNNWUsoe2M6dGhpcy5DLG06dGhpcy5NLHk6dGhpcy5ZLGs6dGhpcy5LLGE6dGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS50b0hFWD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSEwKTt2YXIgcj1KKHQpO3JldHVybiBjdCh0LHIsZSwwLGV0LkhFWCx3LkhFWCl9LGUudG9IRVhBPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9ITApO3ZhciByPUoodCk7cmV0dXJuIGN0KHQscixlLDAsZXQuSEVYQSx3LkhFWCl9LGUudG9SR0I9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1yJiYocj02KTt2YXIgbj1KKHQpO3JldHVybiBjdCh0LG4sZSxyLGV0LlJHQix3LlJHQil9LGUudG9SR0JBPWZ1bmN0aW9uKHQsZSxyKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwPT09ciYmKHI9Nik7dmFyIG49Sih0KTtyZXR1cm4gY3QodCxuLGUscixldC5SR0JBLHcuUkdCKX0sZS50b0hTTD1mdW5jdGlvbih0LGUscil7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PXImJihyPTYpO3ZhciBuPUoodCk7cmV0dXJuIGN0KHQsbixlLHIsZXQuSFNMLHcuSFNMKX0sZS50b0hTTEE9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1yJiYocj02KTt2YXIgbj1KKHQpO3JldHVybiBjdCh0LG4sZSxyLGV0LkhTTEEsdy5IU0wpfSxlLnRvQ01ZSz1mdW5jdGlvbih0LGUscil7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PXImJihyPTYpO3ZhciBuPUoodCk7cmV0dXJuIGN0KHQsbixlLHIsZXQuQ01ZSyx3LkNNWUspfSxlLnRvQ01ZS0E9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1yJiYocj02KTt2YXIgbj1KKHQpO3JldHVybiBjdCh0LG4sZSxyLGV0LkNNWUtBLHcuQ01ZSyl9LGUuZ2V0QmxlbmRIRVg9ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NSksdm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PWkmJihpPTYpLHN0KHQsZSxyLG4saSxldC5IRVgsdy5IRVgpfSxlLmdldEJsZW5kSEVYQT1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiB2b2lkIDA9PT1yJiYocj01KSx2b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09aSYmKGk9Niksc3QodCxlLHIsbixpLGV0LkhFWEEsdy5IRVgpfSxlLmdldEJsZW5kUkdCPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHZvaWQgMD09PXImJihyPTUpLHZvaWQgMD09PW4mJihuPSEwKSx2b2lkIDA9PT1pJiYoaT02KSxzdCh0LGUscixuLGksZXQuUkdCLHcuUkdCKX0sZS5nZXRCbGVuZFJHQkE9ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NSksdm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PWkmJihpPTYpLHN0KHQsZSxyLG4saSxldC5SR0JBLHcuUkdCKX0sZS5nZXRCbGVuZEhTTD1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiB2b2lkIDA9PT1yJiYocj01KSx2b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09aSYmKGk9Niksc3QodCxlLHIsbixpLGV0LkhTTCx3LkhTTCl9LGUuZ2V0QmxlbmRIU0xBPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHZvaWQgMD09PXImJihyPTUpLHZvaWQgMD09PW4mJihuPSEwKSx2b2lkIDA9PT1pJiYoaT02KSxzdCh0LGUscixuLGksZXQuSFNMQSx3LkhTTCl9LGUuZ2V0TWl4SEVYPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9aS5BRERJVElWRSksdm9pZCAwPT09ciYmKHI9ITApLGl0LkhFWCh0LGUscil9LGUuZ2V0TWl4SEVYQT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PWUmJihlPWkuQURESVRJVkUpLHZvaWQgMD09PXImJihyPSEwKSxpdC5IRVhBKHQsZSxyKX0sZS5nZXRNaXhSR0I9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPWkuQURESVRJVkUpLHZvaWQgMD09PXImJihyPSEwKSx2b2lkIDA9PT1uJiYobj02KSxpdC5SR0IodCxlLHIsbil9LGUuZ2V0TWl4UkdCQT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9aS5BRERJVElWRSksdm9pZCAwPT09ciYmKHI9ITApLHZvaWQgMD09PW4mJihuPTYpLGl0LlJHQkEodCxlLHIsbil9LGUuZ2V0TWl4SFNMPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT1pLkFERElUSVZFKSx2b2lkIDA9PT1yJiYocj0hMCksdm9pZCAwPT09biYmKG49NiksaXQuSFNMKHQsZSxyLG4pfSxlLmdldE1peEhTTEE9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPWkuQURESVRJVkUpLHZvaWQgMD09PXImJihyPSEwKSx2b2lkIDA9PT1uJiYobj02KSxpdC5IU0xBKHQsZSxyLG4pfSxlLmdldFNoYWRlcz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPTYpLHJ0KHQsZSwhMCxyKX0sZS5nZXRUaW50cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPTYpLHJ0KHQsZSwhMSxyKX0sZS5nZXRIYXJtb255PWZ1bmN0aW9uKHQsZSxyLG8pe3JldHVybiB2b2lkIDA9PT1lJiYoZT1uLkNPTVBMRU1FTlRBUlkpLHZvaWQgMD09PXImJihyPWkuQURESVRJVkUpLHZvaWQgMD09PW8mJihvPTYpLGZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvO3JldHVybihvPXt9LG9bbi5BTkFMT0dPVVNdPW50LmJ1aWxkSGFybW9ueShlLFUsaSxyKSxvW24uQ09NUExFTUVOVEFSWV09bnQuYnVpbGRIYXJtb255KGUscSxpLHIpLG9bbi5TUExJVF9DT01QTEVNRU5UQVJZXT1udC5idWlsZEhhcm1vbnkoZSwkLGksciksb1tuLlRSSUFESUNdPW50LmJ1aWxkSGFybW9ueShlLF8saSxyKSxvW24uVEVUUkFESUNdPW50LmJ1aWxkSGFybW9ueShlLFEsaSxyKSxvW24uU1FVQVJFXT1udC5idWlsZEhhcm1vbnkoZSx6LGksciksbylbdF19KGUsdCxvLHIpfSxlfSgpO2V4cG9ydHtkdCBhcyBDb2xvclRyYW5zbGF0b3IsbiBhcyBIYXJtb255LGkgYXMgTWl4fTtcbiIsICJpbXBvcnQgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgQ29kZVN0eWxlclNldHRpbmdzLCBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBDb2RlU3R5bGVyVGhlbWVNb2RlQ29sb3VycywgQ29kZVN0eWxlclRoZW1lU2V0dGluZ3MsIENvbG91ciwgTEFOR1VBR0VfTkFNRVMsIExBTkdVQUdFX0NPTE9VUlMgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgaXNDc3MgfSBmcm9tIFwiLi9TZXR0aW5nc1RhYlwiO1xuXG5pbnRlcmZhY2UgVGhlbWVTdHlsZSB7XG5cdCdib3JkZXInPzoge1xuXHRcdCdzaXplJzogbnVtYmVyO1xuXHRcdCdzdHlsZSc6IHN0cmluZztcblx0fSxcblx0J2V4dHJhJz86IHN0cmluZztcbn1cblxuY29uc3QgU1RZTEVfSUQgPSAnY29kZS1zdHlsZXItc3R5bGVzJztcbmNvbnN0IFRIRU1FX1NUWUxFUzogUmVjb3JkPHN0cmluZyxUaGVtZVN0eWxlPiA9IHtcblx0J1ByaXNtJzoge1xuXHRcdCdib3JkZXInOiB7XG5cdFx0XHQnc2l6ZSc6IDEsXG5cdFx0XHQnc3R5bGUnOiAnMXB4IHNvbGlkIHZhcigtLXdpbmRvdy1ib3JkZXItY29sb3IpJyxcblx0XHR9LFxuXHR9LFxuXHQnU2hpbW1lcmluZyBGb2N1cyc6IHtcblx0XHQnYm9yZGVyJzoge1xuXHRcdFx0J3NpemUnOiAxLFxuXHRcdFx0J3N0eWxlJzogJ3ZhcigtLXRoaW4tbXV0ZWQtYm9yZGVyKScsXG5cdFx0fSxcblx0fSxcblx0J01pbmltYWwnOiB7XG5cdFx0J2V4dHJhJzogYFxuXHRcdFx0Lm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYuaXMtcmVhZGFibGUtbGluZS13aWR0aCA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIHtcblx0XHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdH1cblx0XHRgLFxuXHR9LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3R5bGluZyhzZXR0aW5nczogQ29kZVN0eWxlclNldHRpbmdzLCBhcHA6IEFwcCk6IHZvaWQge1xuXHRsZXQgY3VycmVudFRoZW1lID0gZ2V0Q3VycmVudFRoZW1lKGFwcCk7XG5cdGxldCBzdHlsZVRhZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFNUWUxFX0lEKTtcblx0aWYgKCFzdHlsZVRhZykge1xuXHRcdHN0eWxlVGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcblx0XHRzdHlsZVRhZy5pZCA9IFNUWUxFX0lEO1xuXHRcdGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF0uYXBwZW5kQ2hpbGQoc3R5bGVUYWcpO1xuXHR9XG5cdHN0eWxlVGFnLmlubmVyVGV4dCA9IChzdHlsZVRoZW1lQ29sb3VycyhzZXR0aW5ncy5jdXJyZW50VGhlbWUuY29sb3Vycykrc3R5bGVUaGVtZVNldHRpbmdzKHNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncyxjdXJyZW50VGhlbWUpK3N0eWxlTGFuZ3VhZ2VDb2xvdXJzKHNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncyxzZXR0aW5ncy5yZWRpcmVjdExhbmd1YWdlcyxjdXJyZW50VGhlbWUpKS50cmltKCkucmVwbGFjZSgvXFxzKy9nLCcgJyk7XG5cdGFkZFRoZW1lU2V0dGluZ3NDbGFzc2VzKHNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncyk7XG59XG5cbmZ1bmN0aW9uIHN0eWxlVGhlbWVDb2xvdXJzICh0aGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpOiBzdHJpbmcge1xuXHRyZXR1cm4gT2JqZWN0LmtleXModGhlbWVDb2xvdXJzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzKS5yZWR1Y2UoKHJlc3VsdDogc3RyaW5nLCBhbHRlcm5hdGl2ZUhpZ2hsaWdodDogc3RyaW5nKSA9PiB7XG5cdFx0cmV0dXJuIHJlc3VsdCArIGBcblx0XHRcdGJvZHkuY29kZS1zdHlsZXIgLmNvZGUtc3R5bGVyLWxpbmUtaGlnaGxpZ2h0ZWQtJHthbHRlcm5hdGl2ZUhpZ2hsaWdodC5yZXBsYWNlKC9cXHMrL2csICctJykudG9Mb3dlckNhc2UoKX0ge1xuXHRcdFx0XHQtLWdyYWRpZW50LWJhY2tncm91bmQtY29sb3VyOiB2YXIoLS1jb2RlLXN0eWxlci0ke2FsdGVybmF0aXZlSGlnaGxpZ2h0LnJlcGxhY2UoL1xccysvZywgJy0nKS50b0xvd2VyQ2FzZSgpfS1oaWdobGlnaHQtY29sb3VyKSAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXHRcdGA7XG5cdH0sYFxuXHRcdGJvZHkuY29kZS1zdHlsZXIudGhlbWUtbGlnaHQge1xuXHRcdFx0JHtnZXRUaGVtZUNvbG91cnModGhlbWVDb2xvdXJzLmxpZ2h0KX1cblx0XHR9XG5cdFx0Ym9keS5jb2RlLXN0eWxlci50aGVtZS1kYXJrIHtcblx0XHRcdCR7Z2V0VGhlbWVDb2xvdXJzKHRoZW1lQ29sb3Vycy5kYXJrKX1cblx0XHR9XG5cdGApO1xufVxuXG5mdW5jdGlvbiBnZXRUaGVtZUNvbG91cnMgKHRoZW1lTW9kZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZU1vZGVDb2xvdXJzKTogc3RyaW5nIHtcblx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKHtcblx0XHQnY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5jb2RlYmxvY2suYmFja2dyb3VuZENvbG91cixcblx0XHQnY29kZWJsb2NrLXRleHQtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5jb2RlYmxvY2sudGV4dENvbG91cixcblx0XHQnZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5ndXR0ZXIuYmFja2dyb3VuZENvbG91cixcblx0XHQnZ3V0dGVyLXRleHQtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5ndXR0ZXIudGV4dENvbG91cixcblx0XHQnZ3V0dGVyLWFjdGl2ZS10ZXh0LWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuZ3V0dGVyLmFjdGl2ZVRleHRDb2xvdXIsXG5cdFx0J2hlYWRlci1iYWNrZ3JvdW5kLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuaGVhZGVyLmJhY2tncm91bmRDb2xvdXIsXG5cdFx0J2hlYWRlci10aXRsZS10ZXh0LWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuaGVhZGVyLnRpdGxlLnRleHRDb2xvdXIsXG5cdFx0J2hlYWRlci1sYW5ndWFnZS10YWctYmFja2dyb3VuZC1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmhlYWRlci5sYW5ndWFnZVRhZy5iYWNrZ3JvdW5kQ29sb3VyLFxuXHRcdCdoZWFkZXItbGFuZ3VhZ2UtdGFnLXRleHQtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dENvbG91cixcblx0XHQnaGVhZGVyLXNlcGFyYXRvci1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmhlYWRlci5saW5lQ29sb3VyLFxuXHRcdCdhY3RpdmUtY29kZWJsb2NrLWxpbmUtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmVDb2xvdXIsXG5cdFx0J2FjdGl2ZS1lZGl0b3ItbGluZS1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmhpZ2hsaWdodHMuYWN0aXZlRWRpdG9yTGluZUNvbG91cixcblx0XHQnZGVmYXVsdC1oaWdobGlnaHQtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5oaWdobGlnaHRzLmRlZmF1bHRDb2xvdXIsXG5cdFx0J2J1dHRvbi1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmFkdmFuY2VkLmJ1dHRvbkNvbG91cixcblx0XHQnYnV0dG9uLWFjdGl2ZS1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmFkdmFuY2VkLmJ1dHRvbkFjdGl2ZUNvbG91cixcblx0XHQnaW5saW5lLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuaW5saW5lLnRleHRDb2xvdXIsXG5cdFx0J2lubGluZS1jb2xvdXItYWN0aXZlJzogdGhlbWVNb2RlQ29sb3Vycy5pbmxpbmUuYWN0aXZlVGV4dENvbG91cixcblx0XHQnaW5saW5lLWJhY2tncm91bmQtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5pbmxpbmUuYmFja2dyb3VuZENvbG91cixcblx0XHQnaW5saW5lLXRpdGxlLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuaW5saW5lLnRpdGxlVGV4dENvbG91cixcblx0XHQuLi5PYmplY3QuZW50cmllcyh0aGVtZU1vZGVDb2xvdXJzLmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzKS5yZWR1Y2UoKHJlc3VsdDogUmVjb3JkPHN0cmluZyxDb2xvdXI+LFthbHRlcm5hdGl2ZUhpZ2hsaWdodCxjb2xvdXJdOiBbc3RyaW5nLENvbG91cl0pOiBSZWNvcmQ8c3RyaW5nLENvbG91cj4gPT4ge1xuXHRcdFx0cmVzdWx0W2Ake2FsdGVybmF0aXZlSGlnaGxpZ2h0LnJlcGxhY2UoL1xccysvZywgJy0nKS50b0xvd2VyQ2FzZSgpfS1oaWdobGlnaHQtY29sb3VyYF0gPSBjb2xvdXI7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH0se30pXG5cdH0pLnJlZHVjZSgocmVzdWx0OiBzdHJpbmcsIFtjc3NWYXJpYWJsZSxjb2xvdXJdOiBbc3RyaW5nLENvbG91cl0pOiBzdHJpbmcgPT4ge1xuXHRcdGNvbnN0IHN0eWxlQ29sb3VyID0gaXNDc3MoY29sb3VyKT9gdmFyKCR7Y29sb3VyfSlgOmNvbG91cjtcblx0XHRyZXR1cm4gcmVzdWx0ICsgYC0tY29kZS1zdHlsZXItJHtjc3NWYXJpYWJsZX06ICR7c3R5bGVDb2xvdXJ9O2Bcblx0fSxgYClcbn1cblxuZnVuY3Rpb24gc3R5bGVUaGVtZVNldHRpbmdzICh0aGVtZVNldHRpbmdzOiBDb2RlU3R5bGVyVGhlbWVTZXR0aW5ncywgY3VycmVudFRoZW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gYFxuXHRcdGJvZHkuY29kZS1zdHlsZXIgW2NsYXNzXj1cImNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0ge1xuXHRcdFx0LS1jb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLXRleHQtYm9sZDogJHt0aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Qm9sZD8nYm9sZCc6J25vcm1hbCd9O1xuXHRcdFx0LS1jb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLXRleHQtaXRhbGljOiAke3RoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRJdGFsaWM/J2l0YWxpYyc6J25vcm1hbCd9O1xuXHRcdFx0Zm9udC1mYW1pbHk6ICR7dGhlbWVTZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEZvbnQhPT0nJz90aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Rm9udDondmFyKC0tZm9udC10ZXh0KSd9O1xuXHRcdH1cblx0XHRib2R5LmNvZGUtc3R5bGVyIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCB7XG5cdFx0XHQtLWNvZGUtc3R5bGVyLWhlYWRlci10aXRsZS10ZXh0LWJvbGQ6ICR7dGhlbWVTZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEJvbGQ/J2JvbGQnOidub3JtYWwnfTtcblx0XHRcdC0tY29kZS1zdHlsZXItaGVhZGVyLXRpdGxlLXRleHQtaXRhbGljOiAke3RoZW1lU2V0dGluZ3MuaGVhZGVyLnRpdGxlLnRleHRJdGFsaWM/J2l0YWxpYyc6J25vcm1hbCd9O1xuXHRcdFx0Zm9udC1mYW1pbHk6ICR7dGhlbWVTZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEZvbnQhPT0nJz90aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Rm9udDondmFyKC0tZm9udC10ZXh0KSd9O1xuXHRcdH1cblx0XHRib2R5LmNvZGUtc3R5bGVyIHtcblx0XHRcdC0tYm9yZGVyLXJhZGl1czogJHt0aGVtZVNldHRpbmdzLmNvZGVibG9jay5jdXJ2YXR1cmV9cHg7XG5cdFx0XHQtLWxhbmd1YWdlLWljb24tc2l6ZTogJHt0aGVtZVNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplfXB4O1xuXHRcdFx0LS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wOiAke3RoZW1lU2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzP3RoZW1lU2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzQ29sb3VyU3RvcDonMTAwJSd9O1xuXHRcdFx0LS1oZWFkZXItZm9udC1zaXplOiAke3RoZW1lU2V0dGluZ3MuaGVhZGVyLmZvbnRTaXplfXB4O1xuXHRcdFx0LS1saW5lLXdyYXBwaW5nOiAke3RoZW1lU2V0dGluZ3MuY29kZWJsb2NrLnVud3JhcExpbmVzPydwcmUnOidwcmUtd3JhcCd9O1xuXHRcdFx0LS1jb2RlLXN0eWxlci1pbmxpbmUtZm9udC13ZWlnaHQ6ICR7dGhlbWVTZXR0aW5ncy5pbmxpbmUuZm9udFdlaWdodH0wMDtcblx0XHRcdC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXM6ICR7dGhlbWVTZXR0aW5ncy5pbmxpbmUuY3VydmF0dXJlfXB4O1xuXHRcdFx0LS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy12ZXJ0aWNhbDogJHt0aGVtZVNldHRpbmdzLmlubGluZS5wYWRkaW5nVmVydGljYWx9cHg7XG5cdFx0XHQtLWNvZGUtc3R5bGVyLWlubGluZS1wYWRkaW5nLWhvcml6b250YWw6ICR7dGhlbWVTZXR0aW5ncy5pbmxpbmUucGFkZGluZ0hvcml6b250YWx9cHg7XG5cdFx0XHQtLWNvZGUtc3R5bGVyLWlubGluZS1tYXJnaW4taG9yaXpvbnRhbDogJHt0aGVtZVNldHRpbmdzLmlubGluZS5tYXJnaW5Ib3Jpem9udGFsfXB4O1xuXHRcdFx0LS1jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGUtZm9udC13ZWlnaHQ6ICR7dGhlbWVTZXR0aW5ncy5pbmxpbmUudGl0bGVGb250V2VpZ2h0fTAwO1xuXHRcdFx0JHshdGhlbWVTZXR0aW5ncy5jb2RlYmxvY2sud3JhcExpbmVzQWN0aXZlPycnOictLWxpbmUtYWN0aXZlLXdyYXBwaW5nOiBwcmUtd3JhcDsnfVxuXHRcdFx0JHt0aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheUNvbG91cj8nJzonLS1pY29uLWZpbHRlcjogZ3JheXNjYWxlKDEpOyd9XG5cdFx0fVxuXHRcdCR7VEhFTUVfU1RZTEVTPy5bY3VycmVudFRoZW1lXT8uYm9yZGVyP2Bcblx0XHRcdC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIHtcblx0XHRcdFx0LS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyOmArIC8vQHRzLWV4cGVjdC1lcnJvciBEb2VzIEV4aXN0XG5cdFx0XHRcdFx0VEhFTUVfU1RZTEVTW2N1cnJlbnRUaGVtZV0uYm9yZGVyLnN0eWxlK2A7XG5cdFx0XHRcdC0taGVhZGVyLXNlcGFyYXRvci13aWR0aC1wYWRkaW5nOiBjYWxjKHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpIC0gYCsgLy9AdHMtZXhwZWN0LWVycm9yIERvZXMgRXhpc3Rcblx0XHRcdFx0XHRUSEVNRV9TVFlMRVNbY3VycmVudFRoZW1lXS5ib3JkZXIuc2l6ZStgcHgpO1xuXHRcdFx0XHQtLWNvbGxhcHNlZC1ib3R0b20tYm9yZGVyOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcblx0XHRcdH1cblx0XHRgOicnfVxuXHRcdCR7VEhFTUVfU1RZTEVTPy5bY3VycmVudFRoZW1lXT8uZXh0cmE/VEhFTUVfU1RZTEVTW2N1cnJlbnRUaGVtZV0uZXh0cmE6Jyd9XG5cdGA7XG59XG5cbmZ1bmN0aW9uIHN0eWxlTGFuZ3VhZ2VDb2xvdXJzICh0aGVtZVNldHRpbmdzOiBDb2RlU3R5bGVyVGhlbWVTZXR0aW5ncywgcmVkaXJlY3RMYW5ndWFnZXM6IFJlY29yZDxzdHJpbmcse2NvbG91cj86IENvbG91ciwgaWNvbj86IHN0cmluZ30+LCBjdXJyZW50VGhlbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBPYmplY3QuZW50cmllcyhMQU5HVUFHRV9OQU1FUykucmVkdWNlKChyZXN1bHQ6IHN0cmluZyxbbGFuZ3VhZ2VOYW1lLCBsYW5ndWFnZURpc3BsYXlOYW1lXTogW3N0cmluZyxzdHJpbmddKTogc3RyaW5nID0+IHtcblx0XHRpZiAobGFuZ3VhZ2VEaXNwbGF5TmFtZSBpbiBMQU5HVUFHRV9DT0xPVVJTIHx8IChsYW5ndWFnZU5hbWUgaW4gcmVkaXJlY3RMYW5ndWFnZXMgJiYgJ2NvbG91cicgaW4gcmVkaXJlY3RMYW5ndWFnZXNbbGFuZ3VhZ2VOYW1lXSkpIHtcblx0XHRcdHJlc3VsdCArPSBgXG5cdFx0XHRcdC5sYW5ndWFnZS0ke2xhbmd1YWdlTmFtZX0ge1xuXHRcdFx0XHRcdC0tbGFuZ3VhZ2UtYm9yZGVyLWNvbG91cjogJHtyZWRpcmVjdExhbmd1YWdlcz8uW2xhbmd1YWdlTmFtZV0/LlsnY29sb3VyJ10gPz8gTEFOR1VBR0VfQ09MT1VSU1tsYW5ndWFnZURpc3BsYXlOYW1lXX07XG5cdFx0XHRcdFx0LS1sYW5ndWFnZS1ib3JkZXItd2lkdGg6ICR7dGhlbWVTZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlckNvbG91cj90aGVtZVNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyV2lkdGg6MH1weDtcblx0XHRcdFx0fVxuXHRcdFx0YDtcblx0XHRcdGlmIChUSEVNRV9TVFlMRVM/LltjdXJyZW50VGhlbWVdPy5ib3JkZXIpIHtcblx0XHRcdFx0cmVzdWx0ICs9IGBcblx0XHRcdFx0XHQubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXS5sYW5ndWFnZS0ke2xhbmd1YWdlTmFtZX0gIHtcblx0XHRcdFx0XHRcdC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoOiAkeyAvL0B0cy1leHBlY3QtZXJyb3IgRG9lcyBleGlzdFxuXHRcdFx0XHRcdFx0XHR0aGVtZVNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyQ29sb3VyP3RoZW1lU2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJXaWR0aCtUSEVNRV9TVFlMRVNbY3VycmVudFRoZW1lXS5ib3JkZXIuc2l6ZTowXG5cdFx0XHRcdFx0XHR9cHg7XG5cdFx0XHRcdFx0fWBcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSwnJylcbn1cblxuZnVuY3Rpb24gYWRkVGhlbWVTZXR0aW5nc0NsYXNzZXMgKHRoZW1lU2V0dGluZ3M6IENvZGVTdHlsZXJUaGVtZVNldHRpbmdzKTogdm9pZCB7XG5cdGlmICh0aGVtZVNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycylcblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlLXN0eWxlci1zaG93LWxpbmUtbnVtYmVyc1wiKTtcblx0ZWxzZVxuXHRcdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImNvZGUtc3R5bGVyLXNob3ctbGluZS1udW1iZXJzXCIpO1xuXG5cdGlmICh0aGVtZVNldHRpbmdzLmd1dHRlci5oaWdobGlnaHQpXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdjb2RlLXN0eWxlci1ndXR0ZXItaGlnaGxpZ2h0Jyk7XG5cdGVsc2Vcblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2NvZGUtc3R5bGVyLWd1dHRlci1oaWdobGlnaHQnKTtcblxuXHRpZiAodGhlbWVTZXR0aW5ncy5ndXR0ZXIuYWN0aXZlTGluZSlcblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2NvZGUtc3R5bGVyLWd1dHRlci1hY3RpdmUtbGluZScpO1xuXHRlbHNlXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdjb2RlLXN0eWxlci1ndXR0ZXItYWN0aXZlLWxpbmUnKTtcblx0XG5cdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodFwiLFwiY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LWNvZGVibG9ja1wiLFwiY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LWVkaXRvclwiKVxuXHRpZiAodGhlbWVTZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmUgJiYgdGhlbWVTZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmUpIC8vIEluc2lkZSBhbmQgb3V0c2lkZSBvZiBjb2RlYmxvY2tzIHdpdGggZGlmZmVyZW50IGNvbG91cnNcblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHRcIik7XG5cdGVsc2UgaWYgKHRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lICYmICF0aGVtZVNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZSkgLy8gT25seSBvdXRzaWRlIGNvZGVibG9ja3Ncblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQtZWRpdG9yXCIpO1xuXHRlbHNlIGlmICghdGhlbWVTZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmUgJiYgdGhlbWVTZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmUpIC8vIE9ubHkgaW5zaWRlIGNvZGVibG9ja3Ncblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQtY29kZWJsb2NrXCIpO1xuXHRcblx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXNcIixcImNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5c1wiKTtcblx0aWYgKHRoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXkgPT09ICdhbHdheXMnKVxuXHRcdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5c1wiKTtcblx0ZWxzZSBpZiAodGhlbWVTZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheSA9PT0gJ2lmX2hlYWRlcl9zaG93bicpXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXNcIik7XG5cblx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwiY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnNcIixcImNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5c1wiKTtcblx0aWYgKHRoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5ID09PSAnYWx3YXlzJylcblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXNcIik7XG5cdGVsc2UgaWYgKHRoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5ID09PSAnaWZfaGVhZGVyX3Nob3duJylcblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlLXN0eWxlci1zaG93LWxhbmdpY29uc1wiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVN0eWxlc0FuZENsYXNzZXMoKTogdm9pZCB7XG5cdGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFNUWUxFX0lEKT8ucmVtb3ZlKCk7XG5cdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcblx0XHQnY29kZS1zdHlsZXInLFxuXHRcdFwiY29kZS1zdHlsZXItc2hvdy1saW5lLW51bWJlcnNcIixcblx0XHQnY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCcsXG5cdFx0J2NvZGUtc3R5bGVyLWd1dHRlci1hY3RpdmUtbGluZScsXG5cdFx0XCJjb2RlLXN0eWxlci1zaG93LWxhbmduYW1lc1wiLFxuXHRcdFwiY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzXCIsXG5cdFx0XCJjb2RlLXN0eWxlci1zaG93LWxhbmdpY29uc1wiLFxuXHRcdFwiY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzXCIsXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRUaGVtZShhcHA6IEFwcCk6IHN0cmluZyB7XG5cdC8vQHRzLWV4cGVjdC1lcnJvciBVbmRvY3VtZW50ZWQgT2JzaWRpYW4gQVBJXG5cdHJldHVybiBhcHAudmF1bHQuZ2V0Q29uZmlnKFwiY3NzVGhlbWVcIik7XG59XG4iLCAiaW1wb3J0IHsgZWRpdG9yRWRpdG9yRmllbGQsIGVkaXRvckluZm9GaWVsZCwgZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgVmlld1BsdWdpbiwgRWRpdG9yVmlldywgVmlld1VwZGF0ZSwgRGVjb3JhdGlvbiwgRGVjb3JhdGlvblNldCwgV2lkZ2V0VHlwZSB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5pbXBvcnQgeyBFeHRlbnNpb24sIEVkaXRvclN0YXRlLCBTdGF0ZUZpZWxkLCBTdGF0ZUVmZmVjdCwgU3RhdGVFZmZlY3RUeXBlLCBSYW5nZSwgUmFuZ2VTZXRCdWlsZGVyLCBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TcGVjLCBMaW5lLCBTZWxlY3Rpb25SYW5nZSwgQW5ub3RhdGlvbiB9IGZyb20gXCJAY29kZW1pcnJvci9zdGF0ZVwiO1xuaW1wb3J0IHsgc3ludGF4VHJlZSwgdG9rZW5DbGFzc05vZGVQcm9wLCBMYW5ndWFnZVN1cHBvcnQgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2VcIjtcbmltcG9ydCB7IFN5bnRheE5vZGVSZWYgfSBmcm9tIFwiQGxlemVyL2NvbW1vblwiO1xuaW1wb3J0IHsgaGlnaGxpZ2h0VHJlZSwgY2xhc3NIaWdobGlnaHRlciB9IGZyb20gXCJAbGV6ZXIvaGlnaGxpZ2h0XCI7XG4vLyBpbXBvcnQgeyBsYW5ndWFnZXMgfSBmcm9tIFwiQGNvZGVtaXJyb3IvbGFuZ3VhZ2UtZGF0YVwiOyAvL05PVEU6IEZvciBmdXR1cmUgQ002IENvbXBhdGliaWxpdHlcblxuaW1wb3J0IHsgQ29kZVN0eWxlclNldHRpbmdzLCBDb2RlU3R5bGVyVGhlbWVTZXR0aW5ncyB9IGZyb20gXCIuL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBDb2RlYmxvY2tQYXJhbWV0ZXJzLCBwYXJzZUNvZGVibG9ja1BhcmFtZXRlcnMsIHRlc3RPcGVuaW5nTGluZSwgaXNFeGNsdWRlZCwgYXJyYXlzRXF1YWwsIHRyaW1QYXJhbWV0ZXJMaW5lLCBJbmxpbmVDb2RlUGFyYW1ldGVycywgcGFyc2VJbmxpbmVDb2RlIH0gZnJvbSBcIi4vQ29kZWJsb2NrUGFyc2luZ1wiO1xuaW1wb3J0IHsgY3JlYXRlSGVhZGVyLCBjcmVhdGVJbmxpbmVPcGVuZXIsIGdldExhbmd1YWdlSWNvbiwgZ2V0TGluZUNsYXNzIH0gZnJvbSBcIi4vQ29kZWJsb2NrRGVjb3JhdGluZ1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29kZWJsb2NrQ29kZU1pcnJvckV4dGVuc2lvbnMoc2V0dGluZ3M6IENvZGVTdHlsZXJTZXR0aW5ncywgbGFuZ3VhZ2VJY29uczogUmVjb3JkPHN0cmluZyxzdHJpbmc+KSB7XG5cdGNvbnN0IGNvZGVibG9ja0xpbmVOdW1iZXJDaGFyV2lkdGggPSBTdGF0ZUZpZWxkLmRlZmluZTxudW1iZXI+KHtcblx0XHRjcmVhdGUoc3RhdGU6IEVkaXRvclN0YXRlKTogbnVtYmVyIHtcblx0XHRcdHJldHVybiBnZXRDaGFyV2lkdGgoc3RhdGUsc3RhdGUuZmllbGQoZWRpdG9yRWRpdG9yRmllbGQpLmRlZmF1bHRDaGFyYWN0ZXJXaWR0aCk7XG5cdFx0fSxcblx0XHR1cGRhdGUodmFsdWU6IG51bWJlciwgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogbnVtYmVyIHtcblx0XHRcdHJldHVybiBnZXRDaGFyV2lkdGgodHJhbnNhY3Rpb24uc3RhdGUsdmFsdWUpO1xuXHRcdH1cblx0fSlcblx0Y29uc3QgY29kZWJsb2NrTGluZXMgPSBWaWV3UGx1Z2luLmZyb21DbGFzcyhcblx0XHRjbGFzcyBDb2RlYmxvY2tMaW5lcyB7XG5cdFx0XHRzZXR0aW5nczogQ29kZVN0eWxlclNldHRpbmdzO1xuXHRcdFx0Y3VycmVudFNldHRpbmdzOiB7XG5cdFx0XHRcdGV4Y2x1ZGVkQ29kZWJsb2Nrczogc3RyaW5nO1xuXHRcdFx0XHRleGNsdWRlZExhbmd1YWdlczogc3RyaW5nO1xuXHRcdFx0XHRjb2xsYXBzZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cdFx0XHRcdGFsdGVybmF0aXZlSGlnaGxpZ2h0czogQXJyYXk8c3RyaW5nPjtcblx0XHRcdH1cblx0XHRcdGRlY29yYXRpb25zOiBEZWNvcmF0aW9uU2V0O1xuXHRcdFx0bXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblx0XHRcblx0XHRcdGNvbnN0cnVjdG9yKHZpZXc6IEVkaXRvclZpZXcpIHtcblx0XHRcdFx0dGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuXHRcdFx0XHR0aGlzLmN1cnJlbnRTZXR0aW5ncyA9IHtcblx0XHRcdFx0XHRleGNsdWRlZENvZGVibG9ja3M6IHNldHRpbmdzLmV4Y2x1ZGVkQ29kZWJsb2Nrcyxcblx0XHRcdFx0XHRleGNsdWRlZExhbmd1YWdlczogc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXMsXG5cdFx0XHRcdFx0Y29sbGFwc2VQbGFjZWhvbGRlcjogJycsXG5cdFx0XHRcdFx0YWx0ZXJuYXRpdmVIaWdobGlnaHRzOiBbXSxcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0XHR0aGlzLmJ1aWxkRGVjb3JhdGlvbnModmlldyk7XG5cdFx0XHRcdHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHttdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb246IE11dGF0aW9uUmVjb3JkKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAobXV0YXRpb24udHlwZSA9PT0gXCJhdHRyaWJ1dGVzXCIgJiYgbXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gXCJjbGFzc1wiICYmIChcblx0XHRcdFx0XHRcdFx0KG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiSHlwZXJNRC1jb2RlYmxvY2stYmVnaW5cIikgfHxcblx0XHRcdFx0XHRcdFx0KG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiSHlwZXJNRC1jb2RlYmxvY2tfSHlwZXJNRC1jb2RlYmxvY2stYmdcIikgfHxcblx0XHRcdFx0XHRcdFx0KG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiSHlwZXJNRC1jb2RlYmxvY2stZW5kXCIpXG5cdFx0XHRcdFx0XHQpKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZm9yY2VVcGRhdGUodmlldyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh2aWV3LmNvbnRlbnRET00sICB7XG5cdFx0XHRcdFx0YXR0cmlidXRlczogdHJ1ZSxcblx0XHRcdFx0XHRjaGlsZExpc3Q6IHRydWUsXG5cdFx0XHRcdFx0c3VidHJlZTogdHJ1ZSxcblx0XHRcdFx0XHRhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnXSwgLy8gT25seSBvYnNlcnZlIGNoYW5nZXMgdG8gdGhlICdjbGFzcycgYXR0cmlidXRlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFxuXHRcdFx0Zm9yY2VVcGRhdGUodmlldzogRWRpdG9yVmlldykge1xuXHRcdFx0XHR0aGlzLmJ1aWxkRGVjb3JhdGlvbnModmlldyk7XG5cdFx0XHRcdHZpZXcucmVxdWVzdE1lYXN1cmUoKTtcblx0XHRcdH1cblx0XHRcblx0XHRcdHVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUpIHtcblx0XHRcdFx0aWYgKHVwZGF0ZS5kb2NDaGFuZ2VkIHx8IFxuXHRcdFx0XHRcdHVwZGF0ZS52aWV3cG9ydENoYW5nZWQgfHwgXG5cdFx0XHRcdFx0dXBkYXRlLnN0YXRlLmZpZWxkKGVkaXRvckxpdmVQcmV2aWV3RmllbGQpICE9PSB1cGRhdGUuc3RhcnRTdGF0ZS5maWVsZChlZGl0b3JMaXZlUHJldmlld0ZpZWxkKSB8fFxuXHRcdFx0XHRcdHRoaXMuc2V0dGluZ3MuZXhjbHVkZWRDb2RlYmxvY2tzICE9PSB0aGlzLmN1cnJlbnRTZXR0aW5ncy5leGNsdWRlZENvZGVibG9ja3MgfHxcblx0XHRcdFx0XHR0aGlzLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzICE9PSB0aGlzLmN1cnJlbnRTZXR0aW5ncy5leGNsdWRlZExhbmd1YWdlcyB8fFxuXHRcdFx0XHRcdHRoaXMuc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5jb2xsYXBzZVBsYWNlaG9sZGVyICE9PSB0aGlzLmN1cnJlbnRTZXR0aW5ncy5jb2xsYXBzZVBsYWNlaG9sZGVyIHx8XG5cdFx0XHRcdFx0IWFycmF5c0VxdWFsKE9iamVjdC5rZXlzKHRoaXMuc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMpLHRoaXMuY3VycmVudFNldHRpbmdzLmFsdGVybmF0aXZlSGlnaGxpZ2h0cylcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50U2V0dGluZ3MgPSBzdHJ1Y3R1cmVkQ2xvbmUoe1xuXHRcdFx0XHRcdFx0ZXhjbHVkZWRDb2RlYmxvY2tzOiB0aGlzLnNldHRpbmdzLmV4Y2x1ZGVkQ29kZWJsb2Nrcyxcblx0XHRcdFx0XHRcdGV4Y2x1ZGVkTGFuZ3VhZ2VzOiB0aGlzLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzLFxuXHRcdFx0XHRcdFx0Y29sbGFwc2VQbGFjZWhvbGRlcjogdGhpcy5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmNvbGxhcHNlUGxhY2Vob2xkZXIsXG5cdFx0XHRcdFx0XHRhbHRlcm5hdGl2ZUhpZ2hsaWdodHM6IE9iamVjdC5rZXlzKHRoaXMuc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRoaXMuYnVpbGREZWNvcmF0aW9ucyh1cGRhdGUudmlldyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcblx0XHRcdGJ1aWxkRGVjb3JhdGlvbnModmlldzogRWRpdG9yVmlldykge1xuXHRcdFx0XHRpZiAoIXZpZXc/LnZpc2libGVSYW5nZXM/Lmxlbmd0aCB8fCBlZGl0aW5nVmlld0lnbm9yZSh2aWV3LnN0YXRlKSkge1xuXHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSBEZWNvcmF0aW9uLm5vbmU7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGJ1aWxkZXIgPSBuZXcgUmFuZ2VTZXRCdWlsZGVyPERlY29yYXRpb24+KCk7XG5cdFx0XHRcdGNvbnN0IGNvZGVibG9ja3MgPSBmaW5kVW5kdXBsaWNhdGVkQ29kZWJsb2Nrcyh2aWV3KTtcblx0XHRcdFx0Zm9yIChjb25zdCBjb2RlYmxvY2sgb2YgY29kZWJsb2Nrcykge1xuXHRcdFx0XHRcdGxldCBjb2RlYmxvY2tQYXJhbWV0ZXJzOiBDb2RlYmxvY2tQYXJhbWV0ZXJzO1xuXHRcdFx0XHRcdGxldCBleGNsdWRlZENvZGVibG9jazogYm9vbGVhbiA9IGZhbHNlO1xuXHRcdFx0XHRcdGxldCBsaW5lTnVtYmVyOiBudW1iZXIgPSAwO1xuXHRcdFx0XHRcdGxldCBtYXhMaW5lTnVtOiBudW1iZXIgPSAwO1xuXHRcdFx0XHRcdGxldCBsaW5lTnVtYmVyTWFyZ2luOiBudW1iZXIgfCB1bmRlZmluZWQgPSAwO1xuXHRcdFx0XHRcdHN5bnRheFRyZWUodmlldy5zdGF0ZSkuaXRlcmF0ZSh7ZnJvbTogY29kZWJsb2NrLmZyb20sIHRvOiBjb2RlYmxvY2sudG8sXG5cdFx0XHRcdFx0XHRlbnRlcjogKHN5bnRheE5vZGUpPT57XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGxpbmUgPSB2aWV3LnN0YXRlLmRvYy5saW5lQXQoc3ludGF4Tm9kZS5mcm9tKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbGluZVRleHQgPSB2aWV3LnN0YXRlLnNsaWNlRG9jKGxpbmUuZnJvbSxsaW5lLnRvKTtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc3RhcnRMaW5lID0gc3ludGF4Tm9kZS50eXBlLm5hbWUuaW5jbHVkZXMoXCJIeXBlck1ELWNvZGVibG9jay1iZWdpblwiKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZW5kTGluZSA9IHN5bnRheE5vZGUudHlwZS5uYW1lLmluY2x1ZGVzKFwiSHlwZXJNRC1jb2RlYmxvY2stZW5kXCIpO1xuXHRcdFx0XHRcdFx0XHRpZiAoc3RhcnRMaW5lKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycyA9IHBhcnNlQ29kZWJsb2NrUGFyYW1ldGVycyh0cmltUGFyYW1ldGVyTGluZShsaW5lVGV4dCksdGhpcy5zZXR0aW5ncy5jdXJyZW50VGhlbWUpO1xuXHRcdFx0XHRcdFx0XHRcdGV4Y2x1ZGVkQ29kZWJsb2NrID0gaXNFeGNsdWRlZChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlLFt0aGlzLnNldHRpbmdzLmV4Y2x1ZGVkQ29kZWJsb2Nrcyx0aGlzLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzXS5qb2luKCcsJykpIHx8IGNvZGVibG9ja1BhcmFtZXRlcnMuaWdub3JlO1xuXHRcdFx0XHRcdFx0XHRcdGxpbmVOdW1iZXIgPSAwO1xuXHRcdFx0XHRcdFx0XHRcdGxldCBsaW5lTnVtYmVyQ291bnQgPSBsaW5lLm51bWJlciArIDE7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHN0YXJ0RGVsaW1pdGVyID0gdGVzdE9wZW5pbmdMaW5lKGxpbmVUZXh0KTtcblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAoc3RhcnREZWxpbWl0ZXIgIT09IHRlc3RPcGVuaW5nTGluZSh2aWV3LnN0YXRlLmRvYy5saW5lKGxpbmVOdW1iZXJDb3VudCkudGV4dCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGxpbmVOdW1iZXJDb3VudCArPSAxO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRtYXhMaW5lTnVtID0gbGluZU51bWJlckNvdW50IC0gbGluZS5udW1iZXIgLSAxICsgY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5vZmZzZXQ7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG1heExpbmVOdW0udG9TdHJpbmcoKS5sZW5ndGggPiAyKVxuXHRcdFx0XHRcdFx0XHRcdFx0bGluZU51bWJlck1hcmdpbiA9IG1heExpbmVOdW0udG9TdHJpbmcoKS5sZW5ndGggKiB2aWV3LnN0YXRlLmZpZWxkKGNvZGVibG9ja0xpbmVOdW1iZXJDaGFyV2lkdGgpO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdGxpbmVOdW1iZXJNYXJnaW4gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKGV4Y2x1ZGVkQ29kZWJsb2NrKVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0aWYgKHN5bnRheE5vZGUudHlwZS5uYW1lLmluY2x1ZGVzKFwiSHlwZXJNRC1jb2RlYmxvY2tcIikpIHtcblx0XHRcdFx0XHRcdFx0XHRidWlsZGVyLmFkZChzeW50YXhOb2RlLmZyb20sc3ludGF4Tm9kZS5mcm9tLERlY29yYXRpb24ubGluZSh7YXR0cmlidXRlczoge3N0eWxlOiBgLS1saW5lLW51bWJlci1ndXR0ZXItd2lkdGg6ICR7bGluZU51bWJlck1hcmdpbj9saW5lTnVtYmVyTWFyZ2luKydweCc6J2NhbGModmFyKC0tbGluZS1udW1iZXItZ3V0dGVyLW1pbi13aWR0aCkgLSAxMnB4KSd9YCwgY2xhc3M6ICh0aGlzLnNldHRpbmdzLnNwZWNpYWxMYW5ndWFnZXMuc29tZShyZWdFeHAgPT4gbmV3IFJlZ0V4cChyZWdFeHApLnRlc3QoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSkpfHxzdGFydExpbmV8fGVuZExpbmU/J2NvZGUtc3R5bGVyLWxpbmUnOmdldExpbmVDbGFzcyhjb2RlYmxvY2tQYXJhbWV0ZXJzLGxpbmVOdW1iZXIsbGluZS50ZXh0KS5qb2luKCcgJykpKyhbXCJeJFwiXS5jb25jYXQodGhpcy5zZXR0aW5ncy5zcGVjaWFsTGFuZ3VhZ2VzKS5zb21lKHJlZ0V4cCA9PiBuZXcgUmVnRXhwKHJlZ0V4cCkudGVzdChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlKSk/Jyc6YCBsYW5ndWFnZS0ke2NvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2V9YCl9fSkpO1xuXHRcdFx0XHRcdFx0XHRcdGJ1aWxkZXIuYWRkKHN5bnRheE5vZGUuZnJvbSxzeW50YXhOb2RlLmZyb20sRGVjb3JhdGlvbi5saW5lKHt9KSk7XG5cdFx0XHRcdFx0XHRcdFx0YnVpbGRlci5hZGQoc3ludGF4Tm9kZS5mcm9tLHN5bnRheE5vZGUuZnJvbSxEZWNvcmF0aW9uLndpZGdldCh7d2lkZ2V0OiBuZXcgTGluZU51bWJlcldpZGdldChsaW5lTnVtYmVyLGNvZGVibG9ja1BhcmFtZXRlcnMsbWF4TGluZU51bSxzdGFydExpbmV8fGVuZExpbmUpfSkpO1xuXHRcdFx0XHRcdFx0XHRcdGxpbmVOdW1iZXIrKztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH1cblx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IGJ1aWxkZXIuZmluaXNoKCk7XG5cdFx0XHR9XG5cdFx0XG5cdFx0XHRkZXN0cm95KCkge1xuXHRcdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0ZGVjb3JhdGlvbnM6ICh2YWx1ZSkgPT4gdmFsdWUuZGVjb3JhdGlvbnMsXG5cdFx0XHRwcm92aWRlOiAocGx1Z2luKSA9PiBFZGl0b3JWaWV3LmF0b21pY1Jhbmdlcy5vZigodmlldyk9PnZpZXcuc3RhdGUuZmllbGQoY29kZWJsb2NrQ29sbGFwc2UpIHx8IERlY29yYXRpb24ubm9uZSksXG5cdFx0fVxuXHQpO1xuXHRjb25zdCBjb2RlYmxvY2tIZWFkZXIgPSBTdGF0ZUZpZWxkLmRlZmluZTxEZWNvcmF0aW9uU2V0Pih7XG5cdFx0Y3JlYXRlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IERlY29yYXRpb25TZXQge1xuXHRcdFx0cmV0dXJuIERlY29yYXRpb24ubm9uZTsgICAgXG5cdFx0fSxcblx0XHR1cGRhdGUodmFsdWU6IERlY29yYXRpb25TZXQsIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IERlY29yYXRpb25TZXQge1xuXHRcdFx0aWYgKGVkaXRpbmdWaWV3SWdub3JlKHRyYW5zYWN0aW9uLnN0YXRlKSlcblx0XHRcdFx0cmV0dXJuIERlY29yYXRpb24ubm9uZTtcblx0XHRcdGNvbnN0IGJ1aWxkZXIgPSBuZXcgUmFuZ2VTZXRCdWlsZGVyPERlY29yYXRpb24+KCk7XG5cdFx0XHRsZXQgY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycztcblx0XHRcdGxldCBzdGFydExpbmU6IGJvb2xlYW4gPSB0cnVlO1xuXHRcdFx0bGV0IHN0YXJ0RGVsaW1pdGVyOiBzdHJpbmcgPSAnYGBgJztcblx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgdHJhbnNhY3Rpb24uc3RhdGUuZG9jLmxpbmVzOyBpKyspIHtcblx0XHRcdFx0Y29uc3QgbGluZSA9IHRyYW5zYWN0aW9uLnN0YXRlLmRvYy5saW5lKGkpO1xuXHRcdFx0XHRjb25zdCBsaW5lVGV4dCA9IGxpbmUudGV4dC50b1N0cmluZygpO1xuXHRcdFx0XHRsZXQgY3VycmVudERlbGltaXRlciA9IHRlc3RPcGVuaW5nTGluZShsaW5lVGV4dCk7XG5cdFx0XHRcdGlmIChjdXJyZW50RGVsaW1pdGVyKSB7XG5cdFx0XHRcdFx0aWYgKHN0YXJ0TGluZSkge1xuXHRcdFx0XHRcdFx0c3RhcnRMaW5lID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRzdGFydERlbGltaXRlciA9IGN1cnJlbnREZWxpbWl0ZXI7XG5cdFx0XHRcdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzID0gcGFyc2VDb2RlYmxvY2tQYXJhbWV0ZXJzKHRyaW1QYXJhbWV0ZXJMaW5lKGxpbmVUZXh0KSxzZXR0aW5ncy5jdXJyZW50VGhlbWUpO1xuXHRcdFx0XHRcdFx0aWYgKCFpc0V4Y2x1ZGVkKGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UsW3NldHRpbmdzLmV4Y2x1ZGVkQ29kZWJsb2NrcyxzZXR0aW5ncy5leGNsdWRlZExhbmd1YWdlc10uam9pbignLCcpKSAmJiAhY29kZWJsb2NrUGFyYW1ldGVycy5pZ25vcmUpXG5cdFx0XHRcdFx0XHRcdGlmICghc2V0dGluZ3Muc3BlY2lhbExhbmd1YWdlcy5zb21lKHJlZ0V4cCA9PiBuZXcgUmVnRXhwKHJlZ0V4cCkudGVzdChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlKSkpXG5cdFx0XHRcdFx0XHRcdFx0YnVpbGRlci5hZGQobGluZS5mcm9tLGxpbmUuZnJvbSxEZWNvcmF0aW9uLndpZGdldCh7d2lkZ2V0OiBuZXcgSGVhZGVyV2lkZ2V0KGNvZGVibG9ja1BhcmFtZXRlcnMsc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLGxhbmd1YWdlSWNvbnMpLCBibG9jazogdHJ1ZSwgc2lkZTogLTF9KSk7XG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnREZWxpbWl0ZXIgPT09IHN0YXJ0RGVsaW1pdGVyKVxuXHRcdFx0XHRcdFx0XHRzdGFydExpbmUgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGJ1aWxkZXIuZmluaXNoKCk7XG5cdFx0fSxcblx0XHRwcm92aWRlKGZpZWxkOiBTdGF0ZUZpZWxkPERlY29yYXRpb25TZXQ+KTogRXh0ZW5zaW9uIHtcblx0XHRcdHJldHVybiBFZGl0b3JWaWV3LmRlY29yYXRpb25zLmZyb20oZmllbGQpO1xuXHRcdH1cblx0fSlcblx0Y29uc3QgY29kZWJsb2NrQ29sbGFwc2UgPSBTdGF0ZUZpZWxkLmRlZmluZTxEZWNvcmF0aW9uU2V0Pih7XG5cdFx0Y3JlYXRlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IERlY29yYXRpb25TZXQge1xuXHRcdFx0aWYgKGVkaXRpbmdWaWV3SWdub3JlKHN0YXRlKSlcblx0XHRcdFx0cmV0dXJuIERlY29yYXRpb24ubm9uZTtcblx0XHRcdGNvbnN0IGJ1aWxkZXIgPSBuZXcgUmFuZ2VTZXRCdWlsZGVyPERlY29yYXRpb24+KCk7XG5cdFx0XHRsZXQgY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycztcblx0XHRcdGxldCBjb2xsYXBzZVN0YXJ0OiBMaW5lIHwgbnVsbCA9IG51bGw7XG5cdFx0XHRsZXQgY29sbGFwc2VFbmQ6IExpbmUgfCBudWxsID0gbnVsbDtcblx0XHRcdGxldCBzdGFydExpbmU6IGJvb2xlYW4gPSB0cnVlO1xuXHRcdFx0bGV0IHN0YXJ0RGVsaW1pdGVyOiBzdHJpbmcgPSAnYGBgJztcblx0XHRcdGZvciAobGV0IGkgPSAxOyBpIDwgc3RhdGUuZG9jLmxpbmVzOyBpKyspIHtcblx0XHRcdFx0Y29uc3QgbGluZSA9IHN0YXRlLmRvYy5saW5lKGkpO1xuXHRcdFx0XHRjb25zdCBsaW5lVGV4dCA9IGxpbmUudGV4dC50b1N0cmluZygpO1xuXHRcdFx0XHRsZXQgY3VycmVudERlbGltaXRlciA9IHRlc3RPcGVuaW5nTGluZShsaW5lVGV4dCk7XG5cdFx0XHRcdGlmIChjdXJyZW50RGVsaW1pdGVyKSB7XG5cdFx0XHRcdFx0aWYgKHN0YXJ0TGluZSkge1xuXHRcdFx0XHRcdFx0c3RhcnRMaW5lID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRzdGFydERlbGltaXRlciA9IGN1cnJlbnREZWxpbWl0ZXI7XG5cdFx0XHRcdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzID0gcGFyc2VDb2RlYmxvY2tQYXJhbWV0ZXJzKHRyaW1QYXJhbWV0ZXJMaW5lKGxpbmVUZXh0KSxzZXR0aW5ncy5jdXJyZW50VGhlbWUpO1xuXHRcdFx0XHRcdFx0aWYgKCFpc0V4Y2x1ZGVkKGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UsW3NldHRpbmdzLmV4Y2x1ZGVkQ29kZWJsb2NrcyxzZXR0aW5ncy5leGNsdWRlZExhbmd1YWdlc10uam9pbignLCcpKSAmJiAhY29kZWJsb2NrUGFyYW1ldGVycy5pZ25vcmUgJiYgY29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLmVuYWJsZWQpXG5cdFx0XHRcdFx0XHRcdGlmICghc2V0dGluZ3Muc3BlY2lhbExhbmd1YWdlcy5zb21lKHJlZ0V4cCA9PiBuZXcgUmVnRXhwKHJlZ0V4cCkudGVzdChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlKSkpXG5cdFx0XHRcdFx0XHRcdFx0Y29sbGFwc2VTdGFydCA9IGxpbmU7XG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnREZWxpbWl0ZXIgPT09IHN0YXJ0RGVsaW1pdGVyKSB7XG5cdFx0XHRcdFx0XHRcdHN0YXJ0TGluZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdGlmIChjb2xsYXBzZVN0YXJ0KVxuXHRcdFx0XHRcdFx0XHRcdGNvbGxhcHNlRW5kID0gbGluZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGNvbGxhcHNlU3RhcnQgJiYgY29sbGFwc2VFbmQpIHtcblx0XHRcdFx0XHRidWlsZGVyLmFkZChjb2xsYXBzZVN0YXJ0LmZyb20sY29sbGFwc2VFbmQudG8sRGVjb3JhdGlvbi5yZXBsYWNlKHtlZmZlY3Q6IGNvbGxhcHNlLm9mKERlY29yYXRpb24ucmVwbGFjZSh7YmxvY2s6IHRydWV9KS5yYW5nZShjb2xsYXBzZVN0YXJ0LmZyb20sY29sbGFwc2VFbmQudG8pKSwgYmxvY2s6IHRydWUsIGluY2x1c2l2ZTogdHJ1ZX0pKTtcblx0XHRcdFx0XHRjb2xsYXBzZVN0YXJ0ID0gbnVsbDtcblx0XHRcdFx0XHRjb2xsYXBzZUVuZCA9IG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBidWlsZGVyLmZpbmlzaCgpO1xuXHRcdH0sXG5cdFx0dXBkYXRlKHZhbHVlOiBEZWNvcmF0aW9uU2V0LCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBEZWNvcmF0aW9uU2V0IHtcblx0XHRcdHZhbHVlID0gdmFsdWUubWFwKHRyYW5zYWN0aW9uLmNoYW5nZXMpO1xuXHRcdFx0Zm9yIChjb25zdCBlZmZlY3Qgb2YgdHJhbnNhY3Rpb24uZWZmZWN0cykge1xuXHRcdFx0XHRpZiAoZWZmZWN0LmlzKGNvbGxhcHNlKSlcblx0XHRcdFx0XHR2YWx1ZSA9IHZhbHVlLnVwZGF0ZSh7YWRkOiBbZWZmZWN0LnZhbHVlXSwgc29ydDogdHJ1ZX0pO1xuXHRcdFx0XHRlbHNlIGlmIChlZmZlY3QuaXModW5jb2xsYXBzZSkpXG5cdFx0XHRcdFx0dmFsdWUgPSB2YWx1ZS51cGRhdGUoe2ZpbHRlckZyb206IGVmZmVjdC52YWx1ZS5maWx0ZXJGcm9tLCBmaWx0ZXJUbzogZWZmZWN0LnZhbHVlLmZpbHRlclRvLCBmaWx0ZXI6IGVmZmVjdC52YWx1ZS5maWx0ZXJ9KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9LFxuXHRcdHByb3ZpZGUoZmllbGQ6IFN0YXRlRmllbGQ8RGVjb3JhdGlvblNldD4pOiBFeHRlbnNpb24ge1xuXHRcdFx0cmV0dXJuIEVkaXRvclZpZXcuZGVjb3JhdGlvbnMuZnJvbShmaWVsZCk7XG5cdFx0fSxcblx0fSlcblx0Y29uc3QgdGVtcG9yYXJpbHlVbmNvbGxhcHNlZCA9IFN0YXRlRmllbGQuZGVmaW5lPERlY29yYXRpb25TZXQ+KHtcblx0XHRjcmVhdGUoc3RhdGU6IEVkaXRvclN0YXRlKTogRGVjb3JhdGlvblNldCB7XG5cdFx0XHRyZXR1cm4gRGVjb3JhdGlvbi5ub25lO1xuXHRcdH0sXG5cdFx0dXBkYXRlKHZhbHVlOiBEZWNvcmF0aW9uU2V0LCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBEZWNvcmF0aW9uU2V0IHtcblx0XHRcdHZhbHVlID0gdmFsdWUubWFwKHRyYW5zYWN0aW9uLmNoYW5nZXMpO1xuXHRcdFx0Y29uc3QgdW5jb2xsYXBzZUFubm90YXRpb24gPSB0cmFuc2FjdGlvbi5hbm5vdGF0aW9uKHRlbXBvcmFyeVVuY29sbGFwc2VBbm5vdGF0aW9uKTtcblx0XHRcdGlmICh1bmNvbGxhcHNlQW5ub3RhdGlvbikge1xuXHRcdFx0XHRpZiAodW5jb2xsYXBzZUFubm90YXRpb24udW5jb2xsYXBzZSlcblx0XHRcdFx0XHR2YWx1ZSA9IHZhbHVlLnVwZGF0ZSh7YWRkOiBbdW5jb2xsYXBzZUFubm90YXRpb24uZGVjb3JhdGlvblJhbmdlXSwgc29ydDogdHJ1ZX0pO1xuXHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0dmFsdWUgPSB2YWx1ZS51cGRhdGUoe2ZpbHRlckZyb206IHVuY29sbGFwc2VBbm5vdGF0aW9uLmRlY29yYXRpb25SYW5nZS5mcm9tLCBmaWx0ZXJUbzogdW5jb2xsYXBzZUFubm90YXRpb24uZGVjb3JhdGlvblJhbmdlLnRvLCBmaWx0ZXI6IChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIsIHZhbHVlOiBEZWNvcmF0aW9uKT0+IShmcm9tID09PSB1bmNvbGxhcHNlQW5ub3RhdGlvbi5kZWNvcmF0aW9uUmFuZ2UuZnJvbSAmJiB0byA9PT0gdW5jb2xsYXBzZUFubm90YXRpb24uZGVjb3JhdGlvblJhbmdlLnRvKX0pO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblx0fSlcblx0Y29uc3QgaW5saW5lQ29kZURlY29yYXRvciA9IFZpZXdQbHVnaW4uZnJvbUNsYXNzKFxuXHRcdGNsYXNzIElubGluZUNvZGVEZWNvcmF0aW9uIHtcblx0XHRcdGRlY29yYXRpb25zOiBEZWNvcmF0aW9uU2V0O1xuXHRcdFx0c2V0dGluZ3M6IENvZGVTdHlsZXJTZXR0aW5ncztcblx0XHRcdHN5bnRheEhpZ2hsaWdodDogYm9vbGVhbjtcblx0XHRcdC8vIGxvYWRlZExhbmd1YWdlczogUmVjb3JkPHN0cmluZyxMYW5ndWFnZVN1cHBvcnQ+OyAvL05PVEU6IEZvciBmdXR1cmUgQ002IENvbXBhdGliaWxpdHlcblxuXHRcdFx0Y29uc3RydWN0b3IodmlldzogRWRpdG9yVmlldykge1xuXHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0XHR0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XG5cdFx0XHRcdHRoaXMuc3ludGF4SGlnaGxpZ2h0ID0gc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5zeW50YXhIaWdobGlnaHQ7XG5cdFx0XHRcdHRoaXMuYnVpbGREZWNvcmF0aW9ucyh2aWV3KTtcblx0XHRcdFx0Ly8gdGhpcy5sb2FkZWRMYW5ndWFnZXMgPSB7fTsgLy9OT1RFOiBGb3IgZnV0dXJlIENNNiBDb21wYXRpYmlsaXR5XG5cdFx0XHR9XG5cblx0XHRcdHVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUpIHtcblx0XHRcdFx0aWYgKHVwZGF0ZS5kb2NDaGFuZ2VkIHx8IHVwZGF0ZS52aWV3cG9ydENoYW5nZWQgfHwgdXBkYXRlLnNlbGVjdGlvblNldCB8fCB1cGRhdGUuc3RhdGUuZmllbGQoZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCkhPT11cGRhdGUuc3RhcnRTdGF0ZS5maWVsZChlZGl0b3JMaXZlUHJldmlld0ZpZWxkKSB8fCB0aGlzLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuc3ludGF4SGlnaGxpZ2h0ICE9PSB0aGlzLnN5bnRheEhpZ2hsaWdodCkge1xuXHRcdFx0XHRcdGlmICh0aGlzLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuc3ludGF4SGlnaGxpZ2h0ICE9PSB0aGlzLnN5bnRheEhpZ2hsaWdodClcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuc3ludGF4SGlnaGxpZ2h0KVxuXHRcdFx0XHRcdHRoaXMuc3ludGF4SGlnaGxpZ2h0ID0gdGhpcy5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnN5bnRheEhpZ2hsaWdodDtcblx0XHRcdFx0XHRpZiAodXBkYXRlLmRvY0NoYW5nZWQpIFxuXHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMubWFwKHVwZGF0ZS5jaGFuZ2VzKTtcblx0XHRcdFx0XHR0aGlzLmJ1aWxkRGVjb3JhdGlvbnModXBkYXRlLnZpZXcpO1xuXHRcdFx0XHQvL05PVEU6IEZvciBmdXR1cmUgQ002IENvbXBhdGliaWxpdHlcblx0XHRcdFx0Ly8gXHRjb25zdCB0b0hpZ2hsaWdodCA9IHRoaXMuYnVpbGREZWNvcmF0aW9ucyh1cGRhdGUudmlldyk7XG5cdFx0XHRcdC8vIFx0dG9IaWdobGlnaHQuZm9yRWFjaCgoaGlnaGxpZ2h0U2V0KT0+e1xuXHRcdFx0XHQvLyBcdFx0aWYgKCFoaWdobGlnaHRTZXQ/Lmxhbmd1YWdlKVxuXHRcdFx0XHQvLyBcdFx0XHRyZXR1cm47XG5cdFx0XHRcdC8vIFx0XHRpZiAoaGlnaGxpZ2h0U2V0Lmxhbmd1YWdlIGluIHRoaXMubG9hZGVkTGFuZ3VhZ2VzKSB7XG5cdFx0XHRcdC8vIFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLnVwZGF0ZSh7YWRkOiBsYW5ndWFnZUhpZ2hsaWdodChoaWdobGlnaHRTZXQpfSk7XG5cdFx0XHRcdC8vIFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBcdFx0XHRjb25zdCBsYW5ndWFnZURlc2NyaXB0aW9uID0gTGFuZ3VhZ2VEZXNjcmlwdGlvbi5tYXRjaExhbmd1YWdlTmFtZShsYW5ndWFnZXMsaGlnaGxpZ2h0U2V0Lmxhbmd1YWdlKTtcblx0XHRcdFx0Ly8gXHRcdFx0aWYgKCFsYW5ndWFnZURlc2NyaXB0aW9uKVxuXHRcdFx0XHQvLyBcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0Ly8gXHRcdFx0bGFuZ3VhZ2VEZXNjcmlwdGlvbi5sb2FkKCkudGhlbigobGFuZ3VhZ2VTdXBwb3J0KT0+e1xuXHRcdFx0XHQvLyBcdFx0XHRcdHRoaXMubG9hZGVkTGFuZ3VhZ2VzW2hpZ2hsaWdodFNldC5sYW5ndWFnZV0gPSBsYW5ndWFnZVN1cHBvcnQ7XG5cdFx0XHRcdC8vIFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goe30pO1xuXHRcdFx0XHQvLyBcdFx0XHRcdHVwZGF0ZS52aWV3LmRpc3BhdGNoKHthbm5vdGF0aW9uczogc3ludGF4SGlnaGxpZ2h0RGVjb3JhdGlvbnMub2YobWFya0RlY29yYXRpb25zKX0pXG5cdFx0XHRcdC8vIFx0XHRcdH0pO1xuXHRcdFx0XHQvLyBcdFx0fVxuXHRcdFx0XHQvLyBcdH0pO1xuXHRcdFx0XHQvLyB9IGVsc2Uge1xuXHRcdFx0XHQvLyBcdHVwZGF0ZS50cmFuc2FjdGlvbnMuZm9yRWFjaCgodHJhbnNhY3Rpb24pPT57XG5cdFx0XHRcdC8vIFx0XHRjb25zdCBtYXJrRGVjb3JhdGlvbnMgPSB0cmFuc2FjdGlvbi5hbm5vdGF0aW9uKHN5bnRheEhpZ2hsaWdodERlY29yYXRpb25zKTtcblx0XHRcdFx0Ly8gXHRcdGlmIChtYXJrRGVjb3JhdGlvbnMpXG5cdFx0XHRcdC8vIFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLnVwZGF0ZSh7YWRkOiBtYXJrRGVjb3JhdGlvbnN9KVxuXHRcdFx0XHQvLyBcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGJ1aWxkRGVjb3JhdGlvbnModmlldzogRWRpdG9yVmlldyk6IHZvaWQgeyAvL0FycmF5PHtzdGFydDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmd9PiAvL05PVEU6IEZvciBmdXR1cmUgQ002IENvbXBhdGliaWxpdHlcblx0XHRcdFx0aWYgKCF2aWV3Py52aXNpYmxlUmFuZ2VzPy5sZW5ndGggfHwgZWRpdGluZ1ZpZXdJZ25vcmUodmlldy5zdGF0ZSkpIHtcblx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHQvLyByZXR1cm4gW107Ly9OT1RFOiBGb3IgZnV0dXJlIENNNiBDb21wYXRpYmlsaXR5XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gbGV0IHRvSGlnaGxpZ2h0OiBBcnJheTx7c3RhcnQ6IG51bWJlciwgdGV4dDogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nfT4gPSBbXTsgLy9OT1RFOiBGb3IgZnV0dXJlIENNNiBDb21wYXRpYmlsaXR5XG5cdFx0XHRcdGZvciAoY29uc3Qge2Zyb20sdG99IG9mIHZpZXcudmlzaWJsZVJhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICBzeW50YXhUcmVlKHZpZXcuc3RhdGUpLml0ZXJhdGUoe2Zyb206IGZyb20sIHRvOiB0byxcblx0XHRcdFx0XHRcdGVudGVyOiAoc3ludGF4Tm9kZSk9PntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gbmV3IFNldChzeW50YXhOb2RlLm5vZGUudHlwZS5wcm9wPHN0cmluZz4odG9rZW5DbGFzc05vZGVQcm9wKT8uc3BsaXQoXCIgXCIpKTtcblx0XHRcdFx0XHRcdFx0aWYgKCEocHJvcGVydGllcy5oYXMoXCJpbmxpbmUtY29kZVwiKSAmJiAhcHJvcGVydGllcy5oYXMoXCJmb3JtYXR0aW5nXCIpKSlcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdGxldCBwcmV2aW91c1NpYmxpbmcgPSBzeW50YXhOb2RlLm5vZGUucHJldlNpYmxpbmc7XG5cdFx0XHRcdFx0XHRcdGlmICghcHJldmlvdXNTaWJsaW5nKVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0bGV0IGRlbGltaXRlclNpemUgPSBwcmV2aW91c1NpYmxpbmcudG8tcHJldmlvdXNTaWJsaW5nLmZyb207XG5cdFx0XHRcdFx0XHRcdGxldCBpbmxpbmVDb2RlVGV4dCA9IHZpZXcuc3RhdGUuZG9jLnNsaWNlU3RyaW5nKHN5bnRheE5vZGUuZnJvbSwgc3ludGF4Tm9kZS50byk7XG5cdFx0XHRcdFx0XHRcdGxldCB7cGFyYW1ldGVycyx0ZXh0fSA9IHBhcnNlSW5saW5lQ29kZShpbmxpbmVDb2RlVGV4dCk7XG5cdFx0XHRcdFx0XHRcdGxldCBlbmRPZlBhcmFtZXRlcnMgPSBpbmxpbmVDb2RlVGV4dC5sYXN0SW5kZXhPZih0ZXh0KTtcblx0XHRcdFx0XHRcdFx0aWYgKCFwYXJhbWV0ZXJzKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHRleHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh2aWV3LnN0YXRlLnNlbGVjdGlvbi5yYW5nZXMuc29tZSgocmFuZ2U6IFNlbGVjdGlvblJhbmdlKT0+cmFuZ2UudG8gPj0gc3ludGF4Tm9kZS5mcm9tLWRlbGltaXRlclNpemUgJiYgcmFuZ2UuZnJvbSA8PSBzeW50YXhOb2RlLnRvK2RlbGltaXRlclNpemUpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gdGhpcy5kZWNvcmF0aW9ucy51cGRhdGUoe2ZpbHRlckZyb206IHN5bnRheE5vZGUuZnJvbSwgZmlsdGVyVG86IHN5bnRheE5vZGUuZnJvbSwgZmlsdGVyOiAoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyLCB2YWx1ZTogRGVjb3JhdGlvbik9PmZhbHNlfSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLnVwZGF0ZSh7YWRkOiBbe2Zyb206IHN5bnRheE5vZGUuZnJvbSwgdG86IHN5bnRheE5vZGUuZnJvbSArIGVuZE9mUGFyYW1ldGVycywgdmFsdWU6IERlY29yYXRpb24ucmVwbGFjZSh7fSl9XX0pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodmlldy5zdGF0ZS5zZWxlY3Rpb24ucmFuZ2VzLnNvbWUoKHJhbmdlOiBTZWxlY3Rpb25SYW5nZSk9PnJhbmdlLnRvID49IHN5bnRheE5vZGUuZnJvbS1kZWxpbWl0ZXJTaXplICYmIHJhbmdlLmZyb20gPD0gc3ludGF4Tm9kZS50bytkZWxpbWl0ZXJTaXplKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucy5iZXR3ZWVuKHN5bnRheE5vZGUuZnJvbSwgc3ludGF4Tm9kZS5mcm9tLCAoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyLCBkZWNvcmF0aW9uVmFsdWU6IERlY29yYXRpb24pPT57XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLnVwZGF0ZSh7ZmlsdGVyRnJvbTogZnJvbSwgZmlsdGVyVG86IHRvLCBmaWx0ZXI6IChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIsIHZhbHVlOiBEZWNvcmF0aW9uKT0+ZmFsc2V9KTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHthZGQ6IFt7ZnJvbTogc3ludGF4Tm9kZS5mcm9tLCB0bzogc3ludGF4Tm9kZS5mcm9tICsgZW5kT2ZQYXJhbWV0ZXJzLCB2YWx1ZTogRGVjb3JhdGlvbi5tYXJrKHtjbGFzczogJ2NvZGUtc3R5bGVyLWlubGluZS1wYXJhbWV0ZXJzJ30pfV19KTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGRlY29yYXRlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucy5iZXR3ZWVuKHN5bnRheE5vZGUuZnJvbSwgc3ludGF4Tm9kZS5mcm9tLCAoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyLCBkZWNvcmF0aW9uVmFsdWU6IERlY29yYXRpb24pPT57XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICghZGVjb3JhdGlvblZhbHVlLnNwZWM/LmNsYXNzKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlY29yYXRlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghZGVjb3JhdGVkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLnVwZGF0ZSh7YWRkOiBbe2Zyb206IHN5bnRheE5vZGUuZnJvbSwgdG86IHN5bnRheE5vZGUuZnJvbSArIGVuZE9mUGFyYW1ldGVycywgdmFsdWU6IERlY29yYXRpb24ucmVwbGFjZSh7fSl9XX0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocGFyYW1ldGVycz8udGl0bGUgfHwgKHBhcmFtZXRlcnM/Lmljb24gJiYgZ2V0TGFuZ3VhZ2VJY29uKHBhcmFtZXRlcnMubGFuZ3VhZ2UsbGFuZ3VhZ2VJY29ucykpKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLnVwZGF0ZSh7YWRkOiBbe2Zyb206IHN5bnRheE5vZGUuZnJvbSwgdG86IHN5bnRheE5vZGUuZnJvbSwgdmFsdWU6IERlY29yYXRpb24ucmVwbGFjZSh7d2lkZ2V0OiBuZXcgT3BlbmVyV2lkZ2V0KHBhcmFtZXRlcnMsbGFuZ3VhZ2VJY29ucyl9KX1dfSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLnVwZGF0ZSh7ZmlsdGVyRnJvbTogc3ludGF4Tm9kZS5mcm9tICsgZW5kT2ZQYXJhbWV0ZXJzKzEsIGZpbHRlclRvOiBzeW50YXhOb2RlLnRvLCBmaWx0ZXI6IChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIsIGRlY29yYXRpb25WYWx1ZTogRGVjb3JhdGlvbik9PmZhbHNlfSk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFzZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnN5bnRheEhpZ2hsaWdodClcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gdGhpcy5kZWNvcmF0aW9ucy51cGRhdGUoe2FkZDogbW9kZUhpZ2hsaWdodCh7c3RhcnQ6IHN5bnRheE5vZGUuZnJvbSArIGVuZE9mUGFyYW1ldGVycywgdGV4dDogdGV4dCwgbGFuZ3VhZ2U6IHBhcmFtZXRlcnMubGFuZ3VhZ2V9KX0pO1xuXHRcdFx0XHRcdFx0XHRcdC8vIHRvSGlnaGxpZ2h0LnB1c2goe3N0YXJ0OiBzeW50YXhOb2RlLmZyb20gKyBlbmRPZlBhcmFtZXRlcnMsIHRleHQ6IHRleHQsIGxhbmd1YWdlOiBwYXJhbWV0ZXJzLmxhbmd1YWdlfSk7IC8vTk9URTogRm9yIGZ1dHVyZSBDTTYgQ29tcGF0aWJpbGl0eVxuXHRcdFx0XHRcdFx0XHR9XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9O1xuXHRcdFx0XHQvLyByZXR1cm4gdG9IaWdobGlnaHQ7IC8vTk9URTogRm9yIGZ1dHVyZSBDTTYgQ29tcGF0aWJpbGl0eVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0ZGVjb3JhdGlvbnM6ICh2YWx1ZSkgPT4gdmFsdWUuZGVjb3JhdGlvbnMsXG5cdFx0fVxuXHQpXG5cdGZ1bmN0aW9uIGN1cnNvckludG9Db2xsYXBzZWRUcmFuc2FjdGlvbkZpbHRlcigpIHtcblx0XHRyZXR1cm4gRWRpdG9yU3RhdGUudHJhbnNhY3Rpb25GaWx0ZXIub2YoKHRyYW5zYWN0aW9uKSA9PiB7XG5cdFx0XHRsZXQgZXh0cmFUcmFuc2FjdGlvbnM6IEFycmF5PFRyYW5zYWN0aW9uU3BlYz4gPSBbXTtcblx0XHRcdGxldCBjb2xsYXBzZWRSYW5nZVNldCA9IHRyYW5zYWN0aW9uLnN0YXJ0U3RhdGUuZmllbGQoY29kZWJsb2NrQ29sbGFwc2UsZmFsc2UpPy5tYXAodHJhbnNhY3Rpb24uY2hhbmdlcykgPz8gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0bGV0IHRlbXBvcmFyaWx5VW5jb2xsYXBzZWRSYW5nZVNldCA9IHRyYW5zYWN0aW9uLnN0YXJ0U3RhdGUuZmllbGQodGVtcG9yYXJpbHlVbmNvbGxhcHNlZCxmYWxzZSk/Lm1hcCh0cmFuc2FjdGlvbi5jaGFuZ2VzKSA/PyBEZWNvcmF0aW9uLm5vbmU7XG5cdFx0XHR0cmFuc2FjdGlvbi5uZXdTZWxlY3Rpb24ucmFuZ2VzLmZvckVhY2goKHJhbmdlOiBTZWxlY3Rpb25SYW5nZSk9Pntcblx0XHRcdFx0Y29sbGFwc2VkUmFuZ2VTZXQuYmV0d2VlbihyYW5nZS5mcm9tLCByYW5nZS50bywgKGNvbGxhcHNlU3RhcnRGcm9tLCBjb2xsYXBzZUVuZFRvLCBkZWNvcmF0aW9uVmFsdWUpID0+IHtcblx0XHRcdFx0XHRpZiAoY29sbGFwc2VTdGFydEZyb20gPD0gcmFuZ2UuaGVhZCAmJiByYW5nZS5oZWFkIDw9IGNvbGxhcHNlRW5kVG8pXG5cdFx0XHRcdFx0XHRleHRyYVRyYW5zYWN0aW9ucy5wdXNoKHtlZmZlY3RzOiB1bmNvbGxhcHNlLm9mKHtmaWx0ZXI6IChmcm9tLHRvKSA9PiAodG8gPD0gY29sbGFwc2VTdGFydEZyb20gfHwgZnJvbSA+PSBjb2xsYXBzZUVuZFRvKSwgZmlsdGVyRnJvbTogY29sbGFwc2VTdGFydEZyb20sIGZpbHRlclRvOiBjb2xsYXBzZUVuZFRvfSksIGFubm90YXRpb25zOiB0ZW1wb3JhcnlVbmNvbGxhcHNlQW5ub3RhdGlvbi5vZih7ZGVjb3JhdGlvblJhbmdlOiB7ZnJvbTogY29sbGFwc2VTdGFydEZyb20sIHRvOiBjb2xsYXBzZUVuZFRvLCB2YWx1ZTogZGVjb3JhdGlvblZhbHVlfSwgdW5jb2xsYXBzZTogdHJ1ZX0pfSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRmb3IgKGxldCBpdGVyID0gdGVtcG9yYXJpbHlVbmNvbGxhcHNlZFJhbmdlU2V0Lml0ZXIoKTsgaXRlci52YWx1ZSAhPT0gbnVsbDsgaXRlci5uZXh0KCkpIHtcblx0XHRcdFx0XHRpZiAoIShpdGVyLmZyb20gPD0gcmFuZ2UuaGVhZCAmJiByYW5nZS5oZWFkIDw9IGl0ZXIudG8pKVxuXHRcdFx0XHRcdFx0ZXh0cmFUcmFuc2FjdGlvbnMucHVzaCh7ZWZmZWN0czogY29sbGFwc2Uub2YoRGVjb3JhdGlvbi5yZXBsYWNlKHtibG9jazogdHJ1ZX0pLnJhbmdlKGl0ZXIuZnJvbSxpdGVyLnRvKSksIGFubm90YXRpb25zOiB0ZW1wb3JhcnlVbmNvbGxhcHNlQW5ub3RhdGlvbi5vZih7ZGVjb3JhdGlvblJhbmdlOiB7ZnJvbTogaXRlci5mcm9tLCB0bzogaXRlci50bywgdmFsdWU6IGl0ZXIudmFsdWV9LCB1bmNvbGxhcHNlOiBmYWxzZX0pfSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0aWYgKGV4dHJhVHJhbnNhY3Rpb25zLmxlbmd0aCAhPT0gMClcblx0XHRcdFx0cmV0dXJuIFt0cmFuc2FjdGlvbiwuLi5leHRyYVRyYW5zYWN0aW9uc107XG5cdFx0XHRyZXR1cm4gdHJhbnNhY3Rpb247XG5cdFx0fSk7XG5cdH1cblxuXHQvL3RvZG8gRmluaXNoIHRoaXMgZmlsdGVyXG5cdGZ1bmN0aW9uIG1hbmFnZUNvbGxhcHNlZFRyYW5zYWN0aW9uRmlsdGVyKCkge1xuXHRcdHJldHVybiBFZGl0b3JTdGF0ZS50cmFuc2FjdGlvbkZpbHRlci5vZigodHJhbnNhY3Rpb24pID0+IHtcblx0XHRcdGxldCBleHRyYVRyYW5zYWN0aW9uczogQXJyYXk8VHJhbnNhY3Rpb25TcGVjPiA9IFtdO1xuXHRcdFx0bGV0IGNvbGxhcHNlZFJhbmdlU2V0ID0gdHJhbnNhY3Rpb24uc3RhcnRTdGF0ZS5maWVsZChjb2RlYmxvY2tDb2xsYXBzZSxmYWxzZSkgPz8gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0bGV0IHRlbXBvcmFyaWx5VW5jb2xsYXBzZWRSYW5nZVNldCA9IHRyYW5zYWN0aW9uLnN0YXJ0U3RhdGUuZmllbGQodGVtcG9yYXJpbHlVbmNvbGxhcHNlZCxmYWxzZSkgPz8gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0dHJhbnNhY3Rpb24uY2hhbmdlcy5pdGVyQ2hhbmdlcygoZnJvbUEsdG9BLGZyb21CLHRvQixpbnNlcnRlZCk9Pntcblx0XHRcdFx0aWYgKGZyb21CID09PSB0b0IgJiYgaW5zZXJ0ZWQudG9TdHJpbmcoKSA9PT0gJycpIHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhmcm9tQSx0b0EsZnJvbUIsdG9CLGluc2VydGVkKVxuXHRcdFx0XHRcdGNvbGxhcHNlZFJhbmdlU2V0LmJldHdlZW4oZnJvbUEtMTAwLCB0b0ErMTAwLCAoY29sbGFwc2VTdGFydEZyb20sIGNvbGxhcHNlRW5kVG8sIGRlY29yYXRpb25WYWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZnJvbUEsdG9BLGNvbGxhcHNlU3RhcnRGcm9tLGNvbGxhcHNlRW5kVG8pXG5cdFx0XHRcdFx0XHRpZiAoKGZyb21BIDw9IGNvbGxhcHNlU3RhcnRGcm9tICYmIGNvbGxhcHNlU3RhcnRGcm9tIDw9IHRvQSkgfHwgKGZyb21BIDw9IGNvbGxhcHNlRW5kVG8gJiYgY29sbGFwc2VFbmRUbyA8PSB0b0EpKVxuXHRcdFx0XHRcdFx0XHRleHRyYVRyYW5zYWN0aW9ucy5wdXNoKHtlZmZlY3RzOiB1bmNvbGxhcHNlLm9mKHtmaWx0ZXI6IChmcm9tLHRvKSA9PiAodG8gPD0gY29sbGFwc2VTdGFydEZyb20gfHwgZnJvbSA+PSBjb2xsYXBzZUVuZFRvKSwgZmlsdGVyRnJvbTogY29sbGFwc2VTdGFydEZyb20sIGZpbHRlclRvOiBjb2xsYXBzZUVuZFRvfSksIGFubm90YXRpb25zOiB0ZW1wb3JhcnlVbmNvbGxhcHNlQW5ub3RhdGlvbi5vZih7ZGVjb3JhdGlvblJhbmdlOiB7ZnJvbTogY29sbGFwc2VTdGFydEZyb20sIHRvOiBjb2xsYXBzZUVuZFRvLCB2YWx1ZTogZGVjb3JhdGlvblZhbHVlfSwgdW5jb2xsYXBzZTogdHJ1ZX0pfSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0aWYgKGV4dHJhVHJhbnNhY3Rpb25zLmxlbmd0aCAhPT0gMClcblx0XHRcdFx0Y29uc29sZS5sb2coJ2ZvbycsZXh0cmFUcmFuc2FjdGlvbnMpXG5cdFx0XHRpZiAoZXh0cmFUcmFuc2FjdGlvbnMubGVuZ3RoICE9PSAwKVxuXHRcdFx0XHRyZXR1cm4gW3RyYW5zYWN0aW9uLC4uLmV4dHJhVHJhbnNhY3Rpb25zXTtcblx0XHRcdHJldHVybiB0cmFuc2FjdGlvbjtcblx0XHR9KTtcblx0fVxuXG5cdGNsYXNzIExpbmVOdW1iZXJXaWRnZXQgZXh0ZW5kcyBXaWRnZXRUeXBlIHtcblx0XHRsaW5lTnVtYmVyOiBudW1iZXI7XG5cdFx0Y29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycztcblx0XHRtYXhMaW5lTnVtOiBudW1iZXJcblx0XHRlbXB0eTogYm9vbGVhbjtcblx0XG5cdFx0Y29uc3RydWN0b3IobGluZU51bWJlcjogbnVtYmVyLCBjb2RlYmxvY2tQYXJhbWV0ZXJzOiBDb2RlYmxvY2tQYXJhbWV0ZXJzLCBtYXhMaW5lTnVtOiBudW1iZXIsIGVtcHR5OiBib29sZWFuKSB7XG5cdFx0XHRzdXBlcigpO1xuXHRcdFx0dGhpcy5saW5lTnVtYmVyID0gbGluZU51bWJlcjtcblx0XHRcdHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycyA9IGNvZGVibG9ja1BhcmFtZXRlcnM7XG5cdFx0XHR0aGlzLm1heExpbmVOdW0gPSBtYXhMaW5lTnVtXG5cdFx0XHR0aGlzLmVtcHR5ID0gZW1wdHk7XG5cdFx0fVxuXHRcblx0XHRlcShvdGhlcjogTGluZU51bWJlcldpZGdldCk6IGJvb2xlYW4ge1xuXHRcdFx0cmV0dXJuIHRoaXMubGluZU51bWJlciA9PT0gb3RoZXIubGluZU51bWJlciAmJiB0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRW5hYmxlZCA9PT0gb3RoZXIuY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNFbmFibGVkICYmIHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNEaXNhYmxlZCA9PT0gb3RoZXIuY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNEaXNhYmxlZCAmJiB0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMub2Zmc2V0ID09PSBvdGhlci5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLm9mZnNldCAmJiB0aGlzLm1heExpbmVOdW0gPT09IG90aGVyLm1heExpbmVOdW0gJiYgdGhpcy5lbXB0eSA9PT0gb3RoZXIuZW1wdHk7XG5cdFx0fVxuXHRcblx0XHR0b0RPTSh2aWV3OiBFZGl0b3JWaWV3KTogSFRNTEVsZW1lbnQge1xuXHRcdFx0bGV0IGxpbmVOdW1iZXJEaXNwbGF5ID0gJyc7XG5cdFx0XHRpZiAoIXRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNFbmFibGVkICYmIHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNEaXNhYmxlZClcblx0XHRcdFx0bGluZU51bWJlckRpc3BsYXkgPSAnLWhpZGUnXG5cdFx0XHRlbHNlIGlmICh0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRW5hYmxlZCAmJiAhdGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0Rpc2FibGVkKVxuXHRcdFx0XHRsaW5lTnVtYmVyRGlzcGxheSA9ICctc3BlY2lmaWMnXG5cdFx0XHRyZXR1cm4gY3JlYXRlU3Bhbih7YXR0cjoge3N0eWxlOiB0aGlzLm1heExpbmVOdW0udG9TdHJpbmcoKS5sZW5ndGggPiAodGhpcy5saW5lTnVtYmVyICsgdGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLm9mZnNldCkudG9TdHJpbmcoKS5sZW5ndGg/J3dpZHRoOiB2YXIoLS1saW5lLW51bWJlci1ndXR0ZXItd2lkdGgpOyc6Jyd9LCBjbHM6IGBjb2RlLXN0eWxlci1saW5lLW51bWJlciR7bGluZU51bWJlckRpc3BsYXl9YCwgdGV4dDogdGhpcy5lbXB0eT8nJzoodGhpcy5saW5lTnVtYmVyICsgdGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLm9mZnNldCkudG9TdHJpbmcoKX0pO1xuXHRcdH1cblx0fVxuXHRjbGFzcyBIZWFkZXJXaWRnZXQgZXh0ZW5kcyBXaWRnZXRUeXBlIHtcblx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzOiBDb2RlYmxvY2tQYXJhbWV0ZXJzO1xuXHRcdHRoZW1lU2V0dGluZ3M6IENvZGVTdHlsZXJUaGVtZVNldHRpbmdzO1xuXHRcdGxhbmd1YWdlSWNvbnM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPjtcblx0XHR2aWV3OiBFZGl0b3JWaWV3O1xuXHRcdG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cdFxuXHRcdGNvbnN0cnVjdG9yKGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnMsIHRoZW1lU2V0dGluZ3M6IENvZGVTdHlsZXJUaGVtZVNldHRpbmdzLCBsYW5ndWFnZUljb25zOiBSZWNvcmQ8c3RyaW5nLHN0cmluZz4pIHtcblx0XHRcdHN1cGVyKCk7XG5cdFx0XHR0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMgPSBjb2RlYmxvY2tQYXJhbWV0ZXJzO1xuXHRcdFx0dGhpcy50aGVtZVNldHRpbmdzID0gdGhlbWVTZXR0aW5ncztcblx0XHRcdHRoaXMubGFuZ3VhZ2VJY29ucyA9IGxhbmd1YWdlSWNvbnM7XG5cdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigobXV0YXRpb25zKSA9PiB7XG5cdFx0XHRcdG11dGF0aW9ucy5mb3JFYWNoKG11dGF0aW9uID0+IHtcblx0XHRcdFx0XHRpZiAoKG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuaGFzQXR0cmlidXRlKCdkYXRhLWNsaWNrZWQnKSlcblx0XHRcdFx0XHRcdGNvbGxhcHNlT25DbGljayh0aGlzLnZpZXcsKG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCkpXG5cdFx0XHRcdH0pXG5cdFx0XHR9KTsgICAgXG5cdFx0fVxuXHRcdFx0XG5cdFx0ZXEob3RoZXI6IEhlYWRlcldpZGdldCk6IGJvb2xlYW4ge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlID09IG90aGVyLmNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UgJiZcblx0XHRcdFx0dGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLnRpdGxlID09IG90aGVyLmNvZGVibG9ja1BhcmFtZXRlcnMudGl0bGUgJiZcblx0XHRcdFx0dGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQuZW5hYmxlZCA9PSBvdGhlci5jb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQuZW5hYmxlZCAmJlxuXHRcdFx0XHR0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5wbGFjZWhvbGRlciA9PSBvdGhlci5jb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQucGxhY2Vob2xkZXIgJiZcblx0XHRcdFx0dGhpcy50aGVtZVNldHRpbmdzLmhlYWRlci5jb2xsYXBzZVBsYWNlaG9sZGVyID09IG90aGVyLnRoZW1lU2V0dGluZ3MuaGVhZGVyLmNvbGxhcHNlUGxhY2Vob2xkZXIgJiZcblx0XHRcdFx0Z2V0TGFuZ3VhZ2VJY29uKHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSx0aGlzLmxhbmd1YWdlSWNvbnMpID09IGdldExhbmd1YWdlSWNvbihvdGhlci5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlLG90aGVyLmxhbmd1YWdlSWNvbnMpXG5cdFx0XHRcdCk7XG5cdFx0fVxuXHRcdFx0XG5cdFx0dG9ET00odmlldzogRWRpdG9yVmlldyk6IEhUTUxFbGVtZW50IHtcblx0XHRcdHRoaXMudmlldyA9IHZpZXc7XG5cdFx0XHRjb25zdCBoZWFkZXJDb250YWluZXIgPSBjcmVhdGVIZWFkZXIodGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLCB0aGlzLnRoZW1lU2V0dGluZ3MsIHRoaXMubGFuZ3VhZ2VJY29ucyk7XG5cdFx0XHRpZiAodGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlIT09JycpXG5cdFx0XHRcdGhlYWRlckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKGBsYW5ndWFnZS0ke3RoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZX1gKVxuXHRcdFx0aGVhZGVyQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixoYW5kbGVNb3VzZURvd24pO1xuXHRcblx0XHRcdHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGhlYWRlckNvbnRhaW5lcix7XG5cdFx0XHRcdGF0dHJpYnV0ZXM6IHRydWUsXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiBoZWFkZXJDb250YWluZXI7XG5cdFx0fVxuXHRcdFx0XHRcblx0XHRkZXN0cm95KGRvbTogSFRNTEVsZW1lbnQpIHtcblx0XHRcdGRvbS5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLWNsaWNrZWRcIik7XG5cdFx0XHRkb20ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLGhhbmRsZU1vdXNlRG93bik7XG5cdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXHRcdH1cblx0XG5cdFx0aWdub3JlRXZlbnQoKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cdGNsYXNzIE9wZW5lcldpZGdldCBleHRlbmRzIFdpZGdldFR5cGUge1xuXHRcdGlubGluZUNvZGVQYXJhbWV0ZXJzOiBJbmxpbmVDb2RlUGFyYW1ldGVycztcblx0XHRsYW5ndWFnZUljb25zOiBSZWNvcmQ8c3RyaW5nLHN0cmluZz47XG5cblx0XHRjb25zdHJ1Y3RvciAoaW5saW5lQ29kZVBhcmFtZXRlcnM6IElubGluZUNvZGVQYXJhbWV0ZXJzLCBsYW5ndWFnZUljb25zOiBSZWNvcmQ8c3RyaW5nLHN0cmluZz4pIHtcblx0XHRcdHN1cGVyKCk7XG5cdFx0XHR0aGlzLmlubGluZUNvZGVQYXJhbWV0ZXJzID0gaW5saW5lQ29kZVBhcmFtZXRlcnM7XG5cdFx0XHR0aGlzLmxhbmd1YWdlSWNvbnMgPSBsYW5ndWFnZUljb25zO1xuXHRcdH1cblxuXHRcdGVxKG90aGVyOiBPcGVuZXJXaWRnZXQpOiBib29sZWFuIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHRoaXMuaW5saW5lQ29kZVBhcmFtZXRlcnMubGFuZ3VhZ2UgPT0gb3RoZXIuaW5saW5lQ29kZVBhcmFtZXRlcnMubGFuZ3VhZ2UgJiZcblx0XHRcdFx0dGhpcy5pbmxpbmVDb2RlUGFyYW1ldGVycy50aXRsZSA9PSBvdGhlci5pbmxpbmVDb2RlUGFyYW1ldGVycy50aXRsZSAmJlxuXHRcdFx0XHR0aGlzLmlubGluZUNvZGVQYXJhbWV0ZXJzLmljb24gPT0gb3RoZXIuaW5saW5lQ29kZVBhcmFtZXRlcnMuaWNvbiAmJlxuXHRcdFx0XHRnZXRMYW5ndWFnZUljb24odGhpcy5pbmxpbmVDb2RlUGFyYW1ldGVycy5sYW5ndWFnZSx0aGlzLmxhbmd1YWdlSWNvbnMpID09IGdldExhbmd1YWdlSWNvbihvdGhlci5pbmxpbmVDb2RlUGFyYW1ldGVycy5sYW5ndWFnZSxvdGhlci5sYW5ndWFnZUljb25zKVxuXHRcdFx0XHQpO1xuXHRcdH1cblxuXHRcdHRvRE9NKHZpZXc6IEVkaXRvclZpZXcpOiBIVE1MRWxlbWVudCB7XG5cdFx0XHRyZXR1cm4gY3JlYXRlSW5saW5lT3BlbmVyKHRoaXMuaW5saW5lQ29kZVBhcmFtZXRlcnMsdGhpcy5sYW5ndWFnZUljb25zLFsnY29kZS1zdHlsZXItaW5saW5lLW9wZW5lcicsJ2NtLWlubGluZS1jb2RlJ10pO1xuXHRcdH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gY29sbGFwc2VPbkNsaWNrKHZpZXc6IEVkaXRvclZpZXcsIHRhcmdldDogSFRNTEVsZW1lbnQpIHtcblx0XHRjb25zdCBwb3NpdGlvbiA9IHZpZXcucG9zQXRET00odGFyZ2V0KTtcblx0XHRsZXQgZm9sZGVkID0gZmFsc2U7XG5cdFx0dmlldy5zdGF0ZS5maWVsZChjb2RlYmxvY2tDb2xsYXBzZSxmYWxzZSk/LmJldHdlZW4ocG9zaXRpb24scG9zaXRpb24sKCk9Pntcblx0XHRcdGZvbGRlZCA9IHRydWU7XG5cdFx0fSk7XG5cblx0XHRsZXQgY29sbGFwc2VTdGFydDogTGluZSB8IG51bGwgPSBudWxsO1xuXHRcdGxldCBjb2xsYXBzZUVuZDogTGluZSB8IG51bGwgPSBudWxsO1xuXHRcdGxldCBzdGFydExpbmU6IGJvb2xlYW4gPSB0cnVlO1xuXHRcdGxldCBzdGFydERlbGltaXRlcjogc3RyaW5nID0gJ2BgYCc7XG5cdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCB2aWV3LnN0YXRlLmRvYy5saW5lczsgaSsrKSB7XG5cdFx0XHRjb25zdCBsaW5lID0gdmlldy5zdGF0ZS5kb2MubGluZShpKTtcblx0XHRcdGNvbnN0IGxpbmVUZXh0ID0gbGluZS50ZXh0LnRvU3RyaW5nKCk7XG5cdFx0XHRsZXQgY3VycmVudERlbGltaXRlciA9IHRlc3RPcGVuaW5nTGluZShsaW5lVGV4dCk7XG5cdFx0XHRpZiAoY3VycmVudERlbGltaXRlcikge1xuXHRcdFx0XHRpZiAoc3RhcnRMaW5lKSB7XG5cdFx0XHRcdFx0c3RhcnRMaW5lID0gZmFsc2U7XG5cdFx0XHRcdFx0c3RhcnREZWxpbWl0ZXIgPSBjdXJyZW50RGVsaW1pdGVyO1xuXHRcdFx0XHRcdGlmIChwb3NpdGlvbiA9PT0gbGluZS5mcm9tKVxuXHRcdFx0XHRcdFx0Y29sbGFwc2VTdGFydCA9IGxpbmU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKGN1cnJlbnREZWxpbWl0ZXIgPT09IHN0YXJ0RGVsaW1pdGVyKSB7XG5cdFx0XHRcdFx0XHRzdGFydExpbmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0aWYgKGNvbGxhcHNlU3RhcnQpXG5cdFx0XHRcdFx0XHRcdGNvbGxhcHNlRW5kID0gbGluZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChjb2xsYXBzZVN0YXJ0ICYmIGNvbGxhcHNlRW5kKSB7XG5cdFx0XHRcdGlmIChmb2xkZWQpXG5cdFx0XHRcdFx0dmlldy5kaXNwYXRjaCh7ZWZmZWN0czogdW5jb2xsYXBzZS5vZih7ZmlsdGVyOiAoZnJvbSx0bykgPT4gKHRvIDw9IChjb2xsYXBzZVN0YXJ0IGFzIExpbmUpLmZyb20gfHwgZnJvbSA+PSAoY29sbGFwc2VFbmQgYXMgTGluZSkudG8pLCBmaWx0ZXJGcm9tOiBjb2xsYXBzZUVuZC5mcm9tLCBmaWx0ZXJUbzogY29sbGFwc2VFbmQudG99KX0pO1xuXHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0dmlldy5kaXNwYXRjaCh7ZWZmZWN0czogY29sbGFwc2Uub2YoRGVjb3JhdGlvbi5yZXBsYWNlKHtibG9jazogdHJ1ZX0pLnJhbmdlKGNvbGxhcHNlU3RhcnQuZnJvbSxjb2xsYXBzZUVuZC50bykpfSk7XG5cdFx0XHRcdHZpZXcucmVxdWVzdE1lYXN1cmUoKTtcblx0XHRcdFx0Y29sbGFwc2VTdGFydCA9IG51bGw7XG5cdFx0XHRcdGNvbGxhcHNlRW5kID0gbnVsbDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0ZnVuY3Rpb24gaGFuZGxlTW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG5cdFx0dGhpcy5zZXRBdHRyaWJ1dGUoXCJkYXRhLWNsaWNrZWRcIixcInRydWVcIik7XG5cdH1cblxuXHRjb25zdCBjb2xsYXBzZTogU3RhdGVFZmZlY3RUeXBlPFJhbmdlPERlY29yYXRpb24+PiA9IFN0YXRlRWZmZWN0LmRlZmluZSgpO1xuXHRjb25zdCB1bmNvbGxhcHNlOiBTdGF0ZUVmZmVjdFR5cGU8e2ZpbHRlcjogKGZyb206IGFueSwgdG86IGFueSkgPT4gYm9vbGVhbiwgZmlsdGVyRnJvbTogbnVtYmVyLCBmaWx0ZXJUbzogbnVtYmVyfT4gPSBTdGF0ZUVmZmVjdC5kZWZpbmUoKTtcblx0Y29uc3QgdGVtcG9yYXJ5VW5jb2xsYXBzZUFubm90YXRpb24gPSBBbm5vdGF0aW9uLmRlZmluZTx7ZGVjb3JhdGlvblJhbmdlOiBSYW5nZTxEZWNvcmF0aW9uPiwgdW5jb2xsYXBzZTogYm9vbGVhbn0+KCk7XG5cblx0cmV0dXJuIFtjb2RlYmxvY2tMaW5lTnVtYmVyQ2hhcldpZHRoLGNvZGVibG9ja0xpbmVzLGNvZGVibG9ja0hlYWRlcixjb2RlYmxvY2tDb2xsYXBzZSx0ZW1wb3JhcmlseVVuY29sbGFwc2VkLGlubGluZUNvZGVEZWNvcmF0b3IsY3Vyc29ySW50b0NvbGxhcHNlZFRyYW5zYWN0aW9uRmlsdGVyKCldO1xufVxuXG5mdW5jdGlvbiBnZXRDaGFyV2lkdGgoc3RhdGU6IEVkaXRvclN0YXRlLCBkZWZhdWx0X3ZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuXHRsZXQgY2hhcldpZHRocyA9IEFycmF5LmZyb20oc3RhdGUuZmllbGQoZWRpdG9yRWRpdG9yRmllbGQpLmNvbnRlbnRET00ucXVlcnlTZWxlY3RvckFsbChcIi5IeXBlck1ELWNvZGVibG9jay1lbmRcIikpLnJlZHVjZSgocmVzdWx0OiBBcnJheTxudW1iZXI+LGJlZ2lubmluZ0VsZW1lbnQ6IEhUTUxFbGVtZW50KTogQXJyYXk8bnVtYmVyPiA9PiB7XG5cdFx0bGV0IG5leHRFbGVtZW50ID0gYmVnaW5uaW5nRWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nIGFzIEhUTUxFbGVtZW50O1xuXHRcdGlmICghbmV4dEVsZW1lbnQpXG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdGxldCBsaW5lTnVtYmVyRWxlbWVudCA9IG5leHRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddXCIpIGFzIEhUTUxFbGVtZW50O1xuXHRcdGlmICghbGluZU51bWJlckVsZW1lbnQgfHwgbGluZU51bWJlckVsZW1lbnQuaW5uZXJUZXh0Lmxlbmd0aCA8PSAyKVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRsZXQgY29tcHV0ZWRTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShsaW5lTnVtYmVyRWxlbWVudCwgbnVsbCk7XG5cdFx0cmVzdWx0LnB1c2goKGxpbmVOdW1iZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlcy5wYWRkaW5nTGVmdCkgLSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGVzLnBhZGRpbmdSaWdodCkpIC8gbGluZU51bWJlckVsZW1lbnQuaW5uZXJUZXh0Lmxlbmd0aClcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9LFtdKVxuXHRpZiAoY2hhcldpZHRocy5sZW5ndGggPT09IDApXG5cdFx0cmV0dXJuIGRlZmF1bHRfdmFsdWU7XG5cdHJldHVybiBjaGFyV2lkdGhzLnJlZHVjZSgocmVzdWx0LHZhbHVlKT0+cmVzdWx0K3ZhbHVlLDApIC8gY2hhcldpZHRocy5sZW5ndGg7XG59XG5cbmZ1bmN0aW9uIGZpbmRVbmR1cGxpY2F0ZWRDb2RlYmxvY2tzKHZpZXc6IEVkaXRvclZpZXcpOiBBcnJheTxTeW50YXhOb2RlUmVmPiB7XG5cdGNvbnN0IGNvZGVibG9ja3MgPSBmaW5kVmlzaWJsZUNvZGVibG9ja3Modmlldyk7XG5cdGNvbnN0IHVuZHVwbGljYXRlZENvZGVibG9ja3M6IEFycmF5PFN5bnRheE5vZGVSZWY+ID0gW107XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgY29kZWJsb2Nrcy5sZW5ndGg7IGkrKylcblx0XHRpZiAoaSA9PT0gMCB8fCBjb2RlYmxvY2tzW2ldLmZyb20gIT09IGNvZGVibG9ja3NbaSAtIDFdLmZyb20pXG5cdFx0XHR1bmR1cGxpY2F0ZWRDb2RlYmxvY2tzLnB1c2goY29kZWJsb2Nrc1tpXSk7XG5cdHJldHVybiB1bmR1cGxpY2F0ZWRDb2RlYmxvY2tzO1xufVxuZnVuY3Rpb24gZmluZFZpc2libGVDb2RlYmxvY2tzKHZpZXc6IEVkaXRvclZpZXcpOiBBcnJheTxTeW50YXhOb2RlUmVmPiB7XG5cdHJldHVybiBmaW5kQ29kZWJsb2Nrcyh2aWV3KS5maWx0ZXIoKGNvZGVibG9jaykgPT4ge1xuXHRcdHJldHVybiB2aWV3LnZpc2libGVSYW5nZXMuc29tZSgodmlzaWJsZVJhbmdlKSA9PiBjb2RlYmxvY2suZnJvbSA8IHZpc2libGVSYW5nZS50byAmJiBjb2RlYmxvY2sudG8gPiB2aXNpYmxlUmFuZ2UuZnJvbSlcblx0fSlcbn1cbmZ1bmN0aW9uIGZpbmRDb2RlYmxvY2tzKHZpZXc6IEVkaXRvclZpZXcpOiBBcnJheTxTeW50YXhOb2RlUmVmPiB7XG5cdGNvbnN0IGNvZGVibG9ja3M6IEFycmF5PFN5bnRheE5vZGVSZWY+ID0gW107XG5cdHN5bnRheFRyZWUodmlldy5zdGF0ZSkuaXRlcmF0ZSh7XG5cdFx0ZW50ZXI6IChzeW50YXhOb2RlKSA9PiB7XG5cdFx0XHRpZiAoc3ludGF4Tm9kZS50eXBlLm5hbWUuaW5jbHVkZXMoXCJIeXBlck1ELWNvZGVibG9jay1iZWdpblwiKSB8fCBzeW50YXhOb2RlLnR5cGUubmFtZSA9PT0gXCJIeXBlck1ELWNvZGVibG9ja19IeXBlck1ELWNvZGVibG9jay1iZ1wiIHx8IHN5bnRheE5vZGUudHlwZS5uYW1lLmluY2x1ZGVzKFwiSHlwZXJNRC1jb2RlYmxvY2stZW5kXCIpKVxuXHRcdFx0XHRjb2RlYmxvY2tzLnB1c2goc3ludGF4Tm9kZSk7XG5cdFx0fVxuXHR9KVxuXHRyZXR1cm4gY29kZWJsb2Nrcztcbn1cblxuZnVuY3Rpb24gbGFuZ3VhZ2VIaWdobGlnaHQoe3N0YXJ0LHRleHQsbGFuZ3VhZ2V9OiB7c3RhcnQ6IG51bWJlciwgdGV4dDogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nfSxsb2FkZWRMYW5ndWFnZXM6IFJlY29yZDxzdHJpbmcsTGFuZ3VhZ2VTdXBwb3J0Pik6IEFycmF5PFJhbmdlPERlY29yYXRpb24+PiB7XG5cdC8vTk9URTogVXNlcyBjb2RlbWlycm9yIDYgaW1wbGVtZW50YXRpb24gd2hpY2ggT2JzaWRpYW4gZG9lcyBub3QgY3VycmVudGx5IHVzZVxuXHRsZXQgbWFya0RlY29yYXRpb25zOiBBcnJheTxSYW5nZTxEZWNvcmF0aW9uPj4gPSBbXTtcblx0Y29uc3QgdHJlZSA9IGxvYWRlZExhbmd1YWdlc1tsYW5ndWFnZV0ubGFuZ3VhZ2UucGFyc2VyLnBhcnNlKHRleHQpO1xuXHRoaWdobGlnaHRUcmVlKHRyZWUsY2xhc3NIaWdobGlnaHRlciwoZnJvbSx0byx0b2tlbikgPT4geyAvL3RvZG8gKEBtYXl1cmFua3YpIENoYW5nZSB0aGlzIGhpZ2hsaWdodGVyXG5cdFx0aWYgKHRva2VuKVxuXHRcdFx0bWFya0RlY29yYXRpb25zLnB1c2goe2Zyb206IHN0YXJ0K2Zyb20sIHRvOiBzdGFydCt0bywgdmFsdWU6IERlY29yYXRpb24ubWFyayh7Y2xhc3M6IHRva2VufSl9KTtcblx0fSk7XG5cdHJldHVybiBtYXJrRGVjb3JhdGlvbnM7XG59XG5mdW5jdGlvbiBtb2RlSGlnaGxpZ2h0ICh7c3RhcnQsdGV4dCxsYW5ndWFnZX06IHtzdGFydDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmd9KTogQXJyYXk8UmFuZ2U8RGVjb3JhdGlvbj4+IHtcblx0Ly9OT1RFOiBVc2VzIENvZGVNaXJyb3IgNSBpbXBsZW1lbnRhdGlvbiB3aGljaCBPYnNpZGlhbiBjdXJyZW50bHkgdXNlc1xuXHRsZXQgbWFya0RlY29yYXRpb25zOiBBcnJheTxSYW5nZTxEZWNvcmF0aW9uPj4gPSBbXTtcblx0Ly9AdHMtZXhwZWN0LWVycm9yIFVuZG9jdW1lbnRlZCBPYnNpZGlhbiBBUElcblx0Y29uc3QgbW9kZSA9IHdpbmRvdy5Db2RlTWlycm9yLmdldE1vZGUod2luZG93LkNvZGVNaXJyb3IuZGVmYXVsdHMsd2luZG93LkNvZGVNaXJyb3IuZmluZE1vZGVCeU5hbWUobGFuZ3VhZ2UpPy5taW1lKTsgLy8gQWx0ZXJuYXRpdmVzOiBgdGV4dC94LSR7cGFyYW1ldGVycy5sYW5ndWFnZX1gLCB3aW5kb3cuQ29kZU1pcnJvci5maW5kTW9kZUJ5TmFtZSgnanMnKS5taW1lXG5cdGxldCBzdGF0ZSA9IHdpbmRvdy5Db2RlTWlycm9yLnN0YXJ0U3RhdGUobW9kZSk7XG5cdGlmIChtb2RlPy50b2tlbikge1xuXHRcdGxldCBzdHJlYW0gPSBuZXcgd2luZG93LkNvZGVNaXJyb3IuU3RyaW5nU3RyZWFtKHRleHQpO1xuXHRcdHdoaWxlICghc3RyZWFtLmVvbCgpKSB7XG5cdFx0XHRsZXQgc3R5bGUgPSBtb2RlLnRva2VuKHN0cmVhbSxzdGF0ZSk7XG5cdFx0XHRpZiAoc3R5bGUpXG5cdFx0XHRcdG1hcmtEZWNvcmF0aW9ucy5wdXNoKHtmcm9tOiBzdGFydCtzdHJlYW0uc3RhcnQsIHRvOiBzdGFydCtzdHJlYW0ucG9zLCB2YWx1ZTogRGVjb3JhdGlvbi5tYXJrKHtjbGFzczogYGNtLSR7c3R5bGV9YH0pfSlcblx0XHRcdHN0cmVhbS5zdGFydCA9IHN0cmVhbS5wb3M7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYXJrRGVjb3JhdGlvbnM7XG59XG5cbmZ1bmN0aW9uIGVkaXRpbmdWaWV3SWdub3JlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IGJvb2xlYW4ge1xuXHRpZiAoIXN0YXRlLmZpZWxkKGVkaXRvckxpdmVQcmV2aWV3RmllbGQpKVxuXHRcdHJldHVybiB0cnVlO1xuXHRjb25zdCBmaWxlUGF0aCA9IHN0YXRlLmZpZWxkKGVkaXRvckluZm9GaWVsZCk/LmZpbGU/LnBhdGg7XG5cdGlmICh0eXBlb2YgZmlsZVBhdGggIT09ICd1bmRlZmluZWQnKVxuXHRcdHJldHVybiB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldENhY2hlKGZpbGVQYXRoKT8uZnJvbnRtYXR0ZXI/LlsnY29kZS1zdHlsZXItaWdub3JlJ10gPT09IHRydWU7XG5cdHJldHVybiBmYWxzZTtcbn1cbiIsICJpbXBvcnQgeyBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5pbXBvcnQgQ29kZVN0eWxlclBsdWdpbiBmcm9tIFwiLi9tYWluXCI7XG5pbXBvcnQgeyBDb2RlU3R5bGVyVGhlbWUgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvZGVibG9ja1BhcmFtZXRlcnMge1xuXHRsYW5ndWFnZTogc3RyaW5nO1xuXHR0aXRsZTogc3RyaW5nO1xuXHRmb2xkOiB7XG5cdFx0ZW5hYmxlZDogYm9vbGVhbjtcblx0XHRwbGFjZWhvbGRlcjogc3RyaW5nO1xuXHR9XG5cdGxpbmVOdW1iZXJzOiB7XG5cdFx0YWx3YXlzRW5hYmxlZDogYm9vbGVhbjtcblx0XHRhbHdheXNEaXNhYmxlZDogYm9vbGVhbjtcblx0XHRvZmZzZXQ6IG51bWJlcjtcblx0fSxcblx0bGluZVVud3JhcDoge1xuXHRcdGFsd2F5c0VuYWJsZWQ6IGJvb2xlYW47XG5cdFx0YWx3YXlzRGlzYWJsZWQ6IGJvb2xlYW47XG5cdFx0YWN0aXZlV3JhcDogYm9vbGVhbjtcblx0fSxcblx0aGlnaGxpZ2h0czoge1xuXHRcdGRlZmF1bHQ6IEhpZ2hsaWdodHM7XG5cdFx0YWx0ZXJuYXRpdmU6IFJlY29yZDxzdHJpbmcsSGlnaGxpZ2h0cz5cblx0fSxcblx0aWdub3JlOiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBJbmxpbmVDb2RlUGFyYW1ldGVycyB7XG5cdGxhbmd1YWdlOiBzdHJpbmc7XG5cdHRpdGxlOiBzdHJpbmc7XG5cdGljb246IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGlnaGxpZ2h0cyB7XG5cdGxpbmVOdW1iZXJzOiBBcnJheTxudW1iZXI+O1xuXHRwbGFpblRleHQ6IEFycmF5PHN0cmluZz47XG5cdHJlZ3VsYXJFeHByZXNzaW9uczogQXJyYXk8UmVnRXhwPjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBhcnNlQ29kZWJsb2NrU291cmNlKGNvZGVTZWN0aW9uOiBBcnJheTxzdHJpbmc+LCBzb3VyY2VQYXRoOiBzdHJpbmcsIHBsdWdpbjogQ29kZVN0eWxlclBsdWdpbik6IFByb21pc2U8e2NvZGVibG9ja3NQYXJhbWV0ZXJzOiBBcnJheTxDb2RlYmxvY2tQYXJhbWV0ZXJzPiwgbmVzdGVkOiBib29sZWFufT4ge1xuXHQvL0B0cy1leHBlY3QtZXJyb3IgVW5kb2N1bWVudGVkIE9ic2lkaWFuIEFQSVxuXHRjb25zdCBwbHVnaW5zOiBSZWNvcmQ8c3RyaW5nLGFueT4gPSBwbHVnaW4uYXBwLnBsdWdpbnMucGx1Z2lucztcblx0Y29uc3QgYWRtb25pdGlvbnM6IGJvb2xlYW4gPSAnb2JzaWRpYW4tYWRtb25pdGlvbicgaW4gcGx1Z2lucztcblx0bGV0IGNvZGVibG9ja3M6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG5cdGxldCBjb2RlYmxvY2tzUGFyYW1ldGVyczogQXJyYXk8Q29kZWJsb2NrUGFyYW1ldGVycz4gPSBbXTtcblx0ZnVuY3Rpb24gcGFyc2VDb2RlYmxvY2tTZWN0aW9uKGNvZGVTZWN0aW9uOiBBcnJheTxzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIGlmIChjb2RlU2VjdGlvbi5sZW5ndGggPT09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBvcGVuaW5nQ29kZWJsb2NrTGluZSA9IGdldE9wZW5pbmdMaW5lKGNvZGVTZWN0aW9uKTtcblx0XHRpZiAoIW9wZW5pbmdDb2RlYmxvY2tMaW5lKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgb3BlbkRlbGltaXRlciA9IC9eXFxzKig/Oj5cXHMqKSooKD86YGBgK3x+fn4rKSkuKiQvLmV4ZWMob3BlbmluZ0NvZGVibG9ja0xpbmUpPy5bMV07XG5cdFx0aWYgKCFvcGVuRGVsaW1pdGVyKVxuICAgICAgICAgICAgcmV0dXJuO1xuXHRcdGxldCBvcGVuRGVsaW1pdGVySW5kZXggPSBjb2RlU2VjdGlvbi5pbmRleE9mKG9wZW5pbmdDb2RlYmxvY2tMaW5lKTtcblx0XHRsZXQgY2xvc2VEZWxpbWl0ZXJJbmRleCA9IGNvZGVTZWN0aW9uLnNsaWNlKG9wZW5EZWxpbWl0ZXJJbmRleCsxKS5maW5kSW5kZXgoKGxpbmUpPT5saW5lLmluZGV4T2Yob3BlbkRlbGltaXRlciBhcyBzdHJpbmcpIT09LTEpO1xuXHRcdGlmICghYWRtb25pdGlvbnMgfHwgIS9eXFxzKig/Oj5cXHMqKSooPzpgYGArfH5+fispICphZC0uKiQvLnRlc3Qob3BlbmluZ0NvZGVibG9ja0xpbmUpKVxuICAgICAgICAgICAgY29kZWJsb2Nrcy5wdXNoKGNvZGVTZWN0aW9uLnNsaWNlKDAsb3BlbkRlbGltaXRlckluZGV4KzIrY2xvc2VEZWxpbWl0ZXJJbmRleCkpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHBhcnNlQ29kZWJsb2NrU2VjdGlvbihjb2RlU2VjdGlvbi5zbGljZShvcGVuRGVsaW1pdGVySW5kZXgrMSxvcGVuRGVsaW1pdGVySW5kZXgrMStjbG9zZURlbGltaXRlckluZGV4KSk7XG4gICAgICAgIFxuXHRcdHBhcnNlQ29kZWJsb2NrU2VjdGlvbihjb2RlU2VjdGlvbi5zbGljZShvcGVuRGVsaW1pdGVySW5kZXgrMStjbG9zZURlbGltaXRlckluZGV4KzEpKTtcblx0fVxuXHRwYXJzZUNvZGVibG9ja1NlY3Rpb24oY29kZVNlY3Rpb24pO1xuXHRmb3IgKGxldCBjb2RlYmxvY2tMaW5lcyBvZiBjb2RlYmxvY2tzKSB7XG5cdFx0bGV0IHBhcmFtZXRlckxpbmUgPSBnZXRQYXJhbWV0ZXJMaW5lKGNvZGVibG9ja0xpbmVzKTtcblx0XHRpZiAoIXBhcmFtZXRlckxpbmUpXG5cdFx0XHRjb250aW51ZTtcblx0XHRsZXQgY29kZWJsb2NrUGFyYW1ldGVycyA9IHBhcnNlQ29kZWJsb2NrUGFyYW1ldGVycyhwYXJhbWV0ZXJMaW5lLHBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUpO1xuXHRcdFx0XG5cdFx0aWYgKGlzRXhjbHVkZWQoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSxwbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRDb2RlYmxvY2tzKSlcblx0XHRcdGNvbnRpbnVlO1xuXHRcdFxuXHRcdGNvZGVibG9ja1BhcmFtZXRlcnMgPSBhd2FpdCBwbHVnaW5BZGp1c3RQYXJhbWV0ZXJzKGNvZGVibG9ja1BhcmFtZXRlcnMscGx1Z2lucyxjb2RlYmxvY2tMaW5lcyxzb3VyY2VQYXRoKTtcblx0XHRjb2RlYmxvY2tzUGFyYW1ldGVycy5wdXNoKGNvZGVibG9ja1BhcmFtZXRlcnMpO1xuXHR9XG5cdHJldHVybiB7Y29kZWJsb2Nrc1BhcmFtZXRlcnM6IGNvZGVibG9ja3NQYXJhbWV0ZXJzLCBuZXN0ZWQ6IGNvZGVibG9ja3NbMF0/IWFycmF5c0VxdWFsKGNvZGVTZWN0aW9uLGNvZGVibG9ja3NbMF0pOnRydWV9XG59XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VJbmxpbmVDb2RlKGNvZGVUZXh0OiBzdHJpbmcpOiB7cGFyYW1ldGVyczogSW5saW5lQ29kZVBhcmFtZXRlcnMgfCBudWxsLCB0ZXh0OiBzdHJpbmd9IHtcblx0XG5cdGxldCBtYXRjaCA9IC9eKHt9ID8pP3soW159XSopfSA/KC4qKSQvLmV4ZWMoY29kZVRleHQpO1xuXHRcblx0aWYgKCFtYXRjaD8uWzFdICYmICEobWF0Y2g/LlsyXSAmJiBtYXRjaD8uWzNdKSlcblx0XHRyZXR1cm4ge3BhcmFtZXRlcnM6IG51bGwsIHRleHQ6ICcnfTtcblx0ZWxzZSBpZiAobWF0Y2g/LlsxXSlcblx0XHRyZXR1cm4ge3BhcmFtZXRlcnM6IG51bGwsIHRleHQ6IG1hdGNoWzBdLnN1YnN0cmluZyhtYXRjaFsxXS5sZW5ndGgpfTtcblx0ZWxzZVxuXHRcdHJldHVybiB7cGFyYW1ldGVyczogcGFyc2VJbmxpbmVDb2RlUGFyYW1ldGVycyhtYXRjaFsyXSksIHRleHQ6IG1hdGNoWzNdfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29kZWJsb2NrUGFyYW1ldGVycyhwYXJhbWV0ZXJMaW5lOiBzdHJpbmcsIHRoZW1lOiBDb2RlU3R5bGVyVGhlbWUpOiBDb2RlYmxvY2tQYXJhbWV0ZXJzIHtcblx0bGV0IGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnMgPSB7XG5cdFx0bGFuZ3VhZ2U6ICcnLFxuXHRcdHRpdGxlOiAnJyxcblx0XHRmb2xkOiB7XG5cdFx0XHRlbmFibGVkOiBmYWxzZSxcblx0XHRcdHBsYWNlaG9sZGVyOiAnJyxcblx0XHR9LFxuXHRcdGxpbmVOdW1iZXJzOiB7XG5cdFx0XHRhbHdheXNFbmFibGVkOiBmYWxzZSxcblx0XHRcdGFsd2F5c0Rpc2FibGVkOiBmYWxzZSxcblx0XHRcdG9mZnNldDogMCxcblx0XHR9LFxuXHRcdGxpbmVVbndyYXA6IHtcblx0XHRcdGFsd2F5c0VuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0YWx3YXlzRGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0YWN0aXZlV3JhcDogZmFsc2UsXG5cdFx0fSxcblx0XHRoaWdobGlnaHRzOiB7XG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdGxpbmVOdW1iZXJzOiBbXSxcblx0XHRcdFx0cGxhaW5UZXh0OiBbXSxcblx0XHRcdFx0cmVndWxhckV4cHJlc3Npb25zOiBbXSxcblx0XHRcdH0sXG5cdFx0XHRhbHRlcm5hdGl2ZToge30sXG5cdFx0fSxcblx0XHRpZ25vcmU6IGZhbHNlLFxuXHR9XG5cdGlmIChwYXJhbWV0ZXJMaW5lLnN0YXJ0c1dpdGgoJ2BgYCcpKSB7XG5cdFx0cGFyYW1ldGVyTGluZSA9IHBhcmFtZXRlckxpbmUucmVwbGFjZSgvXmBgYCsoPz1bXmBdfCQpLywnJyk7XG5cdH0gZWxzZSBpZiAocGFyYW1ldGVyTGluZS5zdGFydHNXaXRoKCd+fn4nKSkge1xuXHRcdHBhcmFtZXRlckxpbmUgPSBwYXJhbWV0ZXJMaW5lLnJlcGxhY2UoL15+fn4rKD89W15+XXwkKS8sJycpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBjb2RlYmxvY2tQYXJhbWV0ZXJzO1xuXHR9XG5cdGxldCBsYW5ndWFnZUJyZWFrID0gcGFyYW1ldGVyTGluZS5pbmRleE9mKCcgJyk7XG5cdGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UgPSBwYXJhbWV0ZXJMaW5lLnNsaWNlKDAsbGFuZ3VhZ2VCcmVhayAhPT0gLTE/bGFuZ3VhZ2VCcmVhazpwYXJhbWV0ZXJMaW5lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcblx0aWYgKGxhbmd1YWdlQnJlYWsgPT09IC0xKVxuXHRcdHJldHVybiBjb2RlYmxvY2tQYXJhbWV0ZXJzO1xuXHRjb25zdCBwYXJhbWV0ZXJTdHJpbmdzID0gcGFyYW1ldGVyTGluZS5zbGljZShsYW5ndWFnZUJyZWFrKzEpLm1hdGNoKC8oPzpbXlxcc1wiJ10rfFwiW15cIl0qXCJ8J1teJ10qJykrL2cpO1xuXHRpZiAoIXBhcmFtZXRlclN0cmluZ3MpXG5cdFx0cmV0dXJuIGNvZGVibG9ja1BhcmFtZXRlcnM7XG5cdHBhcmFtZXRlclN0cmluZ3MuZm9yRWFjaCgocGFyYW1ldGVyU3RyaW5nKSA9PiBwYXJzZUNvZGVibG9ja1BhcmFtZXRlclN0cmluZyhwYXJhbWV0ZXJTdHJpbmcsY29kZWJsb2NrUGFyYW1ldGVycyx0aGVtZSkpO1xuXHRyZXR1cm4gY29kZWJsb2NrUGFyYW1ldGVycztcbn1cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwbHVnaW5BZGp1c3RQYXJhbWV0ZXJzKGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnMsIHBsdWdpbnM6IFJlY29yZDxzdHJpbmcsYW55PiwgY29kZWJsb2NrTGluZXM6IEFycmF5PHN0cmluZz4sIHNvdXJjZVBhdGg6IHN0cmluZyk6IFByb21pc2U8Q29kZWJsb2NrUGFyYW1ldGVycz4ge1xuXHRpZiAoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSA9PT0gJ3ByZXZpZXcnKSB7XG5cdFx0aWYgKCdvYnNpZGlhbi1jb2RlLXByZXZpZXcnIGluIHBsdWdpbnMpIHtcblx0XHRcdGxldCBjb2RlUHJldmlld1BhcmFtcyA9IGF3YWl0IHBsdWdpbnNbJ29ic2lkaWFuLWNvZGUtcHJldmlldyddLmNvZGUoY29kZWJsb2NrTGluZXMuc2xpY2UoMSwtMSkuam9pbignXFxuJyksc291cmNlUGF0aCk7XG5cdFx0XHRpZiAoIWNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRGlzYWJsZWQgJiYgIWNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRW5hYmxlZCkge1xuXHRcdFx0XHRpZiAodHlwZW9mIGNvZGVQcmV2aWV3UGFyYW1zLnN0YXJ0ID09PSAnbnVtYmVyJylcblx0XHRcdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLm9mZnNldCA9IGNvZGVQcmV2aWV3UGFyYW1zLnN0YXJ0IC0gMTtcblx0XHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNFbmFibGVkID0gY29kZVByZXZpZXdQYXJhbXMubGluZU51bWJlcjtcblx0XHRcdH1cblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMuaGlnaGxpZ2h0cy5kZWZhdWx0LmxpbmVOdW1iZXJzID0gWy4uLm5ldyBTZXQoY29kZWJsb2NrUGFyYW1ldGVycy5oaWdobGlnaHRzLmRlZmF1bHQubGluZU51bWJlcnMuY29uY2F0KEFycmF5LmZyb20ocGx1Z2luc1snb2JzaWRpYW4tY29kZS1wcmV2aWV3J10uYW5hbHl6ZUhpZ2hMaWdodExpbmVzKGNvZGVQcmV2aWV3UGFyYW1zLmxpbmVzLGNvZGVQcmV2aWV3UGFyYW1zLmhpZ2hsaWdodCksKFtudW0sX106IFtudW1iZXIsbnVtYmVyXSk9PihudW0pKSkpXTtcblx0XHRcdGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLnRpdGxlID09PSAnJylcblx0XHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy50aXRsZSA9IGNvZGVQcmV2aWV3UGFyYW1zLmZpbGVQYXRoLnNwbGl0KCdcXFxcJykucG9wKCkuc3BsaXQoJy8nKS5wb3AoKTtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UgPSBjb2RlUHJldmlld1BhcmFtcy5sYW5ndWFnZTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSA9PT0gJ2luY2x1ZGUnKSB7XG5cdFx0aWYgKCdmaWxlLWluY2x1ZGUnIGluIHBsdWdpbnMpIHtcblx0XHRcdGNvbnN0IGZpbGVJbmNsdWRlTGFuZ3VhZ2UgPSBjb2RlYmxvY2tMaW5lc1swXS5tYXRjaCgvaW5jbHVkZSg/Ols6XFxzXSsoPzxsYW5nPlxcdyspKT8vKT8uZ3JvdXBzPy5sYW5nO1xuXHRcdFx0aWYgKHR5cGVvZiBmaWxlSW5jbHVkZUxhbmd1YWdlICE9PSAndW5kZWZpbmVkJylcblx0XHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSA9IGZpbGVJbmNsdWRlTGFuZ3VhZ2U7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBjb2RlYmxvY2tQYXJhbWV0ZXJzXG59XG5mdW5jdGlvbiBwYXJzZUlubGluZUNvZGVQYXJhbWV0ZXJzKHBhcmFtZXRlckxpbmU6IHN0cmluZyk6IElubGluZUNvZGVQYXJhbWV0ZXJzIHtcblx0bGV0IGlubGluZUNvZGVQYXJhbWV0ZXJzOiBJbmxpbmVDb2RlUGFyYW1ldGVycyA9IHtcblx0XHRsYW5ndWFnZTogJycsXG5cdFx0dGl0bGU6ICcnLFxuXHRcdGljb246IGZhbHNlLFxuXHR9XG5cdGxldCBsYW5ndWFnZUJyZWFrID0gcGFyYW1ldGVyTGluZS5pbmRleE9mKCcgJyk7XG5cdGlubGluZUNvZGVQYXJhbWV0ZXJzLmxhbmd1YWdlID0gcGFyYW1ldGVyTGluZS5zbGljZSgwLGxhbmd1YWdlQnJlYWsgIT09IC0xP2xhbmd1YWdlQnJlYWs6cGFyYW1ldGVyTGluZS5sZW5ndGgpLnRvTG93ZXJDYXNlKCk7XG5cdGlmIChsYW5ndWFnZUJyZWFrID09PSAtMSlcblx0XHRyZXR1cm4gaW5saW5lQ29kZVBhcmFtZXRlcnM7XG5cdGNvbnN0IHBhcmFtZXRlclN0cmluZ3MgPSBwYXJhbWV0ZXJMaW5lLnNsaWNlKGxhbmd1YWdlQnJlYWsrMSkubWF0Y2goLyg/OlteXFxzXCInXSt8XCJbXlwiXSpcInwnW14nXSonKSsvZyk7XG5cdGlmICghcGFyYW1ldGVyU3RyaW5ncylcblx0XHRyZXR1cm4gaW5saW5lQ29kZVBhcmFtZXRlcnM7XG5cdHBhcmFtZXRlclN0cmluZ3MuZm9yRWFjaCgocGFyYW1ldGVyU3RyaW5nKSA9PiBwYXJzZUlubGluZUNvZGVQYXJhbWV0ZXJTdHJpbmcocGFyYW1ldGVyU3RyaW5nLGlubGluZUNvZGVQYXJhbWV0ZXJzKSk7XG5cdHJldHVybiBpbmxpbmVDb2RlUGFyYW1ldGVycztcbn1cblxuZnVuY3Rpb24gcGFyc2VDb2RlYmxvY2tQYXJhbWV0ZXJTdHJpbmcocGFyYW1ldGVyU3RyaW5nOiBzdHJpbmcsIGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnMsIHRoZW1lOiBDb2RlU3R5bGVyVGhlbWUpOiB2b2lkIHtcblx0aWYgKHBhcmFtZXRlclN0cmluZy5zdGFydHNXaXRoKCd0aXRsZTonKSkge1xuXHRcdGxldCB0aXRsZU1hdGNoID0gLyhbXCInXT8pKFteXFwxXSspXFwxLy5leGVjKHBhcmFtZXRlclN0cmluZy5zbGljZSgndGl0bGU6Jy5sZW5ndGgpKTtcblx0XHRpZiAodGl0bGVNYXRjaClcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMudGl0bGUgPSB0aXRsZU1hdGNoWzJdLnRyaW0oKTtcblx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcuc3RhcnRzV2l0aCgnZm9sZDonKSkge1xuXHRcdGxldCBmb2xkUGxhY2Vob2xkZXJNYXRjaCA9IC8oW1wiJ10/KShbXlxcMV0rKVxcMS8uZXhlYyhwYXJhbWV0ZXJTdHJpbmcuc2xpY2UoJ2ZvbGQ6Jy5sZW5ndGgpKTtcblx0XHRpZiAoZm9sZFBsYWNlaG9sZGVyTWF0Y2gpIHtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZCA9IHtcblx0XHRcdFx0ZW5hYmxlZDogdHJ1ZSxcblx0XHRcdFx0cGxhY2Vob2xkZXI6IGZvbGRQbGFjZWhvbGRlck1hdGNoWzJdLnRyaW0oKSxcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBpZiAocGFyYW1ldGVyU3RyaW5nID09PSAnZm9sZCcpIHtcblx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQgPSB7XG5cdFx0XHRlbmFibGVkOiB0cnVlLFxuXHRcdFx0cGxhY2Vob2xkZXI6ICcnLFxuXHRcdH1cblx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcgPT09ICdpZ25vcmUnKSB7XG5cdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5pZ25vcmUgPSB0cnVlO1xuXHR9IGVsc2UgaWYgKHBhcmFtZXRlclN0cmluZy5zdGFydHNXaXRoKCdsbjonKSkge1xuXHRcdHBhcmFtZXRlclN0cmluZyA9IHBhcmFtZXRlclN0cmluZy5zbGljZSgnbG46Jy5sZW5ndGgpXG5cdFx0aWYgKC9eXFxkKyQvLnRlc3QocGFyYW1ldGVyU3RyaW5nKSkge1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycyA9IHtcblx0XHRcdFx0YWx3YXlzRW5hYmxlZDogdHJ1ZSxcblx0XHRcdFx0YWx3YXlzRGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0XHRvZmZzZXQ6IHBhcnNlSW50KHBhcmFtZXRlclN0cmluZyktMSxcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHBhcmFtZXRlclN0cmluZy50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpIHtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMgPSB7XG5cdFx0XHRcdGFsd2F5c0VuYWJsZWQ6IHRydWUsXG5cdFx0XHRcdGFsd2F5c0Rpc2FibGVkOiBmYWxzZSxcblx0XHRcdFx0b2Zmc2V0OiAwLFxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAocGFyYW1ldGVyU3RyaW5nLnRvTG93ZXJDYXNlKCkgPT09ICdmYWxzZScpIHtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMgPSB7XG5cdFx0XHRcdGFsd2F5c0VuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0XHRhbHdheXNEaXNhYmxlZDogdHJ1ZSxcblx0XHRcdFx0b2Zmc2V0OiAwLFxuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcgPT09ICd3cmFwJykge1xuXHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcCA9IHtcblx0XHRcdGFsd2F5c0VuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0YWx3YXlzRGlzYWJsZWQ6IHRydWUsXG5cdFx0XHRhY3RpdmVXcmFwOiBmYWxzZSxcblx0XHR9XG5cdH0gZWxzZSBpZiAocGFyYW1ldGVyU3RyaW5nID09PSAndW53cmFwJykge1xuXHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcCA9IHtcblx0XHRcdGFsd2F5c0VuYWJsZWQ6IHRydWUsXG5cdFx0XHRhbHdheXNEaXNhYmxlZDogZmFsc2UsXG5cdFx0XHRhY3RpdmVXcmFwOiBmYWxzZSxcblx0XHR9XG5cdH0gZWxzZSBpZiAocGFyYW1ldGVyU3RyaW5nLnN0YXJ0c1dpdGgoJ3Vud3JhcDonKSkge1xuXHRcdHBhcmFtZXRlclN0cmluZyA9IHBhcmFtZXRlclN0cmluZy5zbGljZSgndW53cmFwOicubGVuZ3RoKVxuXHRcdGlmIChwYXJhbWV0ZXJTdHJpbmcudG9Mb3dlckNhc2UoKSA9PT0gJ2luYWN0aXZlJykge1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lVW53cmFwID0ge1xuXHRcdFx0XHRhbHdheXNFbmFibGVkOiB0cnVlLFxuXHRcdFx0XHRhbHdheXNEaXNhYmxlZDogZmFsc2UsXG5cdFx0XHRcdGFjdGl2ZVdyYXA6IHRydWUsXG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKSB7XG5cdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVVbndyYXAgPSB7XG5cdFx0XHRcdGFsd2F5c0VuYWJsZWQ6IHRydWUsXG5cdFx0XHRcdGFsd2F5c0Rpc2FibGVkOiBmYWxzZSxcblx0XHRcdFx0YWN0aXZlV3JhcDogZmFsc2UsXG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykge1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lVW53cmFwID0ge1xuXHRcdFx0XHRhbHdheXNFbmFibGVkOiBmYWxzZSxcblx0XHRcdFx0YWx3YXlzRGlzYWJsZWQ6IHRydWUsXG5cdFx0XHRcdGFjdGl2ZVdyYXA6IGZhbHNlLFxuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRsZXQgaGlnaGxpZ2h0TWF0Y2ggPSAvXihcXHcrKTooLispJC8uZXhlYyhwYXJhbWV0ZXJTdHJpbmcpO1xuXHRcdGlmIChoaWdobGlnaHRNYXRjaCkge1xuXHRcdFx0bGV0IGhpZ2hsaWdodHMgPSBwYXJzZUhpZ2hsaWdodGVkTGluZXMoaGlnaGxpZ2h0TWF0Y2hbMl0pO1xuXHRcdFx0aWYgKGhpZ2hsaWdodE1hdGNoWzFdID09PSAnaGwnKVxuXHRcdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmhpZ2hsaWdodHMuZGVmYXVsdCA9IGhpZ2hsaWdodHM7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdGlmIChoaWdobGlnaHRNYXRjaFsxXSBpbiB0aGVtZS5jb2xvdXJzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzKVxuXHRcdFx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZVtoaWdobGlnaHRNYXRjaFsxXV0gPSBoaWdobGlnaHRzO1xuXHRcdH1cblx0fVxufVxuZnVuY3Rpb24gcGFyc2VIaWdobGlnaHRlZExpbmVzKGhpZ2hsaWdodGVkTGluZXNTdHJpbmc6IHN0cmluZyk6IEhpZ2hsaWdodHMge1xuXHRjb25zdCBoaWdobGlnaHRSdWxlcyA9IGhpZ2hsaWdodGVkTGluZXNTdHJpbmcuc3BsaXQoJywnKTtcblx0bGV0IGxpbmVOdW1iZXJzOiBTZXQ8bnVtYmVyPiA9IG5ldyBTZXQoKTtcblx0bGV0IHBsYWluVGV4dDogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cdGxldCByZWd1bGFyRXhwcmVzc2lvbnM6IFNldDxSZWdFeHA+ID0gbmV3IFNldCgpO1xuXHRoaWdobGlnaHRSdWxlcy5mb3JFYWNoKGhpZ2hsaWdodFJ1bGUgPT4ge1xuXHRcdGlmICgvXFxkKy1cXGQrLy50ZXN0KGhpZ2hsaWdodFJ1bGUpKSB7IC8vIE51bWJlciBSYW5nZVxuXHRcdFx0Y29uc3QgW3N0YXJ0LGVuZF0gPSBoaWdobGlnaHRSdWxlLnNwbGl0KCctJykubWFwKG51bSA9PiBwYXJzZUludChudW0pKTtcblx0XHRcdGlmIChzdGFydCAmJiBlbmQgJiYgc3RhcnQgPD0gZW5kKVxuXHRcdFx0XHRBcnJheS5mcm9tKHtsZW5ndGg6ZW5kLXN0YXJ0KzF9LCAoXyxudW0pID0+IG51bSArIHN0YXJ0KS5mb3JFYWNoKGxpbmVOdW1iZXIgPT4gbGluZU51bWJlcnMuYWRkKGxpbmVOdW1iZXIpKTtcblx0XHR9IGVsc2UgaWYgKC9eXFwvKC4qKVxcLyQvLnRlc3QoaGlnaGxpZ2h0UnVsZSkpIHsgLy8gUmVnZXhcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHJlZ3VsYXJFeHByZXNzaW9ucy5hZGQobmV3IFJlZ0V4cChoaWdobGlnaHRSdWxlLnJlcGxhY2UoL15cXC8oLiopXFwvJC8sXCIkMVwiKSkpO1xuXHRcdFx0fSBjYXRjaCB7IH1cblx0XHR9IGVsc2UgaWYgKC9cIi4qXCIvLnRlc3QoaGlnaGxpZ2h0UnVsZSkpIHsgLy8gUGxhaW4gVGV4dFxuXHRcdFx0cGxhaW5UZXh0LmFkZChoaWdobGlnaHRSdWxlLnN1YnN0cmluZygxLGhpZ2hsaWdodFJ1bGUubGVuZ3RoLTEpKTtcblx0XHR9IGVsc2UgaWYgKC8nLionLy50ZXN0KGhpZ2hsaWdodFJ1bGUpKSB7IC8vIFBsYWluIFRleHRcblx0XHRcdHBsYWluVGV4dC5hZGQoaGlnaGxpZ2h0UnVsZS5zdWJzdHJpbmcoMSxoaWdobGlnaHRSdWxlLmxlbmd0aC0xKSk7XG5cdFx0fSBlbHNlIGlmICgvXFxELy50ZXN0KGhpZ2hsaWdodFJ1bGUpKSB7IC8vIFBsYWluIFRleHRcblx0XHRcdHBsYWluVGV4dC5hZGQoaGlnaGxpZ2h0UnVsZSk7XG5cdFx0fSBlbHNlIGlmICgvXFxkKy8udGVzdChoaWdobGlnaHRSdWxlKSkgeyAvLyBQbGFpbiBOdW1iZXJcblx0XHRcdGxpbmVOdW1iZXJzLmFkZChwYXJzZUludChoaWdobGlnaHRSdWxlKSk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHtcblx0XHRsaW5lTnVtYmVyczogWy4uLmxpbmVOdW1iZXJzXSxcblx0XHRwbGFpblRleHQ6IFsuLi5wbGFpblRleHRdLFxuXHRcdHJlZ3VsYXJFeHByZXNzaW9uczogWy4uLnJlZ3VsYXJFeHByZXNzaW9uc10sXG5cdH07XG59XG5leHBvcnQgZnVuY3Rpb24gaXNFeGNsdWRlZChsYW5ndWFnZTogc3RyaW5nLCBleGNsdWRlZExhbmd1YWdlc1N0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHJldHVybiBwYXJzZVJlZ2V4RXhjbHVkZWRMYW5ndWFnZXMoZXhjbHVkZWRMYW5ndWFnZXNTdHJpbmcpLnNvbWUocmVnZXhFeGNsdWRlZExhbmd1YWdlID0+IHtcblx0XHRpZiAocmVnZXhFeGNsdWRlZExhbmd1YWdlLnRlc3QobGFuZ3VhZ2UpKVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdH0pO1xufVxuZnVuY3Rpb24gcGFyc2VSZWdleEV4Y2x1ZGVkTGFuZ3VhZ2VzKGV4Y2x1ZGVkTGFuZ3VhZ2VzU3RyaW5nOiBzdHJpbmcpOiBBcnJheTxSZWdFeHA+IHtcblx0cmV0dXJuIGV4Y2x1ZGVkTGFuZ3VhZ2VzU3RyaW5nLnNwbGl0KFwiLFwiKS5tYXAocmVnZXhMYW5ndWFnZSA9PiBuZXcgUmVnRXhwKGBeJHtyZWdleExhbmd1YWdlLnRyaW0oKS5yZXBsYWNlKC9cXCovZywnLisnKX0kYCwnaScpKVxufVxuZnVuY3Rpb24gcGFyc2VJbmxpbmVDb2RlUGFyYW1ldGVyU3RyaW5nKHBhcmFtZXRlclN0cmluZzogc3RyaW5nLCBpbmxpbmVDb2RlUGFyYW1ldGVyczogSW5saW5lQ29kZVBhcmFtZXRlcnMpOiB2b2lkIHtcblx0aWYgKHBhcmFtZXRlclN0cmluZy5zdGFydHNXaXRoKCd0aXRsZTonKSkge1xuXHRcdGxldCB0aXRsZU1hdGNoID0gLyhbXCInXT8pKFteXFwxXSspXFwxLy5leGVjKHBhcmFtZXRlclN0cmluZy5zbGljZSgndGl0bGU6Jy5sZW5ndGgpKTtcblx0XHRpZiAodGl0bGVNYXRjaClcblx0XHRcdGlubGluZUNvZGVQYXJhbWV0ZXJzLnRpdGxlID0gdGl0bGVNYXRjaFsyXS50cmltKCk7XG5cdH0gZWxzZSBpZiAocGFyYW1ldGVyU3RyaW5nID09PSAnaWNvbicgfHwgKHBhcmFtZXRlclN0cmluZy5zdGFydHNXaXRoKCdpY29uOicpICYmIHBhcmFtZXRlclN0cmluZy50b0xvd2VyQ2FzZSgpID09PSAnaWNvbjp0cnVlJykpIHtcblx0XHRpbmxpbmVDb2RlUGFyYW1ldGVycy5pY29uID0gdHJ1ZTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyYW1ldGVyTGluZShjb2RlYmxvY2tMaW5lczogQXJyYXk8c3RyaW5nPik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGxldCBvcGVuaW5nQ29kZWJsb2NrTGluZSA9IGdldE9wZW5pbmdMaW5lKGNvZGVibG9ja0xpbmVzKTtcblx0aWYgKG9wZW5pbmdDb2RlYmxvY2tMaW5lICYmIChvcGVuaW5nQ29kZWJsb2NrTGluZSAhPT0gY29kZWJsb2NrTGluZXNbMF0gfHwgLz5cXHMqKD86YHx+KS8udGVzdChvcGVuaW5nQ29kZWJsb2NrTGluZSkpKVxuXHRcdG9wZW5pbmdDb2RlYmxvY2tMaW5lID0gY2xlYW5QYXJhbWV0ZXJMaW5lKG9wZW5pbmdDb2RlYmxvY2tMaW5lKTtcblx0cmV0dXJuIG9wZW5pbmdDb2RlYmxvY2tMaW5lXG59XG5mdW5jdGlvbiBnZXRPcGVuaW5nTGluZShjb2RlYmxvY2tMaW5lczogQXJyYXk8c3RyaW5nPik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBjb2RlYmxvY2tMaW5lcy5maW5kKChsaW5lOiBzdHJpbmcpPT5Cb29sZWFuKHRlc3RPcGVuaW5nTGluZShsaW5lKSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRlc3RPcGVuaW5nTGluZShjb2RlYmxvY2tMaW5lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRsZXQgbGluZU1hdGNoID0gL14oXFxzKig/Oj5cXHMqKSopKGBgYCt8fn5+KykvLmV4ZWMoY29kZWJsb2NrTGluZSk7XG5cdGlmICghbGluZU1hdGNoKVxuXHRcdHJldHVybiAnJztcblx0aWYgKGNvZGVibG9ja0xpbmUuaW5kZXhPZihsaW5lTWF0Y2hbMl0sbGluZU1hdGNoWzFdLmxlbmd0aCtsaW5lTWF0Y2hbMl0ubGVuZ3RoKzEpPT09LTEpXG5cdFx0cmV0dXJuIGxpbmVNYXRjaFsyXTtcblx0cmV0dXJuICcnO1xufVxuZnVuY3Rpb24gY2xlYW5QYXJhbWV0ZXJMaW5lKHBhcmFtZXRlckxpbmU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiB0cmltUGFyYW1ldGVyTGluZShwYXJhbWV0ZXJMaW5lKS5yZXBsYWNlKC9eKD86PlxccyopKihgYGArfH5+fispLywnJDEnKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cmltUGFyYW1ldGVyTGluZShwYXJhbWV0ZXJMaW5lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gcGFyYW1ldGVyTGluZS50cmltKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGaWxlQ29udGVudExpbmVzKHNvdXJjZVBhdGg6IHN0cmluZywgcGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luKTogUHJvbWlzZTxBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkPiB7XG5cdGNvbnN0IGZpbGUgPSBwbHVnaW4uYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChzb3VyY2VQYXRoKTtcblx0aWYgKCFmaWxlKSB7XG5cdFx0Y29uc29sZS5lcnJvcihgRmlsZSBub3QgZm91bmQ6ICR7c291cmNlUGF0aH1gKTtcblx0XHRyZXR1cm47XG5cdH1cblx0Y29uc3QgZmlsZUNvbnRlbnQgPSBhd2FpdCBwbHVnaW4uYXBwLnZhdWx0LmNhY2hlZFJlYWQoPFRGaWxlPiBmaWxlKS5jYXRjaCgoZXJyb3IpID0+IHtcblx0XHRjb25zb2xlLmVycm9yKGBFcnJvciByZWFkaW5nIGZpbGU6ICR7ZXJyb3IubWVzc2FnZX1gKTtcblx0XHRyZXR1cm4gJyc7XG5cdH0pO1xuXHRpZiAoIWZpbGVDb250ZW50KVxuXHRcdHJldHVybjtcblx0cmV0dXJuIGZpbGVDb250ZW50LnNwbGl0KC9cXG4vZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheXNFcXVhbChhcnJheTE6IEFycmF5PGFueT4sYXJyYXkyOiBBcnJheTxhbnk+KTogYm9vbGVhbiB7XG5cdHJldHVybiBhcnJheTEubGVuZ3RoID09PSBhcnJheTIubGVuZ3RoICYmIGFycmF5MS5ldmVyeSgoZWwpID0+IGFycmF5Mi5pbmNsdWRlcyhlbCkpO1xufVxuIiwgImltcG9ydCB7IExBTkdVQUdFX05BTUVTLCBDb2RlU3R5bGVyVGhlbWVTZXR0aW5ncyB9IGZyb20gXCIuL1NldHRpbmdzXCI7XG5pbXBvcnQgeyBDb2RlYmxvY2tQYXJhbWV0ZXJzLCBIaWdobGlnaHRzLCBJbmxpbmVDb2RlUGFyYW1ldGVycyB9IGZyb20gXCIuL0NvZGVibG9ja1BhcnNpbmdcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUhlYWRlcihjb2RlYmxvY2tQYXJhbWV0ZXJzOiBDb2RlYmxvY2tQYXJhbWV0ZXJzLCB0aGVtZVNldHRpbmdzOiBDb2RlU3R5bGVyVGhlbWVTZXR0aW5ncywgbGFuZ3VhZ2VJY29uczogUmVjb3JkPHN0cmluZyxzdHJpbmc+KTogSFRNTEVsZW1lbnQge1xuXHRjb25zdCBoZWFkZXJDb250YWluZXIgPSBjcmVhdGVEaXYoe2NsczogYGNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIkeyhjb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQuZW5hYmxlZCB8fCBjb2RlYmxvY2tQYXJhbWV0ZXJzLnRpdGxlICE9PSAnJyk/Jy1zcGVjaWZpYyc6Jyd9YH0pO1xuXHRpZiAoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSAhPT0gJycpe1xuXHRcdGNvbnN0IGljb25VUkwgPSBnZXRMYW5ndWFnZUljb24oY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSxsYW5ndWFnZUljb25zKVxuXHRcdGlmIChpY29uVVJMICE9PSBudWxsKVxuXHRcdFx0aGVhZGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUltYWdlV3JhcHBlcihpY29uVVJMLGNyZWF0ZURpdigpKSk7XG5cdFx0aGVhZGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZURpdih7Y2xzOiBgY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy0ke2NvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2V9YCwgdGV4dDogZ2V0TGFuZ3VhZ2VUYWcoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSl9KSk7XG5cdH1cblx0XG5cdGxldCBoZWFkZXJUZXh0ID0gJyc7XG5cdGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLnRpdGxlICE9PSAnJylcblx0XHRoZWFkZXJUZXh0ID0gY29kZWJsb2NrUGFyYW1ldGVycy50aXRsZTtcblx0ZWxzZSBpZiAoY29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLmVuYWJsZWQpXG5cdFx0aWYgKGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5wbGFjZWhvbGRlciE9PScnKVxuXHRcdFx0aGVhZGVyVGV4dCA9IGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5wbGFjZWhvbGRlcjtcblx0XHRlbHNlXG5cdFx0XHRoZWFkZXJUZXh0ID0gdGhlbWVTZXR0aW5ncy5oZWFkZXIuY29sbGFwc2VQbGFjZWhvbGRlciE9PScnP3RoZW1lU2V0dGluZ3MuaGVhZGVyLmNvbGxhcHNlUGxhY2Vob2xkZXI6J0NvbGxhcHNlZCBDb2RlJztcblx0aGVhZGVyQ29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZURpdih7Y2xzOiBcImNvZGUtc3R5bGVyLWhlYWRlci10ZXh0XCIsIHRleHQ6IGhlYWRlclRleHR9KSk7ICAgXG5cblx0cmV0dXJuIGhlYWRlckNvbnRhaW5lcjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbmxpbmVPcGVuZXIoaW5saW5lQ29kZVBhcmFtZXRlcnM6IElubGluZUNvZGVQYXJhbWV0ZXJzLCBsYW5ndWFnZUljb25zOiBSZWNvcmQ8c3RyaW5nLHN0cmluZz4sIGNvbnRhaW5lckNsYXNzZXM6IEFycmF5PHN0cmluZz4gPSBbJ2NvZGUtc3R5bGVyLWlubGluZS1vcGVuZXInXSk6IEhUTUxFbGVtZW50IHtcblx0Y29uc3Qgb3BlbmVyQ29udGFpbmVyID0gY3JlYXRlU3Bhbih7Y2xzOiBjb250YWluZXJDbGFzc2VzLmpvaW4oJyAnKX0pO1xuXHRpZiAoaW5saW5lQ29kZVBhcmFtZXRlcnMuaWNvbikge1xuXHRcdGNvbnN0IGljb25VUkwgPSBnZXRMYW5ndWFnZUljb24oaW5saW5lQ29kZVBhcmFtZXRlcnMubGFuZ3VhZ2UsbGFuZ3VhZ2VJY29ucyk7XG5cdFx0aWYgKGljb25VUkwgIT09IG51bGwpXG5cdFx0XHRvcGVuZXJDb250YWluZXIuYXBwZW5kQ2hpbGQoY3JlYXRlSW1hZ2VXcmFwcGVyKGljb25VUkwsY3JlYXRlU3BhbigpLGBjb2RlLXN0eWxlci1pbmxpbmUtaWNvbmApKTtcblx0fVxuXHRpZiAoaW5saW5lQ29kZVBhcmFtZXRlcnMudGl0bGUpXG5cdFx0b3BlbmVyQ29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW4oe2NsczogYGNvZGUtc3R5bGVyLWlubGluZS10aXRsZWAsIHRleHQ6IGlubGluZUNvZGVQYXJhbWV0ZXJzLnRpdGxlfSkpO1xuXHRyZXR1cm4gb3BlbmVyQ29udGFpbmVyO1xufVxuZnVuY3Rpb24gY3JlYXRlSW1hZ2VXcmFwcGVyKGljb25VUkw6IHN0cmluZywgaW1hZ2VXcmFwcGVyOiBIVE1MRWxlbWVudCwgaW1nQ2xhc3M6IHN0cmluZyA9IFwiY29kZS1zdHlsZXItaWNvblwiKTogSFRNTEVsZW1lbnQge1xuXHRjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuXHRpbWcuY2xhc3NMaXN0LmFkZChpbWdDbGFzcyk7XG5cdGltZy5zcmMgPSBpY29uVVJMO1xuXHRpbWFnZVdyYXBwZXIuYXBwZW5kQ2hpbGQoaW1nKTtcblx0cmV0dXJuIGltYWdlV3JhcHBlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhbmd1YWdlSWNvbihsYW5ndWFnZTogc3RyaW5nLCBsYW5ndWFnZUljb25zOiBSZWNvcmQ8c3RyaW5nLHN0cmluZz4pIHtcblx0bGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZVRhZyhsYW5ndWFnZSk7XG5cdGlmIChsYW5ndWFnZSBpbiBsYW5ndWFnZUljb25zKVxuXHRcdHJldHVybiBsYW5ndWFnZUljb25zW2xhbmd1YWdlXTtcblx0cmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBnZXRMYW5ndWFnZVRhZyhsYW5ndWFnZTogc3RyaW5nKSB7XG5cdGlmIChsYW5ndWFnZSBpbiBMQU5HVUFHRV9OQU1FUylcblx0XHRyZXR1cm4gTEFOR1VBR0VfTkFNRVNbbGFuZ3VhZ2VdO1xuXHRlbHNlIGlmIChsYW5ndWFnZSAhPT0gJycpXG5cdFx0cmV0dXJuIGxhbmd1YWdlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbGFuZ3VhZ2Uuc2xpY2UoMSk7XG5cdHJldHVybiBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGluZUNsYXNzKGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnMsIGxpbmVOdW1iZXI6IG51bWJlciwgbGluZTogc3RyaW5nKTogQXJyYXk8c3RyaW5nPiB7XG5cdGxldCBjbGFzc0xpc3Q6IEFycmF5PHN0cmluZz4gPSBbXTtcblx0aWYgKGNvZGVibG9ja1BhcmFtZXRlcnMuaGlnaGxpZ2h0cy5kZWZhdWx0LmxpbmVOdW1iZXJzLmluY2x1ZGVzKGxpbmVOdW1iZXIrY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5vZmZzZXQpIHx8IGNvZGVibG9ja1BhcmFtZXRlcnMuaGlnaGxpZ2h0cy5kZWZhdWx0LnBsYWluVGV4dC5zb21lKHRleHQgPT4gbGluZS5pbmRleE9mKHRleHQpID4gLTEpIHx8IGNvZGVibG9ja1BhcmFtZXRlcnMuaGlnaGxpZ2h0cy5kZWZhdWx0LnJlZ3VsYXJFeHByZXNzaW9ucy5zb21lKHJlZ0V4cCA9PiByZWdFeHAudGVzdChsaW5lKSkpXG5cdFx0Y2xhc3NMaXN0LnB1c2goJ2NvZGUtc3R5bGVyLWxpbmUtaGlnaGxpZ2h0ZWQnKTtcblx0T2JqZWN0LmVudHJpZXMoY29kZWJsb2NrUGFyYW1ldGVycy5oaWdobGlnaHRzLmFsdGVybmF0aXZlKS5mb3JFYWNoKChbYWx0ZXJuYXRpdmVIaWdobGlnaHQsaGlnaGxpZ2h0ZWRMaW5lc106IFtzdHJpbmcsSGlnaGxpZ2h0c10pID0+IHtcblx0XHRpZiAoaGlnaGxpZ2h0ZWRMaW5lcy5saW5lTnVtYmVycy5pbmNsdWRlcyhsaW5lTnVtYmVyK2NvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMub2Zmc2V0KSB8fCBoaWdobGlnaHRlZExpbmVzLnBsYWluVGV4dC5zb21lKHRleHQgPT4gbGluZS5pbmRleE9mKHRleHQpID4gLTEpIHx8IGhpZ2hsaWdodGVkTGluZXMucmVndWxhckV4cHJlc3Npb25zLnNvbWUocmVnRXhwID0+IHJlZ0V4cC50ZXN0KGxpbmUpKSlcblx0XHRcdGNsYXNzTGlzdC5wdXNoKGBjb2RlLXN0eWxlci1saW5lLWhpZ2hsaWdodGVkLSR7YWx0ZXJuYXRpdmVIaWdobGlnaHQucmVwbGFjZSgvXFxzKy9nLCAnLScpLnRvTG93ZXJDYXNlKCl9YCk7XG5cdH0pXG5cdGlmIChjbGFzc0xpc3QubGVuZ3RoID09PSAwKVxuXHRcdGNsYXNzTGlzdCA9IFsnY29kZS1zdHlsZXItbGluZSddXG5cdHJldHVybiBjbGFzc0xpc3Q7XG59XG4iLCAiaW1wb3J0IHsgTWFya2Rvd25TZWN0aW9uSW5mb3JtYXRpb24sIENhY2hlZE1ldGFkYXRhLCBzYW5pdGl6ZUhUTUxUb0RvbSwgRnJvbnRNYXR0ZXJDYWNoZSwgTWFya2Rvd25SZW5kZXJlciwgQ29tcG9uZW50IH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQge3VuaWZpZWR9IGZyb20gXCJ1bmlmaWVkXCI7XG5pbXBvcnQgcmVtYXJrUGFyc2UgZnJvbSBcInJlbWFyay1wYXJzZVwiO1xuaW1wb3J0IHt2aXNpdH0gZnJvbSBcInVuaXN0LXV0aWwtdmlzaXRcIjtcblxuaW1wb3J0IENvZGVTdHlsZXJQbHVnaW4gZnJvbSBcIi4vbWFpblwiO1xuaW1wb3J0IHsgVFJBTlNJVElPTl9MRU5HVEggfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgQ29kZWJsb2NrUGFyYW1ldGVycywgZ2V0RmlsZUNvbnRlbnRMaW5lcywgaXNFeGNsdWRlZCwgcGFyc2VDb2RlYmxvY2tTb3VyY2UsIHBhcnNlSW5saW5lQ29kZSB9IGZyb20gXCIuL0NvZGVibG9ja1BhcnNpbmdcIjtcbmltcG9ydCB7IGNyZWF0ZUhlYWRlciwgY3JlYXRlSW5saW5lT3BlbmVyLCBnZXRMaW5lQ2xhc3MgfSBmcm9tIFwiLi9Db2RlYmxvY2tEZWNvcmF0aW5nXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkaW5nVmlld0NvZGVibG9ja0RlY29yYXRpbmdQb3N0UHJvY2Vzc29yKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB7c291cmNlUGF0aCxnZXRTZWN0aW9uSW5mbyxmcm9udG1hdHRlcn06IHtzb3VyY2VQYXRoOiBzdHJpbmcsIGdldFNlY3Rpb25JbmZvOiAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uIHwgbnVsbCwgZnJvbnRtYXR0ZXI6IEZyb250TWF0dGVyQ2FjaGUgfCB1bmRlZmluZWR9LCBwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4sIGVkaXRpbmdFbWJlZHM6IGJvb2xlYW4gPSBmYWxzZSkge1xuXHRjb25zdCBjYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsID0gcGx1Z2luLmFwcC5tZXRhZGF0YUNhY2hlLmdldENhY2hlKHNvdXJjZVBhdGgpO1xuXHRpZiAoIXNvdXJjZVBhdGggfHwgIWVsZW1lbnQgfHwgKGZyb250bWF0dGVyID8/IGNhY2hlPy5mcm9udG1hdHRlcik/LlsnY29kZS1zdHlsZXItaWdub3JlJ10gPT09IHRydWUpXG5cdFx0cmV0dXJuO1xuXG5cdGxldCBjb2RlYmxvY2tQcmVFbGVtZW50czogQXJyYXk8SFRNTEVsZW1lbnQ+O1xuXHRlZGl0aW5nRW1iZWRzID0gZWRpdGluZ0VtYmVkcyB8fCBCb29sZWFuKGVsZW1lbnQubWF0Y2hQYXJlbnQoXCIuY20tZW1iZWQtYmxvY2tcIikpO1xuXHRjb25zdCBzcGVjaWZpYyA9ICFCb29sZWFuKGVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi52aWV3LWNvbnRlbnQgPiAqXCIpKTtcblx0Y29uc3QgcHJpbnRpbmcgPSBCb29sZWFuKGVsZW1lbnQucXVlcnlTZWxlY3RvcihcImRpdi5wcmludCA+ICpcIikpO1xuXHRpZiAocHJpbnRpbmcgJiYgIXBsdWdpbi5zZXR0aW5ncy5kZWNvcmF0ZVByaW50KVxuXHRcdHJldHVybjtcblxuXHRpZiAoIWVkaXRpbmdFbWJlZHMgJiYgIXNwZWNpZmljKVxuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnRzID0gQXJyYXkuZnJvbShlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXJrZG93bi1yZWFkaW5nLXZpZXcgcHJlOm5vdCguZnJvbnRtYXR0ZXIpJykpO1xuXHRlbHNlIGlmICghZWRpdGluZ0VtYmVkcyAmJiBzcGVjaWZpYykge1xuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnRzID0gQXJyYXkuZnJvbShlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZTpub3QoLmZyb250bWF0dGVyKScpKTtcblx0XHRsZXQgYWRtb25pdGlvbkNvZGVFbGVtZW50ID0gY29kZWJsb2NrUHJlRWxlbWVudHM/LlswXT8ucXVlcnlTZWxlY3RvcigncHJlOm5vdChbY2xhc3NdKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtYWQtXCJdJyk7XG5cdFx0aWYgKGFkbW9uaXRpb25Db2RlRWxlbWVudCkge1xuXHRcdFx0YXdhaXQgc2xlZXAoNTApO1xuXHRcdFx0Y29kZWJsb2NrUHJlRWxlbWVudHMgPSBBcnJheS5mcm9tKGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlOm5vdCguZnJvbnRtYXR0ZXIpJykpO1xuXHRcdH1cblx0fSBlbHNlIGlmIChlZGl0aW5nRW1iZWRzICYmICFzcGVjaWZpYylcblx0XHRjb2RlYmxvY2tQcmVFbGVtZW50cyA9IEFycmF5LmZyb20oZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWFya2Rvd24tc291cmNlLXZpZXcgLmNtLWVtYmVkLWJsb2NrIHByZTpub3QoLmZyb250bWF0dGVyKScpKTtcblx0ZWxzZVxuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnRzID0gW107XG5cdGlmIChjb2RlYmxvY2tQcmVFbGVtZW50cy5sZW5ndGggPT09IDAgJiYgIShlZGl0aW5nRW1iZWRzICYmIHNwZWNpZmljKSlcblx0XHRyZXR1cm47XG5cblx0Y29uc3QgY29kZWJsb2NrU2VjdGlvbkluZm86IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uIHwgbnVsbCA9IGdldFNlY3Rpb25JbmZvKGNvZGVibG9ja1ByZUVsZW1lbnRzWzBdKTtcblx0aWYgKGNvZGVibG9ja1NlY3Rpb25JbmZvICYmIHNwZWNpZmljICYmICFlZGl0aW5nRW1iZWRzKVxuXHRcdHJlbmRlclNwZWNpZmljUmVhZGluZ1NlY3Rpb24oY29kZWJsb2NrUHJlRWxlbWVudHMsc291cmNlUGF0aCxjb2RlYmxvY2tTZWN0aW9uSW5mbyxwbHVnaW4pO1xuXHRlbHNlIGlmIChzcGVjaWZpYyAmJiAhcHJpbnRpbmcpIHtcblx0XHRhd2FpdCBzbGVlcCg1MCk7XG5cdFx0ZWRpdGluZ0VtYmVkcyA9IGVkaXRpbmdFbWJlZHMgfHwgQm9vbGVhbihlbGVtZW50Lm1hdGNoUGFyZW50KFwiLmNtLWVtYmVkLWJsb2NrXCIpKTtcblx0XHRpZiAoZWRpdGluZ0VtYmVkcyB8fCAhZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJhZG1vbml0aW9uLWNvbnRlbnRcIikpIHtcblx0XHRcdGxldCBjb250ZW50RWwgPSBlbGVtZW50Lm1hdGNoUGFyZW50KCcudmlldy1jb250ZW50JykgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0XHRhd2FpdCByZWFkaW5nVmlld0NvZGVibG9ja0RlY29yYXRpbmdQb3N0UHJvY2Vzc29yKGNvbnRlbnRFbD9jb250ZW50RWw6KGVsZW1lbnQubWF0Y2hQYXJlbnQoJ2Rpdi5wcmludCcpIGFzIEhUTUxFbGVtZW50KSx7c291cmNlUGF0aCxnZXRTZWN0aW9uSW5mbyxmcm9udG1hdHRlcn0scGx1Z2luLGVkaXRpbmdFbWJlZHMpOyAvLyBSZS1yZW5kZXIgd2hvbGUgZG9jdW1lbnRcblx0XHR9XG5cdH1cblx0ZWxzZVxuXHRcdHJlbmRlckRvY3VtZW50KGNvZGVibG9ja1ByZUVsZW1lbnRzLHNvdXJjZVBhdGgsY2FjaGUsZWRpdGluZ0VtYmVkcyxwcmludGluZyxwbHVnaW4pO1xufVxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyU3BlY2lmaWNSZWFkaW5nU2VjdGlvbihjb2RlYmxvY2tQcmVFbGVtZW50czogQXJyYXk8SFRNTEVsZW1lbnQ+LCBzb3VyY2VQYXRoOiBzdHJpbmcsIGNvZGVibG9ja1NlY3Rpb25JbmZvOiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiwgcGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IGNvZGVibG9ja3NQYXJhbWV0ZXJzID0gKGF3YWl0IHBhcnNlQ29kZWJsb2NrU291cmNlKEFycmF5LmZyb20oe2xlbmd0aDogY29kZWJsb2NrU2VjdGlvbkluZm8ubGluZUVuZC1jb2RlYmxvY2tTZWN0aW9uSW5mby5saW5lU3RhcnQrMX0sIChfLG51bSkgPT4gbnVtICsgY29kZWJsb2NrU2VjdGlvbkluZm8ubGluZVN0YXJ0KS5tYXAoKGxpbmVOdW1iZXIpPT5jb2RlYmxvY2tTZWN0aW9uSW5mby50ZXh0LnNwbGl0KCdcXG4nKVtsaW5lTnVtYmVyXSksc291cmNlUGF0aCxwbHVnaW4pKS5jb2RlYmxvY2tzUGFyYW1ldGVycztcblx0aWYgKGNvZGVibG9ja1ByZUVsZW1lbnRzLmxlbmd0aCAhPT0gY29kZWJsb2Nrc1BhcmFtZXRlcnMubGVuZ3RoKVxuXHRcdHJldHVybjtcblx0Zm9yIChsZXQgW2tleSxjb2RlYmxvY2tQcmVFbGVtZW50XSBvZiBjb2RlYmxvY2tQcmVFbGVtZW50cy5lbnRyaWVzKCkpIHtcblx0XHRsZXQgY29kZWJsb2NrUGFyYW1ldGVycyA9IGNvZGVibG9ja3NQYXJhbWV0ZXJzW2tleV07XG5cdFx0bGV0IGNvZGVibG9ja0NvZGVFbGVtZW50ID0gY29kZWJsb2NrUHJlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdwcmUgPiBjb2RlJyk7XG5cdFx0aWYgKCFjb2RlYmxvY2tDb2RlRWxlbWVudClcblx0XHRcdHJldHVybjtcblx0XHRpZiAoQXJyYXkuZnJvbShjb2RlYmxvY2tDb2RlRWxlbWVudC5jbGFzc0xpc3QpLnNvbWUoY2xhc3NOYW1lID0+IC9ebGFuZ3VhZ2UtXFxTKy8udGVzdChjbGFzc05hbWUpKSlcblx0XHRcdHdoaWxlKCFjb2RlYmxvY2tDb2RlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJpcy1sb2FkZWRcIikpXG5cdFx0XHRcdGF3YWl0IHNsZWVwKDIpO1xuXHRcdGlmIChpc0V4Y2x1ZGVkKGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UscGx1Z2luLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzKSB8fCBjb2RlYmxvY2tQYXJhbWV0ZXJzLmlnbm9yZSlcblx0XHRcdGNvbnRpbnVlO1xuXHRcdGF3YWl0IHJlbWFrZUNvZGVibG9jayhjb2RlYmxvY2tDb2RlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxjb2RlYmxvY2tQcmVFbGVtZW50LGNvZGVibG9ja1BhcmFtZXRlcnMsdHJ1ZSxwbHVnaW4pO1xuXHR9XG59XG5hc3luYyBmdW5jdGlvbiByZW5kZXJEb2N1bWVudChjb2RlYmxvY2tQcmVFbGVtZW50czogQXJyYXk8SFRNTEVsZW1lbnQ+LCBzb3VyY2VQYXRoOiBzdHJpbmcsIGNhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGwsIGVkaXRpbmdFbWJlZHM6IGJvb2xlYW4sIHByaW50aW5nOiBib29sZWFuLCBwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4pIHtcblx0Y29uc3QgZmlsZUNvbnRlbnRMaW5lcyA9IGF3YWl0IGdldEZpbGVDb250ZW50TGluZXMoc291cmNlUGF0aCxwbHVnaW4pO1xuXHRpZiAoIWZpbGVDb250ZW50TGluZXMpXG5cdFx0cmV0dXJuO1xuXHRsZXQgY29kZWJsb2Nrc1BhcmFtZXRlcnM6IEFycmF5PENvZGVibG9ja1BhcmFtZXRlcnM+ID0gW107XG5cblx0aWYgKHR5cGVvZiBjYWNoZT8uc2VjdGlvbnMgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIGNhY2hlLnNlY3Rpb25zKSB7XG5cdFx0XHRpZiAoIWVkaXRpbmdFbWJlZHMgfHwgc2VjdGlvbi50eXBlID09PSAnY29kZScgfHwgc2VjdGlvbi50eXBlID09PSAnY2FsbG91dCcpIHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkQ29kZWJsb2Nrc1BhcmFtZXRlcnMgPSBhd2FpdCBwYXJzZUNvZGVibG9ja1NvdXJjZShmaWxlQ29udGVudExpbmVzLnNsaWNlKHNlY3Rpb24ucG9zaXRpb24uc3RhcnQubGluZSxzZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lKzEpLHNvdXJjZVBhdGgscGx1Z2luKTtcblx0XHRcdFx0aWYgKCFlZGl0aW5nRW1iZWRzIHx8IHBhcnNlZENvZGVibG9ja3NQYXJhbWV0ZXJzLm5lc3RlZClcblx0XHRcdFx0XHRjb2RlYmxvY2tzUGFyYW1ldGVycyA9IGNvZGVibG9ja3NQYXJhbWV0ZXJzLmNvbmNhdChwYXJzZWRDb2RlYmxvY2tzUGFyYW1ldGVycy5jb2RlYmxvY2tzUGFyYW1ldGVycyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGNvbnNvbGUuZXJyb3IoYE1ldGFkYXRhIGNhY2hlIG5vdCBmb3VuZCBmb3IgZmlsZTogJHtzb3VyY2VQYXRofWApO1xuXHRcdHJldHVybjtcblx0fVxuXHRpZiAoY29kZWJsb2NrUHJlRWxlbWVudHMubGVuZ3RoICE9PSBjb2RlYmxvY2tzUGFyYW1ldGVycy5sZW5ndGgpXG5cdFx0cmV0dXJuO1xuXHR0cnkge1xuXHRcdGZvciAobGV0IFtrZXksY29kZWJsb2NrUHJlRWxlbWVudF0gb2YgQXJyYXkuZnJvbShjb2RlYmxvY2tQcmVFbGVtZW50cykuZW50cmllcygpKSB7XG5cdFx0XHRsZXQgY29kZWJsb2NrUGFyYW1ldGVycyA9IGNvZGVibG9ja3NQYXJhbWV0ZXJzW2tleV07XG5cdFx0XHRsZXQgY29kZWJsb2NrQ29kZUVsZW1lbnQ6IEhUTUxQcmVFbGVtZW50IHwgbnVsbCA9IGNvZGVibG9ja1ByZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcInByZSA+IGNvZGVcIik7XG5cdFx0XHRpZiAoIWNvZGVibG9ja0NvZGVFbGVtZW50KVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHRpZiAoQXJyYXkuZnJvbShjb2RlYmxvY2tDb2RlRWxlbWVudC5jbGFzc0xpc3QpLnNvbWUoY2xhc3NOYW1lID0+IC9ebGFuZ3VhZ2UtXFxTKy8udGVzdChjbGFzc05hbWUpKSlcblx0XHRcdFx0d2hpbGUoIWNvZGVibG9ja0NvZGVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcImlzLWxvYWRlZFwiKSlcblx0XHRcdFx0XHRhd2FpdCBzbGVlcCgyKTtcblx0XHRcdGlmIChjb2RlYmxvY2tDb2RlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiY29kZSBbY2xhc3MqPSdjb2RlLXN0eWxlci1saW5lJ11cIikpXG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0aWYgKGlzRXhjbHVkZWQoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSxwbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXMpIHx8IGNvZGVibG9ja1BhcmFtZXRlcnMuaWdub3JlKVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdGF3YWl0IHJlbWFrZUNvZGVibG9jayhjb2RlYmxvY2tDb2RlRWxlbWVudCxjb2RlYmxvY2tQcmVFbGVtZW50LGNvZGVibG9ja1BhcmFtZXRlcnMsIXByaW50aW5nLHBsdWdpbik7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGNvbnNvbGUuZXJyb3IoYEVycm9yIHJlbmRlcmluZyBkb2N1bWVudDogJHtlcnJvci5tZXNzYWdlfWApO1xuXHRcdHJldHVybjtcblx0fVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZGluZ1ZpZXdJbmxpbmVEZWNvcmF0aW5nUG9zdFByb2Nlc3NvcihlbGVtZW50OiBIVE1MRWxlbWVudCwge3NvdXJjZVBhdGgsZ2V0U2VjdGlvbkluZm8sZnJvbnRtYXR0ZXJ9OiB7c291cmNlUGF0aDogc3RyaW5nLCBnZXRTZWN0aW9uSW5mbzogKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiB8IG51bGwsIGZyb250bWF0dGVyOiBGcm9udE1hdHRlckNhY2hlIHwgdW5kZWZpbmVkfSwgcGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luKSB7XG5cdGlmICghc291cmNlUGF0aCB8fCAhZWxlbWVudClcblx0XHRyZXR1cm47XG5cdGZvciAobGV0IGlubGluZUNvZGVFbGVtZW50IG9mIEFycmF5LmZyb20oZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCc6bm90KHByZSkgPiBjb2RlJykpKSB7XG5cdFx0aWYgKGlubGluZUNvZGVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnY29kZS1zdHlsZXItaGlnaGxpZ2h0ZWQnKSB8fCBpbmxpbmVDb2RlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2NvZGUtc3R5bGVyLWhpZ2hsaWdodC1pZ25vcmUnKSlcblx0XHRcdHJldHVybjtcblx0XHRsZXQgdGVtcFJlbmRlckNvbnRhaW5lciA9IGNyZWF0ZURpdigpO1xuXHRcdGxldCByZW5kZXJlZENvZGVFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGw7XG5cdFx0bGV0IGlubGluZUNvZGVUZXh0ID0gKGlubGluZUNvZGVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG5cdFx0bGV0IHtwYXJhbWV0ZXJzLHRleHR9ID0gcGFyc2VJbmxpbmVDb2RlKGlubGluZUNvZGVUZXh0KTtcblx0XHRpZiAoIXBhcmFtZXRlcnMpIHtcblx0XHRcdGlmICghdGV4dClcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0TWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bignYCcucmVwZWF0KDIwKSt0ZXh0KydgJy5yZXBlYXQoMjApLHRlbXBSZW5kZXJDb250YWluZXIsJycsbmV3IENvbXBvbmVudCgpKTtcblx0XHRcdHJlbmRlcmVkQ29kZUVsZW1lbnQgPSB0ZW1wUmVuZGVyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ2NvZGUnKTtcblx0XHRcdGlmICghcmVuZGVyZWRDb2RlRWxlbWVudClcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0aW5saW5lQ29kZUVsZW1lbnQuaW5uZXJIVE1MID0gcmVuZGVyZWRDb2RlRWxlbWVudC5pbm5lckhUTUw7XG5cdFx0XHRpbmxpbmVDb2RlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjb2RlLXN0eWxlci1oaWdobGlnaHQtaWdub3JlJyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdE1hcmtkb3duUmVuZGVyZXIucmVuZGVyTWFya2Rvd24oWydgYGAnLHBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnN5bnRheEhpZ2hsaWdodD9wYXJhbWV0ZXJzLmxhbmd1YWdlOicnLCdcXG4nLHRleHQsJ1xcbicsJ2BgYCddLmpvaW4oJycpLHRlbXBSZW5kZXJDb250YWluZXIsJycsbmV3IENvbXBvbmVudCgpKTtcblx0XHRcdHJlbmRlcmVkQ29kZUVsZW1lbnQgPSB0ZW1wUmVuZGVyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3ByZSA+IGNvZGUnKTtcblx0XHRcdGlmICghcmVuZGVyZWRDb2RlRWxlbWVudClcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0d2hpbGUocGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuc3ludGF4SGlnaGxpZ2h0ICYmICFyZW5kZXJlZENvZGVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcImlzLWxvYWRlZFwiKSlcblx0XHRcdFx0YXdhaXQgc2xlZXAoMik7XG5cdFx0XHRpbmxpbmVDb2RlRWxlbWVudC5pbm5lckhUTUwgPSByZW5kZXJlZENvZGVFbGVtZW50LmlubmVySFRNTDtcblx0XHRcdGlubGluZUNvZGVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2NvZGUtc3R5bGVyLWhpZ2hsaWdodGVkJyk7XG5cdFx0XHRpbmxpbmVDb2RlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJwYXJhbWV0ZXJzXCIsaW5saW5lQ29kZVRleHQuc3Vic3RyaW5nKDAsaW5saW5lQ29kZVRleHQubGFzdEluZGV4T2YodGV4dCkpKTtcblx0XHRcdGlmIChwYXJhbWV0ZXJzLmljb24gfHwgcGFyYW1ldGVycy50aXRsZSlcblx0XHRcdFx0aW5saW5lQ29kZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNyZWF0ZUlubGluZU9wZW5lcihwYXJhbWV0ZXJzLHBsdWdpbi5sYW5ndWFnZUljb25zKSxpbmxpbmVDb2RlRWxlbWVudC5jaGlsZE5vZGVzWzBdKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlc3Ryb3lSZWFkaW5nTW9kZUVsZW1lbnRzKCk6IHZvaWQge1xuXHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmNvZGUtc3R5bGVyLXByZS1wYXJlbnRcIikuZm9yRWFjaChjb2RlYmxvY2tQcmVQYXJlbnQgPT4ge1xuXHRcdGNvZGVibG9ja1ByZVBhcmVudC5jbGFzc0xpc3QucmVtb3ZlKCdjb2RlLXN0eWxlci1wcmUtcGFyZW50Jyk7XG5cdH0pO1xuXHRbXG5cdFx0Li4uQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwicHJlLmNvZGUtc3R5bGVyLXByZSBkaXZbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ11cIikpLFxuXHRcdC4uLkFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInByZS5jb2RlLXN0eWxlci1wcmUgZGl2W2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXVwiKSksXG5cdFx0Li4uQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiOm5vdChwcmUpID4gY29kZSBzcGFuLmNvZGUtc3R5bGVyLWlubGluZS1vcGVuZXJcIikpLFxuXHRdLmZvckVhY2goZWxlbWVudCA9PiBlbGVtZW50LnJlbW92ZSgpKTtcblx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInByZS5jb2RlLXN0eWxlci1wcmVcIikuZm9yRWFjaCgoY29kZWJsb2NrUHJlRWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcblx0XHRjb2RlYmxvY2tQcmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2NvZGUtc3R5bGVyLXByZScpO1xuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnY29kZS1zdHlsZXItY29sbGFwc2VkJyk7XG5cdFx0Y29kZWJsb2NrUHJlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS10cnVlLWhlaWdodCcpO1xuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tbGluZS1udW1iZXItbWFyZ2luJyk7XG5cdFx0Y29kZWJsb2NrUHJlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWF4LWhlaWdodCcpO1xuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3doaXRlLXNwYWNlJyk7XG5cdH0pO1xuXHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUgPiBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQnKS5mb3JFYWNoKChleGVjdXRlQ29kZU91dHB1dDogSFRNTEVsZW1lbnQpID0+IHtcblx0XHRleGVjdXRlQ29kZU91dHB1dC5jbGFzc0xpc3QucmVtb3ZlKCdleGVjdXRlLWNvZGUtb3V0cHV0Jyk7XG5cdFx0ZXhlY3V0ZUNvZGVPdXRwdXQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tdHJ1ZS1oZWlnaHQnKTtcblx0XHRleGVjdXRlQ29kZU91dHB1dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWF4LWhlaWdodCcpO1xuXHR9KTtcblx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlID4gY29kZTpudGgtb2YtdHlwZSgxKScpLmZvckVhY2goKGNvZGVibG9ja0NvZGVFbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuXHRcdGNvZGVibG9ja0NvZGVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXRydWUtaGVpZ2h0Jyk7XG5cdFx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tbGluZS13cmFwcGluZycpO1xuXHRcdGNvZGVibG9ja0NvZGVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWxpbmUtYWN0aXZlLXdyYXBwaW5nJyk7XG5cdFx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ21heC1oZWlnaHQnKTtcblx0XHRjb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnd2hpdGUtc3BhY2UnKTtcblx0XHRjb2RlYmxvY2tDb2RlRWxlbWVudC5pbm5lckhUTUwgPSBBcnJheS5mcm9tKGNvZGVibG9ja0NvZGVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2NvZGUgPiBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXScpKS5yZWR1Y2UoKHJlY29uc3RydWN0ZWRDb2RlYmxvY2tMaW5lczogQXJyYXk8c3RyaW5nPiwgY29kZWJsb2NrTGluZTogSFRNTEVsZW1lbnQpOiBBcnJheTxzdHJpbmc+ID0+IHtcblx0XHRcdGNvbnN0IGNvZGVibG9ja0xpbmVUZXh0ID0gKGNvZGVibG9ja0xpbmUuZmlyc3RDaGlsZCBhcyBIVE1MRWxlbWVudCk7XG5cdFx0XHRpZiAoY29kZWJsb2NrTGluZVRleHQpXG5cdFx0XHRcdHJlY29uc3RydWN0ZWRDb2RlYmxvY2tMaW5lcy5wdXNoKGNvZGVibG9ja0xpbmVUZXh0LmlubmVySFRNTCk7XG5cdFx0XHRyZXR1cm4gcmVjb25zdHJ1Y3RlZENvZGVibG9ja0xpbmVzXG5cdFx0fSxbXSkuam9pbignXFxuJykrJ1xcbic7XG5cdH0pO1xuXHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiOm5vdChwcmUpID4gY29kZVwiKS5mb3JFYWNoKChpbmxpbmVDb2RlRWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcblx0XHRpbmxpbmVDb2RlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjb2RlLXN0eWxlci1oaWdobGlnaHRlZCcpO1xuXHRcdGlubGluZUNvZGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2NvZGUtc3R5bGVyLWhpZ2hsaWdodC1pZ25vcmUnKTtcblx0XHRpbmxpbmVDb2RlRWxlbWVudC5pbm5lclRleHQgPSBpbmxpbmVDb2RlRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJwYXJhbWV0ZXJzXCIpICsgaW5saW5lQ29kZUVsZW1lbnQuaW5uZXJUZXh0O1xuXHR9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVtYWtlQ29kZWJsb2NrKGNvZGVibG9ja0NvZGVFbGVtZW50OiBIVE1MRWxlbWVudCwgY29kZWJsb2NrUHJlRWxlbWVudDogSFRNTEVsZW1lbnQsIGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnMsIGR5bmFtaWM6IGJvb2xlYW4sIHBsdWdpbjogQ29kZVN0eWxlclBsdWdpbikge1xuXHRmdW5jdGlvbiBlc2NhcGVIVE1MKHBsYWludGV4dDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHBsYWludGV4dC5yZXBsYWNlKC88L2csJyZsdDsnKS5yZXBsYWNlKC8+L2csJyZndDsnKS5yZXBsYWNlKC9cIi9nLCcmcXVvdDsnKTtcblx0fVxuXHRcblx0Ly8gQWRkIEV4ZWN1dGUgQ29kZSBPYnNlcnZlclxuXHRpZiAoZHluYW1pYykge1xuXHRcdHBsdWdpbi5leGVjdXRlQ29kZU11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShjb2RlYmxvY2tQcmVFbGVtZW50LHtcblx0XHRcdGNoaWxkTGlzdDogdHJ1ZSxcblx0XHRcdHN1YnRyZWU6IHRydWUsXG5cdFx0XHRhdHRyaWJ1dGVzOiB0cnVlLFxuXHRcdFx0Y2hhcmFjdGVyRGF0YTogdHJ1ZSxcblx0XHR9KTtcblx0fVxuXG5cdC8vIEFkZCBQYXJlbnQgQ2xhc3Nlc1xuXHRjb2RlYmxvY2tQcmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYGNvZGUtc3R5bGVyLXByZWApO1xuXHRpZiAoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSlcblx0XHRjb2RlYmxvY2tQcmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYGxhbmd1YWdlLSR7Y29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZX1gKTtcblx0aWYgKGNvZGVibG9ja1ByZUVsZW1lbnQucGFyZW50RWxlbWVudClcblx0XHRjb2RlYmxvY2tQcmVFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChgY29kZS1zdHlsZXItcHJlLXBhcmVudGApO1xuXG5cdC8vIENyZWF0ZSBIZWFkZXJcblx0Y29uc3QgaGVhZGVyQ29udGFpbmVyID0gY3JlYXRlSGVhZGVyKGNvZGVibG9ja1BhcmFtZXRlcnMsIHBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MscGx1Z2luLmxhbmd1YWdlSWNvbnMpO1xuXHRjb2RlYmxvY2tQcmVFbGVtZW50Lmluc2VydEJlZm9yZShoZWFkZXJDb250YWluZXIsY29kZWJsb2NrUHJlRWxlbWVudC5jaGlsZE5vZGVzWzBdKTtcblx0XG5cdGlmIChkeW5hbWljKSB7XG5cdFx0Ly8gQWRkIGxpc3RlbmVyIGZvciBoZWFkZXIgY29sbGFwc2luZyBvbiBjbGlja1xuXHRcdGhlYWRlckNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwoKT0+dG9nZ2xlRm9sZChjb2RlYmxvY2tQcmVFbGVtZW50KSk7XG5cdFx0aWYgKGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5lbmFibGVkKVxuXHRcdFx0Y29kZWJsb2NrUHJlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItY29sbGFwc2VkXCIpO1xuXG5cdFx0Ly8gTGluZSBXcmFwcGluZyBDbGFzc2VzIC8vVE9ETyAoQG1heXVyYW5rdikgVHVybiB0aGVzZSBpbnRvIGNsYXNzZXMgKGlkZWFsbHkgcGhhc2Ugb3V0IGNvZGVibG9ja0NvZGVFbGVtZW50KVxuXHRcdGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVVbndyYXAuYWx3YXlzRW5hYmxlZCkge1xuXHRcdFx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGluZS13cmFwcGluZycsJ3ByZScpO1xuXHRcdFx0aWYgKGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcC5hY3RpdmVXcmFwKVxuXHRcdFx0XHRjb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saW5lLWFjdGl2ZS13cmFwcGluZycsJ3ByZS13cmFwJyk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdGNvZGVibG9ja0NvZGVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxpbmUtYWN0aXZlLXdyYXBwaW5nJywncHJlJyk7XG5cdFx0fSBlbHNlIGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVVbndyYXAuYWx3YXlzRGlzYWJsZWQpXG5cdFx0XHRjb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saW5lLXdyYXBwaW5nJywncHJlLXdyYXAnKTtcblx0fSBlbHNlIGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQuZW5hYmxlZCkgLy9UT0RPIChAbWF5dXJhbmt2KSBDYW4gdGhpcyBiZSByZW1vdmVkPyBJcyBpdCBqdXN0IGZvbGRpbmcgY29kZWJsb2NrcyBpbiBleHBvcnRzP1xuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcImNvZGUtc3R5bGVyLWNvbGxhcHNlZFwiKTtcblx0XG5cdC8vIElnbm9yZSBzdHlsZWQgbGluZXNcblx0aWYgKGNvZGVibG9ja0NvZGVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJjb2RlIFtjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXVwiKSlcblx0XHRyZXR1cm47XG5cblx0Ly8gQWRkIGxpbmUgbnVtYmVyc1xuXHRsZXQgdHJlZSA9IHVuaWZpZWQoKS51c2UocmVtYXJrUGFyc2UpLnBhcnNlKGNvZGVibG9ja0NvZGVFbGVtZW50LmlubmVySFRNTC5yZXBsYWNlKC9cXG4vZywnPGJyPicpKTtcblx0bGV0IHN0YWNrOiBBcnJheTxzdHJpbmc+ID0gW107XG5cdGxldCBjb2RlYmxvY2tIVE1MOiBzdHJpbmcgPSAnJztcblx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuaW5uZXJIVE1MID0gXCJcIjtcblx0dmlzaXQodHJlZSwobm9kZSk9Pntcblx0XHRpZiAobm9kZS50eXBlID09PSAnaHRtbCcgfHwgbm9kZS50eXBlID09PSAndGV4dCcpIHtcblx0XHRcdGlmIChub2RlLnR5cGUgPT09ICdodG1sJyAmJiBub2RlLnZhbHVlICE9PSAnPGJyPicpIHtcblx0XHRcdFx0aWYgKG5vZGUudmFsdWUuc3RhcnRzV2l0aCgnPHNwYW4nKSlcblx0XHRcdFx0XHRzdGFjay5wdXNoKG5vZGUudmFsdWUpO1xuXHRcdFx0XHRlbHNlIGlmIChub2RlLnZhbHVlLnN0YXJ0c1dpdGgoJzwvc3BhbicpKVxuXHRcdFx0XHRcdHN0YWNrLnBvcCgpO1xuXHRcdFx0fSBlbHNlIGlmIChub2RlLnR5cGUgPT09ICdodG1sJyAmJiBub2RlLnZhbHVlID09PSAnPGJyPicpXG5cdFx0XHRcdG5vZGUudmFsdWUgPSAnPC9zcGFuPicucmVwZWF0KHN0YWNrLmxlbmd0aCkrJzxicj4nK3N0YWNrLmpvaW4oJycpO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHRub2RlLnZhbHVlID0gZXNjYXBlSFRNTChub2RlLnZhbHVlKTtcblx0XHRcdGNvZGVibG9ja0hUTUwgKz0gbm9kZS52YWx1ZTtcblx0XHR9XG5cdH0pO1xuXHRsZXQgY29kZWJsb2NrTGluZXMgPSBjb2RlYmxvY2tIVE1MLnNwbGl0KCc8YnI+Jyk7XG5cdGlmIChjb2RlYmxvY2tMaW5lcy5sZW5ndGggPT0gMSlcblx0XHRjb2RlYmxvY2tMaW5lcyA9IFsnJywnJ107XG5cdGNvZGVibG9ja0xpbmVzLmZvckVhY2goKGxpbmUsaW5kZXgpID0+IHtcblx0XHRpZiAoaW5kZXggPT09IGNvZGVibG9ja0xpbmVzLmxlbmd0aC0xKVxuXHRcdFx0cmV0dXJuO1xuXHRcdGNvbnN0IGxpbmVOdW1iZXIgPSBpbmRleCArIDE7XG5cdFx0Y29uc3QgbGluZVdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRcdGdldExpbmVDbGFzcyhjb2RlYmxvY2tQYXJhbWV0ZXJzLGxpbmVOdW1iZXIsbGluZSkuZm9yRWFjaCgobGluZUNsYXNzKSA9PiB7XG5cdFx0XHRsaW5lV3JhcHBlci5jbGFzc0xpc3QuYWRkKGxpbmVDbGFzcyk7XG5cdFx0fSk7XG5cdFx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuYXBwZW5kQ2hpbGQobGluZVdyYXBwZXIpO1xuXHRcdGxldCBsaW5lTnVtYmVyRGlzcGxheSA9ICcnO1xuXHRcdGlmICghY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNFbmFibGVkICYmIGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRGlzYWJsZWQpXG5cdFx0XHRsaW5lTnVtYmVyRGlzcGxheSA9ICctaGlkZSc7XG5cdFx0ZWxzZSBpZiAoY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNFbmFibGVkICYmICFjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0Rpc2FibGVkKVxuXHRcdFx0bGluZU51bWJlckRpc3BsYXkgPSAnLXNwZWNpZmljJztcblx0XHRsaW5lV3JhcHBlci5hcHBlbmRDaGlsZChjcmVhdGVEaXYoe2NsczogYGNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJHtsaW5lTnVtYmVyRGlzcGxheX1gLCB0ZXh0OiAobGluZU51bWJlcitjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLm9mZnNldCkudG9TdHJpbmcoKX0pKTtcblx0XHRsaW5lV3JhcHBlci5hcHBlbmRDaGlsZChjcmVhdGVEaXYoe2NsczogYGNvZGUtc3R5bGVyLWxpbmUtdGV4dGAsIHRleHQ6IHNhbml0aXplSFRNTFRvRG9tKGxpbmUgIT09IFwiXCIgPyBsaW5lIDogXCI8YnI+XCIpfSkpO1xuXHR9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdG9nZ2xlRm9sZChjb2RlYmxvY2tQcmVFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuXHRjb2RlYmxvY2tQcmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZSA+IGNvZGUnKS5mb3JFYWNoKChjb2RlYmxvY2tDb2RlRWxlbWVudDogSFRNTEVsZW1lbnQpPT5jb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnbWF4LWhlaWdodCcsYGNhbGMoJHtNYXRoLmNlaWwoY29kZWJsb2NrQ29kZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0KzAuMDEpfXB4ICsgdmFyKC0tY29kZS1wYWRkaW5nKSAqICR7Y29kZWJsb2NrQ29kZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdleGVjdXRlLWNvZGUtb3V0cHV0Jyk/JzMuNSArIHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpJzonMid9KWApKTtcblx0YXdhaXQgc2xlZXAoMSk7XG5cdGNvZGVibG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShcImNvZGUtc3R5bGVyLWNvbGxhcHNlZFwiKTtcblx0YXdhaXQgc2xlZXAoVFJBTlNJVElPTl9MRU5HVEgpO1xuXHRjb2RlYmxvY2tQcmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZSA+IGNvZGUnKS5mb3JFYWNoKChjb2RlYmxvY2tDb2RlRWxlbWVudDogSFRNTEVsZW1lbnQpPT5jb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWF4LWhlaWdodCcpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGV4ZWN1dGVDb2RlTXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHtcblx0bXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uOiBNdXRhdGlvblJlY29yZCkgPT4ge1xuXHRcdGlmIChtdXRhdGlvbi50eXBlID09PSBcImNoaWxkTGlzdFwiICYmIChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnRhZ05hbWUgPT09ICdQUkUnKSB7IC8vIEFkZCBleGVjdXRlIGNvZGUgb3V0cHV0XG5cdFx0XHRjb25zdCBleGVjdXRlQ29kZU91dHB1dCA9IChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3IoJ3ByZSA+IGNvZGUgfiBjb2RlLmxhbmd1YWdlLW91dHB1dCcpIGFzIEhUTUxFbGVtZW50O1xuXHRcdFx0aWYgKGV4ZWN1dGVDb2RlT3V0cHV0KVxuXHRcdFx0XHRleGVjdXRlQ29kZU91dHB1dC5jbGFzc0xpc3QuYWRkKCdleGVjdXRlLWNvZGUtb3V0cHV0Jyk7XG5cdFx0fVxuXHR9KTtcbn0pO1xuIiwgIi8qKlxuICogVGhyb3cgYSBnaXZlbiBlcnJvci5cbiAqXG4gKiBAcGFyYW0ge0Vycm9yfG51bGx8dW5kZWZpbmVkfSBbZXJyb3JdXG4gKiAgIE1heWJlIGVycm9yLlxuICogQHJldHVybnMge2Fzc2VydHMgZXJyb3IgaXMgbnVsbHx1bmRlZmluZWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYWlsKGVycm9yKSB7XG4gIGlmIChlcnJvcikge1xuICAgIHRocm93IGVycm9yXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuTm9kZX0gTm9kZVxuICogQHR5cGVkZWYge2ltcG9ydCgndmZpbGUnKS5WRmlsZUNvbXBhdGlibGV9IFZGaWxlQ29tcGF0aWJsZVxuICogQHR5cGVkZWYge2ltcG9ydCgndmZpbGUnKS5WRmlsZVZhbHVlfSBWRmlsZVZhbHVlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLicpLlByb2Nlc3Nvcn0gUHJvY2Vzc29yXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLicpLlBsdWdpbn0gUGx1Z2luXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLicpLlByZXNldH0gUHJlc2V0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLicpLlBsdWdnYWJsZX0gUGx1Z2dhYmxlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLicpLlBsdWdnYWJsZUxpc3R9IFBsdWdnYWJsZUxpc3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uJykuVHJhbnNmb3JtZXJ9IFRyYW5zZm9ybWVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLicpLlBhcnNlcn0gUGFyc2VyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLicpLkNvbXBpbGVyfSBDb21waWxlclxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4nKS5SdW5DYWxsYmFja30gUnVuQ2FsbGJhY2tcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uJykuUHJvY2Vzc0NhbGxiYWNrfSBQcm9jZXNzQ2FsbGJhY2tcbiAqXG4gKiBAdHlwZWRlZiBDb250ZXh0XG4gKiBAcHJvcGVydHkge05vZGV9IHRyZWVcbiAqIEBwcm9wZXJ0eSB7VkZpbGV9IGZpbGVcbiAqL1xuXG5pbXBvcnQge2JhaWx9IGZyb20gJ2JhaWwnXG5pbXBvcnQgaXNCdWZmZXIgZnJvbSAnaXMtYnVmZmVyJ1xuaW1wb3J0IGV4dGVuZCBmcm9tICdleHRlbmQnXG5pbXBvcnQgaXNQbGFpbk9iaiBmcm9tICdpcy1wbGFpbi1vYmonXG5pbXBvcnQge3Ryb3VnaH0gZnJvbSAndHJvdWdoJ1xuaW1wb3J0IHtWRmlsZX0gZnJvbSAndmZpbGUnXG5cbi8vIEV4cG9zZSBhIGZyb3plbiBwcm9jZXNzb3IuXG5leHBvcnQgY29uc3QgdW5pZmllZCA9IGJhc2UoKS5mcmVlemUoKVxuXG5jb25zdCBvd24gPSB7fS5oYXNPd25Qcm9wZXJ0eVxuXG4vLyBGdW5jdGlvbiB0byBjcmVhdGUgdGhlIGZpcnN0IHByb2Nlc3Nvci5cbi8qKlxuICogQHJldHVybnMge1Byb2Nlc3Nvcn1cbiAqL1xuZnVuY3Rpb24gYmFzZSgpIHtcbiAgY29uc3QgdHJhbnNmb3JtZXJzID0gdHJvdWdoKClcbiAgLyoqIEB0eXBlIHtQcm9jZXNzb3JbJ2F0dGFjaGVycyddfSAqL1xuICBjb25zdCBhdHRhY2hlcnMgPSBbXVxuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSAqL1xuICBsZXQgbmFtZXNwYWNlID0ge31cbiAgLyoqIEB0eXBlIHtib29sZWFufHVuZGVmaW5lZH0gKi9cbiAgbGV0IGZyb3plblxuICBsZXQgZnJlZXplSW5kZXggPSAtMVxuXG4gIC8vIERhdGEgbWFuYWdlbWVudC5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvcjogb3ZlcmxvYWRzIGFyZSBoYW5kbGVkLlxuICBwcm9jZXNzb3IuZGF0YSA9IGRhdGFcbiAgcHJvY2Vzc29yLlBhcnNlciA9IHVuZGVmaW5lZFxuICBwcm9jZXNzb3IuQ29tcGlsZXIgPSB1bmRlZmluZWRcblxuICAvLyBMb2NrLlxuICBwcm9jZXNzb3IuZnJlZXplID0gZnJlZXplXG5cbiAgLy8gUGx1Z2lucy5cbiAgcHJvY2Vzc29yLmF0dGFjaGVycyA9IGF0dGFjaGVyc1xuICAvLyBAdHMtZXhwZWN0LWVycm9yOiBvdmVybG9hZHMgYXJlIGhhbmRsZWQuXG4gIHByb2Nlc3Nvci51c2UgPSB1c2VcblxuICAvLyBBUEkuXG4gIHByb2Nlc3Nvci5wYXJzZSA9IHBhcnNlXG4gIHByb2Nlc3Nvci5zdHJpbmdpZnkgPSBzdHJpbmdpZnlcbiAgLy8gQHRzLWV4cGVjdC1lcnJvcjogb3ZlcmxvYWRzIGFyZSBoYW5kbGVkLlxuICBwcm9jZXNzb3IucnVuID0gcnVuXG4gIHByb2Nlc3Nvci5ydW5TeW5jID0gcnVuU3luY1xuICAvLyBAdHMtZXhwZWN0LWVycm9yOiBvdmVybG9hZHMgYXJlIGhhbmRsZWQuXG4gIHByb2Nlc3Nvci5wcm9jZXNzID0gcHJvY2Vzc1xuICBwcm9jZXNzb3IucHJvY2Vzc1N5bmMgPSBwcm9jZXNzU3luY1xuXG4gIC8vIEV4cG9zZS5cbiAgcmV0dXJuIHByb2Nlc3NvclxuXG4gIC8vIENyZWF0ZSBhIG5ldyBwcm9jZXNzb3IgYmFzZWQgb24gdGhlIHByb2Nlc3NvciBpbiB0aGUgY3VycmVudCBzY29wZS5cbiAgLyoqIEB0eXBlIHtQcm9jZXNzb3J9ICovXG4gIGZ1bmN0aW9uIHByb2Nlc3NvcigpIHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbiA9IGJhc2UoKVxuICAgIGxldCBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGF0dGFjaGVycy5sZW5ndGgpIHtcbiAgICAgIGRlc3RpbmF0aW9uLnVzZSguLi5hdHRhY2hlcnNbaW5kZXhdKVxuICAgIH1cblxuICAgIGRlc3RpbmF0aW9uLmRhdGEoZXh0ZW5kKHRydWUsIHt9LCBuYW1lc3BhY2UpKVxuXG4gICAgcmV0dXJuIGRlc3RpbmF0aW9uXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd8UmVjb3JkPHN0cmluZywgdW5rbm93bj59IFtrZXldXG4gICAqIEBwYXJhbSB7dW5rbm93bn0gW3ZhbHVlXVxuICAgKiBAcmV0dXJucyB7dW5rbm93bn1cbiAgICovXG4gIGZ1bmN0aW9uIGRhdGEoa2V5LCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gU2V0IGBrZXlgLlxuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgYXNzZXJ0VW5mcm96ZW4oJ2RhdGEnLCBmcm96ZW4pXG4gICAgICAgIG5hbWVzcGFjZVtrZXldID0gdmFsdWVcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NvclxuICAgICAgfVxuXG4gICAgICAvLyBHZXQgYGtleWAuXG4gICAgICByZXR1cm4gKG93bi5jYWxsKG5hbWVzcGFjZSwga2V5KSAmJiBuYW1lc3BhY2Vba2V5XSkgfHwgbnVsbFxuICAgIH1cblxuICAgIC8vIFNldCBzcGFjZS5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBhc3NlcnRVbmZyb3plbignZGF0YScsIGZyb3plbilcbiAgICAgIG5hbWVzcGFjZSA9IGtleVxuICAgICAgcmV0dXJuIHByb2Nlc3NvclxuICAgIH1cblxuICAgIC8vIEdldCBzcGFjZS5cbiAgICByZXR1cm4gbmFtZXNwYWNlXG4gIH1cblxuICAvKiogQHR5cGUge1Byb2Nlc3NvclsnZnJlZXplJ119ICovXG4gIGZ1bmN0aW9uIGZyZWV6ZSgpIHtcbiAgICBpZiAoZnJvemVuKSB7XG4gICAgICByZXR1cm4gcHJvY2Vzc29yXG4gICAgfVxuXG4gICAgd2hpbGUgKCsrZnJlZXplSW5kZXggPCBhdHRhY2hlcnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBbYXR0YWNoZXIsIC4uLm9wdGlvbnNdID0gYXR0YWNoZXJzW2ZyZWV6ZUluZGV4XVxuXG4gICAgICBpZiAob3B0aW9uc1swXSA9PT0gZmFsc2UpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnNbMF0gPT09IHRydWUpIHtcbiAgICAgICAgb3B0aW9uc1swXSA9IHVuZGVmaW5lZFxuICAgICAgfVxuXG4gICAgICAvKiogQHR5cGUge1RyYW5zZm9ybWVyfHZvaWR9ICovXG4gICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGF0dGFjaGVyLmNhbGwocHJvY2Vzc29yLCAuLi5vcHRpb25zKVxuXG4gICAgICBpZiAodHlwZW9mIHRyYW5zZm9ybWVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRyYW5zZm9ybWVycy51c2UodHJhbnNmb3JtZXIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnJvemVuID0gdHJ1ZVxuICAgIGZyZWV6ZUluZGV4ID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZXG5cbiAgICByZXR1cm4gcHJvY2Vzc29yXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtQbHVnZ2FibGV8bnVsbHx1bmRlZmluZWR9IFt2YWx1ZV1cbiAgICogQHBhcmFtIHsuLi51bmtub3dufSBvcHRpb25zXG4gICAqIEByZXR1cm5zIHtQcm9jZXNzb3J9XG4gICAqL1xuICBmdW5jdGlvbiB1c2UodmFsdWUsIC4uLm9wdGlvbnMpIHtcbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgc2V0dGluZ3NcblxuICAgIGFzc2VydFVuZnJvemVuKCd1c2UnLCBmcm96ZW4pXG5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gRW1wdHkuXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGFkZFBsdWdpbih2YWx1ZSwgLi4ub3B0aW9ucylcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBhZGRMaXN0KHZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRkUHJlc2V0KHZhbHVlKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgJyArIHZhbHVlICsgJ2AnKVxuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncykge1xuICAgICAgbmFtZXNwYWNlLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbihuYW1lc3BhY2Uuc2V0dGluZ3MgfHwge30sIHNldHRpbmdzKVxuICAgIH1cblxuICAgIHJldHVybiBwcm9jZXNzb3JcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7aW1wb3J0KCcuLicpLlBsdWdnYWJsZTx1bmtub3duW10+fSB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBhZGRQbHVnaW4odmFsdWUpXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgY29uc3QgW3BsdWdpbiwgLi4ub3B0aW9uc10gPSB2YWx1ZVxuICAgICAgICAgIGFkZFBsdWdpbihwbHVnaW4sIC4uLm9wdGlvbnMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkUHJlc2V0KHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB1c2FibGUgdmFsdWUsIG5vdCBgJyArIHZhbHVlICsgJ2AnKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7UHJlc2V0fSByZXN1bHRcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZGRQcmVzZXQocmVzdWx0KSB7XG4gICAgICBhZGRMaXN0KHJlc3VsdC5wbHVnaW5zKVxuXG4gICAgICBpZiAocmVzdWx0LnNldHRpbmdzKSB7XG4gICAgICAgIHNldHRpbmdzID0gT2JqZWN0LmFzc2lnbihzZXR0aW5ncyB8fCB7fSwgcmVzdWx0LnNldHRpbmdzKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7UGx1Z2dhYmxlTGlzdHxudWxsfHVuZGVmaW5lZH0gW3BsdWdpbnNdXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gYWRkTGlzdChwbHVnaW5zKSB7XG4gICAgICBsZXQgaW5kZXggPSAtMVxuXG4gICAgICBpZiAocGx1Z2lucyA9PT0gbnVsbCB8fCBwbHVnaW5zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gRW1wdHkuXG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGx1Z2lucykpIHtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBwbHVnaW5zLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IHRoaW5nID0gcGx1Z2luc1tpbmRleF1cbiAgICAgICAgICBhZGQodGhpbmcpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgbGlzdCBvZiBwbHVnaW5zLCBub3QgYCcgKyBwbHVnaW5zICsgJ2AnKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7UGx1Z2lufSBwbHVnaW5cbiAgICAgKiBAcGFyYW0gey4uLnVua25vd259IFt2YWx1ZV1cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZGRQbHVnaW4ocGx1Z2luLCB2YWx1ZSkge1xuICAgICAgbGV0IGluZGV4ID0gLTFcbiAgICAgIC8qKiBAdHlwZSB7UHJvY2Vzc29yWydhdHRhY2hlcnMnXVtudW1iZXJdfHVuZGVmaW5lZH0gKi9cbiAgICAgIGxldCBlbnRyeVxuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IGF0dGFjaGVycy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGF0dGFjaGVyc1tpbmRleF1bMF0gPT09IHBsdWdpbikge1xuICAgICAgICAgIGVudHJ5ID0gYXR0YWNoZXJzW2luZGV4XVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgIGlmIChpc1BsYWluT2JqKGVudHJ5WzFdKSAmJiBpc1BsYWluT2JqKHZhbHVlKSkge1xuICAgICAgICAgIHZhbHVlID0gZXh0ZW5kKHRydWUsIGVudHJ5WzFdLCB2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGVudHJ5WzFdID0gdmFsdWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGZpbmUuXG4gICAgICAgIGF0dGFjaGVycy5wdXNoKFsuLi5hcmd1bWVudHNdKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAdHlwZSB7UHJvY2Vzc29yWydwYXJzZSddfSAqL1xuICBmdW5jdGlvbiBwYXJzZShkb2MpIHtcbiAgICBwcm9jZXNzb3IuZnJlZXplKClcbiAgICBjb25zdCBmaWxlID0gdmZpbGUoZG9jKVxuICAgIGNvbnN0IFBhcnNlciA9IHByb2Nlc3Nvci5QYXJzZXJcbiAgICBhc3NlcnRQYXJzZXIoJ3BhcnNlJywgUGFyc2VyKVxuXG4gICAgaWYgKG5ld2FibGUoUGFyc2VyLCAncGFyc2UnKSkge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYG5ld2FibGVgIGNoZWNrcyB0aGlzLlxuICAgICAgcmV0dXJuIG5ldyBQYXJzZXIoU3RyaW5nKGZpbGUpLCBmaWxlKS5wYXJzZSgpXG4gICAgfVxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYG5ld2FibGVgIGNoZWNrcyB0aGlzLlxuICAgIHJldHVybiBQYXJzZXIoU3RyaW5nKGZpbGUpLCBmaWxlKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcbiAgfVxuXG4gIC8qKiBAdHlwZSB7UHJvY2Vzc29yWydzdHJpbmdpZnknXX0gKi9cbiAgZnVuY3Rpb24gc3RyaW5naWZ5KG5vZGUsIGRvYykge1xuICAgIHByb2Nlc3Nvci5mcmVlemUoKVxuICAgIGNvbnN0IGZpbGUgPSB2ZmlsZShkb2MpXG4gICAgY29uc3QgQ29tcGlsZXIgPSBwcm9jZXNzb3IuQ29tcGlsZXJcbiAgICBhc3NlcnRDb21waWxlcignc3RyaW5naWZ5JywgQ29tcGlsZXIpXG4gICAgYXNzZXJ0Tm9kZShub2RlKVxuXG4gICAgaWYgKG5ld2FibGUoQ29tcGlsZXIsICdjb21waWxlJykpIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGBuZXdhYmxlYCBjaGVja3MgdGhpcy5cbiAgICAgIHJldHVybiBuZXcgQ29tcGlsZXIobm9kZSwgZmlsZSkuY29tcGlsZSgpXG4gICAgfVxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYG5ld2FibGVgIGNoZWNrcyB0aGlzLlxuICAgIHJldHVybiBDb21waWxlcihub2RlLCBmaWxlKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAgICogQHBhcmFtIHtWRmlsZUNvbXBhdGlibGV8UnVuQ2FsbGJhY2t9IFtkb2NdXG4gICAqIEBwYXJhbSB7UnVuQ2FsbGJhY2t9IFtjYWxsYmFja11cbiAgICogQHJldHVybnMge1Byb21pc2U8Tm9kZT58dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIHJ1bihub2RlLCBkb2MsIGNhbGxiYWNrKSB7XG4gICAgYXNzZXJ0Tm9kZShub2RlKVxuICAgIHByb2Nlc3Nvci5mcmVlemUoKVxuXG4gICAgaWYgKCFjYWxsYmFjayAmJiB0eXBlb2YgZG9jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IGRvY1xuICAgICAgZG9jID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGV4ZWN1dG9yKVxuICAgIH1cblxuICAgIGV4ZWN1dG9yKG51bGwsIGNhbGxiYWNrKVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtudWxsfCgobm9kZTogTm9kZSkgPT4gdm9pZCl9IHJlc29sdmVcbiAgICAgKiBAcGFyYW0geyhlcnJvcjogRXJyb3IpID0+IHZvaWR9IHJlamVjdFxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYGRvY2AgY2FuXHUyMDE5dCBiZSBhIGNhbGxiYWNrIGFueW1vcmUsIHdlIGNoZWNrZWQuXG4gICAgICB0cmFuc2Zvcm1lcnMucnVuKG5vZGUsIHZmaWxlKGRvYyksIGRvbmUpXG5cbiAgICAgIC8qKlxuICAgICAgICogQHBhcmFtIHtFcnJvcnxudWxsfSBlcnJvclxuICAgICAgICogQHBhcmFtIHtOb2RlfSB0cmVlXG4gICAgICAgKiBAcGFyYW0ge1ZGaWxlfSBmaWxlXG4gICAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gZG9uZShlcnJvciwgdHJlZSwgZmlsZSkge1xuICAgICAgICB0cmVlID0gdHJlZSB8fCBub2RlXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgfSBlbHNlIGlmIChyZXNvbHZlKSB7XG4gICAgICAgICAgcmVzb2x2ZSh0cmVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGBjYWxsYmFja2AgaXMgZGVmaW5lZCBpZiBgcmVzb2x2ZWAgaXMgbm90LlxuICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHRyZWUsIGZpbGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogQHR5cGUge1Byb2Nlc3NvclsncnVuU3luYyddfSAqL1xuICBmdW5jdGlvbiBydW5TeW5jKG5vZGUsIGZpbGUpIHtcbiAgICAvKiogQHR5cGUge05vZGV8dW5kZWZpbmVkfSAqL1xuICAgIGxldCByZXN1bHRcbiAgICAvKiogQHR5cGUge2Jvb2xlYW58dW5kZWZpbmVkfSAqL1xuICAgIGxldCBjb21wbGV0ZVxuXG4gICAgcHJvY2Vzc29yLnJ1bihub2RlLCBmaWxlLCBkb25lKVxuXG4gICAgYXNzZXJ0RG9uZSgncnVuU3luYycsICdydW4nLCBjb21wbGV0ZSlcblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IHdlIGVpdGhlciBiYWlsZWQgb24gYW4gZXJyb3Igb3IgaGF2ZSBhIHRyZWUuXG4gICAgcmV0dXJuIHJlc3VsdFxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtFcnJvcnxudWxsfSBbZXJyb3JdXG4gICAgICogQHBhcmFtIHtOb2RlfSBbdHJlZV1cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkb25lKGVycm9yLCB0cmVlKSB7XG4gICAgICBiYWlsKGVycm9yKVxuICAgICAgcmVzdWx0ID0gdHJlZVxuICAgICAgY29tcGxldGUgPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VkZpbGVDb21wYXRpYmxlfSBkb2NcbiAgICogQHBhcmFtIHtQcm9jZXNzQ2FsbGJhY2t9IFtjYWxsYmFja11cbiAgICogQHJldHVybnMge1Byb21pc2U8VkZpbGU+fHVuZGVmaW5lZH1cbiAgICovXG4gIGZ1bmN0aW9uIHByb2Nlc3MoZG9jLCBjYWxsYmFjaykge1xuICAgIHByb2Nlc3Nvci5mcmVlemUoKVxuICAgIGFzc2VydFBhcnNlcigncHJvY2VzcycsIHByb2Nlc3Nvci5QYXJzZXIpXG4gICAgYXNzZXJ0Q29tcGlsZXIoJ3Byb2Nlc3MnLCBwcm9jZXNzb3IuQ29tcGlsZXIpXG5cbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZXhlY3V0b3IpXG4gICAgfVxuXG4gICAgZXhlY3V0b3IobnVsbCwgY2FsbGJhY2spXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge251bGx8KChmaWxlOiBWRmlsZSkgPT4gdm9pZCl9IHJlc29sdmVcbiAgICAgKiBAcGFyYW0geyhlcnJvcj86IEVycm9yfG51bGx8dW5kZWZpbmVkKSA9PiB2b2lkfSByZWplY3RcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBleGVjdXRvcihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGNvbnN0IGZpbGUgPSB2ZmlsZShkb2MpXG5cbiAgICAgIHByb2Nlc3Nvci5ydW4ocHJvY2Vzc29yLnBhcnNlKGZpbGUpLCBmaWxlLCAoZXJyb3IsIHRyZWUsIGZpbGUpID0+IHtcbiAgICAgICAgaWYgKGVycm9yIHx8ICF0cmVlIHx8ICFmaWxlKSB7XG4gICAgICAgICAgZG9uZShlcnJvcilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvKiogQHR5cGUge3Vua25vd259ICovXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gcHJvY2Vzc29yLnN0cmluZ2lmeSh0cmVlLCBmaWxlKVxuXG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkIHx8IHJlc3VsdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gRW1wdHkuXG4gICAgICAgICAgfSBlbHNlIGlmIChsb29rc0xpa2VBVkZpbGVWYWx1ZShyZXN1bHQpKSB7XG4gICAgICAgICAgICBmaWxlLnZhbHVlID0gcmVzdWx0XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbGUucmVzdWx0ID0gcmVzdWx0XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZShlcnJvciwgZmlsZSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0ge0Vycm9yfG51bGx8dW5kZWZpbmVkfSBbZXJyb3JdXG4gICAgICAgKiBAcGFyYW0ge1ZGaWxlfHVuZGVmaW5lZH0gW2ZpbGVdXG4gICAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gZG9uZShlcnJvciwgZmlsZSkge1xuICAgICAgICBpZiAoZXJyb3IgfHwgIWZpbGUpIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZSkge1xuICAgICAgICAgIHJlc29sdmUoZmlsZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBgY2FsbGJhY2tgIGlzIGRlZmluZWQgaWYgYHJlc29sdmVgIGlzIG5vdC5cbiAgICAgICAgICBjYWxsYmFjayhudWxsLCBmaWxlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEB0eXBlIHtQcm9jZXNzb3JbJ3Byb2Nlc3NTeW5jJ119ICovXG4gIGZ1bmN0aW9uIHByb2Nlc3NTeW5jKGRvYykge1xuICAgIC8qKiBAdHlwZSB7Ym9vbGVhbnx1bmRlZmluZWR9ICovXG4gICAgbGV0IGNvbXBsZXRlXG5cbiAgICBwcm9jZXNzb3IuZnJlZXplKClcbiAgICBhc3NlcnRQYXJzZXIoJ3Byb2Nlc3NTeW5jJywgcHJvY2Vzc29yLlBhcnNlcilcbiAgICBhc3NlcnRDb21waWxlcigncHJvY2Vzc1N5bmMnLCBwcm9jZXNzb3IuQ29tcGlsZXIpXG5cbiAgICBjb25zdCBmaWxlID0gdmZpbGUoZG9jKVxuXG4gICAgcHJvY2Vzc29yLnByb2Nlc3MoZmlsZSwgZG9uZSlcblxuICAgIGFzc2VydERvbmUoJ3Byb2Nlc3NTeW5jJywgJ3Byb2Nlc3MnLCBjb21wbGV0ZSlcblxuICAgIHJldHVybiBmaWxlXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0Vycm9yfG51bGx8dW5kZWZpbmVkfSBbZXJyb3JdXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gZG9uZShlcnJvcikge1xuICAgICAgY29tcGxldGUgPSB0cnVlXG4gICAgICBiYWlsKGVycm9yKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGB2YWx1ZWAgaXMgYSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIG5ld2FibGUodmFsdWUsIG5hbWUpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiZcbiAgICAvLyBQcm90b3R5cGVzIGRvIGV4aXN0LlxuICAgIC8vIHR5cGUtY292ZXJhZ2U6aWdub3JlLW5leHQtbGluZVxuICAgIHZhbHVlLnByb3RvdHlwZSAmJlxuICAgIC8vIEEgZnVuY3Rpb24gd2l0aCBrZXlzIGluIGl0cyBwcm90b3R5cGUgaXMgcHJvYmFibHkgYSBjb25zdHJ1Y3Rvci5cbiAgICAvLyBDbGFzc2VzXHUyMDE5IHByb3RvdHlwZSBtZXRob2RzIGFyZSBub3QgZW51bWVyYWJsZSwgc28gd2UgY2hlY2sgaWYgc29tZSB2YWx1ZVxuICAgIC8vIGV4aXN0cyBpbiB0aGUgcHJvdG90eXBlLlxuICAgIC8vIHR5cGUtY292ZXJhZ2U6aWdub3JlLW5leHQtbGluZVxuICAgIChrZXlzKHZhbHVlLnByb3RvdHlwZSkgfHwgbmFtZSBpbiB2YWx1ZS5wcm90b3R5cGUpXG4gIClcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCB3aXRoIGtleXMuXG4gKlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gdmFsdWVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBrZXlzKHZhbHVlKSB7XG4gIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICBsZXQga2V5XG5cbiAgZm9yIChrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAob3duLmNhbGwodmFsdWUsIGtleSkpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qKlxuICogQXNzZXJ0IGEgcGFyc2VyIGlzIGF2YWlsYWJsZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZVxuICogQHJldHVybnMge2Fzc2VydHMgdmFsdWUgaXMgUGFyc2VyfVxuICovXG5mdW5jdGlvbiBhc3NlcnRQYXJzZXIobmFtZSwgdmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBgJyArIG5hbWUgKyAnYCB3aXRob3V0IGBQYXJzZXJgJylcbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydCBhIGNvbXBpbGVyIGlzIGF2YWlsYWJsZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZVxuICogQHJldHVybnMge2Fzc2VydHMgdmFsdWUgaXMgQ29tcGlsZXJ9XG4gKi9cbmZ1bmN0aW9uIGFzc2VydENvbXBpbGVyKG5hbWUsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgYCcgKyBuYW1lICsgJ2Agd2l0aG91dCBgQ29tcGlsZXJgJylcbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydCB0aGUgcHJvY2Vzc29yIGlzIG5vdCBmcm96ZW4uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7dW5rbm93bn0gZnJvemVuXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBmcm96ZW4gaXMgZmFsc2V9XG4gKi9cbmZ1bmN0aW9uIGFzc2VydFVuZnJvemVuKG5hbWUsIGZyb3plbikge1xuICBpZiAoZnJvemVuKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBjYWxsIGAnICtcbiAgICAgICAgbmFtZSArXG4gICAgICAgICdgIG9uIGEgZnJvemVuIHByb2Nlc3Nvci5cXG5DcmVhdGUgYSBuZXcgcHJvY2Vzc29yIGZpcnN0LCBieSBjYWxsaW5nIGl0OiB1c2UgYHByb2Nlc3NvcigpYCBpbnN0ZWFkIG9mIGBwcm9jZXNzb3JgLidcbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnQgYG5vZGVgIGlzIGEgdW5pc3Qgbm9kZS5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IG5vZGVcbiAqIEByZXR1cm5zIHthc3NlcnRzIG5vZGUgaXMgTm9kZX1cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0Tm9kZShub2RlKSB7XG4gIC8vIGBpc1BsYWluT2JqYCB1bmZvcnR1bmF0ZWx5IHVzZXMgYGFueWAgaW5zdGVhZCBvZiBgdW5rbm93bmAuXG4gIC8vIHR5cGUtY292ZXJhZ2U6aWdub3JlLW5leHQtbGluZVxuICBpZiAoIWlzUGxhaW5PYmoobm9kZSkgfHwgdHlwZW9mIG5vZGUudHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBub2RlLCBnb3QgYCcgKyBub2RlICsgJ2AnKVxuICAgIC8vIEZpbmUuXG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnQgdGhhdCBgY29tcGxldGVgIGlzIGB0cnVlYC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IGFzeW5jTmFtZVxuICogQHBhcmFtIHt1bmtub3dufSBjb21wbGV0ZVxuICogQHJldHVybnMge2Fzc2VydHMgY29tcGxldGUgaXMgdHJ1ZX1cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0RG9uZShuYW1lLCBhc3luY05hbWUsIGNvbXBsZXRlKSB7XG4gIGlmICghY29tcGxldGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnYCcgKyBuYW1lICsgJ2AgZmluaXNoZWQgYXN5bmMuIFVzZSBgJyArIGFzeW5jTmFtZSArICdgIGluc3RlYWQnXG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtWRmlsZUNvbXBhdGlibGV9IFt2YWx1ZV1cbiAqIEByZXR1cm5zIHtWRmlsZX1cbiAqL1xuZnVuY3Rpb24gdmZpbGUodmFsdWUpIHtcbiAgcmV0dXJuIGxvb2tzTGlrZUFWRmlsZSh2YWx1ZSkgPyB2YWx1ZSA6IG5ldyBWRmlsZSh2YWx1ZSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1ZGaWxlQ29tcGF0aWJsZX0gW3ZhbHVlXVxuICogQHJldHVybnMge3ZhbHVlIGlzIFZGaWxlfVxuICovXG5mdW5jdGlvbiBsb29rc0xpa2VBVkZpbGUodmFsdWUpIHtcbiAgcmV0dXJuIEJvb2xlYW4oXG4gICAgdmFsdWUgJiZcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICdtZXNzYWdlJyBpbiB2YWx1ZSAmJlxuICAgICAgJ21lc3NhZ2VzJyBpbiB2YWx1ZVxuICApXG59XG5cbi8qKlxuICogQHBhcmFtIHt1bmtub3dufSBbdmFsdWVdXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgVkZpbGVWYWx1ZX1cbiAqL1xuZnVuY3Rpb24gbG9va3NMaWtlQVZGaWxlVmFsdWUodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgaXNCdWZmZXIodmFsdWUpXG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuXHRpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGNvbnN0IHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG5cdHJldHVybiAocHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZSB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG90eXBlKSA9PT0gbnVsbCkgJiYgIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gdmFsdWUpICYmICEoU3ltYm9sLml0ZXJhdG9yIGluIHZhbHVlKTtcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHsoZXJyb3I/OiBFcnJvcnxudWxsfHVuZGVmaW5lZCwgLi4ub3V0cHV0OiBBcnJheTxhbnk+KSA9PiB2b2lkfSBDYWxsYmFja1xuICogQHR5cGVkZWYgeyguLi5pbnB1dDogQXJyYXk8YW55PikgPT4gYW55fSBNaWRkbGV3YXJlXG4gKlxuICogQHR5cGVkZWYgeyguLi5pbnB1dDogQXJyYXk8YW55PikgPT4gdm9pZH0gUnVuXG4gKiAgIENhbGwgYWxsIG1pZGRsZXdhcmUuXG4gKiBAdHlwZWRlZiB7KGZuOiBNaWRkbGV3YXJlKSA9PiBQaXBlbGluZX0gVXNlXG4gKiAgIEFkZCBgZm5gIChtaWRkbGV3YXJlKSB0byB0aGUgbGlzdC5cbiAqIEB0eXBlZGVmIHt7cnVuOiBSdW4sIHVzZTogVXNlfX0gUGlwZWxpbmVcbiAqICAgTWlkZGxld2FyZS5cbiAqL1xuXG4vKipcbiAqIENyZWF0ZSBuZXcgbWlkZGxld2FyZS5cbiAqXG4gKiBAcmV0dXJucyB7UGlwZWxpbmV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cm91Z2goKSB7XG4gIC8qKiBAdHlwZSB7QXJyYXk8TWlkZGxld2FyZT59ICovXG4gIGNvbnN0IGZucyA9IFtdXG4gIC8qKiBAdHlwZSB7UGlwZWxpbmV9ICovXG4gIGNvbnN0IHBpcGVsaW5lID0ge3J1biwgdXNlfVxuXG4gIHJldHVybiBwaXBlbGluZVxuXG4gIC8qKiBAdHlwZSB7UnVufSAqL1xuICBmdW5jdGlvbiBydW4oLi4udmFsdWVzKSB7XG4gICAgbGV0IG1pZGRsZXdhcmVJbmRleCA9IC0xXG4gICAgLyoqIEB0eXBlIHtDYWxsYmFja30gKi9cbiAgICBjb25zdCBjYWxsYmFjayA9IHZhbHVlcy5wb3AoKVxuXG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgZnVuY3Rpb24gYXMgbGFzdCBhcmd1bWVudCwgbm90ICcgKyBjYWxsYmFjaylcbiAgICB9XG5cbiAgICBuZXh0KG51bGwsIC4uLnZhbHVlcylcblxuICAgIC8qKlxuICAgICAqIFJ1biB0aGUgbmV4dCBgZm5gLCBvciB3ZVx1MjAxOXJlIGRvbmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0Vycm9yfG51bGx8dW5kZWZpbmVkfSBlcnJvclxuICAgICAqIEBwYXJhbSB7QXJyYXk8YW55Pn0gb3V0cHV0XG4gICAgICovXG4gICAgZnVuY3Rpb24gbmV4dChlcnJvciwgLi4ub3V0cHV0KSB7XG4gICAgICBjb25zdCBmbiA9IGZuc1srK21pZGRsZXdhcmVJbmRleF1cbiAgICAgIGxldCBpbmRleCA9IC0xXG5cbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBjYWxsYmFjayhlcnJvcilcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIENvcHkgbm9uLW51bGxpc2ggaW5wdXQgaW50byB2YWx1ZXMuXG4gICAgICB3aGlsZSAoKytpbmRleCA8IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG91dHB1dFtpbmRleF0gPT09IG51bGwgfHwgb3V0cHV0W2luZGV4XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3V0cHV0W2luZGV4XSA9IHZhbHVlc1tpbmRleF1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTYXZlIHRoZSBuZXdseSBjcmVhdGVkIGBvdXRwdXRgIGZvciB0aGUgbmV4dCBjYWxsLlxuICAgICAgdmFsdWVzID0gb3V0cHV0XG5cbiAgICAgIC8vIE5leHQgb3IgZG9uZS5cbiAgICAgIGlmIChmbikge1xuICAgICAgICB3cmFwKGZuLCBuZXh0KSguLi5vdXRwdXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjayhudWxsLCAuLi5vdXRwdXQpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEB0eXBlIHtVc2V9ICovXG4gIGZ1bmN0aW9uIHVzZShtaWRkZWx3YXJlKSB7XG4gICAgaWYgKHR5cGVvZiBtaWRkZWx3YXJlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAnRXhwZWN0ZWQgYG1pZGRlbHdhcmVgIHRvIGJlIGEgZnVuY3Rpb24sIG5vdCAnICsgbWlkZGVsd2FyZVxuICAgICAgKVxuICAgIH1cblxuICAgIGZucy5wdXNoKG1pZGRlbHdhcmUpXG4gICAgcmV0dXJuIHBpcGVsaW5lXG4gIH1cbn1cblxuLyoqXG4gKiBXcmFwIGBtaWRkbGV3YXJlYC5cbiAqIENhbiBiZSBzeW5jIG9yIGFzeW5jOyByZXR1cm4gYSBwcm9taXNlLCByZWNlaXZlIGEgY2FsbGJhY2ssIG9yIHJldHVybiBuZXdcbiAqIHZhbHVlcyBhbmQgZXJyb3JzLlxuICpcbiAqIEBwYXJhbSB7TWlkZGxld2FyZX0gbWlkZGxld2FyZVxuICogQHBhcmFtIHtDYWxsYmFja30gY2FsbGJhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyYXAobWlkZGxld2FyZSwgY2FsbGJhY2spIHtcbiAgLyoqIEB0eXBlIHtib29sZWFufSAqL1xuICBsZXQgY2FsbGVkXG5cbiAgcmV0dXJuIHdyYXBwZWRcblxuICAvKipcbiAgICogQ2FsbCBgbWlkZGxld2FyZWAuXG4gICAqIEB0aGlzIHthbnl9XG4gICAqIEBwYXJhbSB7QXJyYXk8YW55Pn0gcGFyYW1ldGVyc1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIHdyYXBwZWQoLi4ucGFyYW1ldGVycykge1xuICAgIGNvbnN0IGZuRXhwZWN0c0NhbGxiYWNrID0gbWlkZGxld2FyZS5sZW5ndGggPiBwYXJhbWV0ZXJzLmxlbmd0aFxuICAgIC8qKiBAdHlwZSB7YW55fSAqL1xuICAgIGxldCByZXN1bHRcblxuICAgIGlmIChmbkV4cGVjdHNDYWxsYmFjaykge1xuICAgICAgcGFyYW1ldGVycy5wdXNoKGRvbmUpXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IG1pZGRsZXdhcmUuYXBwbHkodGhpcywgcGFyYW1ldGVycylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXhjZXB0aW9uID0gLyoqIEB0eXBlIHtFcnJvcn0gKi8gKGVycm9yKVxuXG4gICAgICAvLyBXZWxsLCB0aGlzIGlzIHF1aXRlIHRoZSBwaWNrbGUuXG4gICAgICAvLyBgbWlkZGxld2FyZWAgcmVjZWl2ZWQgYSBjYWxsYmFjayBhbmQgY2FsbGVkIGl0IHN5bmNocm9ub3VzbHksIGJ1dCB0aGF0XG4gICAgICAvLyB0aHJldyBhbiBlcnJvci5cbiAgICAgIC8vIFRoZSBvbmx5IHRoaW5nIGxlZnQgdG8gZG8gaXMgdG8gdGhyb3cgdGhlIHRoaW5nIGluc3RlYWQuXG4gICAgICBpZiAoZm5FeHBlY3RzQ2FsbGJhY2sgJiYgY2FsbGVkKSB7XG4gICAgICAgIHRocm93IGV4Y2VwdGlvblxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZG9uZShleGNlcHRpb24pXG4gICAgfVxuXG4gICAgaWYgKCFmbkV4cGVjdHNDYWxsYmFjaykge1xuICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgcmVzdWx0LnRoZW4odGhlbiwgZG9uZSlcbiAgICAgIH0gZWxzZSBpZiAocmVzdWx0IGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgZG9uZShyZXN1bHQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGVuKHJlc3VsdClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCBgY2FsbGJhY2tgLCBvbmx5IG9uY2UuXG4gICAqIEB0eXBlIHtDYWxsYmFja31cbiAgICovXG4gIGZ1bmN0aW9uIGRvbmUoZXJyb3IsIC4uLm91dHB1dCkge1xuICAgIGlmICghY2FsbGVkKSB7XG4gICAgICBjYWxsZWQgPSB0cnVlXG4gICAgICBjYWxsYmFjayhlcnJvciwgLi4ub3V0cHV0KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIGBkb25lYCB3aXRoIG9uZSB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IFt2YWx1ZV1cbiAgICovXG4gIGZ1bmN0aW9uIHRoZW4odmFsdWUpIHtcbiAgICBkb25lKG51bGwsIHZhbHVlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLk5vZGV9IE5vZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUG9zaXRpb259IFBvc2l0aW9uXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9taW51cmwuc2hhcmVkLmpzJykuVVJMfSBVUkxcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2luZGV4LmpzJykuRGF0YX0gRGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vaW5kZXguanMnKS5WYWx1ZX0gVmFsdWVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiAmIHt0eXBlOiBzdHJpbmcsIHBvc2l0aW9uPzogUG9zaXRpb24gfCB1bmRlZmluZWR9fSBOb2RlTGlrZVxuICpcbiAqIEB0eXBlZGVmIHsnYXNjaWknIHwgJ3V0ZjgnIHwgJ3V0Zi04JyB8ICd1dGYxNmxlJyB8ICd1Y3MyJyB8ICd1Y3MtMicgfCAnYmFzZTY0JyB8ICdiYXNlNjR1cmwnIHwgJ2xhdGluMScgfCAnYmluYXJ5JyB8ICdoZXgnfSBCdWZmZXJFbmNvZGluZ1xuICogICBFbmNvZGluZ3Mgc3VwcG9ydGVkIGJ5IHRoZSBidWZmZXIgY2xhc3MuXG4gKlxuICogICBUaGlzIGlzIGEgY29weSBvZiB0aGUgdHlwZXMgZnJvbSBOb2RlLCBjb3BpZWQgdG8gcHJldmVudCBOb2RlIGdsb2JhbHMgZnJvbVxuICogICBiZWluZyBuZWVkZWQuXG4gKiAgIENvcGllZCBmcm9tOiA8aHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvYmxvYi85MGE0ZWM4L3R5cGVzL25vZGUvYnVmZmVyLmQudHMjTDE3MD5cbiAqXG4gKiBAdHlwZWRlZiB7T3B0aW9ucyB8IFVSTCB8IFZhbHVlIHwgVkZpbGV9IENvbXBhdGlibGVcbiAqICAgVGhpbmdzIHRoYXQgY2FuIGJlIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuXG4gKlxuICogQHR5cGVkZWYgVkZpbGVDb3JlT3B0aW9uc1xuICogICBTZXQgbXVsdGlwbGUgdmFsdWVzLlxuICogQHByb3BlcnR5IHtWYWx1ZSB8IG51bGwgfCB1bmRlZmluZWR9IFt2YWx1ZV1cbiAqICAgU2V0IGB2YWx1ZWAuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtjd2RdXG4gKiAgIFNldCBgY3dkYC5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPiB8IG51bGwgfCB1bmRlZmluZWR9IFtoaXN0b3J5XVxuICogICBTZXQgYGhpc3RvcnlgLlxuICogQHByb3BlcnR5IHtVUkwgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbcGF0aF1cbiAqICAgU2V0IGBwYXRoYC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2Jhc2VuYW1lXVxuICogICBTZXQgYGJhc2VuYW1lYC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3N0ZW1dXG4gKiAgIFNldCBgc3RlbWAuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtleHRuYW1lXVxuICogICBTZXQgYGV4dG5hbWVgLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbZGlybmFtZV1cbiAqICAgU2V0IGBkaXJuYW1lYC5cbiAqIEBwcm9wZXJ0eSB7RGF0YSB8IG51bGwgfCB1bmRlZmluZWR9IFtkYXRhXVxuICogICBTZXQgYGRhdGFgLlxuICpcbiAqIEB0eXBlZGVmIE1hcFxuICogICBSYXcgc291cmNlIG1hcC5cbiAqXG4gKiAgIFNlZTpcbiAqICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3NvdXJjZS1tYXAvYmxvYi81ODgxOWYwL3NvdXJjZS1tYXAuZC50cyNMMTUtTDIzPi5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB2ZXJzaW9uXG4gKiAgIFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZz59IHNvdXJjZXNcbiAqICAgQW4gYXJyYXkgb2YgVVJMcyB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICogQHByb3BlcnR5IHtBcnJheTxzdHJpbmc+fSBuYW1lc1xuICogICBBbiBhcnJheSBvZiBpZGVudGlmaWVycyB3aGljaCBjYW4gYmUgcmVmZXJlbmNlZCBieSBpbmRpdmlkdWFsIG1hcHBpbmdzLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCB1bmRlZmluZWR9IFtzb3VyY2VSb290XVxuICogICBUaGUgVVJMIHJvb3QgZnJvbSB3aGljaCBhbGwgc291cmNlcyBhcmUgcmVsYXRpdmUuXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZz4gfCB1bmRlZmluZWR9IFtzb3VyY2VzQ29udGVudF1cbiAqICAgQW4gYXJyYXkgb2YgY29udGVudHMgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBtYXBwaW5nc1xuICogICBBIHN0cmluZyBvZiBiYXNlNjQgVkxRcyB3aGljaCBjb250YWluIHRoZSBhY3R1YWwgbWFwcGluZ3MuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZmlsZVxuICogICBUaGUgZ2VuZXJhdGVkIGZpbGUgdGhpcyBzb3VyY2UgbWFwIGlzIGFzc29jaWF0ZWQgd2l0aC5cbiAqXG4gKiBAdHlwZWRlZiB7e1trZXk6IHN0cmluZ106IHVua25vd259ICYgVkZpbGVDb3JlT3B0aW9uc30gT3B0aW9uc1xuICogICBDb25maWd1cmF0aW9uLlxuICpcbiAqICAgQSBidW5jaCBvZiBrZXlzIHRoYXQgd2lsbCBiZSBzaGFsbG93IGNvcGllZCBvdmVyIHRvIHRoZSBuZXcgZmlsZS5cbiAqXG4gKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IFJlcG9ydGVyU2V0dGluZ3NcbiAqICAgQ29uZmlndXJhdGlvbiBmb3IgcmVwb3J0ZXJzLlxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIHtSZXBvcnRlclNldHRpbmdzfSBTZXR0aW5nc1xuICogICBPcHRpb25zIHR5cGUuXG4gKiBAY2FsbGJhY2sgUmVwb3J0ZXJcbiAqICAgVHlwZSBmb3IgYSByZXBvcnRlci5cbiAqIEBwYXJhbSB7QXJyYXk8VkZpbGU+fSBmaWxlc1xuICogICBGaWxlcyB0byByZXBvcnQuXG4gKiBAcGFyYW0ge1NldHRpbmdzfSBvcHRpb25zXG4gKiAgIENvbmZpZ3VyYXRpb24uXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBSZXBvcnQuXG4gKi9cblxuaW1wb3J0IGJ1ZmZlckxpa2UgZnJvbSAnaXMtYnVmZmVyJ1xuaW1wb3J0IHtWRmlsZU1lc3NhZ2V9IGZyb20gJ3ZmaWxlLW1lc3NhZ2UnXG5pbXBvcnQge3BhdGh9IGZyb20gJy4vbWlucGF0aC5qcydcbmltcG9ydCB7cHJvY30gZnJvbSAnLi9taW5wcm9jLmpzJ1xuaW1wb3J0IHt1cmxUb1BhdGgsIGlzVXJsfSBmcm9tICcuL21pbnVybC5qcydcblxuLyoqXG4gKiBPcmRlciBvZiBzZXR0aW5nIChsZWFzdCBzcGVjaWZpYyB0byBtb3N0KSwgd2UgbmVlZCB0aGlzIGJlY2F1c2Ugb3RoZXJ3aXNlXG4gKiBge3N0ZW06ICdhJywgcGF0aDogJ34vYi5qcyd9YCB3b3VsZCB0aHJvdywgYXMgYSBwYXRoIGlzIG5lZWRlZCBiZWZvcmUgYVxuICogc3RlbSBjYW4gYmUgc2V0LlxuICpcbiAqIEB0eXBlIHtBcnJheTwnYmFzZW5hbWUnIHwgJ2Rpcm5hbWUnIHwgJ2V4dG5hbWUnIHwgJ2hpc3RvcnknIHwgJ3BhdGgnIHwgJ3N0ZW0nPn1cbiAqL1xuY29uc3Qgb3JkZXIgPSBbJ2hpc3RvcnknLCAncGF0aCcsICdiYXNlbmFtZScsICdzdGVtJywgJ2V4dG5hbWUnLCAnZGlybmFtZSddXG5cbmV4cG9ydCBjbGFzcyBWRmlsZSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgdmlydHVhbCBmaWxlLlxuICAgKlxuICAgKiBgb3B0aW9uc2AgaXMgdHJlYXRlZCBhczpcbiAgICpcbiAgICogKiAgIGBzdHJpbmdgIG9yIGBCdWZmZXJgIFx1MjAxNCBge3ZhbHVlOiBvcHRpb25zfWBcbiAgICogKiAgIGBVUkxgIFx1MjAxNCBge3BhdGg6IG9wdGlvbnN9YFxuICAgKiAqICAgYFZGaWxlYCBcdTIwMTQgc2hhbGxvdyBjb3BpZXMgaXRzIGRhdGEgb3ZlciB0byB0aGUgbmV3IGZpbGVcbiAgICogKiAgIGBvYmplY3RgIFx1MjAxNCBhbGwgZmllbGRzIGFyZSBzaGFsbG93IGNvcGllZCBvdmVyIHRvIHRoZSBuZXcgZmlsZVxuICAgKlxuICAgKiBQYXRoIHJlbGF0ZWQgZmllbGRzIGFyZSBzZXQgaW4gdGhlIGZvbGxvd2luZyBvcmRlciAobGVhc3Qgc3BlY2lmaWMgdG9cbiAgICogbW9zdCBzcGVjaWZpYyk6IGBoaXN0b3J5YCwgYHBhdGhgLCBgYmFzZW5hbWVgLCBgc3RlbWAsIGBleHRuYW1lYCxcbiAgICogYGRpcm5hbWVgLlxuICAgKlxuICAgKiBZb3UgY2Fubm90IHNldCBgZGlybmFtZWAgb3IgYGV4dG5hbWVgIHdpdGhvdXQgc2V0dGluZyBlaXRoZXIgYGhpc3RvcnlgLFxuICAgKiBgcGF0aGAsIGBiYXNlbmFtZWAsIG9yIGBzdGVtYCB0b28uXG4gICAqXG4gICAqIEBwYXJhbSB7Q29tcGF0aWJsZSB8IG51bGwgfCB1bmRlZmluZWR9IFt2YWx1ZV1cbiAgICogICBGaWxlIHZhbHVlLlxuICAgKiBAcmV0dXJuc1xuICAgKiAgIE5ldyBpbnN0YW5jZS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHZhbHVlKSB7XG4gICAgLyoqIEB0eXBlIHtPcHRpb25zIHwgVkZpbGV9ICovXG4gICAgbGV0IG9wdGlvbnNcblxuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCBidWZmZXIodmFsdWUpKSB7XG4gICAgICBvcHRpb25zID0ge3ZhbHVlfVxuICAgIH0gZWxzZSBpZiAoaXNVcmwodmFsdWUpKSB7XG4gICAgICBvcHRpb25zID0ge3BhdGg6IHZhbHVlfVxuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zID0gdmFsdWVcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQbGFjZSB0byBzdG9yZSBjdXN0b20gaW5mb3JtYXRpb24gKGRlZmF1bHQ6IGB7fWApLlxuICAgICAqXG4gICAgICogSXRcdTIwMTlzIE9LIHRvIHN0b3JlIGN1c3RvbSBkYXRhIGRpcmVjdGx5IG9uIHRoZSBmaWxlIGJ1dCBtb3ZpbmcgaXQgdG9cbiAgICAgKiBgZGF0YWAgaXMgcmVjb21tZW5kZWQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7RGF0YX1cbiAgICAgKi9cbiAgICB0aGlzLmRhdGEgPSB7fVxuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBtZXNzYWdlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7QXJyYXk8VkZpbGVNZXNzYWdlPn1cbiAgICAgKi9cbiAgICB0aGlzLm1lc3NhZ2VzID0gW11cblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgZmlsZXBhdGhzIHRoZSBmaWxlIG1vdmVkIGJldHdlZW4uXG4gICAgICpcbiAgICAgKiBUaGUgZmlyc3QgaXMgdGhlIG9yaWdpbmFsIHBhdGggYW5kIHRoZSBsYXN0IGlzIHRoZSBjdXJyZW50IHBhdGguXG4gICAgICpcbiAgICAgKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn1cbiAgICAgKi9cbiAgICB0aGlzLmhpc3RvcnkgPSBbXVxuXG4gICAgLyoqXG4gICAgICogQmFzZSBvZiBgcGF0aGAgKGRlZmF1bHQ6IGBwcm9jZXNzLmN3ZCgpYCBvciBgJy8nYCBpbiBicm93c2VycykuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMuY3dkID0gcHJvYy5jd2QoKVxuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG4gICAgLyoqXG4gICAgICogUmF3IHZhbHVlLlxuICAgICAqXG4gICAgICogQHR5cGUge1ZhbHVlfVxuICAgICAqL1xuICAgIHRoaXMudmFsdWVcblxuICAgIC8vIFRoZSBiZWxvdyBhcmUgbm9uLXN0YW5kYXJkLCB0aGV5IGFyZSBcdTIwMUN3ZWxsLWtub3duXHUyMDFELlxuICAgIC8vIEFzIGluLCB1c2VkIGluIHNldmVyYWwgdG9vbHMuXG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGEgZmlsZSB3YXMgc2F2ZWQgdG8gZGlzay5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgdXNlZCBieSB2ZmlsZSByZXBvcnRlcnMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLnN0b3JlZFxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tLCBub24tc3RyaW5nLCBjb21waWxlZCwgcmVwcmVzZW50YXRpb24uXG4gICAgICpcbiAgICAgKiBUaGlzIGlzIHVzZWQgYnkgdW5pZmllZCB0byBzdG9yZSBub24tc3RyaW5nIHJlc3VsdHMuXG4gICAgICogT25lIGV4YW1wbGUgaXMgd2hlbiB0dXJuaW5nIG1hcmtkb3duIGludG8gUmVhY3Qgbm9kZXMuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7dW5rbm93bn1cbiAgICAgKi9cbiAgICB0aGlzLnJlc3VsdFxuXG4gICAgLyoqXG4gICAgICogU291cmNlIG1hcC5cbiAgICAgKlxuICAgICAqIFRoaXMgdHlwZSBpcyBlcXVpdmFsZW50IHRvIHRoZSBgUmF3U291cmNlTWFwYCB0eXBlIGZyb20gdGhlIGBzb3VyY2UtbWFwYFxuICAgICAqIG1vZHVsZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtNYXAgfCBudWxsIHwgdW5kZWZpbmVkfVxuICAgICAqL1xuICAgIHRoaXMubWFwXG4gICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi9cblxuICAgIC8vIFNldCBwYXRoIHJlbGF0ZWQgcHJvcGVydGllcyBpbiB0aGUgY29ycmVjdCBvcmRlci5cbiAgICBsZXQgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBvcmRlci5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHByb3AgPSBvcmRlcltpbmRleF1cblxuICAgICAgLy8gTm90ZTogd2Ugc3BlY2lmaWNhbGx5IHVzZSBgaW5gIGluc3RlYWQgb2YgYGhhc093blByb3BlcnR5YCB0byBhY2NlcHRcbiAgICAgIC8vIGB2ZmlsZWBzIHRvby5cbiAgICAgIGlmIChcbiAgICAgICAgcHJvcCBpbiBvcHRpb25zICYmXG4gICAgICAgIG9wdGlvbnNbcHJvcF0gIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBvcHRpb25zW3Byb3BdICE9PSBudWxsXG4gICAgICApIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogVFMgZG9lc25cdTIwMTl0IHVuZGVyc3RhbmQgYmFzaWMgcmVhbGl0eS5cbiAgICAgICAgdGhpc1twcm9wXSA9IHByb3AgPT09ICdoaXN0b3J5JyA/IFsuLi5vcHRpb25zW3Byb3BdXSA6IG9wdGlvbnNbcHJvcF1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQgcHJvcFxuXG4gICAgLy8gU2V0IG5vbi1wYXRoIHJlbGF0ZWQgcHJvcGVydGllcy5cbiAgICBmb3IgKHByb3AgaW4gb3B0aW9ucykge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogZmluZSB0byBzZXQgb3RoZXIgdGhpbmdzLlxuICAgICAgaWYgKCFvcmRlci5pbmNsdWRlcyhwcm9wKSkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBmaW5lIHRvIHNldCBvdGhlciB0aGluZ3MuXG4gICAgICAgIHRoaXNbcHJvcF0gPSBvcHRpb25zW3Byb3BdXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCBwYXRoIChleGFtcGxlOiBgJ34vaW5kZXgubWluLmpzJ2ApLlxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHBhdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGlzdG9yeVt0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMV1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGZ1bGwgcGF0aCAoZXhhbXBsZTogYCd+L2luZGV4Lm1pbi5qcydgKS5cbiAgICpcbiAgICogQ2Fubm90IGJlIG51bGxpZmllZC5cbiAgICogWW91IGNhbiBzZXQgYSBmaWxlIFVSTCAoYSBgVVJMYCBvYmplY3Qgd2l0aCBhIGBmaWxlOmAgcHJvdG9jb2wpIHdoaWNoIHdpbGxcbiAgICogYmUgdHVybmVkIGludG8gYSBwYXRoIHdpdGggYHVybC5maWxlVVJMVG9QYXRoYC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBVUkx9IHBhdGhcbiAgICovXG4gIHNldCBwYXRoKHBhdGgpIHtcbiAgICBpZiAoaXNVcmwocGF0aCkpIHtcbiAgICAgIHBhdGggPSB1cmxUb1BhdGgocGF0aClcbiAgICB9XG5cbiAgICBhc3NlcnROb25FbXB0eShwYXRoLCAncGF0aCcpXG5cbiAgICBpZiAodGhpcy5wYXRoICE9PSBwYXRoKSB7XG4gICAgICB0aGlzLmhpc3RvcnkucHVzaChwYXRoKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHBhcmVudCBwYXRoIChleGFtcGxlOiBgJ34nYCkuXG4gICAqL1xuICBnZXQgZGlybmFtZSgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMucGF0aCA9PT0gJ3N0cmluZycgPyBwYXRoLmRpcm5hbWUodGhpcy5wYXRoKSA6IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcGFyZW50IHBhdGggKGV4YW1wbGU6IGAnfidgKS5cbiAgICpcbiAgICogQ2Fubm90IGJlIHNldCBpZiB0aGVyZVx1MjAxOXMgbm8gYHBhdGhgIHlldC5cbiAgICovXG4gIHNldCBkaXJuYW1lKGRpcm5hbWUpIHtcbiAgICBhc3NlcnRQYXRoKHRoaXMuYmFzZW5hbWUsICdkaXJuYW1lJylcbiAgICB0aGlzLnBhdGggPSBwYXRoLmpvaW4oZGlybmFtZSB8fCAnJywgdGhpcy5iYXNlbmFtZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGJhc2VuYW1lIChpbmNsdWRpbmcgZXh0bmFtZSkgKGV4YW1wbGU6IGAnaW5kZXgubWluLmpzJ2ApLlxuICAgKi9cbiAgZ2V0IGJhc2VuYW1lKCkge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguYmFzZW5hbWUodGhpcy5wYXRoKSA6IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBiYXNlbmFtZSAoaW5jbHVkaW5nIGV4dG5hbWUpIChgJ2luZGV4Lm1pbi5qcydgKS5cbiAgICpcbiAgICogQ2Fubm90IGNvbnRhaW4gcGF0aCBzZXBhcmF0b3JzIChgJy8nYCBvbiB1bml4LCBtYWNPUywgYW5kIGJyb3dzZXJzLCBgJ1xcJ2BcbiAgICogb24gd2luZG93cykuXG4gICAqIENhbm5vdCBiZSBudWxsaWZpZWQgKHVzZSBgZmlsZS5wYXRoID0gZmlsZS5kaXJuYW1lYCBpbnN0ZWFkKS5cbiAgICovXG4gIHNldCBiYXNlbmFtZShiYXNlbmFtZSkge1xuICAgIGFzc2VydE5vbkVtcHR5KGJhc2VuYW1lLCAnYmFzZW5hbWUnKVxuICAgIGFzc2VydFBhcnQoYmFzZW5hbWUsICdiYXNlbmFtZScpXG4gICAgdGhpcy5wYXRoID0gcGF0aC5qb2luKHRoaXMuZGlybmFtZSB8fCAnJywgYmFzZW5hbWUpXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBleHRuYW1lIChpbmNsdWRpbmcgZG90KSAoZXhhbXBsZTogYCcuanMnYCkuXG4gICAqL1xuICBnZXQgZXh0bmFtZSgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMucGF0aCA9PT0gJ3N0cmluZycgPyBwYXRoLmV4dG5hbWUodGhpcy5wYXRoKSA6IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZXh0bmFtZSAoaW5jbHVkaW5nIGRvdCkgKGV4YW1wbGU6IGAnLmpzJ2ApLlxuICAgKlxuICAgKiBDYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKGAnLydgIG9uIHVuaXgsIG1hY09TLCBhbmQgYnJvd3NlcnMsIGAnXFwnYFxuICAgKiBvbiB3aW5kb3dzKS5cbiAgICogQ2Fubm90IGJlIHNldCBpZiB0aGVyZVx1MjAxOXMgbm8gYHBhdGhgIHlldC5cbiAgICovXG4gIHNldCBleHRuYW1lKGV4dG5hbWUpIHtcbiAgICBhc3NlcnRQYXJ0KGV4dG5hbWUsICdleHRuYW1lJylcbiAgICBhc3NlcnRQYXRoKHRoaXMuZGlybmFtZSwgJ2V4dG5hbWUnKVxuXG4gICAgaWYgKGV4dG5hbWUpIHtcbiAgICAgIGlmIChleHRuYW1lLmNoYXJDb2RlQXQoMCkgIT09IDQ2IC8qIGAuYCAqLykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BleHRuYW1lYCBtdXN0IHN0YXJ0IHdpdGggYC5gJylcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dG5hbWUuaW5jbHVkZXMoJy4nLCAxKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2BleHRuYW1lYCBjYW5ub3QgY29udGFpbiBtdWx0aXBsZSBkb3RzJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnBhdGggPSBwYXRoLmpvaW4odGhpcy5kaXJuYW1lLCB0aGlzLnN0ZW0gKyAoZXh0bmFtZSB8fCAnJykpXG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGVtIChiYXNlbmFtZSB3L28gZXh0bmFtZSkgKGV4YW1wbGU6IGAnaW5kZXgubWluJ2ApLlxuICAgKi9cbiAgZ2V0IHN0ZW0oKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnXG4gICAgICA/IHBhdGguYmFzZW5hbWUodGhpcy5wYXRoLCB0aGlzLmV4dG5hbWUpXG4gICAgICA6IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3RlbSAoYmFzZW5hbWUgdy9vIGV4dG5hbWUpIChleGFtcGxlOiBgJ2luZGV4Lm1pbidgKS5cbiAgICpcbiAgICogQ2Fubm90IGNvbnRhaW4gcGF0aCBzZXBhcmF0b3JzIChgJy8nYCBvbiB1bml4LCBtYWNPUywgYW5kIGJyb3dzZXJzLCBgJ1xcJ2BcbiAgICogb24gd2luZG93cykuXG4gICAqIENhbm5vdCBiZSBudWxsaWZpZWQgKHVzZSBgZmlsZS5wYXRoID0gZmlsZS5kaXJuYW1lYCBpbnN0ZWFkKS5cbiAgICovXG4gIHNldCBzdGVtKHN0ZW0pIHtcbiAgICBhc3NlcnROb25FbXB0eShzdGVtLCAnc3RlbScpXG4gICAgYXNzZXJ0UGFydChzdGVtLCAnc3RlbScpXG4gICAgdGhpcy5wYXRoID0gcGF0aC5qb2luKHRoaXMuZGlybmFtZSB8fCAnJywgc3RlbSArICh0aGlzLmV4dG5hbWUgfHwgJycpKVxuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSB0aGUgZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIHtCdWZmZXJFbmNvZGluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtlbmNvZGluZz0ndXRmOCddXG4gICAqICAgQ2hhcmFjdGVyIGVuY29kaW5nIHRvIHVuZGVyc3RhbmQgYHZhbHVlYCBhcyB3aGVuIGl0XHUyMDE5cyBhIGBCdWZmZXJgXG4gICAqICAgKGRlZmF1bHQ6IGAndXRmOCdgKS5cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICogICBTZXJpYWxpemVkIGZpbGUuXG4gICAqL1xuICB0b1N0cmluZyhlbmNvZGluZykge1xuICAgIHJldHVybiAodGhpcy52YWx1ZSB8fCAnJykudG9TdHJpbmcoZW5jb2RpbmcgfHwgdW5kZWZpbmVkKVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHdhcm5pbmcgbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUuXG4gICAqXG4gICAqIEl0cyBgZmF0YWxgIGlzIHNldCB0byBgZmFsc2VgIGFuZCBgZmlsZWAgaXMgc2V0IHRvIHRoZSBjdXJyZW50IGZpbGUgcGF0aC5cbiAgICogSXRzIGFkZGVkIHRvIGBmaWxlLm1lc3NhZ2VzYC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBFcnJvciB8IFZGaWxlTWVzc2FnZX0gcmVhc29uXG4gICAqICAgUmVhc29uIGZvciBtZXNzYWdlLCB1c2VzIHRoZSBzdGFjayBhbmQgbWVzc2FnZSBvZiB0aGUgZXJyb3IgaWYgZ2l2ZW4uXG4gICAqIEBwYXJhbSB7Tm9kZSB8IE5vZGVMaWtlIHwgUG9zaXRpb24gfCBQb2ludCB8IG51bGwgfCB1bmRlZmluZWR9IFtwbGFjZV1cbiAgICogICBQbGFjZSBpbiBmaWxlIHdoZXJlIHRoZSBtZXNzYWdlIG9jY3VycmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcmlnaW5dXG4gICAqICAgUGxhY2UgaW4gY29kZSB3aGVyZSB0aGUgbWVzc2FnZSBvcmlnaW5hdGVzIChleGFtcGxlOlxuICAgKiAgIGAnbXktcGFja2FnZTpteS1ydWxlJ2Agb3IgYCdteS1ydWxlJ2ApLlxuICAgKiBAcmV0dXJucyB7VkZpbGVNZXNzYWdlfVxuICAgKiAgIE1lc3NhZ2UuXG4gICAqL1xuICBtZXNzYWdlKHJlYXNvbiwgcGxhY2UsIG9yaWdpbikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBuZXcgVkZpbGVNZXNzYWdlKHJlYXNvbiwgcGxhY2UsIG9yaWdpbilcblxuICAgIGlmICh0aGlzLnBhdGgpIHtcbiAgICAgIG1lc3NhZ2UubmFtZSA9IHRoaXMucGF0aCArICc6JyArIG1lc3NhZ2UubmFtZVxuICAgICAgbWVzc2FnZS5maWxlID0gdGhpcy5wYXRoXG4gICAgfVxuXG4gICAgbWVzc2FnZS5mYXRhbCA9IGZhbHNlXG5cbiAgICB0aGlzLm1lc3NhZ2VzLnB1c2gobWVzc2FnZSlcblxuICAgIHJldHVybiBtZXNzYWdlXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGluZm8gbWVzc2FnZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUuXG4gICAqXG4gICAqIEl0cyBgZmF0YWxgIGlzIHNldCB0byBgbnVsbGAgYW5kIGBmaWxlYCBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgZmlsZSBwYXRoLlxuICAgKiBJdHMgYWRkZWQgdG8gYGZpbGUubWVzc2FnZXNgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEVycm9yIHwgVkZpbGVNZXNzYWdlfSByZWFzb25cbiAgICogICBSZWFzb24gZm9yIG1lc3NhZ2UsIHVzZXMgdGhlIHN0YWNrIGFuZCBtZXNzYWdlIG9mIHRoZSBlcnJvciBpZiBnaXZlbi5cbiAgICogQHBhcmFtIHtOb2RlIHwgTm9kZUxpa2UgfCBQb3NpdGlvbiB8IFBvaW50IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3BsYWNlXVxuICAgKiAgIFBsYWNlIGluIGZpbGUgd2hlcmUgdGhlIG1lc3NhZ2Ugb2NjdXJyZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29yaWdpbl1cbiAgICogICBQbGFjZSBpbiBjb2RlIHdoZXJlIHRoZSBtZXNzYWdlIG9yaWdpbmF0ZXMgKGV4YW1wbGU6XG4gICAqICAgYCdteS1wYWNrYWdlOm15LXJ1bGUnYCBvciBgJ215LXJ1bGUnYCkuXG4gICAqIEByZXR1cm5zIHtWRmlsZU1lc3NhZ2V9XG4gICAqICAgTWVzc2FnZS5cbiAgICovXG4gIGluZm8ocmVhc29uLCBwbGFjZSwgb3JpZ2luKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMubWVzc2FnZShyZWFzb24sIHBsYWNlLCBvcmlnaW4pXG5cbiAgICBtZXNzYWdlLmZhdGFsID0gbnVsbFxuXG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBmYXRhbCBlcnJvciBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUuXG4gICAqXG4gICAqIEl0cyBgZmF0YWxgIGlzIHNldCB0byBgdHJ1ZWAgYW5kIGBmaWxlYCBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgZmlsZSBwYXRoLlxuICAgKiBJdHMgYWRkZWQgdG8gYGZpbGUubWVzc2FnZXNgLlxuICAgKlxuICAgKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogYSBmYXRhbCBlcnJvciBtZWFucyB0aGF0IGEgZmlsZSBpcyBubyBsb25nZXIgcHJvY2Vzc2FibGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgRXJyb3IgfCBWRmlsZU1lc3NhZ2V9IHJlYXNvblxuICAgKiAgIFJlYXNvbiBmb3IgbWVzc2FnZSwgdXNlcyB0aGUgc3RhY2sgYW5kIG1lc3NhZ2Ugb2YgdGhlIGVycm9yIGlmIGdpdmVuLlxuICAgKiBAcGFyYW0ge05vZGUgfCBOb2RlTGlrZSB8IFBvc2l0aW9uIHwgUG9pbnQgfCBudWxsIHwgdW5kZWZpbmVkfSBbcGxhY2VdXG4gICAqICAgUGxhY2UgaW4gZmlsZSB3aGVyZSB0aGUgbWVzc2FnZSBvY2N1cnJlZC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbb3JpZ2luXVxuICAgKiAgIFBsYWNlIGluIGNvZGUgd2hlcmUgdGhlIG1lc3NhZ2Ugb3JpZ2luYXRlcyAoZXhhbXBsZTpcbiAgICogICBgJ215LXBhY2thZ2U6bXktcnVsZSdgIG9yIGAnbXktcnVsZSdgKS5cbiAgICogQHJldHVybnMge25ldmVyfVxuICAgKiAgIE1lc3NhZ2UuXG4gICAqIEB0aHJvd3Mge1ZGaWxlTWVzc2FnZX1cbiAgICogICBNZXNzYWdlLlxuICAgKi9cbiAgZmFpbChyZWFzb24sIHBsYWNlLCBvcmlnaW4pIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlKHJlYXNvbiwgcGxhY2UsIG9yaWdpbilcblxuICAgIG1lc3NhZ2UuZmF0YWwgPSB0cnVlXG5cbiAgICB0aHJvdyBtZXNzYWdlXG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnQgdGhhdCBgcGFydGAgaXMgbm90IGEgcGF0aCAoYXMgaW4sIGRvZXMgbm90IGNvbnRhaW4gYHBhdGguc2VwYCkuXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBwYXJ0XG4gKiAgIEZpbGUgcGF0aCBwYXJ0LlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqICAgUGFydCBuYW1lLlxuICogQHJldHVybnMge3ZvaWR9XG4gKiAgIE5vdGhpbmcuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFBhcnQocGFydCwgbmFtZSkge1xuICBpZiAocGFydCAmJiBwYXJ0LmluY2x1ZGVzKHBhdGguc2VwKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdgJyArIG5hbWUgKyAnYCBjYW5ub3QgYmUgYSBwYXRoOiBkaWQgbm90IGV4cGVjdCBgJyArIHBhdGguc2VwICsgJ2AnXG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IHRoYXQgYHBhcnRgIGlzIG5vdCBlbXB0eS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gcGFydFxuICogICBUaGluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiAgIFBhcnQgbmFtZS5cbiAqIEByZXR1cm5zIHthc3NlcnRzIHBhcnQgaXMgc3RyaW5nfVxuICogICBOb3RoaW5nLlxuICovXG5mdW5jdGlvbiBhc3NlcnROb25FbXB0eShwYXJ0LCBuYW1lKSB7XG4gIGlmICghcGFydCkge1xuICAgIHRocm93IG5ldyBFcnJvcignYCcgKyBuYW1lICsgJ2AgY2Fubm90IGJlIGVtcHR5JylcbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydCBgcGF0aGAgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBwYXRoXG4gKiAgIFBhdGguXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogICBEZXBlbmRlbmN5IG5hbWUuXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBwYXRoIGlzIHN0cmluZ31cbiAqICAgTm90aGluZy5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0UGF0aChwYXRoLCBuYW1lKSB7XG4gIGlmICghcGF0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU2V0dGluZyBgJyArIG5hbWUgKyAnYCByZXF1aXJlcyBgcGF0aGAgdG8gYmUgc2V0IHRvbycpXG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnQgYHZhbHVlYCBpcyBhIGJ1ZmZlci5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlXG4gKiAgIHRoaW5nLlxuICogQHJldHVybnMge3ZhbHVlIGlzIEJ1ZmZlcn1cbiAqICAgV2hldGhlciBgdmFsdWVgIGlzIGEgTm9kZS5qcyBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGJ1ZmZlcih2YWx1ZSkge1xuICByZXR1cm4gYnVmZmVyTGlrZSh2YWx1ZSlcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuTm9kZX0gTm9kZVxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Qb2ludH0gUG9pbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUG9zaXRpb259IFBvc2l0aW9uXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBOb2RlTGlrZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHR5cGVcbiAqIEBwcm9wZXJ0eSB7UG9zaXRpb25MaWtlIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3Bvc2l0aW9uXVxuICpcbiAqIEB0eXBlZGVmIFBvc2l0aW9uTGlrZVxuICogQHByb3BlcnR5IHtQb2ludExpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBbc3RhcnRdXG4gKiBAcHJvcGVydHkge1BvaW50TGlrZSB8IG51bGwgfCB1bmRlZmluZWR9IFtlbmRdXG4gKlxuICogQHR5cGVkZWYgUG9pbnRMaWtlXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IFtsaW5lXVxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfSBbY29sdW1uXVxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfSBbb2Zmc2V0XVxuICovXG5cbi8qKlxuICogU2VyaWFsaXplIHRoZSBwb3NpdGlvbmFsIGluZm8gb2YgYSBwb2ludCwgcG9zaXRpb24gKHN0YXJ0IGFuZCBlbmQgcG9pbnRzKSxcbiAqIG9yIG5vZGUuXG4gKlxuICogQHBhcmFtIHtOb2RlIHwgTm9kZUxpa2UgfCBQb3NpdGlvbiB8IFBvc2l0aW9uTGlrZSB8IFBvaW50IHwgUG9pbnRMaWtlIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3ZhbHVlXVxuICogICBOb2RlLCBwb3NpdGlvbiwgb3IgcG9pbnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBQcmV0dHkgcHJpbnRlZCBwb3NpdGlvbmFsIGluZm8gb2YgYSBub2RlIChgc3RyaW5nYCkuXG4gKlxuICogICBJbiB0aGUgZm9ybWF0IG9mIGEgcmFuZ2UgYGxzOmNzLWxlOmNlYCAod2hlbiBnaXZlbiBgbm9kZWAgb3IgYHBvc2l0aW9uYClcbiAqICAgb3IgYSBwb2ludCBgbDpjYCAod2hlbiBnaXZlbiBgcG9pbnRgKSwgd2hlcmUgYGxgIHN0YW5kcyBmb3IgbGluZSwgYGNgIGZvclxuICogICBjb2x1bW4sIGBzYCBmb3IgYHN0YXJ0YCwgYW5kIGBlYCBmb3IgZW5kLlxuICogICBBbiBlbXB0eSBzdHJpbmcgKGAnJ2ApIGlzIHJldHVybmVkIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBuZWl0aGVyIGBub2RlYCxcbiAqICAgYHBvc2l0aW9uYCwgbm9yIGBwb2ludGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlQb3NpdGlvbih2YWx1ZSkge1xuICAvLyBOb3RoaW5nLlxuICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIE5vZGUuXG4gIGlmICgncG9zaXRpb24nIGluIHZhbHVlIHx8ICd0eXBlJyBpbiB2YWx1ZSkge1xuICAgIHJldHVybiBwb3NpdGlvbih2YWx1ZS5wb3NpdGlvbilcbiAgfVxuXG4gIC8vIFBvc2l0aW9uLlxuICBpZiAoJ3N0YXJ0JyBpbiB2YWx1ZSB8fCAnZW5kJyBpbiB2YWx1ZSkge1xuICAgIHJldHVybiBwb3NpdGlvbih2YWx1ZSlcbiAgfVxuXG4gIC8vIFBvaW50LlxuICBpZiAoJ2xpbmUnIGluIHZhbHVlIHx8ICdjb2x1bW4nIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHBvaW50KHZhbHVlKVxuICB9XG5cbiAgLy8gP1xuICByZXR1cm4gJydcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1BvaW50IHwgUG9pbnRMaWtlIHwgbnVsbCB8IHVuZGVmaW5lZH0gcG9pbnRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHBvaW50KHBvaW50KSB7XG4gIHJldHVybiBpbmRleChwb2ludCAmJiBwb2ludC5saW5lKSArICc6JyArIGluZGV4KHBvaW50ICYmIHBvaW50LmNvbHVtbilcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1Bvc2l0aW9uIHwgUG9zaXRpb25MaWtlIHwgbnVsbCB8IHVuZGVmaW5lZH0gcG9zXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBwb3NpdGlvbihwb3MpIHtcbiAgcmV0dXJuIHBvaW50KHBvcyAmJiBwb3Muc3RhcnQpICsgJy0nICsgcG9pbnQocG9zICYmIHBvcy5lbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfSB2YWx1ZVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gaW5kZXgodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyB2YWx1ZSA6IDFcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuTm9kZX0gTm9kZVxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Qb3NpdGlvbn0gUG9zaXRpb25cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUG9pbnR9IFBvaW50XG4gKiBAdHlwZWRlZiB7b2JqZWN0ICYge3R5cGU6IHN0cmluZywgcG9zaXRpb24/OiBQb3NpdGlvbiB8IHVuZGVmaW5lZH19IE5vZGVMaWtlXG4gKi9cblxuaW1wb3J0IHtzdHJpbmdpZnlQb3NpdGlvbn0gZnJvbSAndW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24nXG5cbi8qKlxuICogTWVzc2FnZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFZGaWxlTWVzc2FnZSBleHRlbmRzIEVycm9yIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG1lc3NhZ2UgZm9yIGByZWFzb25gIGF0IGBwbGFjZWAgZnJvbSBgb3JpZ2luYC5cbiAgICpcbiAgICogV2hlbiBhbiBlcnJvciBpcyBwYXNzZWQgaW4gYXMgYHJlYXNvbmAsIHRoZSBgc3RhY2tgIGlzIGNvcGllZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBFcnJvciB8IFZGaWxlTWVzc2FnZX0gcmVhc29uXG4gICAqICAgUmVhc29uIGZvciBtZXNzYWdlLCB1c2VzIHRoZSBzdGFjayBhbmQgbWVzc2FnZSBvZiB0aGUgZXJyb3IgaWYgZ2l2ZW4uXG4gICAqXG4gICAqICAgPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IHlvdSBzaG91bGQgdXNlIG1hcmtkb3duLlxuICAgKiBAcGFyYW0ge05vZGUgfCBOb2RlTGlrZSB8IFBvc2l0aW9uIHwgUG9pbnQgfCBudWxsIHwgdW5kZWZpbmVkfSBbcGxhY2VdXG4gICAqICAgUGxhY2UgaW4gZmlsZSB3aGVyZSB0aGUgbWVzc2FnZSBvY2N1cnJlZC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbb3JpZ2luXVxuICAgKiAgIFBsYWNlIGluIGNvZGUgd2hlcmUgdGhlIG1lc3NhZ2Ugb3JpZ2luYXRlcyAoZXhhbXBsZTpcbiAgICogICBgJ215LXBhY2thZ2U6bXktcnVsZSdgIG9yIGAnbXktcnVsZSdgKS5cbiAgICogQHJldHVybnNcbiAgICogICBJbnN0YW5jZSBvZiBgVkZpbGVNZXNzYWdlYC5cbiAgICovXG4gIC8vIFRvIGRvOiBuZXh0IG1ham9yOiBleHBvc2UgYHVuZGVmaW5lZGAgZXZlcnl3aGVyZSBpbnN0ZWFkIG9mIGBudWxsYC5cbiAgY29uc3RydWN0b3IocmVhc29uLCBwbGFjZSwgb3JpZ2luKSB7XG4gICAgLyoqIEB0eXBlIHtbc3RyaW5nIHwgbnVsbCwgc3RyaW5nIHwgbnVsbF19ICovXG4gICAgY29uc3QgcGFydHMgPSBbbnVsbCwgbnVsbF1cbiAgICAvKiogQHR5cGUge1Bvc2l0aW9ufSAqL1xuICAgIGxldCBwb3NpdGlvbiA9IHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IHdlIGFsd2F5cyBmb2xsb3dzIHRoZSBzdHJ1Y3R1cmUgb2YgYHBvc2l0aW9uYC5cbiAgICAgIHN0YXJ0OiB7bGluZTogbnVsbCwgY29sdW1uOiBudWxsfSxcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IFwiXG4gICAgICBlbmQ6IHtsaW5lOiBudWxsLCBjb2x1bW46IG51bGx9XG4gICAgfVxuXG4gICAgc3VwZXIoKVxuXG4gICAgaWYgKHR5cGVvZiBwbGFjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG9yaWdpbiA9IHBsYWNlXG4gICAgICBwbGFjZSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3JpZ2luID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgaW5kZXggPSBvcmlnaW4uaW5kZXhPZignOicpXG5cbiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcGFydHNbMV0gPSBvcmlnaW5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnRzWzBdID0gb3JpZ2luLnNsaWNlKDAsIGluZGV4KVxuICAgICAgICBwYXJ0c1sxXSA9IG9yaWdpbi5zbGljZShpbmRleCArIDEpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlKSB7XG4gICAgICAvLyBOb2RlLlxuICAgICAgaWYgKCd0eXBlJyBpbiBwbGFjZSB8fCAncG9zaXRpb24nIGluIHBsYWNlKSB7XG4gICAgICAgIGlmIChwbGFjZS5wb3NpdGlvbikge1xuICAgICAgICAgIC8vIFRvIGRvOiBuZXh0IG1ham9yOiBkZWVwIGNsb25lLlxuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGxvb2tzIGxpa2UgYSBwb3NpdGlvbi5cbiAgICAgICAgICBwb3NpdGlvbiA9IHBsYWNlLnBvc2l0aW9uXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFBvc2l0aW9uLlxuICAgICAgZWxzZSBpZiAoJ3N0YXJ0JyBpbiBwbGFjZSB8fCAnZW5kJyBpbiBwbGFjZSkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBsb29rcyBsaWtlIGEgcG9zaXRpb24uXG4gICAgICAgIC8vIFRvIGRvOiBuZXh0IG1ham9yOiBkZWVwIGNsb25lLlxuICAgICAgICBwb3NpdGlvbiA9IHBsYWNlXG4gICAgICB9XG4gICAgICAvLyBQb2ludC5cbiAgICAgIGVsc2UgaWYgKCdsaW5lJyBpbiBwbGFjZSB8fCAnY29sdW1uJyBpbiBwbGFjZSkge1xuICAgICAgICAvLyBUbyBkbzogbmV4dCBtYWpvcjogZGVlcCBjbG9uZS5cbiAgICAgICAgcG9zaXRpb24uc3RhcnQgPSBwbGFjZVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpZWxkcyBmcm9tIGBFcnJvcmAuXG4gICAgLyoqXG4gICAgICogU2VyaWFsaXplZCBwb3NpdGlvbmFsIGluZm8gb2YgZXJyb3IuXG4gICAgICpcbiAgICAgKiBPbiBub3JtYWwgZXJyb3JzLCB0aGlzIHdvdWxkIGJlIHNvbWV0aGluZyBsaWtlIGBQYXJzZUVycm9yYCwgYnVpdCBpblxuICAgICAqIGBWRmlsZWAgbWVzc2FnZXMgd2UgdXNlIHRoaXMgc3BhY2UgdG8gc2hvdyB3aGVyZSBhbiBlcnJvciBoYXBwZW5lZC5cbiAgICAgKi9cbiAgICB0aGlzLm5hbWUgPSBzdHJpbmdpZnlQb3NpdGlvbihwbGFjZSkgfHwgJzE6MSdcblxuICAgIC8qKlxuICAgICAqIFJlYXNvbiBmb3IgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5tZXNzYWdlID0gdHlwZW9mIHJlYXNvbiA9PT0gJ29iamVjdCcgPyByZWFzb24ubWVzc2FnZSA6IHJlYXNvblxuXG4gICAgLyoqXG4gICAgICogU3RhY2sgb2YgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgdXNlZCBieSBub3JtYWwgZXJyb3JzIHRvIHNob3cgd2hlcmUgc29tZXRoaW5nIGhhcHBlbmVkIGluXG4gICAgICogcHJvZ3JhbW1pbmcgY29kZSwgaXJyZWxldmFudCBmb3IgYFZGaWxlYCBtZXNzYWdlcyxcbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5zdGFjayA9ICcnXG5cbiAgICBpZiAodHlwZW9mIHJlYXNvbiA9PT0gJ29iamVjdCcgJiYgcmVhc29uLnN0YWNrKSB7XG4gICAgICB0aGlzLnN0YWNrID0gcmVhc29uLnN0YWNrXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVhc29uIGZvciBtZXNzYWdlLlxuICAgICAqXG4gICAgICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IHlvdSBzaG91bGQgdXNlIG1hcmtkb3duLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnJlYXNvbiA9IHRoaXMubWVzc2FnZVxuXG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG4gICAgLyoqXG4gICAgICogU3RhdGUgb2YgcHJvYmxlbS5cbiAgICAgKlxuICAgICAqICogYHRydWVgIFx1MjAxNCBtYXJrcyBhc3NvY2lhdGVkIGZpbGUgYXMgbm8gbG9uZ2VyIHByb2Nlc3NhYmxlIChlcnJvcilcbiAgICAgKiAqIGBmYWxzZWAgXHUyMDE0IG5lY2Vzc2l0YXRlcyBhIChwb3RlbnRpYWwpIGNoYW5nZSAod2FybmluZylcbiAgICAgKiAqIGBudWxsIHwgdW5kZWZpbmVkYCBcdTIwMTQgZm9yIHRoaW5ncyB0aGF0IG1pZ2h0IG5vdCBuZWVkIGNoYW5naW5nIChpbmZvKVxuICAgICAqXG4gICAgICogQHR5cGUge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfVxuICAgICAqL1xuICAgIHRoaXMuZmF0YWxcblxuICAgIC8qKlxuICAgICAqIFN0YXJ0aW5nIGxpbmUgb2YgZXJyb3IuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7bnVtYmVyIHwgbnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLmxpbmUgPSBwb3NpdGlvbi5zdGFydC5saW5lXG5cbiAgICAvKipcbiAgICAgKiBTdGFydGluZyBjb2x1bW4gb2YgZXJyb3IuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7bnVtYmVyIHwgbnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLmNvbHVtbiA9IHBvc2l0aW9uLnN0YXJ0LmNvbHVtblxuXG4gICAgLyoqXG4gICAgICogRnVsbCB1bmlzdCBwb3NpdGlvbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtQb3NpdGlvbiB8IG51bGx9XG4gICAgICovXG4gICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uXG5cbiAgICAvKipcbiAgICAgKiBOYW1lc3BhY2Ugb2YgbWVzc2FnZSAoZXhhbXBsZTogYCdteS1wYWNrYWdlJ2ApLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZyB8IG51bGx9XG4gICAgICovXG4gICAgdGhpcy5zb3VyY2UgPSBwYXJ0c1swXVxuXG4gICAgLyoqXG4gICAgICogQ2F0ZWdvcnkgb2YgbWVzc2FnZSAoZXhhbXBsZTogYCdteS1ydWxlJ2ApLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZyB8IG51bGx9XG4gICAgICovXG4gICAgdGhpcy5ydWxlSWQgPSBwYXJ0c1sxXVxuXG4gICAgLyoqXG4gICAgICogUGF0aCBvZiBhIGZpbGUgKHVzZWQgdGhyb3VnaG91dCB0aGUgYFZGaWxlYCBlY29zeXN0ZW0pLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZyB8IG51bGx9XG4gICAgICovXG4gICAgdGhpcy5maWxlXG5cbiAgICAvLyBUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgXHUyMDFDd2VsbCBrbm93blx1MjAxRC5cbiAgICAvLyBOb3Qgc3RhbmRhcmQuXG4gICAgLy8gRmVlbCBmcmVlIHRvIGFkZCBvdGhlciBub24tc3RhbmRhcmQgZmllbGRzIHRvIHlvdXIgbWVzc2FnZXMuXG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZ5IHRoZSBzb3VyY2UgdmFsdWUgdGhhdFx1MjAxOXMgYmVpbmcgcmVwb3J0ZWQsIHdoaWNoIGlzIGRlZW1lZFxuICAgICAqIGluY29ycmVjdC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmcgfCBudWxsfVxuICAgICAqL1xuICAgIHRoaXMuYWN0dWFsXG5cbiAgICAvKipcbiAgICAgKiBTdWdnZXN0IGFjY2VwdGFibGUgdmFsdWVzIHRoYXQgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBgYWN0dWFsYC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtBcnJheTxzdHJpbmc+IHwgbnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLmV4cGVjdGVkXG5cbiAgICAvKipcbiAgICAgKiBMaW5rIHRvIGRvY3MgZm9yIHRoZSBtZXNzYWdlLlxuICAgICAqXG4gICAgICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IHRoaXMgbXVzdCBiZSBhbiBhYnNvbHV0ZSBVUkwgdGhhdCBjYW4gYmUgcGFzc2VkIGFzIGB4YFxuICAgICAqID4gdG8gYG5ldyBVUkwoeClgLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZyB8IG51bGx9XG4gICAgICovXG4gICAgdGhpcy51cmxcblxuICAgIC8qKlxuICAgICAqIExvbmcgZm9ybSBkZXNjcmlwdGlvbiBvZiB0aGUgbWVzc2FnZSAoeW91IHNob3VsZCB1c2UgbWFya2Rvd24pLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZyB8IG51bGx9XG4gICAgICovXG4gICAgdGhpcy5ub3RlXG4gICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi9cbiAgfVxufVxuXG5WRmlsZU1lc3NhZ2UucHJvdG90eXBlLmZpbGUgPSAnJ1xuVkZpbGVNZXNzYWdlLnByb3RvdHlwZS5uYW1lID0gJydcblZGaWxlTWVzc2FnZS5wcm90b3R5cGUucmVhc29uID0gJydcblZGaWxlTWVzc2FnZS5wcm90b3R5cGUubWVzc2FnZSA9ICcnXG5WRmlsZU1lc3NhZ2UucHJvdG90eXBlLnN0YWNrID0gJydcblZGaWxlTWVzc2FnZS5wcm90b3R5cGUuZmF0YWwgPSBudWxsXG5WRmlsZU1lc3NhZ2UucHJvdG90eXBlLmNvbHVtbiA9IG51bGxcblZGaWxlTWVzc2FnZS5wcm90b3R5cGUubGluZSA9IG51bGxcblZGaWxlTWVzc2FnZS5wcm90b3R5cGUuc291cmNlID0gbnVsbFxuVkZpbGVNZXNzYWdlLnByb3RvdHlwZS5ydWxlSWQgPSBudWxsXG5WRmlsZU1lc3NhZ2UucHJvdG90eXBlLnBvc2l0aW9uID0gbnVsbFxuIiwgIi8vIEEgZGVyaXZhdGl2ZSB3b3JrIGJhc2VkIG9uOlxuLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9icm93c2VyaWZ5L3BhdGgtYnJvd3NlcmlmeT4uXG4vLyBXaGljaCBpcyBsaWNlbnNlZDpcbi8vXG4vLyBNSVQgTGljZW5zZVxuLy9cbi8vIENvcHlyaWdodCAoYykgMjAxMyBKYW1lcyBIYWxsaWRheVxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2Zcbi8vIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW5cbi8vIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG9cbi8vIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mXG4vLyB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sXG4vLyBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbi8vIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1Ncbi8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUlxuLy8gQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSXG4vLyBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTlxuLy8gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbi8vIEEgZGVyaXZhdGl2ZSB3b3JrIGJhc2VkIG9uOlxuLy9cbi8vIFBhcnRzIG9mIHRoYXQgYXJlIGV4dHJhY3RlZCBmcm9tIE5vZGVcdTIwMTlzIGludGVybmFsIGBwYXRoYCBtb2R1bGU6XG4vLyA8aHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvbWFzdGVyL2xpYi9wYXRoLmpzPi5cbi8vIFdoaWNoIGlzIGxpY2Vuc2VkOlxuLy9cbi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5leHBvcnQgY29uc3QgcGF0aCA9IHtiYXNlbmFtZSwgZGlybmFtZSwgZXh0bmFtZSwgam9pbiwgc2VwOiAnLyd9XG5cbi8qIGVzbGludC1kaXNhYmxlIG1heC1kZXB0aCwgY29tcGxleGl0eSAqL1xuXG4vKipcbiAqIEdldCB0aGUgYmFzZW5hbWUgZnJvbSBhIHBhdGguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqICAgRmlsZSBwYXRoLlxuICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IFtleHRdXG4gKiAgIEV4dGVuc2lvbiB0byBzdHJpcC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIFN0ZW0gb3IgYmFzZW5hbWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VuYW1lKHBhdGgsIGV4dCkge1xuICBpZiAoZXh0ICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGV4dCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImV4dFwiIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnKVxuICB9XG5cbiAgYXNzZXJ0UGF0aChwYXRoKVxuICBsZXQgc3RhcnQgPSAwXG4gIGxldCBlbmQgPSAtMVxuICBsZXQgaW5kZXggPSBwYXRoLmxlbmd0aFxuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBzZWVuTm9uU2xhc2hcblxuICBpZiAoZXh0ID09PSB1bmRlZmluZWQgfHwgZXh0Lmxlbmd0aCA9PT0gMCB8fCBleHQubGVuZ3RoID4gcGF0aC5sZW5ndGgpIHtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgaWYgKHBhdGguY2hhckNvZGVBdChpbmRleCkgPT09IDQ3IC8qIGAvYCAqLykge1xuICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3cuXG4gICAgICAgIGlmIChzZWVuTm9uU2xhc2gpIHtcbiAgICAgICAgICBzdGFydCA9IGluZGV4ICsgMVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZW5kIDwgMCkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAgIC8vIHBhdGggY29tcG9uZW50LlxuICAgICAgICBzZWVuTm9uU2xhc2ggPSB0cnVlXG4gICAgICAgIGVuZCA9IGluZGV4ICsgMVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbmQgPCAwID8gJycgOiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIH1cblxuICBpZiAoZXh0ID09PSBwYXRoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBsZXQgZmlyc3ROb25TbGFzaEVuZCA9IC0xXG4gIGxldCBleHRJbmRleCA9IGV4dC5sZW5ndGggLSAxXG5cbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGluZGV4KSA9PT0gNDcgLyogYC9gICovKSB7XG4gICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93LlxuICAgICAgaWYgKHNlZW5Ob25TbGFzaCkge1xuICAgICAgICBzdGFydCA9IGluZGV4ICsgMVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmlyc3ROb25TbGFzaEVuZCA8IDApIHtcbiAgICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIHJlbWVtYmVyIHRoaXMgaW5kZXggaW4gY2FzZVxuICAgICAgICAvLyB3ZSBuZWVkIGl0IGlmIHRoZSBleHRlbnNpb24gZW5kcyB1cCBub3QgbWF0Y2hpbmcuXG4gICAgICAgIHNlZW5Ob25TbGFzaCA9IHRydWVcbiAgICAgICAgZmlyc3ROb25TbGFzaEVuZCA9IGluZGV4ICsgMVxuICAgICAgfVxuXG4gICAgICBpZiAoZXh0SW5kZXggPiAtMSkge1xuICAgICAgICAvLyBUcnkgdG8gbWF0Y2ggdGhlIGV4cGxpY2l0IGV4dGVuc2lvbi5cbiAgICAgICAgaWYgKHBhdGguY2hhckNvZGVBdChpbmRleCkgPT09IGV4dC5jaGFyQ29kZUF0KGV4dEluZGV4LS0pKSB7XG4gICAgICAgICAgaWYgKGV4dEluZGV4IDwgMCkge1xuICAgICAgICAgICAgLy8gV2UgbWF0Y2hlZCB0aGUgZXh0ZW5zaW9uLCBzbyBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXIgcGF0aFxuICAgICAgICAgICAgLy8gY29tcG9uZW50XG4gICAgICAgICAgICBlbmQgPSBpbmRleFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBFeHRlbnNpb24gZG9lcyBub3QgbWF0Y2gsIHNvIG91ciByZXN1bHQgaXMgdGhlIGVudGlyZSBwYXRoXG4gICAgICAgICAgLy8gY29tcG9uZW50XG4gICAgICAgICAgZXh0SW5kZXggPSAtMVxuICAgICAgICAgIGVuZCA9IGZpcnN0Tm9uU2xhc2hFbmRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdGFydCA9PT0gZW5kKSB7XG4gICAgZW5kID0gZmlyc3ROb25TbGFzaEVuZFxuICB9IGVsc2UgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgPSBwYXRoLmxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIHBhdGguc2xpY2Uoc3RhcnQsIGVuZClcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRpcm5hbWUgZnJvbSBhIHBhdGguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqICAgRmlsZSBwYXRoLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgRmlsZSBwYXRoLlxuICovXG5mdW5jdGlvbiBkaXJuYW1lKHBhdGgpIHtcbiAgYXNzZXJ0UGF0aChwYXRoKVxuXG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnLidcbiAgfVxuXG4gIGxldCBlbmQgPSAtMVxuICBsZXQgaW5kZXggPSBwYXRoLmxlbmd0aFxuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCB1bm1hdGNoZWRTbGFzaFxuXG4gIC8vIFByZWZpeCBgLS1gIGlzIGltcG9ydGFudCB0byBub3QgcnVuIG9uIGAwYC5cbiAgd2hpbGUgKC0taW5kZXgpIHtcbiAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGluZGV4KSA9PT0gNDcgLyogYC9gICovKSB7XG4gICAgICBpZiAodW5tYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgZW5kID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCF1bm1hdGNoZWRTbGFzaCkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3JcbiAgICAgIHVubWF0Y2hlZFNsYXNoID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbmQgPCAwXG4gICAgPyBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IDQ3IC8qIGAvYCAqL1xuICAgICAgPyAnLydcbiAgICAgIDogJy4nXG4gICAgOiBlbmQgPT09IDEgJiYgcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKiBgL2AgKi9cbiAgICA/ICcvLydcbiAgICA6IHBhdGguc2xpY2UoMCwgZW5kKVxufVxuXG4vKipcbiAqIEdldCBhbiBleHRuYW1lIGZyb20gYSBwYXRoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiAgIEZpbGUgcGF0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIEV4dG5hbWUuXG4gKi9cbmZ1bmN0aW9uIGV4dG5hbWUocGF0aCkge1xuICBhc3NlcnRQYXRoKHBhdGgpXG5cbiAgbGV0IGluZGV4ID0gcGF0aC5sZW5ndGhcblxuICBsZXQgZW5kID0gLTFcbiAgbGV0IHN0YXJ0UGFydCA9IDBcbiAgbGV0IHN0YXJ0RG90ID0gLTFcbiAgLy8gVHJhY2sgdGhlIHN0YXRlIG9mIGNoYXJhY3RlcnMgKGlmIGFueSkgd2Ugc2VlIGJlZm9yZSBvdXIgZmlyc3QgZG90IGFuZFxuICAvLyBhZnRlciBhbnkgcGF0aCBzZXBhcmF0b3Igd2UgZmluZC5cbiAgbGV0IHByZURvdFN0YXRlID0gMFxuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCB1bm1hdGNoZWRTbGFzaFxuXG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgY29uc3QgY29kZSA9IHBhdGguY2hhckNvZGVBdChpbmRleClcblxuICAgIGlmIChjb2RlID09PSA0NyAvKiBgL2AgKi8pIHtcbiAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3cuXG4gICAgICBpZiAodW5tYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgc3RhcnRQYXJ0ID0gaW5kZXggKyAxXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGVuZCA8IDApIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIGV4dGVuc2lvbi5cbiAgICAgIHVubWF0Y2hlZFNsYXNoID0gdHJ1ZVxuICAgICAgZW5kID0gaW5kZXggKyAxXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IDQ2IC8qIGAuYCAqLykge1xuICAgICAgLy8gSWYgdGhpcyBpcyBvdXIgZmlyc3QgZG90LCBtYXJrIGl0IGFzIHRoZSBzdGFydCBvZiBvdXIgZXh0ZW5zaW9uLlxuICAgICAgaWYgKHN0YXJ0RG90IDwgMCkge1xuICAgICAgICBzdGFydERvdCA9IGluZGV4XG4gICAgICB9IGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKSB7XG4gICAgICAgIHByZURvdFN0YXRlID0gMVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgPiAtMSkge1xuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgIC8vIGhhdmUgYSBnb29kIGNoYW5jZSBhdCBoYXZpbmcgYSBub24tZW1wdHkgZXh0ZW5zaW9uLlxuICAgICAgcHJlRG90U3RhdGUgPSAtMVxuICAgIH1cbiAgfVxuXG4gIGlmIChcbiAgICBzdGFydERvdCA8IDAgfHxcbiAgICBlbmQgPCAwIHx8XG4gICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3QuXG4gICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSBgLi5gLlxuICAgIChwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSlcbiAgKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICByZXR1cm4gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKVxufVxuXG4vKipcbiAqIEpvaW4gc2VnbWVudHMgZnJvbSBhIHBhdGguXG4gKlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBzZWdtZW50c1xuICogICBQYXRoIHNlZ21lbnRzLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgRmlsZSBwYXRoLlxuICovXG5mdW5jdGlvbiBqb2luKC4uLnNlZ21lbnRzKSB7XG4gIGxldCBpbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7c3RyaW5nIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgam9pbmVkXG5cbiAgd2hpbGUgKCsraW5kZXggPCBzZWdtZW50cy5sZW5ndGgpIHtcbiAgICBhc3NlcnRQYXRoKHNlZ21lbnRzW2luZGV4XSlcblxuICAgIGlmIChzZWdtZW50c1tpbmRleF0pIHtcbiAgICAgIGpvaW5lZCA9XG4gICAgICAgIGpvaW5lZCA9PT0gdW5kZWZpbmVkID8gc2VnbWVudHNbaW5kZXhdIDogam9pbmVkICsgJy8nICsgc2VnbWVudHNbaW5kZXhdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGpvaW5lZCA9PT0gdW5kZWZpbmVkID8gJy4nIDogbm9ybWFsaXplKGpvaW5lZClcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYSBiYXNpYyBmaWxlIHBhdGguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqICAgRmlsZSBwYXRoLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgRmlsZSBwYXRoLlxuICovXG4vLyBOb3RlOiBgbm9ybWFsaXplYCBpcyBub3QgZXhwb3NlZCBhcyBgcGF0aC5ub3JtYWxpemVgLCBzbyBzb21lIGNvZGUgaXNcbi8vIG1hbnVhbGx5IHJlbW92ZWQgZnJvbSBpdC5cbmZ1bmN0aW9uIG5vcm1hbGl6ZShwYXRoKSB7XG4gIGFzc2VydFBhdGgocGF0aClcblxuICBjb25zdCBhYnNvbHV0ZSA9IHBhdGguY2hhckNvZGVBdCgwKSA9PT0gNDcgLyogYC9gICovXG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoIGFjY29yZGluZyB0byBQT1NJWCBydWxlcy5cbiAgbGV0IHZhbHVlID0gbm9ybWFsaXplU3RyaW5nKHBhdGgsICFhYnNvbHV0ZSlcblxuICBpZiAodmFsdWUubGVuZ3RoID09PSAwICYmICFhYnNvbHV0ZSkge1xuICAgIHZhbHVlID0gJy4nXG4gIH1cblxuICBpZiAodmFsdWUubGVuZ3RoID4gMCAmJiBwYXRoLmNoYXJDb2RlQXQocGF0aC5sZW5ndGggLSAxKSA9PT0gNDcgLyogLyAqLykge1xuICAgIHZhbHVlICs9ICcvJ1xuICB9XG5cbiAgcmV0dXJuIGFic29sdXRlID8gJy8nICsgdmFsdWUgOiB2YWx1ZVxufVxuXG4vKipcbiAqIFJlc29sdmUgYC5gIGFuZCBgLi5gIGVsZW1lbnRzIGluIGEgcGF0aCB3aXRoIGRpcmVjdG9yeSBuYW1lcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogICBGaWxlIHBhdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGFsbG93QWJvdmVSb290XG4gKiAgIFdoZXRoZXIgYC4uYCBjYW4gbW92ZSBhYm92ZSByb290LlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgRmlsZSBwYXRoLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVTdHJpbmcocGF0aCwgYWxsb3dBYm92ZVJvb3QpIHtcbiAgbGV0IHJlc3VsdCA9ICcnXG4gIGxldCBsYXN0U2VnbWVudExlbmd0aCA9IDBcbiAgbGV0IGxhc3RTbGFzaCA9IC0xXG4gIGxldCBkb3RzID0gMFxuICBsZXQgaW5kZXggPSAtMVxuICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNvZGVcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBsYXN0U2xhc2hJbmRleFxuXG4gIHdoaWxlICgrK2luZGV4IDw9IHBhdGgubGVuZ3RoKSB7XG4gICAgaWYgKGluZGV4IDwgcGF0aC5sZW5ndGgpIHtcbiAgICAgIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaW5kZXgpXG4gICAgfSBlbHNlIGlmIChjb2RlID09PSA0NyAvKiBgL2AgKi8pIHtcbiAgICAgIGJyZWFrXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZGUgPSA0NyAvKiBgL2AgKi9cbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gNDcgLyogYC9gICovKSB7XG4gICAgICBpZiAobGFzdFNsYXNoID09PSBpbmRleCAtIDEgfHwgZG90cyA9PT0gMSkge1xuICAgICAgICAvLyBFbXB0eS5cbiAgICAgIH0gZWxzZSBpZiAobGFzdFNsYXNoICE9PSBpbmRleCAtIDEgJiYgZG90cyA9PT0gMikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzdWx0Lmxlbmd0aCA8IDIgfHxcbiAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCAhPT0gMiB8fFxuICAgICAgICAgIHJlc3VsdC5jaGFyQ29kZUF0KHJlc3VsdC5sZW5ndGggLSAxKSAhPT0gNDYgLyogYC5gICovIHx8XG4gICAgICAgICAgcmVzdWx0LmNoYXJDb2RlQXQocmVzdWx0Lmxlbmd0aCAtIDIpICE9PSA0NiAvKiBgLmAgKi9cbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBsYXN0U2xhc2hJbmRleCA9IHJlc3VsdC5sYXN0SW5kZXhPZignLycpXG5cbiAgICAgICAgICAgIGlmIChsYXN0U2xhc2hJbmRleCAhPT0gcmVzdWx0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4IDwgMCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9ICcnXG4gICAgICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnNsaWNlKDAsIGxhc3RTbGFzaEluZGV4KVxuICAgICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzdWx0Lmxlbmd0aCAtIDEgLSByZXN1bHQubGFzdEluZGV4T2YoJy8nKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgbGFzdFNsYXNoID0gaW5kZXhcbiAgICAgICAgICAgICAgZG90cyA9IDBcbiAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXN1bHQgPSAnJ1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwXG4gICAgICAgICAgICBsYXN0U2xhc2ggPSBpbmRleFxuICAgICAgICAgICAgZG90cyA9IDBcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFsbG93QWJvdmVSb290KSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0Lmxlbmd0aCA+IDAgPyByZXN1bHQgKyAnLy4uJyA6ICcuLidcbiAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IDJcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgcmVzdWx0ICs9ICcvJyArIHBhdGguc2xpY2UobGFzdFNsYXNoICsgMSwgaW5kZXgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0ID0gcGF0aC5zbGljZShsYXN0U2xhc2ggKyAxLCBpbmRleClcbiAgICAgICAgfVxuXG4gICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gaW5kZXggLSBsYXN0U2xhc2ggLSAxXG4gICAgICB9XG5cbiAgICAgIGxhc3RTbGFzaCA9IGluZGV4XG4gICAgICBkb3RzID0gMFxuICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gNDYgLyogYC5gICovICYmIGRvdHMgPiAtMSkge1xuICAgICAgZG90cysrXG4gICAgfSBlbHNlIHtcbiAgICAgIGRvdHMgPSAtMVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBNYWtlIHN1cmUgYHBhdGhgIGlzIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiAgIEZpbGUgcGF0aC5cbiAqIEByZXR1cm5zIHthc3NlcnRzIHBhdGggaXMgc3RyaW5nfVxuICogICBOb3RoaW5nLlxuICovXG5mdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnUGF0aCBtdXN0IGJlIGEgc3RyaW5nLiBSZWNlaXZlZCAnICsgSlNPTi5zdHJpbmdpZnkocGF0aClcbiAgICApXG4gIH1cbn1cblxuLyogZXNsaW50LWVuYWJsZSBtYXgtZGVwdGgsIGNvbXBsZXhpdHkgKi9cbiIsICIvLyBTb21ld2hhdCBiYXNlZCBvbjpcbi8vIDxodHRwczovL2dpdGh1Yi5jb20vZGVmdW5jdHpvbWJpZS9ub2RlLXByb2Nlc3MvYmxvYi9tYXN0ZXIvYnJvd3Nlci5qcz4uXG4vLyBCdXQgSSBkb25cdTIwMTl0IHRoaW5rIG9uZSB0aW55IGxpbmUgb2YgY29kZSBjYW4gYmUgY29weXJpZ2h0ZWQuIFx1RDgzRFx1REUwNVxuZXhwb3J0IGNvbnN0IHByb2MgPSB7Y3dkfVxuXG5mdW5jdGlvbiBjd2QoKSB7XG4gIHJldHVybiAnLydcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIFVSTFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhhc2hcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBob3N0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gaG9zdG5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBocmVmXG4gKiBAcHJvcGVydHkge3N0cmluZ30gb3JpZ2luXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGFzc3dvcmRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXRobmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBvcnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm90b2NvbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHNlYXJjaFxuICogQHByb3BlcnR5IHthbnl9IHNlYXJjaFBhcmFtc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHVzZXJuYW1lXG4gKiBAcHJvcGVydHkgeygpID0+IHN0cmluZ30gdG9TdHJpbmdcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gc3RyaW5nfSB0b0pTT05cbiAqL1xuXG4vKipcbiAqIENoZWNrIGlmIGBmaWxlVXJsT3JQYXRoYCBsb29rcyBsaWtlIGEgVVJMLlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gZmlsZVVybE9yUGF0aFxuICogICBGaWxlIHBhdGggb3IgVVJMLlxuICogQHJldHVybnMge2ZpbGVVcmxPclBhdGggaXMgVVJMfVxuICogICBXaGV0aGVyIGl0XHUyMDE5cyBhIFVSTC5cbiAqL1xuLy8gRnJvbTogPGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2ZjZjhiYTQvbGliL2ludGVybmFsL3VybC5qcyNMMTUwMT5cbmV4cG9ydCBmdW5jdGlvbiBpc1VybChmaWxlVXJsT3JQYXRoKSB7XG4gIHJldHVybiAoXG4gICAgZmlsZVVybE9yUGF0aCAhPT0gbnVsbCAmJlxuICAgIHR5cGVvZiBmaWxlVXJsT3JQYXRoID09PSAnb2JqZWN0JyAmJlxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGluZGV4YWJsZS5cbiAgICBmaWxlVXJsT3JQYXRoLmhyZWYgJiZcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBpbmRleGFibGUuXG4gICAgZmlsZVVybE9yUGF0aC5vcmlnaW5cbiAgKVxufVxuIiwgIi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbmltcG9ydCB7aXNVcmx9IGZyb20gJy4vbWludXJsLnNoYXJlZC5qcydcblxuLy8gU2VlOiA8aHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvZmNmOGJhNC9saWIvaW50ZXJuYWwvdXJsLmpzPlxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nIHwgVVJMfSBwYXRoXG4gKiAgIEZpbGUgVVJMLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgRmlsZSBVUkwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cmxUb1BhdGgocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7XG4gICAgcGF0aCA9IG5ldyBVUkwocGF0aClcbiAgfSBlbHNlIGlmICghaXNVcmwocGF0aCkpIHtcbiAgICAvKiogQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi9cbiAgICBjb25zdCBlcnJvciA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwicGF0aFwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcgb3IgYW4gaW5zdGFuY2Ugb2YgVVJMLiBSZWNlaXZlZCBgJyArXG4gICAgICAgIHBhdGggK1xuICAgICAgICAnYCdcbiAgICApXG4gICAgZXJyb3IuY29kZSA9ICdFUlJfSU5WQUxJRF9BUkdfVFlQRSdcbiAgICB0aHJvdyBlcnJvclxuICB9XG5cbiAgaWYgKHBhdGgucHJvdG9jb2wgIT09ICdmaWxlOicpIHtcbiAgICAvKiogQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi9cbiAgICBjb25zdCBlcnJvciA9IG5ldyBUeXBlRXJyb3IoJ1RoZSBVUkwgbXVzdCBiZSBvZiBzY2hlbWUgZmlsZScpXG4gICAgZXJyb3IuY29kZSA9ICdFUlJfSU5WQUxJRF9VUkxfU0NIRU1FJ1xuICAgIHRocm93IGVycm9yXG4gIH1cblxuICByZXR1cm4gZ2V0UGF0aEZyb21VUkxQb3NpeChwYXRoKVxufVxuXG4vKipcbiAqIEdldCBhIHBhdGggZnJvbSBhIFBPU0lYIFVSTC5cbiAqXG4gKiBAcGFyYW0ge1VSTH0gdXJsXG4gKiAgIFVSTC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIEZpbGUgcGF0aC5cbiAqL1xuZnVuY3Rpb24gZ2V0UGF0aEZyb21VUkxQb3NpeCh1cmwpIHtcbiAgaWYgKHVybC5ob3N0bmFtZSAhPT0gJycpIHtcbiAgICAvKiogQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi9cbiAgICBjb25zdCBlcnJvciA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnRmlsZSBVUkwgaG9zdCBtdXN0IGJlIFwibG9jYWxob3N0XCIgb3IgZW1wdHkgb24gZGFyd2luJ1xuICAgIClcbiAgICBlcnJvci5jb2RlID0gJ0VSUl9JTlZBTElEX0ZJTEVfVVJMX0hPU1QnXG4gICAgdGhyb3cgZXJyb3JcbiAgfVxuXG4gIGNvbnN0IHBhdGhuYW1lID0gdXJsLnBhdGhuYW1lXG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBwYXRobmFtZS5sZW5ndGgpIHtcbiAgICBpZiAoXG4gICAgICBwYXRobmFtZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMzcgLyogYCVgICovICYmXG4gICAgICBwYXRobmFtZS5jaGFyQ29kZUF0KGluZGV4ICsgMSkgPT09IDUwIC8qIGAyYCAqL1xuICAgICkge1xuICAgICAgY29uc3QgdGhpcmQgPSBwYXRobmFtZS5jaGFyQ29kZUF0KGluZGV4ICsgMilcbiAgICAgIGlmICh0aGlyZCA9PT0gNzAgLyogYEZgICovIHx8IHRoaXJkID09PSAxMDIgLyogYGZgICovKSB7XG4gICAgICAgIC8qKiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqL1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgJ0ZpbGUgVVJMIHBhdGggbXVzdCBub3QgaW5jbHVkZSBlbmNvZGVkIC8gY2hhcmFjdGVycydcbiAgICAgICAgKVxuICAgICAgICBlcnJvci5jb2RlID0gJ0VSUl9JTlZBTElEX0ZJTEVfVVJMX1BBVEgnXG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChwYXRobmFtZSlcbn1cblxuZXhwb3J0IHtpc1VybH0gZnJvbSAnLi9taW51cmwuc2hhcmVkLmpzJ1xuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5Sb290fGltcG9ydCgnbWRhc3QnKS5Db250ZW50fSBOb2RlXG4gKlxuICogQHR5cGVkZWYgT3B0aW9uc1xuICogICBDb25maWd1cmF0aW9uIChvcHRpb25hbCkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbaW5jbHVkZUltYWdlQWx0PXRydWVdXG4gKiAgIFdoZXRoZXIgdG8gdXNlIGBhbHRgIGZvciBgaW1hZ2Vgcy5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFtpbmNsdWRlSHRtbD10cnVlXVxuICogICBXaGV0aGVyIHRvIHVzZSBgdmFsdWVgIG9mIEhUTUwuXG4gKi9cblxuLyoqIEB0eXBlIHtPcHRpb25zfSAqL1xuY29uc3QgZW1wdHlPcHRpb25zID0ge31cblxuLyoqXG4gKiBHZXQgdGhlIHRleHQgY29udGVudCBvZiBhIG5vZGUgb3IgbGlzdCBvZiBub2Rlcy5cbiAqXG4gKiBQcmVmZXJzIHRoZSBub2RlXHUyMDE5cyBwbGFpbi10ZXh0IGZpZWxkcywgb3RoZXJ3aXNlIHNlcmlhbGl6ZXMgaXRzIGNoaWxkcmVuLFxuICogYW5kIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBhcnJheSwgc2VyaWFsaXplIHRoZSBub2RlcyBpbiBpdC5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlXG4gKiAgIFRoaW5nIHRvIHNlcmlhbGl6ZSwgdHlwaWNhbGx5IGBOb2RlYC5cbiAqIEBwYXJhbSB7T3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcHRpb25zXVxuICogICBDb25maWd1cmF0aW9uIChvcHRpb25hbCkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBTZXJpYWxpemVkIGB2YWx1ZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSwgb3B0aW9ucykge1xuICBjb25zdCBzZXR0aW5ncyA9IG9wdGlvbnMgfHwgZW1wdHlPcHRpb25zXG4gIGNvbnN0IGluY2x1ZGVJbWFnZUFsdCA9XG4gICAgdHlwZW9mIHNldHRpbmdzLmluY2x1ZGVJbWFnZUFsdCA9PT0gJ2Jvb2xlYW4nXG4gICAgICA/IHNldHRpbmdzLmluY2x1ZGVJbWFnZUFsdFxuICAgICAgOiB0cnVlXG4gIGNvbnN0IGluY2x1ZGVIdG1sID1cbiAgICB0eXBlb2Ygc2V0dGluZ3MuaW5jbHVkZUh0bWwgPT09ICdib29sZWFuJyA/IHNldHRpbmdzLmluY2x1ZGVIdG1sIDogdHJ1ZVxuXG4gIHJldHVybiBvbmUodmFsdWUsIGluY2x1ZGVJbWFnZUFsdCwgaW5jbHVkZUh0bWwpXG59XG5cbi8qKlxuICogT25lIG5vZGUgb3Igc2V2ZXJhbCBub2Rlcy5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlXG4gKiAgIFRoaW5nIHRvIHNlcmlhbGl6ZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUltYWdlQWx0XG4gKiAgIEluY2x1ZGUgaW1hZ2UgYGFsdGBzLlxuICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlSHRtbFxuICogICBJbmNsdWRlIEhUTUwuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBTZXJpYWxpemVkIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIG9uZSh2YWx1ZSwgaW5jbHVkZUltYWdlQWx0LCBpbmNsdWRlSHRtbCkge1xuICBpZiAobm9kZSh2YWx1ZSkpIHtcbiAgICBpZiAoJ3ZhbHVlJyBpbiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLnR5cGUgPT09ICdodG1sJyAmJiAhaW5jbHVkZUh0bWwgPyAnJyA6IHZhbHVlLnZhbHVlXG4gICAgfVxuXG4gICAgaWYgKGluY2x1ZGVJbWFnZUFsdCAmJiAnYWx0JyBpbiB2YWx1ZSAmJiB2YWx1ZS5hbHQpIHtcbiAgICAgIHJldHVybiB2YWx1ZS5hbHRcbiAgICB9XG5cbiAgICBpZiAoJ2NoaWxkcmVuJyBpbiB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGFsbCh2YWx1ZS5jaGlsZHJlbiwgaW5jbHVkZUltYWdlQWx0LCBpbmNsdWRlSHRtbClcbiAgICB9XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gYWxsKHZhbHVlLCBpbmNsdWRlSW1hZ2VBbHQsIGluY2x1ZGVIdG1sKVxuICB9XG5cbiAgcmV0dXJuICcnXG59XG5cbi8qKlxuICogU2VyaWFsaXplIGEgbGlzdCBvZiBub2Rlcy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PHVua25vd24+fSB2YWx1ZXNcbiAqICAgVGhpbmcgdG8gc2VyaWFsaXplLlxuICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlSW1hZ2VBbHRcbiAqICAgSW5jbHVkZSBpbWFnZSBgYWx0YHMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1ZGVIdG1sXG4gKiAgIEluY2x1ZGUgSFRNTC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIFNlcmlhbGl6ZWQgbm9kZXMuXG4gKi9cbmZ1bmN0aW9uIGFsbCh2YWx1ZXMsIGluY2x1ZGVJbWFnZUFsdCwgaW5jbHVkZUh0bWwpIHtcbiAgLyoqIEB0eXBlIHtBcnJheTxzdHJpbmc+fSAqL1xuICBjb25zdCByZXN1bHQgPSBbXVxuICBsZXQgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgdmFsdWVzLmxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBvbmUodmFsdWVzW2luZGV4XSwgaW5jbHVkZUltYWdlQWx0LCBpbmNsdWRlSHRtbClcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuam9pbignJylcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBgdmFsdWVgIGxvb2tzIGxpa2UgYSBub2RlLlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWVcbiAqICAgVGhpbmcuXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgTm9kZX1cbiAqICAgV2hldGhlciBgdmFsdWVgIGlzIGEgbm9kZS5cbiAqL1xuZnVuY3Rpb24gbm9kZSh2YWx1ZSkge1xuICByZXR1cm4gQm9vbGVhbih2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKVxufVxuIiwgIi8qKlxuICogTGlrZSBgQXJyYXkjc3BsaWNlYCwgYnV0IHNtYXJ0ZXIgZm9yIGdpYW50IGFycmF5cy5cbiAqXG4gKiBgQXJyYXkjc3BsaWNlYCB0YWtlcyBhbGwgaXRlbXMgdG8gYmUgaW5zZXJ0ZWQgYXMgaW5kaXZpZHVhbCBhcmd1bWVudCB3aGljaFxuICogY2F1c2VzIGEgc3RhY2sgb3ZlcmZsb3cgaW4gVjggd2hlbiB0cnlpbmcgdG8gaW5zZXJ0IDEwMGsgaXRlbXMgZm9yIGluc3RhbmNlLlxuICpcbiAqIE90aGVyd2lzZSwgdGhpcyBkb2VzIG5vdCByZXR1cm4gdGhlIHJlbW92ZWQgaXRlbXMsIGFuZCB0YWtlcyBgaXRlbXNgIGFzIGFuXG4gKiBhcnJheSBpbnN0ZWFkIG9mIHJlc3QgcGFyYW1ldGVycy5cbiAqXG4gKiBAdGVtcGxhdGUge3Vua25vd259IFRcbiAqICAgSXRlbSB0eXBlLlxuICogQHBhcmFtIHtBcnJheTxUPn0gbGlzdFxuICogICBMaXN0IHRvIG9wZXJhdGUgb24uXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhcnRcbiAqICAgSW5kZXggdG8gcmVtb3ZlL2luc2VydCBhdCAoY2FuIGJlIG5lZ2F0aXZlKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSByZW1vdmVcbiAqICAgTnVtYmVyIG9mIGl0ZW1zIHRvIHJlbW92ZS5cbiAqIEBwYXJhbSB7QXJyYXk8VD59IGl0ZW1zXG4gKiAgIEl0ZW1zIHRvIGluamVjdCBpbnRvIGBsaXN0YC5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICogICBOb3RoaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaWNlKGxpc3QsIHN0YXJ0LCByZW1vdmUsIGl0ZW1zKSB7XG4gIGNvbnN0IGVuZCA9IGxpc3QubGVuZ3RoXG4gIGxldCBjaHVua1N0YXJ0ID0gMFxuICAvKiogQHR5cGUge0FycmF5PHVua25vd24+fSAqL1xuICBsZXQgcGFyYW1ldGVyc1xuXG4gIC8vIE1ha2Ugc3RhcnQgYmV0d2VlbiB6ZXJvIGFuZCBgZW5kYCAoaW5jbHVkZWQpLlxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAtc3RhcnQgPiBlbmQgPyAwIDogZW5kICsgc3RhcnRcbiAgfSBlbHNlIHtcbiAgICBzdGFydCA9IHN0YXJ0ID4gZW5kID8gZW5kIDogc3RhcnRcbiAgfVxuICByZW1vdmUgPSByZW1vdmUgPiAwID8gcmVtb3ZlIDogMFxuXG4gIC8vIE5vIG5lZWQgdG8gY2h1bmsgdGhlIGl0ZW1zIGlmIHRoZXJlXHUyMDE5cyBvbmx5IGEgY291cGxlICgxMGspIGl0ZW1zLlxuICBpZiAoaXRlbXMubGVuZ3RoIDwgMTAwMDApIHtcbiAgICBwYXJhbWV0ZXJzID0gQXJyYXkuZnJvbShpdGVtcylcbiAgICBwYXJhbWV0ZXJzLnVuc2hpZnQoc3RhcnQsIHJlbW92ZSlcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEh1c2gsIGl0XHUyMDE5cyBmaW5lLlxuICAgIGxpc3Quc3BsaWNlKC4uLnBhcmFtZXRlcnMpXG4gIH0gZWxzZSB7XG4gICAgLy8gRGVsZXRlIGByZW1vdmVgIGl0ZW1zIHN0YXJ0aW5nIGZyb20gYHN0YXJ0YFxuICAgIGlmIChyZW1vdmUpIGxpc3Quc3BsaWNlKHN0YXJ0LCByZW1vdmUpXG5cbiAgICAvLyBJbnNlcnQgdGhlIGl0ZW1zIGluIGNodW5rcyB0byBub3QgY2F1c2Ugc3RhY2sgb3ZlcmZsb3dzLlxuICAgIHdoaWxlIChjaHVua1N0YXJ0IDwgaXRlbXMubGVuZ3RoKSB7XG4gICAgICBwYXJhbWV0ZXJzID0gaXRlbXMuc2xpY2UoY2h1bmtTdGFydCwgY2h1bmtTdGFydCArIDEwMDAwKVxuICAgICAgcGFyYW1ldGVycy51bnNoaWZ0KHN0YXJ0LCAwKVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBIdXNoLCBpdFx1MjAxOXMgZmluZS5cbiAgICAgIGxpc3Quc3BsaWNlKC4uLnBhcmFtZXRlcnMpXG4gICAgICBjaHVua1N0YXJ0ICs9IDEwMDAwXG4gICAgICBzdGFydCArPSAxMDAwMFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFwcGVuZCBgaXRlbXNgIChhbiBhcnJheSkgYXQgdGhlIGVuZCBvZiBgbGlzdGAgKGFub3RoZXIgYXJyYXkpLlxuICogV2hlbiBgbGlzdGAgd2FzIGVtcHR5LCByZXR1cm5zIGBpdGVtc2AgaW5zdGVhZC5cbiAqXG4gKiBUaGlzIHByZXZlbnRzIGEgcG90ZW50aWFsbHkgZXhwZW5zaXZlIG9wZXJhdGlvbiB3aGVuIGBsaXN0YCBpcyBlbXB0eSxcbiAqIGFuZCBhZGRzIGl0ZW1zIGluIGJhdGNoZXMgdG8gcHJldmVudCBWOCBmcm9tIGhhbmdpbmcuXG4gKlxuICogQHRlbXBsYXRlIHt1bmtub3dufSBUXG4gKiAgIEl0ZW0gdHlwZS5cbiAqIEBwYXJhbSB7QXJyYXk8VD59IGxpc3RcbiAqICAgTGlzdCB0byBvcGVyYXRlIG9uLlxuICogQHBhcmFtIHtBcnJheTxUPn0gaXRlbXNcbiAqICAgSXRlbXMgdG8gYWRkIHRvIGBsaXN0YC5cbiAqIEByZXR1cm5zIHtBcnJheTxUPn1cbiAqICAgRWl0aGVyIGBsaXN0YCBvciBgaXRlbXNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHVzaChsaXN0LCBpdGVtcykge1xuICBpZiAobGlzdC5sZW5ndGggPiAwKSB7XG4gICAgc3BsaWNlKGxpc3QsIGxpc3QubGVuZ3RoLCAwLCBpdGVtcylcbiAgICByZXR1cm4gbGlzdFxuICB9XG4gIHJldHVybiBpdGVtc1xufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FeHRlbnNpb259IEV4dGVuc2lvblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5IYW5kbGVzfSBIYW5kbGVzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkh0bWxFeHRlbnNpb259IEh0bWxFeHRlbnNpb25cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuTm9ybWFsaXplZEV4dGVuc2lvbn0gTm9ybWFsaXplZEV4dGVuc2lvblxuICovXG5cbmltcG9ydCB7c3BsaWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaHVua2VkJ1xuXG5jb25zdCBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5XG5cbi8qKlxuICogQ29tYmluZSBtdWx0aXBsZSBzeW50YXggZXh0ZW5zaW9ucyBpbnRvIG9uZS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PEV4dGVuc2lvbj59IGV4dGVuc2lvbnNcbiAqICAgTGlzdCBvZiBzeW50YXggZXh0ZW5zaW9ucy5cbiAqIEByZXR1cm5zIHtOb3JtYWxpemVkRXh0ZW5zaW9ufVxuICogICBBIHNpbmdsZSBjb21iaW5lZCBleHRlbnNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lRXh0ZW5zaW9ucyhleHRlbnNpb25zKSB7XG4gIC8qKiBAdHlwZSB7Tm9ybWFsaXplZEV4dGVuc2lvbn0gKi9cbiAgY29uc3QgYWxsID0ge31cbiAgbGV0IGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IGV4dGVuc2lvbnMubGVuZ3RoKSB7XG4gICAgc3ludGF4RXh0ZW5zaW9uKGFsbCwgZXh0ZW5zaW9uc1tpbmRleF0pXG4gIH1cblxuICByZXR1cm4gYWxsXG59XG5cbi8qKlxuICogTWVyZ2UgYGV4dGVuc2lvbmAgaW50byBgYWxsYC5cbiAqXG4gKiBAcGFyYW0ge05vcm1hbGl6ZWRFeHRlbnNpb259IGFsbFxuICogICBFeHRlbnNpb24gdG8gbWVyZ2UgaW50by5cbiAqIEBwYXJhbSB7RXh0ZW5zaW9ufSBleHRlbnNpb25cbiAqICAgRXh0ZW5zaW9uIHRvIG1lcmdlLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHN5bnRheEV4dGVuc2lvbihhbGwsIGV4dGVuc2lvbikge1xuICAvKiogQHR5cGUge2tleW9mIEV4dGVuc2lvbn0gKi9cbiAgbGV0IGhvb2tcblxuICBmb3IgKGhvb2sgaW4gZXh0ZW5zaW9uKSB7XG4gICAgY29uc3QgbWF5YmUgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFsbCwgaG9vaykgPyBhbGxbaG9va10gOiB1bmRlZmluZWRcbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSAqL1xuICAgIGNvbnN0IGxlZnQgPSBtYXliZSB8fCAoYWxsW2hvb2tdID0ge30pXG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZH0gKi9cbiAgICBjb25zdCByaWdodCA9IGV4dGVuc2lvbltob29rXVxuICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICAgIGxldCBjb2RlXG5cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIGZvciAoY29kZSBpbiByaWdodCkge1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwobGVmdCwgY29kZSkpIGxlZnRbY29kZV0gPSBbXVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHJpZ2h0W2NvZGVdXG4gICAgICAgIGNvbnN0cnVjdHMoXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBMb29rcyBsaWtlIGEgbGlzdC5cbiAgICAgICAgICBsZWZ0W2NvZGVdLFxuICAgICAgICAgIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiB2YWx1ZSA/IFt2YWx1ZV0gOiBbXVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogTWVyZ2UgYGxpc3RgIGludG8gYGV4aXN0aW5nYCAoYm90aCBsaXN0cyBvZiBjb25zdHJ1Y3RzKS5cbiAqIE11dGF0ZXMgYGV4aXN0aW5nYC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PHVua25vd24+fSBleGlzdGluZ1xuICogQHBhcmFtIHtBcnJheTx1bmtub3duPn0gbGlzdFxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGNvbnN0cnVjdHMoZXhpc3RpbmcsIGxpc3QpIHtcbiAgbGV0IGluZGV4ID0gLTFcbiAgLyoqIEB0eXBlIHtBcnJheTx1bmtub3duPn0gKi9cbiAgY29uc3QgYmVmb3JlID0gW11cblxuICB3aGlsZSAoKytpbmRleCA8IGxpc3QubGVuZ3RoKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBMb29rcyBsaWtlIGFuIG9iamVjdC5cbiAgICA7KGxpc3RbaW5kZXhdLmFkZCA9PT0gJ2FmdGVyJyA/IGV4aXN0aW5nIDogYmVmb3JlKS5wdXNoKGxpc3RbaW5kZXhdKVxuICB9XG5cbiAgc3BsaWNlKGV4aXN0aW5nLCAwLCAwLCBiZWZvcmUpXG59XG5cbi8qKlxuICogQ29tYmluZSBtdWx0aXBsZSBIVE1MIGV4dGVuc2lvbnMgaW50byBvbmUuXG4gKlxuICogQHBhcmFtIHtBcnJheTxIdG1sRXh0ZW5zaW9uPn0gaHRtbEV4dGVuc2lvbnNcbiAqICAgTGlzdCBvZiBIVE1MIGV4dGVuc2lvbnMuXG4gKiBAcmV0dXJucyB7SHRtbEV4dGVuc2lvbn1cbiAqICAgQSBzaW5nbGUgY29tYmluZWQgSFRNTCBleHRlbnNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lSHRtbEV4dGVuc2lvbnMoaHRtbEV4dGVuc2lvbnMpIHtcbiAgLyoqIEB0eXBlIHtIdG1sRXh0ZW5zaW9ufSAqL1xuICBjb25zdCBoYW5kbGVycyA9IHt9XG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCBodG1sRXh0ZW5zaW9ucy5sZW5ndGgpIHtcbiAgICBodG1sRXh0ZW5zaW9uKGhhbmRsZXJzLCBodG1sRXh0ZW5zaW9uc1tpbmRleF0pXG4gIH1cblxuICByZXR1cm4gaGFuZGxlcnNcbn1cblxuLyoqXG4gKiBNZXJnZSBgZXh0ZW5zaW9uYCBpbnRvIGBhbGxgLlxuICpcbiAqIEBwYXJhbSB7SHRtbEV4dGVuc2lvbn0gYWxsXG4gKiAgIEV4dGVuc2lvbiB0byBtZXJnZSBpbnRvLlxuICogQHBhcmFtIHtIdG1sRXh0ZW5zaW9ufSBleHRlbnNpb25cbiAqICAgRXh0ZW5zaW9uIHRvIG1lcmdlLlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGh0bWxFeHRlbnNpb24oYWxsLCBleHRlbnNpb24pIHtcbiAgLyoqIEB0eXBlIHtrZXlvZiBIdG1sRXh0ZW5zaW9ufSAqL1xuICBsZXQgaG9va1xuXG4gIGZvciAoaG9vayBpbiBleHRlbnNpb24pIHtcbiAgICBjb25zdCBtYXliZSA9IGhhc093blByb3BlcnR5LmNhbGwoYWxsLCBob29rKSA/IGFsbFtob29rXSA6IHVuZGVmaW5lZFxuICAgIGNvbnN0IGxlZnQgPSBtYXliZSB8fCAoYWxsW2hvb2tdID0ge30pXG4gICAgY29uc3QgcmlnaHQgPSBleHRlbnNpb25baG9va11cbiAgICAvKiogQHR5cGUge2tleW9mIEhhbmRsZXN9ICovXG4gICAgbGV0IHR5cGVcblxuICAgIGlmIChyaWdodCkge1xuICAgICAgZm9yICh0eXBlIGluIHJpZ2h0KSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYXNzdW1lIGRvY3VtZW50IHZzIHJlZ3VsYXIgaGFuZGxlciBhcmUgbWFuYWdlZCBjb3JyZWN0bHkuXG4gICAgICAgIGxlZnRbdHlwZV0gPSByaWdodFt0eXBlXVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwgIi8vIFRoaXMgbW9kdWxlIGlzIGdlbmVyYXRlZCBieSBgc2NyaXB0L2AuXG4vL1xuLy8gQ29tbW9uTWFyayBoYW5kbGVzIGF0dGVudGlvbiAoZW1waGFzaXMsIHN0cm9uZykgbWFya2VycyBiYXNlZCBvbiB3aGF0IGNvbWVzXG4vLyBiZWZvcmUgb3IgYWZ0ZXIgdGhlbS5cbi8vIE9uZSBzdWNoIGRpZmZlcmVuY2UgaXMgaWYgdGhvc2UgY2hhcmFjdGVycyBhcmUgVW5pY29kZSBwdW5jdHVhdGlvbi5cbi8vIFRoaXMgc2NyaXB0IGlzIGdlbmVyYXRlZCBmcm9tIHRoZSBVbmljb2RlIGRhdGEuXG5cbi8qKlxuICogUmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyBhIHVuaWNvZGUgcHVuY3R1YXRpb24gY2hhcmFjdGVyLlxuICovXG5leHBvcnQgY29uc3QgdW5pY29kZVB1bmN0dWF0aW9uUmVnZXggPVxuICAvWyEtXFwvOi1AXFxbLWBcXHstflxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRC1cXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwOUZEXFx1MEE3NlxcdTBBRjBcXHUwQzc3XFx1MEM4NFxcdTBERjRcXHUwRTRGXFx1MEU1QVxcdTBFNUJcXHUwRjA0LVxcdTBGMTJcXHUwRjE0XFx1MEYzQS1cXHUwRjNEXFx1MEY4NVxcdTBGRDAtXFx1MEZENFxcdTBGRDlcXHUwRkRBXFx1MTA0QS1cXHUxMDRGXFx1MTBGQlxcdTEzNjAtXFx1MTM2OFxcdTE0MDBcXHUxNjZFXFx1MTY5QlxcdTE2OUNcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQjdEXFx1MUI3RVxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNEZcXHUyRTUyLVxcdTJFNURcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XS9cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICovXG5cbmltcG9ydCB7dW5pY29kZVB1bmN0dWF0aW9uUmVnZXh9IGZyb20gJy4vbGliL3VuaWNvZGUtcHVuY3R1YXRpb24tcmVnZXguanMnXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBhbiBBU0NJSSBhbHBoYSAoYGFgIHRocm91Z2ggYHpgLFxuICogY2FzZSBpbnNlbnNpdGl2ZSkuXG4gKlxuICogQW4gKipBU0NJSSBhbHBoYSoqIGlzIGFuIEFTQ0lJIHVwcGVyIGFscGhhIG9yIEFTQ0lJIGxvd2VyIGFscGhhLlxuICpcbiAqIEFuICoqQVNDSUkgdXBwZXIgYWxwaGEqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDA0MSAoYEFgKVxuICogdG8gVSswMDVBIChgWmApLlxuICpcbiAqIEFuICoqQVNDSUkgbG93ZXIgYWxwaGEqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDA2MSAoYGFgKVxuICogdG8gVSswMDdBIChgemApLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaUFscGhhID0gcmVnZXhDaGVjaygvW0EtWmEtel0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gQVNDSUkgYWxwaGFudW1lcmljIChgYWBcbiAqIHRocm91Z2ggYHpgLCBjYXNlIGluc2Vuc2l0aXZlLCBvciBgMGAgdGhyb3VnaCBgOWApLlxuICpcbiAqIEFuICoqQVNDSUkgYWxwaGFudW1lcmljKiogaXMgYW4gQVNDSUkgZGlnaXQgKHNlZSBgYXNjaWlEaWdpdGApIG9yIEFTQ0lJIGFscGhhXG4gKiAoc2VlIGBhc2NpaUFscGhhYCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpQWxwaGFudW1lcmljID0gcmVnZXhDaGVjaygvW1xcZEEtWmEtel0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gQVNDSUkgYXRleHQuXG4gKlxuICogYXRleHQgaXMgYW4gQVNDSUkgYWxwaGFudW1lcmljIChzZWUgYGFzY2lpQWxwaGFudW1lcmljYCksIG9yIGEgY2hhcmFjdGVyIGluXG4gKiB0aGUgaW5jbHVzaXZlIHJhbmdlcyBVKzAwMjMgTlVNQkVSIFNJR04gKGAjYCkgdG8gVSswMDI3IEFQT1NUUk9QSEUgKGAnYCksXG4gKiBVKzAwMkEgQVNURVJJU0sgKGAqYCksIFUrMDAyQiBQTFVTIFNJR04gKGArYCksIFUrMDAyRCBEQVNIIChgLWApLCBVKzAwMkZcbiAqIFNMQVNIIChgL2ApLCBVKzAwM0QgRVFVQUxTIFRPIChgPWApLCBVKzAwM0YgUVVFU1RJT04gTUFSSyAoYD9gKSwgVSswMDVFXG4gKiBDQVJFVCAoYF5gKSB0byBVKzAwNjAgR1JBVkUgQUNDRU5UIChgYCBgIGBgKSwgb3IgVSswMDdCIExFRlQgQ1VSTFkgQlJBQ0VcbiAqIChge2ApIHRvIFUrMDA3RSBUSUxERSAoYH5gKS5cbiAqXG4gKiBTZWU6XG4gKiAqKlxcW1JGQzUzMjJdKio6XG4gKiBbSW50ZXJuZXQgTWVzc2FnZSBGb3JtYXRdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MzIyKS5cbiAqIFAuIFJlc25pY2suXG4gKiBJRVRGLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaUF0ZXh0ID0gcmVnZXhDaGVjaygvWyMtJyorXFwtLTk9P0EtWl4tfl0vKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBjaGFyYWN0ZXIgY29kZSBpcyBhbiBBU0NJSSBjb250cm9sIGNoYXJhY3Rlci5cbiAqXG4gKiBBbiAqKkFTQ0lJIGNvbnRyb2wqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDAwMCBOVUxMIChOVUwpXG4gKiB0byBVKzAwMUYgKFVTKSwgb3IgVSswMDdGIChERUwpLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzY2lpQ29udHJvbChjb2RlKSB7XG4gIHJldHVybiAoXG4gICAgLy8gU3BlY2lhbCB3aGl0ZXNwYWNlIGNvZGVzICh3aGljaCBoYXZlIG5lZ2F0aXZlIHZhbHVlcyksIEMwIGFuZCBDb250cm9sXG4gICAgLy8gY2hhcmFjdGVyIERFTFxuICAgIGNvZGUgIT09IG51bGwgJiYgKGNvZGUgPCAzMiB8fCBjb2RlID09PSAxMjcpXG4gIClcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIGFuIEFTQ0lJIGRpZ2l0IChgMGAgdGhyb3VnaCBgOWApLlxuICpcbiAqIEFuICoqQVNDSUkgZGlnaXQqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDAzMCAoYDBgKSB0b1xuICogVSswMDM5IChgOWApLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBhc2NpaURpZ2l0ID0gcmVnZXhDaGVjaygvXFxkLylcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIGFuIEFTQ0lJIGhleCBkaWdpdCAoYGFgIHRocm91Z2hcbiAqIGBmYCwgY2FzZSBpbnNlbnNpdGl2ZSwgb3IgYDBgIHRocm91Z2ggYDlgKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGhleCBkaWdpdCoqIGlzIGFuIEFTQ0lJIGRpZ2l0IChzZWUgYGFzY2lpRGlnaXRgKSwgQVNDSUkgdXBwZXIgaGV4XG4gKiBkaWdpdCwgb3IgYW4gQVNDSUkgbG93ZXIgaGV4IGRpZ2l0LlxuICpcbiAqIEFuICoqQVNDSUkgdXBwZXIgaGV4IGRpZ2l0KiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBVKzAwNDFcbiAqIChgQWApIHRvIFUrMDA0NiAoYEZgKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGxvd2VyIGhleCBkaWdpdCoqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBpbmNsdXNpdmUgcmFuZ2UgVSswMDYxXG4gKiAoYGFgKSB0byBVKzAwNjYgKGBmYCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpSGV4RGlnaXQgPSByZWdleENoZWNrKC9bXFxkQS1GYS1mXS8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBBU0NJSSBwdW5jdHVhdGlvbi5cbiAqXG4gKiBBbiAqKkFTQ0lJIHB1bmN0dWF0aW9uKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZXMgVSswMDIxXG4gKiBFWENMQU1BVElPTiBNQVJLIChgIWApIHRvIFUrMDAyRiBTTEFTSCAoYC9gKSwgVSswMDNBIENPTE9OIChgOmApIHRvIFUrMDA0MCBBVFxuICogU0lHTiAoYEBgKSwgVSswMDVCIExFRlQgU1FVQVJFIEJSQUNLRVQgKGBbYCkgdG8gVSswMDYwIEdSQVZFIEFDQ0VOVFxuICogKGBgIGAgYGApLCBvciBVKzAwN0IgTEVGVCBDVVJMWSBCUkFDRSAoYHtgKSB0byBVKzAwN0UgVElMREUgKGB+YCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpUHVuY3R1YXRpb24gPSByZWdleENoZWNrKC9bIS0vOi1AWy1gey1+XS8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGNoYXJhY3RlciBjb2RlIGlzIGEgbWFya2Rvd24gbGluZSBlbmRpbmcuXG4gKlxuICogQSAqKm1hcmtkb3duIGxpbmUgZW5kaW5nKiogaXMgdGhlIHZpcnR1YWwgY2hhcmFjdGVycyBNLTAwMDMgQ0FSUklBR0UgUkVUVVJOXG4gKiBMSU5FIEZFRUQgKENSTEYpLCBNLTAwMDQgTElORSBGRUVEIChMRikgYW5kIE0tMDAwNSBDQVJSSUFHRSBSRVRVUk4gKENSKS5cbiAqXG4gKiBJbiBtaWNyb21hcmssIHRoZSBhY3R1YWwgY2hhcmFjdGVyIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBhbmQgVSswMDBEIENBUlJJQUdFXG4gKiBSRVRVUk4gKENSKSBhcmUgcmVwbGFjZWQgYnkgdGhlc2UgdmlydHVhbCBjaGFyYWN0ZXJzIGRlcGVuZGluZyBvbiB3aGV0aGVyXG4gKiB0aGV5IG9jY3VycmVkIHRvZ2V0aGVyLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSB7XG4gIHJldHVybiBjb2RlICE9PSBudWxsICYmIGNvZGUgPCAtMlxufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBjaGFyYWN0ZXIgY29kZSBpcyBhIG1hcmtkb3duIGxpbmUgZW5kaW5nIChzZWVcbiAqIGBtYXJrZG93bkxpbmVFbmRpbmdgKSBvciBtYXJrZG93biBzcGFjZSAoc2VlIGBtYXJrZG93blNwYWNlYCkuXG4gKlxuICogQHBhcmFtIHtDb2RlfSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKSB7XG4gIHJldHVybiBjb2RlICE9PSBudWxsICYmIChjb2RlIDwgMCB8fCBjb2RlID09PSAzMilcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgY2hhcmFjdGVyIGNvZGUgaXMgYSBtYXJrZG93biBzcGFjZS5cbiAqXG4gKiBBICoqbWFya2Rvd24gc3BhY2UqKiBpcyB0aGUgY29uY3JldGUgY2hhcmFjdGVyIFUrMDAyMCBTUEFDRSAoU1ApIGFuZCB0aGVcbiAqIHZpcnR1YWwgY2hhcmFjdGVycyBNLTAwMDEgVklSVFVBTCBTUEFDRSAoVlMpIGFuZCBNLTAwMDIgSE9SSVpPTlRBTCBUQUIgKEhUKS5cbiAqXG4gKiBJbiBtaWNyb21hcmssIHRoZSBhY3R1YWwgY2hhcmFjdGVyIFUrMDAwOSBDSEFSQUNURVIgVEFCVUxBVElPTiAoSFQpIGlzXG4gKiByZXBsYWNlZCBieSBvbmUgTS0wMDAyIEhPUklaT05UQUwgVEFCIChIVCkgYW5kIGJldHdlZW4gMCBhbmQgMyBNLTAwMDEgVklSVFVBTFxuICogU1BBQ0UgKFZTKSBjaGFyYWN0ZXJzLCBkZXBlbmRpbmcgb24gdGhlIGNvbHVtbiBhdCB3aGljaCB0aGUgdGFiIG9jY3VycmVkLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcmtkb3duU3BhY2UoY29kZSkge1xuICByZXR1cm4gY29kZSA9PT0gLTIgfHwgY29kZSA9PT0gLTEgfHwgY29kZSA9PT0gMzJcbn1cblxuLy8gU2l6ZSBub3RlOiByZW1vdmluZyBBU0NJSSBmcm9tIHRoZSByZWdleCBhbmQgdXNpbmcgYGFzY2lpUHVuY3R1YXRpb25gIGhlcmVcbi8vIEluIGZhY3QgYWRkcyB0byB0aGUgYnVuZGxlIHNpemUuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgVW5pY29kZSBwdW5jdHVhdGlvbi5cbiAqXG4gKiBBICoqVW5pY29kZSBwdW5jdHVhdGlvbioqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBVbmljb2RlIGBQY2AgKFB1bmN0dWF0aW9uLFxuICogQ29ubmVjdG9yKSwgYFBkYCAoUHVuY3R1YXRpb24sIERhc2gpLCBgUGVgIChQdW5jdHVhdGlvbiwgQ2xvc2UpLCBgUGZgXG4gKiAoUHVuY3R1YXRpb24sIEZpbmFsIHF1b3RlKSwgYFBpYCAoUHVuY3R1YXRpb24sIEluaXRpYWwgcXVvdGUpLCBgUG9gXG4gKiAoUHVuY3R1YXRpb24sIE90aGVyKSwgb3IgYFBzYCAoUHVuY3R1YXRpb24sIE9wZW4pIGNhdGVnb3JpZXMsIG9yIGFuIEFTQ0lJXG4gKiBwdW5jdHVhdGlvbiAoc2VlIGBhc2NpaVB1bmN0dWF0aW9uYCkuXG4gKlxuICogU2VlOlxuICogKipcXFtVTklDT0RFXSoqOlxuICogW1RoZSBVbmljb2RlIFN0YW5kYXJkXShodHRwczovL3d3dy51bmljb2RlLm9yZy92ZXJzaW9ucy8pLlxuICogVW5pY29kZSBDb25zb3J0aXVtLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCB1bmljb2RlUHVuY3R1YXRpb24gPSByZWdleENoZWNrKHVuaWNvZGVQdW5jdHVhdGlvblJlZ2V4KVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgVW5pY29kZSB3aGl0ZXNwYWNlLlxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgaGFuZGxlIG1pY3JvbWFyayBzcGVjaWZpYyBtYXJrZG93biB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuXG4gKiBTZWUgYG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2VgIHRvIGNoZWNrIHRoYXQuXG4gKlxuICogQSAqKlVuaWNvZGUgd2hpdGVzcGFjZSoqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBVbmljb2RlIGBac2AgKFNlcGFyYXRvcixcbiAqIFNwYWNlKSBjYXRlZ29yeSwgb3IgVSswMDA5IENIQVJBQ1RFUiBUQUJVTEFUSU9OIChIVCksIFUrMDAwQSBMSU5FIEZFRUQgKExGKSxcbiAqIFUrMDAwQyAoRkYpLCBvciBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgKCoqXFxbVU5JQ09ERV0qKikuXG4gKlxuICogU2VlOlxuICogKipcXFtVTklDT0RFXSoqOlxuICogW1RoZSBVbmljb2RlIFN0YW5kYXJkXShodHRwczovL3d3dy51bmljb2RlLm9yZy92ZXJzaW9ucy8pLlxuICogVW5pY29kZSBDb25zb3J0aXVtLlxuICpcbiAqIEBwYXJhbSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJuc1xuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBjb25zdCB1bmljb2RlV2hpdGVzcGFjZSA9IHJlZ2V4Q2hlY2soL1xccy8pXG5cbi8qKlxuICogQ3JlYXRlIGEgY29kZSBjaGVjayBmcm9tIGEgcmVnZXguXG4gKlxuICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4XG4gKiBAcmV0dXJucyB7KGNvZGU6IENvZGUpID0+IGJvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIHJlZ2V4Q2hlY2socmVnZXgpIHtcbiAgcmV0dXJuIGNoZWNrXG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgYSBjb2RlIG1hdGNoZXMgdGhlIGJvdW5kIHJlZ2V4LlxuICAgKlxuICAgKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAgICogICBDaGFyYWN0ZXIgY29kZS5cbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqICAgV2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgbWF0Y2hlcyB0aGUgYm91bmQgcmVnZXguXG4gICAqL1xuICBmdW5jdGlvbiBjaGVjayhjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGUgIT09IG51bGwgJiYgcmVnZXgudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVmZmVjdHN9IEVmZmVjdHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuVHlwZX0gVG9rZW5UeXBlXG4gKi9cblxuaW1wb3J0IHttYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5cbi8vIFRvIGRvOiBpbXBsZW1lbnQgYHNwYWNlT3JUYWJgLCBgc3BhY2VPclRhYk1pbk1heGAsIGBzcGFjZU9yVGFiV2l0aE9wdGlvbnNgLlxuXG4vKipcbiAqIFBhcnNlIHNwYWNlcyBhbmQgdGFicy5cbiAqXG4gKiBUaGVyZSBpcyBubyBgbm9rYCBwYXJhbWV0ZXI6XG4gKlxuICogKiAgIHNwYWNlcyBpbiBtYXJrZG93biBhcmUgb2Z0ZW4gb3B0aW9uYWwsIGluIHdoaWNoIGNhc2UgdGhpcyBmYWN0b3J5IGNhbiBiZVxuICogICAgIHVzZWQgYW5kIGBva2Agd2lsbCBiZSBzd2l0Y2hlZCB0byB3aGV0aGVyIHNwYWNlcyB3ZXJlIGZvdW5kIG9yIG5vdFxuICogKiAgIG9uZSBsaW5lIGVuZGluZyBvciBzcGFjZSBjYW4gYmUgZGV0ZWN0ZWQgd2l0aCBgbWFya2Rvd25TcGFjZShjb2RlKWAgcmlnaHRcbiAqICAgICBiZWZvcmUgdXNpbmcgYGZhY3RvcnlTcGFjZWBcbiAqXG4gKiAjIyMjIyMgRXhhbXBsZXNcbiAqXG4gKiBXaGVyZSBgXHUyNDA5YCByZXByZXNlbnRzIGEgdGFiIChwbHVzIGhvdyBtdWNoIGl0IGV4cGFuZHMpIGFuZCBgXHUyNDIwYCByZXByZXNlbnRzIGFcbiAqIHNpbmdsZSBzcGFjZS5cbiAqXG4gKiBgYGBtYXJrZG93blxuICogXHUyNDA5XG4gKiBcdTI0MjBcdTI0MjBcdTI0MjBcdTI0MjBcbiAqIFx1MjQwOVx1MjQyMFxuICogYGBgXG4gKlxuICogQHBhcmFtIHtFZmZlY3RzfSBlZmZlY3RzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1N0YXRlfSBva1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHN1Y2Nlc3NmdWwuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gdHlwZVxuICogICBUeXBlIChgJyBcXHQnYCkuXG4gKiBAcGFyYW0ge251bWJlciB8IHVuZGVmaW5lZH0gW21heD1JbmZpbml0eV1cbiAqICAgTWF4IChleGNsdXNpdmUpLlxuICogQHJldHVybnNcbiAqICAgU3RhcnQgc3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgb2ssIHR5cGUsIG1heCkge1xuICBjb25zdCBsaW1pdCA9IG1heCA/IG1heCAtIDEgOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbiAgbGV0IHNpemUgPSAwXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlKVxuICAgICAgcmV0dXJuIHByZWZpeChjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHByZWZpeChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkgJiYgc2l6ZSsrIDwgbGltaXQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHByZWZpeFxuICAgIH1cbiAgICBlZmZlY3RzLmV4aXQodHlwZSlcbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsQ29uc3RydWN0fSBJbml0aWFsQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxpemVyfSBJbml0aWFsaXplclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmd9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7SW5pdGlhbENvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBjb250ZW50ID0ge1xuICB0b2tlbml6ZTogaW5pdGlhbGl6ZUNvbnRlbnRcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge0luaXRpYWxpemVyfVxuICovXG5mdW5jdGlvbiBpbml0aWFsaXplQ29udGVudChlZmZlY3RzKSB7XG4gIGNvbnN0IGNvbnRlbnRTdGFydCA9IGVmZmVjdHMuYXR0ZW1wdChcbiAgICB0aGlzLnBhcnNlci5jb25zdHJ1Y3RzLmNvbnRlbnRJbml0aWFsLFxuICAgIGFmdGVyQ29udGVudFN0YXJ0Q29uc3RydWN0LFxuICAgIHBhcmFncmFwaEluaXRpYWxcbiAgKVxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgcHJldmlvdXNcbiAgcmV0dXJuIGNvbnRlbnRTdGFydFxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGFmdGVyQ29udGVudFN0YXJ0Q29uc3RydWN0KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGNvbnRlbnRTdGFydCwgJ2xpbmVQcmVmaXgnKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gcGFyYWdyYXBoSW5pdGlhbChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcigncGFyYWdyYXBoJylcbiAgICByZXR1cm4gbGluZVN0YXJ0KGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBsaW5lU3RhcnQoY29kZSkge1xuICAgIGNvbnN0IHRva2VuID0gZWZmZWN0cy5lbnRlcignY2h1bmtUZXh0Jywge1xuICAgICAgY29udGVudFR5cGU6ICd0ZXh0JyxcbiAgICAgIHByZXZpb3VzXG4gICAgfSlcbiAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgIHByZXZpb3VzLm5leHQgPSB0b2tlblxuICAgIH1cbiAgICBwcmV2aW91cyA9IHRva2VuXG4gICAgcmV0dXJuIGRhdGEoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGRhdGEoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NodW5rVGV4dCcpXG4gICAgICBlZmZlY3RzLmV4aXQoJ3BhcmFncmFwaCcpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtUZXh0JylcbiAgICAgIHJldHVybiBsaW5lU3RhcnRcbiAgICB9XG5cbiAgICAvLyBEYXRhLlxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBkYXRhXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29udGFpbmVyU3RhdGV9IENvbnRhaW5lclN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbGl6ZXJ9IEluaXRpYWxpemVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7W0NvbnN0cnVjdCwgQ29udGFpbmVyU3RhdGVdfSBTdGFja0l0ZW1cbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtzcGxpY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNodW5rZWQnXG4vKiogQHR5cGUge0luaXRpYWxDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgZG9jdW1lbnQgPSB7XG4gIHRva2VuaXplOiBpbml0aWFsaXplRG9jdW1lbnRcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCBjb250YWluZXJDb25zdHJ1Y3QgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZUNvbnRhaW5lclxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gKi9cbmZ1bmN0aW9uIGluaXRpYWxpemVEb2N1bWVudChlZmZlY3RzKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7QXJyYXk8U3RhY2tJdGVtPn0gKi9cbiAgY29uc3Qgc3RhY2sgPSBbXVxuICBsZXQgY29udGludWVkID0gMFxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dCB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNoaWxkRmxvd1xuICAvKiogQHR5cGUge1Rva2VuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgY2hpbGRUb2tlblxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IGxpbmVTdGFydE9mZnNldFxuICByZXR1cm4gc3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgLy8gRmlyc3Qgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSBvcGVuIGJsb2Nrcywgc3RhcnRpbmcgd2l0aCB0aGUgcm9vdFxuICAgIC8vIGRvY3VtZW50LCBhbmQgZGVzY2VuZGluZyB0aHJvdWdoIGxhc3QgY2hpbGRyZW4gZG93biB0byB0aGUgbGFzdCBvcGVuXG4gICAgLy8gYmxvY2suXG4gICAgLy8gRWFjaCBibG9jayBpbXBvc2VzIGEgY29uZGl0aW9uIHRoYXQgdGhlIGxpbmUgbXVzdCBzYXRpc2Z5IGlmIHRoZSBibG9jayBpc1xuICAgIC8vIHRvIHJlbWFpbiBvcGVuLlxuICAgIC8vIEZvciBleGFtcGxlLCBhIGJsb2NrIHF1b3RlIHJlcXVpcmVzIGEgYD5gIGNoYXJhY3Rlci5cbiAgICAvLyBBIHBhcmFncmFwaCByZXF1aXJlcyBhIG5vbi1ibGFuayBsaW5lLlxuICAgIC8vIEluIHRoaXMgcGhhc2Ugd2UgbWF5IG1hdGNoIGFsbCBvciBqdXN0IHNvbWUgb2YgdGhlIG9wZW4gYmxvY2tzLlxuICAgIC8vIEJ1dCB3ZSBjYW5ub3QgY2xvc2UgdW5tYXRjaGVkIGJsb2NrcyB5ZXQsIGJlY2F1c2Ugd2UgbWF5IGhhdmUgYSBsYXp5XG4gICAgLy8gY29udGludWF0aW9uIGxpbmUuXG4gICAgaWYgKGNvbnRpbnVlZCA8IHN0YWNrLmxlbmd0aCkge1xuICAgICAgY29uc3QgaXRlbSA9IHN0YWNrW2NvbnRpbnVlZF1cbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUgPSBpdGVtWzFdXG4gICAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgICBpdGVtWzBdLmNvbnRpbnVhdGlvbixcbiAgICAgICAgZG9jdW1lbnRDb250aW51ZSxcbiAgICAgICAgY2hlY2tOZXdDb250YWluZXJzXG4gICAgICApKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gRG9uZS5cbiAgICByZXR1cm4gY2hlY2tOZXdDb250YWluZXJzKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBkb2N1bWVudENvbnRpbnVlKGNvZGUpIHtcbiAgICBjb250aW51ZWQrK1xuXG4gICAgLy8gTm90ZTogdGhpcyBmaWVsZCBpcyBjYWxsZWQgYF9jbG9zZUZsb3dgIGJ1dCBpdCBhbHNvIGNsb3NlcyBjb250YWluZXJzLlxuICAgIC8vIFBlcmhhcHMgYSBnb29kIGlkZWEgdG8gcmVuYW1lIGl0IGJ1dCBpdFx1MjAxOXMgYWxyZWFkeSB1c2VkIGluIHRoZSB3aWxkIGJ5XG4gICAgLy8gZXh0ZW5zaW9ucy5cbiAgICBpZiAoc2VsZi5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93KSB7XG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3cgPSB1bmRlZmluZWRcbiAgICAgIGlmIChjaGlsZEZsb3cpIHtcbiAgICAgICAgY2xvc2VGbG93KClcbiAgICAgIH1cblxuICAgICAgLy8gTm90ZTogdGhpcyBhbGdvcml0aG0gZm9yIG1vdmluZyBldmVudHMgYXJvdW5kIGlzIHNpbWlsYXIgdG8gdGhlXG4gICAgICAvLyBhbGdvcml0aG0gd2hlbiBkZWFsaW5nIHdpdGggbGF6eSBsaW5lcyBpbiBgd3JpdGVUb0NoaWxkYC5cbiAgICAgIGNvbnN0IGluZGV4QmVmb3JlRXhpdHMgPSBzZWxmLmV2ZW50cy5sZW5ndGhcbiAgICAgIGxldCBpbmRleEJlZm9yZUZsb3cgPSBpbmRleEJlZm9yZUV4aXRzXG4gICAgICAvKiogQHR5cGUge1BvaW50IHwgdW5kZWZpbmVkfSAqL1xuICAgICAgbGV0IHBvaW50XG5cbiAgICAgIC8vIEZpbmQgdGhlIGZsb3cgY2h1bmsuXG4gICAgICB3aGlsZSAoaW5kZXhCZWZvcmVGbG93LS0pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNlbGYuZXZlbnRzW2luZGV4QmVmb3JlRmxvd11bMF0gPT09ICdleGl0JyAmJlxuICAgICAgICAgIHNlbGYuZXZlbnRzW2luZGV4QmVmb3JlRmxvd11bMV0udHlwZSA9PT0gJ2NodW5rRmxvdydcbiAgICAgICAgKSB7XG4gICAgICAgICAgcG9pbnQgPSBzZWxmLmV2ZW50c1tpbmRleEJlZm9yZUZsb3ddWzFdLmVuZFxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGV4aXRDb250YWluZXJzKGNvbnRpbnVlZClcblxuICAgICAgLy8gRml4IHBvc2l0aW9ucy5cbiAgICAgIGxldCBpbmRleCA9IGluZGV4QmVmb3JlRXhpdHNcbiAgICAgIHdoaWxlIChpbmRleCA8IHNlbGYuZXZlbnRzLmxlbmd0aCkge1xuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgcG9pbnQpXG4gICAgICAgIGluZGV4KytcbiAgICAgIH1cblxuICAgICAgLy8gSW5qZWN0IHRoZSBleGl0cyBlYXJsaWVyICh0aGV5XHUyMDE5cmUgc3RpbGwgYWxzbyBhdCB0aGUgZW5kKS5cbiAgICAgIHNwbGljZShcbiAgICAgICAgc2VsZi5ldmVudHMsXG4gICAgICAgIGluZGV4QmVmb3JlRmxvdyArIDEsXG4gICAgICAgIDAsXG4gICAgICAgIHNlbGYuZXZlbnRzLnNsaWNlKGluZGV4QmVmb3JlRXhpdHMpXG4gICAgICApXG5cbiAgICAgIC8vIERpc2NhcmQgdGhlIGR1cGxpY2F0ZSBleGl0cy5cbiAgICAgIHNlbGYuZXZlbnRzLmxlbmd0aCA9IGluZGV4XG4gICAgICByZXR1cm4gY2hlY2tOZXdDb250YWluZXJzKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBzdGFydChjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gY2hlY2tOZXdDb250YWluZXJzKGNvZGUpIHtcbiAgICAvLyBOZXh0LCBhZnRlciBjb25zdW1pbmcgdGhlIGNvbnRpbnVhdGlvbiBtYXJrZXJzIGZvciBleGlzdGluZyBibG9ja3MsIHdlXG4gICAgLy8gbG9vayBmb3IgbmV3IGJsb2NrIHN0YXJ0cyAoZS5nLiBgPmAgZm9yIGEgYmxvY2sgcXVvdGUpLlxuICAgIC8vIElmIHdlIGVuY291bnRlciBhIG5ldyBibG9jayBzdGFydCwgd2UgY2xvc2UgYW55IGJsb2NrcyB1bm1hdGNoZWQgaW5cbiAgICAvLyBzdGVwIDEgYmVmb3JlIGNyZWF0aW5nIHRoZSBuZXcgYmxvY2sgYXMgYSBjaGlsZCBvZiB0aGUgbGFzdCBtYXRjaGVkXG4gICAgLy8gYmxvY2suXG4gICAgaWYgKGNvbnRpbnVlZCA9PT0gc3RhY2subGVuZ3RoKSB7XG4gICAgICAvLyBObyBuZWVkIHRvIGBjaGVja2Agd2hldGhlciB0aGVyZVx1MjAxOXMgYSBjb250YWluZXIsIG9mIGBleGl0Q29udGFpbmVyc2BcbiAgICAgIC8vIHdvdWxkIGJlIG1vb3QuXG4gICAgICAvLyBXZSBjYW4gaW5zdGVhZCBpbW1lZGlhdGVseSBgYXR0ZW1wdGAgdG8gcGFyc2Ugb25lLlxuICAgICAgaWYgKCFjaGlsZEZsb3cpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50Q29udGludWVkKGNvZGUpXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHdlIGhhdmUgY29uY3JldGUgY29udGVudCwgc3VjaCBhcyBibG9jayBIVE1MIG9yIGZlbmNlZCBjb2RlLFxuICAgICAgLy8gd2UgY2FuXHUyMDE5dCBoYXZlIGNvbnRhaW5lcnMgXHUyMDFDcGllcmNlXHUyMDFEIGludG8gdGhlbSwgc28gd2UgY2FuIGltbWVkaWF0ZWx5XG4gICAgICAvLyBzdGFydC5cbiAgICAgIGlmIChjaGlsZEZsb3cuY3VycmVudENvbnN0cnVjdCAmJiBjaGlsZEZsb3cuY3VycmVudENvbnN0cnVjdC5jb25jcmV0ZSkge1xuICAgICAgICByZXR1cm4gZmxvd1N0YXJ0KGNvZGUpXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHdlIGRvIGhhdmUgZmxvdywgaXQgY291bGQgc3RpbGwgYmUgYSBibGFuayBsaW5lLFxuICAgICAgLy8gYnV0IHdlXHUyMDE5ZCBiZSBpbnRlcnJ1cHRpbmcgaXQgdy8gYSBuZXcgY29udGFpbmVyIGlmIHRoZXJlXHUyMDE5cyBhIGN1cnJlbnRcbiAgICAgIC8vIGNvbnN0cnVjdC5cbiAgICAgIC8vIFRvIGRvOiBuZXh0IG1ham9yOiByZW1vdmUgYF9nZm1UYWJsZUR5bmFtaWNJbnRlcnJ1cHRIYWNrYCAobm8gbG9uZ2VyXG4gICAgICAvLyBuZWVkZWQgaW4gbWljcm9tYXJrLWV4dGVuc2lvbi1nZm0tdGFibGVAMS4wLjYpLlxuICAgICAgc2VsZi5pbnRlcnJ1cHQgPSBCb29sZWFuKFxuICAgICAgICBjaGlsZEZsb3cuY3VycmVudENvbnN0cnVjdCAmJiAhY2hpbGRGbG93Ll9nZm1UYWJsZUR5bmFtaWNJbnRlcnJ1cHRIYWNrXG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgYSBuZXcgY29udGFpbmVyLlxuICAgIHNlbGYuY29udGFpbmVyU3RhdGUgPSB7fVxuICAgIHJldHVybiBlZmZlY3RzLmNoZWNrKFxuICAgICAgY29udGFpbmVyQ29uc3RydWN0LFxuICAgICAgdGhlcmVJc0FOZXdDb250YWluZXIsXG4gICAgICB0aGVyZUlzTm9OZXdDb250YWluZXJcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiB0aGVyZUlzQU5ld0NvbnRhaW5lcihjb2RlKSB7XG4gICAgaWYgKGNoaWxkRmxvdykgY2xvc2VGbG93KClcbiAgICBleGl0Q29udGFpbmVycyhjb250aW51ZWQpXG4gICAgcmV0dXJuIGRvY3VtZW50Q29udGludWVkKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiB0aGVyZUlzTm9OZXdDb250YWluZXIoY29kZSkge1xuICAgIHNlbGYucGFyc2VyLmxhenlbc2VsZi5ub3coKS5saW5lXSA9IGNvbnRpbnVlZCAhPT0gc3RhY2subGVuZ3RoXG4gICAgbGluZVN0YXJ0T2Zmc2V0ID0gc2VsZi5ub3coKS5vZmZzZXRcbiAgICByZXR1cm4gZmxvd1N0YXJ0KGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBkb2N1bWVudENvbnRpbnVlZChjb2RlKSB7XG4gICAgLy8gVHJ5IG5ldyBjb250YWluZXJzLlxuICAgIHNlbGYuY29udGFpbmVyU3RhdGUgPSB7fVxuICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICBjb250YWluZXJDb25zdHJ1Y3QsXG4gICAgICBjb250YWluZXJDb250aW51ZSxcbiAgICAgIGZsb3dTdGFydFxuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGNvbnRhaW5lckNvbnRpbnVlKGNvZGUpIHtcbiAgICBjb250aW51ZWQrK1xuICAgIHN0YWNrLnB1c2goW3NlbGYuY3VycmVudENvbnN0cnVjdCwgc2VsZi5jb250YWluZXJTdGF0ZV0pXG4gICAgLy8gVHJ5IGFub3RoZXIuXG4gICAgcmV0dXJuIGRvY3VtZW50Q29udGludWVkKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBmbG93U3RhcnQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICBpZiAoY2hpbGRGbG93KSBjbG9zZUZsb3coKVxuICAgICAgZXhpdENvbnRhaW5lcnMoMClcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNoaWxkRmxvdyA9IGNoaWxkRmxvdyB8fCBzZWxmLnBhcnNlci5mbG93KHNlbGYubm93KCkpXG4gICAgZWZmZWN0cy5lbnRlcignY2h1bmtGbG93Jywge1xuICAgICAgY29udGVudFR5cGU6ICdmbG93JyxcbiAgICAgIHByZXZpb3VzOiBjaGlsZFRva2VuLFxuICAgICAgX3Rva2VuaXplcjogY2hpbGRGbG93XG4gICAgfSlcbiAgICByZXR1cm4gZmxvd0NvbnRpbnVlKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBmbG93Q29udGludWUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICB3cml0ZVRvQ2hpbGQoZWZmZWN0cy5leGl0KCdjaHVua0Zsb3cnKSwgdHJ1ZSlcbiAgICAgIGV4aXRDb250YWluZXJzKDApXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHdyaXRlVG9DaGlsZChlZmZlY3RzLmV4aXQoJ2NodW5rRmxvdycpKVxuICAgICAgLy8gR2V0IHJlYWR5IGZvciB0aGUgbmV4dCBsaW5lLlxuICAgICAgY29udGludWVkID0gMFxuICAgICAgc2VsZi5pbnRlcnJ1cHQgPSB1bmRlZmluZWRcbiAgICAgIHJldHVybiBzdGFydFxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gZmxvd0NvbnRpbnVlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtUb2tlbn0gdG9rZW5cbiAgICogQHBhcmFtIHtib29sZWFuIHwgdW5kZWZpbmVkfSBbZW9mXVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIHdyaXRlVG9DaGlsZCh0b2tlbiwgZW9mKSB7XG4gICAgY29uc3Qgc3RyZWFtID0gc2VsZi5zbGljZVN0cmVhbSh0b2tlbilcbiAgICBpZiAoZW9mKSBzdHJlYW0ucHVzaChudWxsKVxuICAgIHRva2VuLnByZXZpb3VzID0gY2hpbGRUb2tlblxuICAgIGlmIChjaGlsZFRva2VuKSBjaGlsZFRva2VuLm5leHQgPSB0b2tlblxuICAgIGNoaWxkVG9rZW4gPSB0b2tlblxuICAgIGNoaWxkRmxvdy5kZWZpbmVTa2lwKHRva2VuLnN0YXJ0KVxuICAgIGNoaWxkRmxvdy53cml0ZShzdHJlYW0pXG5cbiAgICAvLyBBbHJpZ2h0LCBzbyB3ZSBqdXN0IGFkZGVkIGEgbGF6eSBsaW5lOlxuICAgIC8vXG4gICAgLy8gYGBgbWFya2Rvd25cbiAgICAvLyA+IGFcbiAgICAvLyBiLlxuICAgIC8vXG4gICAgLy8gT3I6XG4gICAgLy9cbiAgICAvLyA+IH5+fmNcbiAgICAvLyBkXG4gICAgLy9cbiAgICAvLyBPcjpcbiAgICAvL1xuICAgIC8vID4gfCBlIHxcbiAgICAvLyBmXG4gICAgLy8gYGBgXG4gICAgLy9cbiAgICAvLyBUaGUgY29uc3RydWN0IGluIHRoZSBzZWNvbmQgZXhhbXBsZSAoZmVuY2VkIGNvZGUpIGRvZXMgbm90IGFjY2VwdCBsYXp5XG4gICAgLy8gbGluZXMsIHNvIGl0IG1hcmtlZCBpdHNlbGYgYXMgZG9uZSBhdCB0aGUgZW5kIG9mIGl0cyBmaXJzdCBsaW5lLCBhbmRcbiAgICAvLyB0aGVuIHRoZSBjb250ZW50IGNvbnN0cnVjdCBwYXJzZXMgYGRgLlxuICAgIC8vIE1vc3QgY29uc3RydWN0cyBpbiBtYXJrZG93biBtYXRjaCBvbiB0aGUgZmlyc3QgbGluZTogaWYgdGhlIGZpcnN0IGxpbmVcbiAgICAvLyBmb3JtcyBhIGNvbnN0cnVjdCwgYSBub24tbGF6eSBsaW5lIGNhblx1MjAxOXQgXHUyMDFDdW5tYWtlXHUyMDFEIGl0LlxuICAgIC8vXG4gICAgLy8gVGhlIGNvbnN0cnVjdCBpbiB0aGUgdGhpcmQgZXhhbXBsZSBpcyBwb3RlbnRpYWxseSBhIEdGTSB0YWJsZSwgYW5kXG4gICAgLy8gdGhvc2UgYXJlICp3ZWlyZCouXG4gICAgLy8gSXQgKmNvdWxkKiBiZSBhIHRhYmxlLCBmcm9tIHRoZSBmaXJzdCBsaW5lLCBpZiB0aGUgZm9sbG93aW5nIGxpbmVcbiAgICAvLyBtYXRjaGVzIGEgY29uZGl0aW9uLlxuICAgIC8vIEluIHRoaXMgY2FzZSwgdGhhdCBzZWNvbmQgbGluZSBpcyBsYXp5LCB3aGljaCBcdTIwMUN1bm1ha2VzXHUyMDFEIHRoZSBmaXJzdCBsaW5lXG4gICAgLy8gYW5kIHR1cm5zIHRoZSB3aG9sZSBpbnRvIG9uZSBjb250ZW50IGJsb2NrLlxuICAgIC8vXG4gICAgLy8gV2VcdTIwMTl2ZSBub3cgcGFyc2VkIHRoZSBub24tbGF6eSBhbmQgdGhlIGxhenkgbGluZSwgYW5kIGNhbiBmaWd1cmUgb3V0XG4gICAgLy8gd2hldGhlciB0aGUgbGF6eSBsaW5lIHN0YXJ0ZWQgYSBuZXcgZmxvdyBibG9jay5cbiAgICAvLyBJZiBpdCBkaWQsIHdlIGV4aXQgdGhlIGN1cnJlbnQgY29udGFpbmVycyBiZXR3ZWVuIHRoZSB0d28gZmxvdyBibG9ja3MuXG4gICAgaWYgKHNlbGYucGFyc2VyLmxhenlbdG9rZW4uc3RhcnQubGluZV0pIHtcbiAgICAgIGxldCBpbmRleCA9IGNoaWxkRmxvdy5ldmVudHMubGVuZ3RoXG4gICAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgLy8gVGhlIHRva2VuIHN0YXJ0cyBiZWZvcmUgdGhlIGxpbmUgZW5kaW5nXHUyMDI2XG4gICAgICAgICAgY2hpbGRGbG93LmV2ZW50c1tpbmRleF1bMV0uc3RhcnQub2Zmc2V0IDwgbGluZVN0YXJ0T2Zmc2V0ICYmXG4gICAgICAgICAgLy8gXHUyMDI2YW5kIGVpdGhlciBpcyBub3QgZW5kZWQgeWV0XHUyMDI2XG4gICAgICAgICAgKCFjaGlsZEZsb3cuZXZlbnRzW2luZGV4XVsxXS5lbmQgfHxcbiAgICAgICAgICAgIC8vIFx1MjAyNm9yIGVuZHMgYWZ0ZXIgaXQuXG4gICAgICAgICAgICBjaGlsZEZsb3cuZXZlbnRzW2luZGV4XVsxXS5lbmQub2Zmc2V0ID4gbGluZVN0YXJ0T2Zmc2V0KVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBFeGl0OiB0aGVyZVx1MjAxOXMgc3RpbGwgc29tZXRoaW5nIG9wZW4sIHdoaWNoIG1lYW5zIGl0XHUyMDE5cyBhIGxhenkgbGluZVxuICAgICAgICAgIC8vIHBhcnQgb2Ygc29tZXRoaW5nLlxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE5vdGU6IHRoaXMgYWxnb3JpdGhtIGZvciBtb3ZpbmcgZXZlbnRzIGFyb3VuZCBpcyBzaW1pbGFyIHRvIHRoZVxuICAgICAgLy8gYWxnb3JpdGhtIHdoZW4gY2xvc2luZyBmbG93IGluIGBkb2N1bWVudENvbnRpbnVlYC5cbiAgICAgIGNvbnN0IGluZGV4QmVmb3JlRXhpdHMgPSBzZWxmLmV2ZW50cy5sZW5ndGhcbiAgICAgIGxldCBpbmRleEJlZm9yZUZsb3cgPSBpbmRleEJlZm9yZUV4aXRzXG4gICAgICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gICAgICBsZXQgc2VlblxuICAgICAgLyoqIEB0eXBlIHtQb2ludCB8IHVuZGVmaW5lZH0gKi9cbiAgICAgIGxldCBwb2ludFxuXG4gICAgICAvLyBGaW5kIHRoZSBwcmV2aW91cyBjaHVuayAodGhlIG9uZSBiZWZvcmUgdGhlIGxhenkgbGluZSkuXG4gICAgICB3aGlsZSAoaW5kZXhCZWZvcmVGbG93LS0pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNlbGYuZXZlbnRzW2luZGV4QmVmb3JlRmxvd11bMF0gPT09ICdleGl0JyAmJlxuICAgICAgICAgIHNlbGYuZXZlbnRzW2luZGV4QmVmb3JlRmxvd11bMV0udHlwZSA9PT0gJ2NodW5rRmxvdydcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKHNlZW4pIHtcbiAgICAgICAgICAgIHBvaW50ID0gc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVsxXS5lbmRcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIHNlZW4gPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGV4aXRDb250YWluZXJzKGNvbnRpbnVlZClcblxuICAgICAgLy8gRml4IHBvc2l0aW9ucy5cbiAgICAgIGluZGV4ID0gaW5kZXhCZWZvcmVFeGl0c1xuICAgICAgd2hpbGUgKGluZGV4IDwgc2VsZi5ldmVudHMubGVuZ3RoKSB7XG4gICAgICAgIHNlbGYuZXZlbnRzW2luZGV4XVsxXS5lbmQgPSBPYmplY3QuYXNzaWduKHt9LCBwb2ludClcbiAgICAgICAgaW5kZXgrK1xuICAgICAgfVxuXG4gICAgICAvLyBJbmplY3QgdGhlIGV4aXRzIGVhcmxpZXIgKHRoZXlcdTIwMTlyZSBzdGlsbCBhbHNvIGF0IHRoZSBlbmQpLlxuICAgICAgc3BsaWNlKFxuICAgICAgICBzZWxmLmV2ZW50cyxcbiAgICAgICAgaW5kZXhCZWZvcmVGbG93ICsgMSxcbiAgICAgICAgMCxcbiAgICAgICAgc2VsZi5ldmVudHMuc2xpY2UoaW5kZXhCZWZvcmVFeGl0cylcbiAgICAgIClcblxuICAgICAgLy8gRGlzY2FyZCB0aGUgZHVwbGljYXRlIGV4aXRzLlxuICAgICAgc2VsZi5ldmVudHMubGVuZ3RoID0gaW5kZXhcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHNpemVcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiBleGl0Q29udGFpbmVycyhzaXplKSB7XG4gICAgbGV0IGluZGV4ID0gc3RhY2subGVuZ3RoXG5cbiAgICAvLyBFeGl0IG9wZW4gY29udGFpbmVycy5cbiAgICB3aGlsZSAoaW5kZXgtLSA+IHNpemUpIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gc3RhY2tbaW5kZXhdXG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlID0gZW50cnlbMV1cbiAgICAgIGVudHJ5WzBdLmV4aXQuY2FsbChzZWxmLCBlZmZlY3RzKVxuICAgIH1cbiAgICBzdGFjay5sZW5ndGggPSBzaXplXG4gIH1cbiAgZnVuY3Rpb24gY2xvc2VGbG93KCkge1xuICAgIGNoaWxkRmxvdy53cml0ZShbbnVsbF0pXG4gICAgY2hpbGRUb2tlbiA9IHVuZGVmaW5lZFxuICAgIGNoaWxkRmxvdyA9IHVuZGVmaW5lZFxuICAgIHNlbGYuY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdyA9IHVuZGVmaW5lZFxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQ29udGFpbmVyKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgIGVmZmVjdHMsXG4gICAgZWZmZWN0cy5hdHRlbXB0KHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZG9jdW1lbnQsIG9rLCBub2spLFxuICAgICdsaW5lUHJlZml4JyxcbiAgICB0aGlzLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJykgPyB1bmRlZmluZWQgOiA0XG4gIClcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICovXG5cbmltcG9ydCB7XG4gIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UsXG4gIHVuaWNvZGVQdW5jdHVhdGlvbixcbiAgdW5pY29kZVdoaXRlc3BhY2Vcbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqXG4gKiBDbGFzc2lmeSB3aGV0aGVyIGEgY29kZSByZXByZXNlbnRzIHdoaXRlc3BhY2UsIHB1bmN0dWF0aW9uLCBvciBzb21ldGhpbmdcbiAqIGVsc2UuXG4gKlxuICogVXNlZCBmb3IgYXR0ZW50aW9uIChlbXBoYXNpcywgc3Ryb25nKSwgd2hvc2Ugc2VxdWVuY2VzIGNhbiBvcGVuIG9yIGNsb3NlXG4gKiBiYXNlZCBvbiB0aGUgY2xhc3Mgb2Ygc3Vycm91bmRpbmcgY2hhcmFjdGVycy5cbiAqXG4gKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogZW9mIChgbnVsbGApIGlzIHNlZW4gYXMgd2hpdGVzcGFjZS5cbiAqXG4gKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zIHt0eXBlb2YgY29uc3RhbnRzLmNoYXJhY3Rlckdyb3VwV2hpdGVzcGFjZSB8IHR5cGVvZiBjb25zdGFudHMuY2hhcmFjdGVyR3JvdXBQdW5jdHVhdGlvbiB8IHVuZGVmaW5lZH1cbiAqICAgR3JvdXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGFzc2lmeUNoYXJhY3Rlcihjb2RlKSB7XG4gIGlmIChcbiAgICBjb2RlID09PSBudWxsIHx8XG4gICAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKSB8fFxuICAgIHVuaWNvZGVXaGl0ZXNwYWNlKGNvZGUpXG4gICkge1xuICAgIHJldHVybiAxXG4gIH1cbiAgaWYgKHVuaWNvZGVQdW5jdHVhdGlvbihjb2RlKSkge1xuICAgIHJldHVybiAyXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXZlbnR9IEV2ZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICovXG5cbi8qKlxuICogQ2FsbCBhbGwgYHJlc29sdmVBbGxgcy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PHtyZXNvbHZlQWxsPzogUmVzb2x2ZXIgfCB1bmRlZmluZWR9Pn0gY29uc3RydWN0c1xuICogICBMaXN0IG9mIGNvbnN0cnVjdHMsIG9wdGlvbmFsbHkgd2l0aCBgcmVzb2x2ZUFsbGBzLlxuICogQHBhcmFtIHtBcnJheTxFdmVudD59IGV2ZW50c1xuICogICBMaXN0IG9mIGV2ZW50cy5cbiAqIEBwYXJhbSB7VG9rZW5pemVDb250ZXh0fSBjb250ZXh0XG4gKiAgIENvbnRleHQgdXNlZCBieSBgdG9rZW5pemVgLlxuICogQHJldHVybnMge0FycmF5PEV2ZW50Pn1cbiAqICAgQ2hhbmdlZCBldmVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQWxsKGNvbnN0cnVjdHMsIGV2ZW50cywgY29udGV4dCkge1xuICAvKiogQHR5cGUge0FycmF5PFJlc29sdmVyPn0gKi9cbiAgY29uc3QgY2FsbGVkID0gW11cbiAgbGV0IGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IGNvbnN0cnVjdHMubGVuZ3RoKSB7XG4gICAgY29uc3QgcmVzb2x2ZSA9IGNvbnN0cnVjdHNbaW5kZXhdLnJlc29sdmVBbGxcblxuICAgIGlmIChyZXNvbHZlICYmICFjYWxsZWQuaW5jbHVkZXMocmVzb2x2ZSkpIHtcbiAgICAgIGV2ZW50cyA9IHJlc29sdmUoZXZlbnRzLCBjb250ZXh0KVxuICAgICAgY2FsbGVkLnB1c2gocmVzb2x2ZSlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXZlbnRzXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXZlbnR9IEV2ZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VufSBUb2tlblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7cHVzaCwgc3BsaWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaHVua2VkJ1xuaW1wb3J0IHtjbGFzc2lmeUNoYXJhY3Rlcn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2xhc3NpZnktY2hhcmFjdGVyJ1xuaW1wb3J0IHtyZXNvbHZlQWxsfSBmcm9tICdtaWNyb21hcmstdXRpbC1yZXNvbHZlLWFsbCdcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGF0dGVudGlvbiA9IHtcbiAgbmFtZTogJ2F0dGVudGlvbicsXG4gIHRva2VuaXplOiB0b2tlbml6ZUF0dGVudGlvbixcbiAgcmVzb2x2ZUFsbDogcmVzb2x2ZUFsbEF0dGVudGlvblxufVxuXG4vKipcbiAqIFRha2UgYWxsIGV2ZW50cyBhbmQgcmVzb2x2ZSBhdHRlbnRpb24gdG8gZW1waGFzaXMgb3Igc3Ryb25nLlxuICpcbiAqIEB0eXBlIHtSZXNvbHZlcn1cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUFsbEF0dGVudGlvbihldmVudHMsIGNvbnRleHQpIHtcbiAgbGV0IGluZGV4ID0gLTFcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBvcGVuXG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCBncm91cFxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgdGV4dFxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgb3BlbmluZ1NlcXVlbmNlXG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCBjbG9zaW5nU2VxdWVuY2VcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCB1c2VcbiAgLyoqIEB0eXBlIHtBcnJheTxFdmVudD59ICovXG4gIGxldCBuZXh0RXZlbnRzXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgb2Zmc2V0XG5cbiAgLy8gV2FsayB0aHJvdWdoIGFsbCBldmVudHMuXG4gIC8vXG4gIC8vIE5vdGU6IHBlcmZvcm1hbmNlIG9mIHRoaXMgaXMgZmluZSBvbiBhbiBtYiBvZiBub3JtYWwgbWFya2Rvd24sIGJ1dCBpdFx1MjAxOXNcbiAgLy8gYSBib3R0bGVuZWNrIGZvciBtYWxpY2lvdXMgc3R1ZmYuXG4gIHdoaWxlICgrK2luZGV4IDwgZXZlbnRzLmxlbmd0aCkge1xuICAgIC8vIEZpbmQgYSB0b2tlbiB0aGF0IGNhbiBjbG9zZS5cbiAgICBpZiAoXG4gICAgICBldmVudHNbaW5kZXhdWzBdID09PSAnZW50ZXInICYmXG4gICAgICBldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdhdHRlbnRpb25TZXF1ZW5jZScgJiZcbiAgICAgIGV2ZW50c1tpbmRleF1bMV0uX2Nsb3NlXG4gICAgKSB7XG4gICAgICBvcGVuID0gaW5kZXhcblxuICAgICAgLy8gTm93IHdhbGsgYmFjayB0byBmaW5kIGFuIG9wZW5lci5cbiAgICAgIHdoaWxlIChvcGVuLS0pIHtcbiAgICAgICAgLy8gRmluZCBhIHRva2VuIHRoYXQgY2FuIG9wZW4gdGhlIGNsb3Nlci5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV2ZW50c1tvcGVuXVswXSA9PT0gJ2V4aXQnICYmXG4gICAgICAgICAgZXZlbnRzW29wZW5dWzFdLnR5cGUgPT09ICdhdHRlbnRpb25TZXF1ZW5jZScgJiZcbiAgICAgICAgICBldmVudHNbb3Blbl1bMV0uX29wZW4gJiZcbiAgICAgICAgICAvLyBJZiB0aGUgbWFya2VycyBhcmUgdGhlIHNhbWU6XG4gICAgICAgICAgY29udGV4dC5zbGljZVNlcmlhbGl6ZShldmVudHNbb3Blbl1bMV0pLmNoYXJDb2RlQXQoMCkgPT09XG4gICAgICAgICAgICBjb250ZXh0LnNsaWNlU2VyaWFsaXplKGV2ZW50c1tpbmRleF1bMV0pLmNoYXJDb2RlQXQoMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIG9wZW5pbmcgY2FuIGNsb3NlIG9yIHRoZSBjbG9zaW5nIGNhbiBvcGVuLFxuICAgICAgICAgIC8vIGFuZCB0aGUgY2xvc2Ugc2l6ZSAqaXMgbm90KiBhIG11bHRpcGxlIG9mIHRocmVlLFxuICAgICAgICAgIC8vIGJ1dCB0aGUgc3VtIG9mIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIHNpemUgKmlzKiBtdWx0aXBsZSBvZiB0aHJlZSxcbiAgICAgICAgICAvLyB0aGVuIGRvblx1MjAxOXQgbWF0Y2guXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgKGV2ZW50c1tvcGVuXVsxXS5fY2xvc2UgfHwgZXZlbnRzW2luZGV4XVsxXS5fb3BlbikgJiZcbiAgICAgICAgICAgIChldmVudHNbaW5kZXhdWzFdLmVuZC5vZmZzZXQgLSBldmVudHNbaW5kZXhdWzFdLnN0YXJ0Lm9mZnNldCkgJSAzICYmXG4gICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAoZXZlbnRzW29wZW5dWzFdLmVuZC5vZmZzZXQgLVxuICAgICAgICAgICAgICAgIGV2ZW50c1tvcGVuXVsxXS5zdGFydC5vZmZzZXQgK1xuICAgICAgICAgICAgICAgIGV2ZW50c1tpbmRleF1bMV0uZW5kLm9mZnNldCAtXG4gICAgICAgICAgICAgICAgZXZlbnRzW2luZGV4XVsxXS5zdGFydC5vZmZzZXQpICVcbiAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBOdW1iZXIgb2YgbWFya2VycyB0byB1c2UgZnJvbSB0aGUgc2VxdWVuY2UuXG4gICAgICAgICAgdXNlID1cbiAgICAgICAgICAgIGV2ZW50c1tvcGVuXVsxXS5lbmQub2Zmc2V0IC0gZXZlbnRzW29wZW5dWzFdLnN0YXJ0Lm9mZnNldCA+IDEgJiZcbiAgICAgICAgICAgIGV2ZW50c1tpbmRleF1bMV0uZW5kLm9mZnNldCAtIGV2ZW50c1tpbmRleF1bMV0uc3RhcnQub2Zmc2V0ID4gMVxuICAgICAgICAgICAgICA/IDJcbiAgICAgICAgICAgICAgOiAxXG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbb3Blbl1bMV0uZW5kKVxuICAgICAgICAgIGNvbnN0IGVuZCA9IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tpbmRleF1bMV0uc3RhcnQpXG4gICAgICAgICAgbW92ZVBvaW50KHN0YXJ0LCAtdXNlKVxuICAgICAgICAgIG1vdmVQb2ludChlbmQsIHVzZSlcbiAgICAgICAgICBvcGVuaW5nU2VxdWVuY2UgPSB7XG4gICAgICAgICAgICB0eXBlOiB1c2UgPiAxID8gJ3N0cm9uZ1NlcXVlbmNlJyA6ICdlbXBoYXNpc1NlcXVlbmNlJyxcbiAgICAgICAgICAgIHN0YXJ0LFxuICAgICAgICAgICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbb3Blbl1bMV0uZW5kKVxuICAgICAgICAgIH1cbiAgICAgICAgICBjbG9zaW5nU2VxdWVuY2UgPSB7XG4gICAgICAgICAgICB0eXBlOiB1c2UgPiAxID8gJ3N0cm9uZ1NlcXVlbmNlJyA6ICdlbXBoYXNpc1NlcXVlbmNlJyxcbiAgICAgICAgICAgIHN0YXJ0OiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbaW5kZXhdWzFdLnN0YXJ0KSxcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIH1cbiAgICAgICAgICB0ZXh0ID0ge1xuICAgICAgICAgICAgdHlwZTogdXNlID4gMSA/ICdzdHJvbmdUZXh0JyA6ICdlbXBoYXNpc1RleHQnLFxuICAgICAgICAgICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tvcGVuXVsxXS5lbmQpLFxuICAgICAgICAgICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbaW5kZXhdWzFdLnN0YXJ0KVxuICAgICAgICAgIH1cbiAgICAgICAgICBncm91cCA9IHtcbiAgICAgICAgICAgIHR5cGU6IHVzZSA+IDEgPyAnc3Ryb25nJyA6ICdlbXBoYXNpcycsXG4gICAgICAgICAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgb3BlbmluZ1NlcXVlbmNlLnN0YXJ0KSxcbiAgICAgICAgICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgY2xvc2luZ1NlcXVlbmNlLmVuZClcbiAgICAgICAgICB9XG4gICAgICAgICAgZXZlbnRzW29wZW5dWzFdLmVuZCA9IE9iamVjdC5hc3NpZ24oe30sIG9wZW5pbmdTZXF1ZW5jZS5zdGFydClcbiAgICAgICAgICBldmVudHNbaW5kZXhdWzFdLnN0YXJ0ID0gT2JqZWN0LmFzc2lnbih7fSwgY2xvc2luZ1NlcXVlbmNlLmVuZClcbiAgICAgICAgICBuZXh0RXZlbnRzID0gW11cblxuICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBtb3JlIG1hcmtlcnMgaW4gdGhlIG9wZW5pbmcsIGFkZCB0aGVtIGJlZm9yZS5cbiAgICAgICAgICBpZiAoZXZlbnRzW29wZW5dWzFdLmVuZC5vZmZzZXQgLSBldmVudHNbb3Blbl1bMV0uc3RhcnQub2Zmc2V0KSB7XG4gICAgICAgICAgICBuZXh0RXZlbnRzID0gcHVzaChuZXh0RXZlbnRzLCBbXG4gICAgICAgICAgICAgIFsnZW50ZXInLCBldmVudHNbb3Blbl1bMV0sIGNvbnRleHRdLFxuICAgICAgICAgICAgICBbJ2V4aXQnLCBldmVudHNbb3Blbl1bMV0sIGNvbnRleHRdXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE9wZW5pbmcuXG4gICAgICAgICAgbmV4dEV2ZW50cyA9IHB1c2gobmV4dEV2ZW50cywgW1xuICAgICAgICAgICAgWydlbnRlcicsIGdyb3VwLCBjb250ZXh0XSxcbiAgICAgICAgICAgIFsnZW50ZXInLCBvcGVuaW5nU2VxdWVuY2UsIGNvbnRleHRdLFxuICAgICAgICAgICAgWydleGl0Jywgb3BlbmluZ1NlcXVlbmNlLCBjb250ZXh0XSxcbiAgICAgICAgICAgIFsnZW50ZXInLCB0ZXh0LCBjb250ZXh0XVxuICAgICAgICAgIF0pXG5cbiAgICAgICAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gICAgICAgICAgLy8gQmV0d2Vlbi5cbiAgICAgICAgICBuZXh0RXZlbnRzID0gcHVzaChcbiAgICAgICAgICAgIG5leHRFdmVudHMsXG4gICAgICAgICAgICByZXNvbHZlQWxsKFxuICAgICAgICAgICAgICBjb250ZXh0LnBhcnNlci5jb25zdHJ1Y3RzLmluc2lkZVNwYW4ubnVsbCxcbiAgICAgICAgICAgICAgZXZlbnRzLnNsaWNlKG9wZW4gKyAxLCBpbmRleCksXG4gICAgICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG5cbiAgICAgICAgICAvLyBDbG9zaW5nLlxuICAgICAgICAgIG5leHRFdmVudHMgPSBwdXNoKG5leHRFdmVudHMsIFtcbiAgICAgICAgICAgIFsnZXhpdCcsIHRleHQsIGNvbnRleHRdLFxuICAgICAgICAgICAgWydlbnRlcicsIGNsb3NpbmdTZXF1ZW5jZSwgY29udGV4dF0sXG4gICAgICAgICAgICBbJ2V4aXQnLCBjbG9zaW5nU2VxdWVuY2UsIGNvbnRleHRdLFxuICAgICAgICAgICAgWydleGl0JywgZ3JvdXAsIGNvbnRleHRdXG4gICAgICAgICAgXSlcblxuICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBtb3JlIG1hcmtlcnMgaW4gdGhlIGNsb3NpbmcsIGFkZCB0aGVtIGFmdGVyLlxuICAgICAgICAgIGlmIChldmVudHNbaW5kZXhdWzFdLmVuZC5vZmZzZXQgLSBldmVudHNbaW5kZXhdWzFdLnN0YXJ0Lm9mZnNldCkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMlxuICAgICAgICAgICAgbmV4dEV2ZW50cyA9IHB1c2gobmV4dEV2ZW50cywgW1xuICAgICAgICAgICAgICBbJ2VudGVyJywgZXZlbnRzW2luZGV4XVsxXSwgY29udGV4dF0sXG4gICAgICAgICAgICAgIFsnZXhpdCcsIGV2ZW50c1tpbmRleF1bMV0sIGNvbnRleHRdXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwXG4gICAgICAgICAgfVxuICAgICAgICAgIHNwbGljZShldmVudHMsIG9wZW4gLSAxLCBpbmRleCAtIG9wZW4gKyAzLCBuZXh0RXZlbnRzKVxuICAgICAgICAgIGluZGV4ID0gb3BlbiArIG5leHRFdmVudHMubGVuZ3RoIC0gb2Zmc2V0IC0gMlxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmUgcmVtYWluaW5nIHNlcXVlbmNlcy5cbiAgaW5kZXggPSAtMVxuICB3aGlsZSAoKytpbmRleCA8IGV2ZW50cy5sZW5ndGgpIHtcbiAgICBpZiAoZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnYXR0ZW50aW9uU2VxdWVuY2UnKSB7XG4gICAgICBldmVudHNbaW5kZXhdWzFdLnR5cGUgPSAnZGF0YSdcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGV2ZW50c1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUF0dGVudGlvbihlZmZlY3RzLCBvaykge1xuICBjb25zdCBhdHRlbnRpb25NYXJrZXJzID0gdGhpcy5wYXJzZXIuY29uc3RydWN0cy5hdHRlbnRpb25NYXJrZXJzLm51bGxcbiAgY29uc3QgcHJldmlvdXMgPSB0aGlzLnByZXZpb3VzXG4gIGNvbnN0IGJlZm9yZSA9IGNsYXNzaWZ5Q2hhcmFjdGVyKHByZXZpb3VzKVxuXG4gIC8qKiBAdHlwZSB7Tm9uTnVsbGFibGU8Q29kZT59ICovXG4gIGxldCBtYXJrZXJcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIEJlZm9yZSBhIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgKipcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBtYXJrZXIgPSBjb2RlXG4gICAgZWZmZWN0cy5lbnRlcignYXR0ZW50aW9uU2VxdWVuY2UnKVxuICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgKipcbiAgICogICAgIF5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluc2lkZVxuICAgIH1cbiAgICBjb25zdCB0b2tlbiA9IGVmZmVjdHMuZXhpdCgnYXR0ZW50aW9uU2VxdWVuY2UnKVxuXG4gICAgLy8gVG8gZG86IG5leHQgbWFqb3I6IG1vdmUgdGhpcyB0byByZXNvbHZlciwganVzdCBsaWtlIGBtYXJrZG93bi1yc2AuXG4gICAgY29uc3QgYWZ0ZXIgPSBjbGFzc2lmeUNoYXJhY3Rlcihjb2RlKVxuXG4gICAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICAgIGNvbnN0IG9wZW4gPVxuICAgICAgIWFmdGVyIHx8IChhZnRlciA9PT0gMiAmJiBiZWZvcmUpIHx8IGF0dGVudGlvbk1hcmtlcnMuaW5jbHVkZXMoY29kZSlcbiAgICBjb25zdCBjbG9zZSA9XG4gICAgICAhYmVmb3JlIHx8IChiZWZvcmUgPT09IDIgJiYgYWZ0ZXIpIHx8IGF0dGVudGlvbk1hcmtlcnMuaW5jbHVkZXMocHJldmlvdXMpXG4gICAgdG9rZW4uX29wZW4gPSBCb29sZWFuKG1hcmtlciA9PT0gNDIgPyBvcGVuIDogb3BlbiAmJiAoYmVmb3JlIHx8ICFjbG9zZSkpXG4gICAgdG9rZW4uX2Nsb3NlID0gQm9vbGVhbihtYXJrZXIgPT09IDQyID8gY2xvc2UgOiBjbG9zZSAmJiAoYWZ0ZXIgfHwgIW9wZW4pKVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogTW92ZSBhIHBvaW50IGEgYml0LlxuICpcbiAqIE5vdGU6IGBtb3ZlYCBvbmx5IHdvcmtzIGluc2lkZSBsaW5lcyEgSXRcdTIwMTlzIG5vdCBwb3NzaWJsZSB0byBtb3ZlIHBhc3Qgb3RoZXJcbiAqIGNodW5rcyAocmVwbGFjZW1lbnQgY2hhcmFjdGVycywgdGFicywgb3IgbGluZSBlbmRpbmdzKS5cbiAqXG4gKiBAcGFyYW0ge1BvaW50fSBwb2ludFxuICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldFxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIG1vdmVQb2ludChwb2ludCwgb2Zmc2V0KSB7XG4gIHBvaW50LmNvbHVtbiArPSBvZmZzZXRcbiAgcG9pbnQub2Zmc2V0ICs9IG9mZnNldFxuICBwb2ludC5fYnVmZmVySW5kZXggKz0gb2Zmc2V0XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7XG4gIGFzY2lpQWxwaGEsXG4gIGFzY2lpQWxwaGFudW1lcmljLFxuICBhc2NpaUF0ZXh0LFxuICBhc2NpaUNvbnRyb2xcbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgYXV0b2xpbmsgPSB7XG4gIG5hbWU6ICdhdXRvbGluaycsXG4gIHRva2VuaXplOiB0b2tlbml6ZUF1dG9saW5rXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQXV0b2xpbmsoZWZmZWN0cywgb2ssIG5vaykge1xuICBsZXQgc2l6ZSA9IDBcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGFuIGF1dG9saW5rLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTxodHRwczovL2V4YW1wbGUuY29tPmJcbiAgICogICAgICBeXG4gICAqID4gfCBhPHVzZXJAZXhhbXBsZS5jb20+YlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdhdXRvbGluaycpXG4gICAgZWZmZWN0cy5lbnRlcignYXV0b2xpbmtNYXJrZXInKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnYXV0b2xpbmtNYXJrZXInKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2F1dG9saW5rUHJvdG9jb2wnKVxuICAgIHJldHVybiBvcGVuXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDxgLCBhdCBwcm90b2NvbCBvciBhdGV4dC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8aHR0cHM6Ly9leGFtcGxlLmNvbT5iXG4gICAqICAgICAgIF5cbiAgICogPiB8IGE8dXNlckBleGFtcGxlLmNvbT5iXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9wZW4oY29kZSkge1xuICAgIGlmIChhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBzY2hlbWVPckVtYWlsQXRleHRcbiAgICB9XG4gICAgcmV0dXJuIGVtYWlsQXRleHQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBzZWNvbmQgYnl0ZSBvZiBwcm90b2NvbCBvciBhdGV4dC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8aHR0cHM6Ly9leGFtcGxlLmNvbT5iXG4gICAqICAgICAgICBeXG4gICAqID4gfCBhPHVzZXJAZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc2NoZW1lT3JFbWFpbEF0ZXh0KGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWMgYW5kIGArYCwgYC1gLCBhbmQgYC5gLlxuICAgIGlmIChjb2RlID09PSA0MyB8fCBjb2RlID09PSA0NSB8fCBjb2RlID09PSA0NiB8fCBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKSkge1xuICAgICAgLy8gQ291bnQgdGhlIHByZXZpb3VzIGFscGhhYmV0aWNhbCBmcm9tIGBvcGVuYCB0b28uXG4gICAgICBzaXplID0gMVxuICAgICAgcmV0dXJuIHNjaGVtZUluc2lkZU9yRW1haWxBdGV4dChjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gZW1haWxBdGV4dChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGFtYmlndW91cyBwcm90b2NvbCBvciBhdGV4dC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8aHR0cHM6Ly9leGFtcGxlLmNvbT5iXG4gICAqICAgICAgICBeXG4gICAqID4gfCBhPHVzZXJAZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc2NoZW1lSW5zaWRlT3JFbWFpbEF0ZXh0KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNTgpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgc2l6ZSA9IDBcbiAgICAgIHJldHVybiB1cmxJbnNpZGVcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWMgYW5kIGArYCwgYC1gLCBhbmQgYC5gLlxuICAgIGlmIChcbiAgICAgIChjb2RlID09PSA0MyB8fCBjb2RlID09PSA0NSB8fCBjb2RlID09PSA0NiB8fCBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKSkgJiZcbiAgICAgIHNpemUrKyA8IDMyXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBzY2hlbWVJbnNpZGVPckVtYWlsQXRleHRcbiAgICB9XG4gICAgc2l6ZSA9IDBcbiAgICByZXR1cm4gZW1haWxBdGV4dChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIHByb3RvY29sLCBpbiBVUkwuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhPGh0dHBzOi8vZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB1cmxJbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2Mikge1xuICAgICAgZWZmZWN0cy5leGl0KCdhdXRvbGlua1Byb3RvY29sJylcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2F1dG9saW5rTWFya2VyJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdhdXRvbGlua01hcmtlcicpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2F1dG9saW5rJylcbiAgICAgIHJldHVybiBva1xuICAgIH1cblxuICAgIC8vIEFTQ0lJIGNvbnRyb2wsIHNwYWNlLCBvciBgPGAuXG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgY29kZSA9PT0gMzIgfHwgY29kZSA9PT0gNjAgfHwgYXNjaWlDb250cm9sKGNvZGUpKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiB1cmxJbnNpZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBlbWFpbCBhdGV4dC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8dXNlci5uYW1lQGV4YW1wbGUuY29tPmJcbiAgICogICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVtYWlsQXRleHQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2NCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZW1haWxBdFNpZ25PckRvdFxuICAgIH1cbiAgICBpZiAoYXNjaWlBdGV4dChjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZW1haWxBdGV4dFxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gbGFiZWwsIGFmdGVyIGF0LXNpZ24gb3IgZG90LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTx1c2VyLm5hbWVAZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICAgICAgICAgICAgXiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbWFpbEF0U2lnbk9yRG90KGNvZGUpIHtcbiAgICByZXR1cm4gYXNjaWlBbHBoYW51bWVyaWMoY29kZSkgPyBlbWFpbExhYmVsKGNvZGUpIDogbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gbGFiZWwsIHdoZXJlIGAuYCBhbmQgYD5gIGFyZSBhbGxvd2VkLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTx1c2VyLm5hbWVAZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbWFpbExhYmVsKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDYpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgc2l6ZSA9IDBcbiAgICAgIHJldHVybiBlbWFpbEF0U2lnbk9yRG90XG4gICAgfVxuICAgIGlmIChjb2RlID09PSA2Mikge1xuICAgICAgLy8gRXhpdCwgdGhlbiBjaGFuZ2UgdGhlIHRva2VuIHR5cGUuXG4gICAgICBlZmZlY3RzLmV4aXQoJ2F1dG9saW5rUHJvdG9jb2wnKS50eXBlID0gJ2F1dG9saW5rRW1haWwnXG4gICAgICBlZmZlY3RzLmVudGVyKCdhdXRvbGlua01hcmtlcicpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnYXV0b2xpbmtNYXJrZXInKVxuICAgICAgZWZmZWN0cy5leGl0KCdhdXRvbGluaycpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG4gICAgcmV0dXJuIGVtYWlsVmFsdWUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBsYWJlbCwgd2hlcmUgYC5gIGFuZCBgPmAgYXJlICpub3QqIGFsbG93ZWQuXG4gICAqXG4gICAqIFRob3VnaCwgdGhpcyBpcyBhbHNvIHVzZWQgaW4gYGVtYWlsTGFiZWxgIHRvIHBhcnNlIG90aGVyIHZhbHVlcy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8dXNlci5uYW1lQGV4LWFtcGxlLmNvbT5iXG4gICAqICAgICAgICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbWFpbFZhbHVlKGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWMgb3IgYC1gLlxuICAgIGlmICgoY29kZSA9PT0gNDUgfHwgYXNjaWlBbHBoYW51bWVyaWMoY29kZSkpICYmIHNpemUrKyA8IDYzKSB7XG4gICAgICBjb25zdCBuZXh0ID0gY29kZSA9PT0gNDUgPyBlbWFpbFZhbHVlIDogZW1haWxMYWJlbFxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gbmV4dFxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGJsYW5rTGluZSA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplQmxhbmtMaW5lLFxuICBwYXJ0aWFsOiB0cnVlXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQmxhbmtMaW5lKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGJsYW5rIGxpbmUuXG4gICAqXG4gICAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiBgXHUyNDIwYCByZXByZXNlbnRzIGEgc3BhY2UgY2hhcmFjdGVyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgXHUyNDIwXHUyNDIwXHUyNDBBXG4gICAqICAgICBeXG4gICAqID4gfCBcdTI0MEFcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoZWZmZWN0cywgYWZ0ZXIsICdsaW5lUHJlZml4JykoY29kZSlcbiAgICAgIDogYWZ0ZXIoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBlb2YvZW9sLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogYFx1MjQyMGAgcmVwcmVzZW50cyBhIHNwYWNlIGNoYXJhY3Rlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFx1MjQyMFx1MjQyMFx1MjQwQVxuICAgKiAgICAgICBeXG4gICAqID4gfCBcdTI0MEFcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICByZXR1cm4gY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkgPyBvayhjb2RlKSA6IG5vayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV4aXRlcn0gRXhpdGVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgYmxvY2tRdW90ZSA9IHtcbiAgbmFtZTogJ2Jsb2NrUXVvdGUnLFxuICB0b2tlbml6ZTogdG9rZW5pemVCbG9ja1F1b3RlU3RhcnQsXG4gIGNvbnRpbnVhdGlvbjoge1xuICAgIHRva2VuaXplOiB0b2tlbml6ZUJsb2NrUXVvdGVDb250aW51YXRpb25cbiAgfSxcbiAgZXhpdFxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUJsb2NrUXVvdGVTdGFydChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBibG9jayBxdW90ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ID4gYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2Mikge1xuICAgICAgY29uc3Qgc3RhdGUgPSBzZWxmLmNvbnRhaW5lclN0YXRlXG4gICAgICBpZiAoIXN0YXRlLm9wZW4pIHtcbiAgICAgICAgZWZmZWN0cy5lbnRlcignYmxvY2tRdW90ZScsIHtcbiAgICAgICAgICBfY29udGFpbmVyOiB0cnVlXG4gICAgICAgIH0pXG4gICAgICAgIHN0YXRlLm9wZW4gPSB0cnVlXG4gICAgICB9XG4gICAgICBlZmZlY3RzLmVudGVyKCdibG9ja1F1b3RlUHJlZml4JylcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2Jsb2NrUXVvdGVNYXJrZXInKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2Jsb2NrUXVvdGVNYXJrZXInKVxuICAgICAgcmV0dXJuIGFmdGVyXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPmAsIGJlZm9yZSBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPiBhXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdibG9ja1F1b3RlUHJlZml4V2hpdGVzcGFjZScpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnYmxvY2tRdW90ZVByZWZpeFdoaXRlc3BhY2UnKVxuICAgICAgZWZmZWN0cy5leGl0KCdibG9ja1F1b3RlUHJlZml4JylcbiAgICAgIHJldHVybiBva1xuICAgIH1cbiAgICBlZmZlY3RzLmV4aXQoJ2Jsb2NrUXVvdGVQcmVmaXgnKVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogU3RhcnQgb2YgYmxvY2sgcXVvdGUgY29udGludWF0aW9uLlxuICpcbiAqIGBgYG1hcmtkb3duXG4gKiAgIHwgPiBhXG4gKiA+IHwgPiBiXG4gKiAgICAgXlxuICogYGBgXG4gKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQmxvY2tRdW90ZUNvbnRpbnVhdGlvbihlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHJldHVybiBjb250U3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgYmxvY2sgcXVvdGUgY29udGludWF0aW9uLlxuICAgKlxuICAgKiBBbHNvIHVzZWQgdG8gcGFyc2UgdGhlIGZpcnN0IGJsb2NrIHF1b3RlIG9wZW5pbmcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCA+IGFcbiAgICogPiB8ID4gYlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udFN0YXJ0KGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICAgICAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgY29udEJlZm9yZSxcbiAgICAgICAgJ2xpbmVQcmVmaXgnLFxuICAgICAgICBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJylcbiAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgIDogNFxuICAgICAgKShjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gY29udEJlZm9yZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IGA+YCwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogQWxzbyB1c2VkIHRvIHBhcnNlIHRoZSBmaXJzdCBibG9jayBxdW90ZSBvcGVuaW5nLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgPiBhXG4gICAqID4gfCA+IGJcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRCZWZvcmUoY29kZSkge1xuICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoYmxvY2tRdW90ZSwgb2ssIG5vaykoY29kZSlcbiAgfVxufVxuXG4vKiogQHR5cGUge0V4aXRlcn0gKi9cbmZ1bmN0aW9uIGV4aXQoZWZmZWN0cykge1xuICBlZmZlY3RzLmV4aXQoJ2Jsb2NrUXVvdGUnKVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2FzY2lpUHVuY3R1YXRpb259IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckVzY2FwZSA9IHtcbiAgbmFtZTogJ2NoYXJhY3RlckVzY2FwZScsXG4gIHRva2VuaXplOiB0b2tlbml6ZUNoYXJhY3RlckVzY2FwZVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUNoYXJhY3RlckVzY2FwZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBjaGFyYWN0ZXIgZXNjYXBlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYVxcKmJcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignY2hhcmFjdGVyRXNjYXBlJylcbiAgICBlZmZlY3RzLmVudGVyKCdlc2NhcGVNYXJrZXInKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnZXNjYXBlTWFya2VyJylcbiAgICByZXR1cm4gaW5zaWRlXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgcHVuY3R1YXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhXFwqYlxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIC8vIEFTQ0lJIHB1bmN0dWF0aW9uLlxuICAgIGlmIChhc2NpaVB1bmN0dWF0aW9uKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdjaGFyYWN0ZXJFc2NhcGVWYWx1ZScpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2hhcmFjdGVyRXNjYXBlVmFsdWUnKVxuICAgICAgZWZmZWN0cy5leGl0KCdjaGFyYWN0ZXJFc2NhcGUnKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuIiwgIi8vLyA8cmVmZXJlbmNlIGxpYj1cImRvbVwiIC8+XG5cbi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG5jb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaScpXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJucyB7c3RyaW5nfGZhbHNlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2UodmFsdWUpIHtcbiAgY29uc3QgY2hhcmFjdGVyUmVmZXJlbmNlID0gJyYnICsgdmFsdWUgKyAnOydcbiAgZWxlbWVudC5pbm5lckhUTUwgPSBjaGFyYWN0ZXJSZWZlcmVuY2VcbiAgY29uc3QgY2hhciA9IGVsZW1lbnQudGV4dENvbnRlbnRcblxuICAvLyBTb21lIG5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIGRvIG5vdCByZXF1aXJlIHRoZSBjbG9zaW5nIHNlbWljb2xvblxuICAvLyAoYCZub3RgLCBmb3IgaW5zdGFuY2UpLCB3aGljaCBsZWFkcyB0byBzaXR1YXRpb25zIHdoZXJlIHBhcnNpbmcgdGhlIGFzc3VtZWRcbiAgLy8gbmFtZWQgcmVmZXJlbmNlIG9mIGAmbm90aXQ7YCB3aWxsIHJlc3VsdCBpbiB0aGUgc3RyaW5nIGBcdTAwQUNpdDtgLlxuICAvLyBXaGVuIHdlIGVuY291bnRlciBhIHRyYWlsaW5nIHNlbWljb2xvbiBhZnRlciBwYXJzaW5nLCBhbmQgdGhlIGNoYXJhY3RlclxuICAvLyByZWZlcmVuY2UgdG8gZGVjb2RlIHdhcyBub3QgYSBzZW1pY29sb24gKGAmc2VtaTtgKSwgd2UgY2FuIGFzc3VtZSB0aGF0IHRoZVxuICAvLyBtYXRjaGluZyB3YXMgbm90IGNvbXBsZXRlLlxuICAvLyBAdHMtZXhwZWN0LWVycm9yOiBUeXBlU2NyaXB0IGlzIHdyb25nIHRoYXQgYHRleHRDb250ZW50YCBvbiBlbGVtZW50cyBjYW5cbiAgLy8geWllbGQgYG51bGxgLlxuICBpZiAoY2hhci5jaGFyQ29kZUF0KGNoYXIubGVuZ3RoIC0gMSkgPT09IDU5IC8qIGA7YCAqLyAmJiB2YWx1ZSAhPT0gJ3NlbWknKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBJZiB0aGUgZGVjb2RlZCBzdHJpbmcgaXMgZXF1YWwgdG8gdGhlIGlucHV0LCB0aGUgY2hhcmFjdGVyIHJlZmVyZW5jZSB3YXNcbiAgLy8gbm90IHZhbGlkLlxuICAvLyBAdHMtZXhwZWN0LWVycm9yOiBUeXBlU2NyaXB0IGlzIHdyb25nIHRoYXQgYHRleHRDb250ZW50YCBvbiBlbGVtZW50cyBjYW5cbiAgLy8geWllbGQgYG51bGxgLlxuICByZXR1cm4gY2hhciA9PT0gY2hhcmFjdGVyUmVmZXJlbmNlID8gZmFsc2UgOiBjaGFyXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtkZWNvZGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZX0gZnJvbSAnZGVjb2RlLW5hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2UnXG5pbXBvcnQge1xuICBhc2NpaUFscGhhbnVtZXJpYyxcbiAgYXNjaWlEaWdpdCxcbiAgYXNjaWlIZXhEaWdpdFxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBjaGFyYWN0ZXJSZWZlcmVuY2UgPSB7XG4gIG5hbWU6ICdjaGFyYWN0ZXJSZWZlcmVuY2UnLFxuICB0b2tlbml6ZTogdG9rZW5pemVDaGFyYWN0ZXJSZWZlcmVuY2Vcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDaGFyYWN0ZXJSZWZlcmVuY2UoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICBsZXQgc2l6ZSA9IDBcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBtYXhcbiAgLyoqIEB0eXBlIHsoY29kZTogQ29kZSkgPT4gYm9vbGVhbn0gKi9cbiAgbGV0IHRlc3RcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGNoYXJhY3RlciByZWZlcmVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhJmFtcDtiXG4gICAqICAgICAgXlxuICAgKiA+IHwgYSYjMTIzO2JcbiAgICogICAgICBeXG4gICAqID4gfCBhJiN4OTtiXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2NoYXJhY3RlclJlZmVyZW5jZScpXG4gICAgZWZmZWN0cy5lbnRlcignY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2NoYXJhY3RlclJlZmVyZW5jZU1hcmtlcicpXG4gICAgcmV0dXJuIG9wZW5cbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgJmAsIGF0IGAjYCBmb3IgbnVtZXJpYyByZWZlcmVuY2VzIG9yIGFscGhhbnVtZXJpYyBmb3IgbmFtZWRcbiAgICogcmVmZXJlbmNlcy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEmYW1wO2JcbiAgICogICAgICAgXlxuICAgKiA+IHwgYSYjMTIzO2JcbiAgICogICAgICAgXlxuICAgKiA+IHwgYSYjeDk7YlxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBvcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gMzUpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2NoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWMnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2NoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWMnKVxuICAgICAgcmV0dXJuIG51bWVyaWNcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUnKVxuICAgIG1heCA9IDMxXG4gICAgdGVzdCA9IGFzY2lpQWxwaGFudW1lcmljXG4gICAgcmV0dXJuIHZhbHVlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYCNgLCBhdCBgeGAgZm9yIGhleGFkZWNpbWFscyBvciBkaWdpdCBmb3IgZGVjaW1hbHMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhJiMxMjM7YlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgYSYjeDk7YlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbnVtZXJpYyhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDg4IHx8IGNvZGUgPT09IDEyMCkge1xuICAgICAgZWZmZWN0cy5lbnRlcignY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWwnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2NoYXJhY3RlclJlZmVyZW5jZU1hcmtlckhleGFkZWNpbWFsJylcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2NoYXJhY3RlclJlZmVyZW5jZVZhbHVlJylcbiAgICAgIG1heCA9IDZcbiAgICAgIHRlc3QgPSBhc2NpaUhleERpZ2l0XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUnKVxuICAgIG1heCA9IDdcbiAgICB0ZXN0ID0gYXNjaWlEaWdpdFxuICAgIHJldHVybiB2YWx1ZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIG1hcmtlcnMgKGAmI3hgLCBgJiNgLCBvciBgJmApLCBpbiB2YWx1ZSwgYmVmb3JlIGA7YC5cbiAgICpcbiAgICogVGhlIGNoYXJhY3RlciByZWZlcmVuY2Uga2luZCBkZWZpbmVzIHdoYXQgYW5kIGhvdyBtYW55IGNoYXJhY3RlcnMgYXJlXG4gICAqIGFsbG93ZWQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhJmFtcDtiXG4gICAqICAgICAgIF5eXlxuICAgKiA+IHwgYSYjMTIzO2JcbiAgICogICAgICAgIF5eXlxuICAgKiA+IHwgYSYjeDk7YlxuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHZhbHVlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNTkgJiYgc2l6ZSkge1xuICAgICAgY29uc3QgdG9rZW4gPSBlZmZlY3RzLmV4aXQoJ2NoYXJhY3RlclJlZmVyZW5jZVZhbHVlJylcbiAgICAgIGlmIChcbiAgICAgICAgdGVzdCA9PT0gYXNjaWlBbHBoYW51bWVyaWMgJiZcbiAgICAgICAgIWRlY29kZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKHNlbGYuc2xpY2VTZXJpYWxpemUodG9rZW4pKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBub2soY29kZSlcbiAgICAgIH1cblxuICAgICAgLy8gVG8gZG86IGBtYXJrZG93bi1yc2AgdXNlcyBhIGRpZmZlcmVudCBuYW1lOlxuICAgICAgLy8gYENoYXJhY3RlclJlZmVyZW5jZU1hcmtlclNlbWlgLlxuICAgICAgZWZmZWN0cy5lbnRlcignY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXInKVxuICAgICAgZWZmZWN0cy5leGl0KCdjaGFyYWN0ZXJSZWZlcmVuY2UnKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuICAgIGlmICh0ZXN0KGNvZGUpICYmIHNpemUrKyA8IG1heCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3Qgbm9uTGF6eUNvbnRpbnVhdGlvbiA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplTm9uTGF6eUNvbnRpbnVhdGlvbixcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBjb2RlRmVuY2VkID0ge1xuICBuYW1lOiAnY29kZUZlbmNlZCcsXG4gIHRva2VuaXplOiB0b2tlbml6ZUNvZGVGZW5jZWQsXG4gIGNvbmNyZXRlOiB0cnVlXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQ29kZUZlbmNlZChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuICBjb25zdCBjbG9zZVN0YXJ0ID0ge1xuICAgIHRva2VuaXplOiB0b2tlbml6ZUNsb3NlU3RhcnQsXG4gICAgcGFydGlhbDogdHJ1ZVxuICB9XG4gIGxldCBpbml0aWFsUHJlZml4ID0gMFxuICBsZXQgc2l6ZU9wZW4gPSAwXG4gIC8qKiBAdHlwZSB7Tm9uTnVsbGFibGU8Q29kZT59ICovXG4gIGxldCBtYXJrZXJcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGNvZGUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCB+fn5qc1xuICAgKiAgICAgXlxuICAgKiAgIHwgYWxlcnQoMSlcbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIC8vIFRvIGRvOiBwYXJzZSB3aGl0ZXNwYWNlIGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICByZXR1cm4gYmVmb3JlU2VxdWVuY2VPcGVuKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gb3BlbmluZyBmZW5jZSwgYWZ0ZXIgcHJlZml4LCBhdCBzZXF1ZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzXG4gICAqICAgICBeXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWZvcmVTZXF1ZW5jZU9wZW4oY29kZSkge1xuICAgIGNvbnN0IHRhaWwgPSBzZWxmLmV2ZW50c1tzZWxmLmV2ZW50cy5sZW5ndGggLSAxXVxuICAgIGluaXRpYWxQcmVmaXggPVxuICAgICAgdGFpbCAmJiB0YWlsWzFdLnR5cGUgPT09ICdsaW5lUHJlZml4J1xuICAgICAgICA/IHRhaWxbMl0uc2xpY2VTZXJpYWxpemUodGFpbFsxXSwgdHJ1ZSkubGVuZ3RoXG4gICAgICAgIDogMFxuICAgIG1hcmtlciA9IGNvZGVcbiAgICBlZmZlY3RzLmVudGVyKCdjb2RlRmVuY2VkJylcbiAgICBlZmZlY3RzLmVudGVyKCdjb2RlRmVuY2VkRmVuY2UnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVGZW5jZWRGZW5jZVNlcXVlbmNlJylcbiAgICByZXR1cm4gc2VxdWVuY2VPcGVuKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gb3BlbmluZyBmZW5jZSBzZXF1ZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzXG4gICAqICAgICAgXlxuICAgKiAgIHwgYWxlcnQoMSlcbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc2VxdWVuY2VPcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICBzaXplT3BlbisrXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBzZXF1ZW5jZU9wZW5cbiAgICB9XG4gICAgaWYgKHNpemVPcGVuIDwgMykge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmV4aXQoJ2NvZGVGZW5jZWRGZW5jZVNlcXVlbmNlJylcbiAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoZWZmZWN0cywgaW5mb0JlZm9yZSwgJ3doaXRlc3BhY2UnKShjb2RlKVxuICAgICAgOiBpbmZvQmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gb3BlbmluZyBmZW5jZSwgYWZ0ZXIgdGhlIHNlcXVlbmNlIChhbmQgb3B0aW9uYWwgd2hpdGVzcGFjZSksIGJlZm9yZSBpbmZvLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anNcbiAgICogICAgICAgIF5cbiAgICogICB8IGFsZXJ0KDEpXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluZm9CZWZvcmUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdjb2RlRmVuY2VkRmVuY2UnKVxuICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0XG4gICAgICAgID8gb2soY29kZSlcbiAgICAgICAgOiBlZmZlY3RzLmNoZWNrKG5vbkxhenlDb250aW51YXRpb24sIGF0Tm9uTGF6eUJyZWFrLCBhZnRlcikoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignY29kZUZlbmNlZEZlbmNlSW5mbycpXG4gICAgZWZmZWN0cy5lbnRlcignY2h1bmtTdHJpbmcnLCB7XG4gICAgICBjb250ZW50VHlwZTogJ3N0cmluZydcbiAgICB9KVxuICAgIHJldHVybiBpbmZvKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gaW5mby5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzXG4gICAqICAgICAgICBeXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbmZvKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtTdHJpbmcnKVxuICAgICAgZWZmZWN0cy5leGl0KCdjb2RlRmVuY2VkRmVuY2VJbmZvJylcbiAgICAgIHJldHVybiBpbmZvQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NodW5rU3RyaW5nJylcbiAgICAgIGVmZmVjdHMuZXhpdCgnY29kZUZlbmNlZEZlbmNlSW5mbycpXG4gICAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIG1ldGFCZWZvcmUsICd3aGl0ZXNwYWNlJykoY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDk2ICYmIGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gaW5mb1xuICB9XG5cbiAgLyoqXG4gICAqIEluIG9wZW5pbmcgZmVuY2UsIGFmdGVyIGluZm8gYW5kIHdoaXRlc3BhY2UsIGJlZm9yZSBtZXRhLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anMgZXZhbFxuICAgKiAgICAgICAgICAgXlxuICAgKiAgIHwgYWxlcnQoMSlcbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbWV0YUJlZm9yZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm4gaW5mb0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdjb2RlRmVuY2VkRmVuY2VNZXRhJylcbiAgICBlZmZlY3RzLmVudGVyKCdjaHVua1N0cmluZycsIHtcbiAgICAgIGNvbnRlbnRUeXBlOiAnc3RyaW5nJ1xuICAgIH0pXG4gICAgcmV0dXJuIG1ldGEoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBtZXRhLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anMgZXZhbFxuICAgKiAgICAgICAgICAgXlxuICAgKiAgIHwgYWxlcnQoMSlcbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbWV0YShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NodW5rU3RyaW5nJylcbiAgICAgIGVmZmVjdHMuZXhpdCgnY29kZUZlbmNlZEZlbmNlTWV0YScpXG4gICAgICByZXR1cm4gaW5mb0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gOTYgJiYgY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBtZXRhXG4gIH1cblxuICAvKipcbiAgICogQXQgZW9sL2VvZiBpbiBjb2RlLCBiZWZvcmUgYSBub24tbGF6eSBjbG9zaW5nIGZlbmNlIG9yIGNvbnRlbnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCB+fn5qc1xuICAgKiAgICAgICAgICBeXG4gICAqID4gfCBhbGVydCgxKVxuICAgKiAgICAgICAgICAgICBeXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGF0Tm9uTGF6eUJyZWFrKGNvZGUpIHtcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KGNsb3NlU3RhcnQsIGFmdGVyLCBjb250ZW50QmVmb3JlKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEJlZm9yZSBjb2RlIGNvbnRlbnQsIG5vdCBhIGNsb3NpbmcgZmVuY2UsIGF0IGVvbC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IH5+fmpzXG4gICAqID4gfCBhbGVydCgxKVxuICAgKiAgICAgICAgICAgICBeXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRlbnRCZWZvcmUoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgcmV0dXJuIGNvbnRlbnRTdGFydFxuICB9XG5cbiAgLyoqXG4gICAqIEJlZm9yZSBjb2RlIGNvbnRlbnQsIG5vdCBhIGNsb3NpbmcgZmVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCB+fn5qc1xuICAgKiA+IHwgYWxlcnQoMSlcbiAgICogICAgIF5cbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGVudFN0YXJ0KGNvZGUpIHtcbiAgICByZXR1cm4gaW5pdGlhbFByZWZpeCA+IDAgJiYgbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoXG4gICAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgICBiZWZvcmVDb250ZW50Q2h1bmssXG4gICAgICAgICAgJ2xpbmVQcmVmaXgnLFxuICAgICAgICAgIGluaXRpYWxQcmVmaXggKyAxXG4gICAgICAgICkoY29kZSlcbiAgICAgIDogYmVmb3JlQ29udGVudENodW5rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQmVmb3JlIGNvZGUgY29udGVudCwgYWZ0ZXIgb3B0aW9uYWwgcHJlZml4LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgfn5+anNcbiAgICogPiB8IGFsZXJ0KDEpXG4gICAqICAgICBeXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZUNvbnRlbnRDaHVuayhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhub25MYXp5Q29udGludWF0aW9uLCBhdE5vbkxhenlCcmVhaywgYWZ0ZXIpKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVGbG93VmFsdWUnKVxuICAgIHJldHVybiBjb250ZW50Q2h1bmsoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb2RlIGNvbnRlbnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCB+fn5qc1xuICAgKiA+IHwgYWxlcnQoMSlcbiAgICogICAgIF5eXl5eXl5eXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRlbnRDaHVuayhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NvZGVGbG93VmFsdWUnKVxuICAgICAgcmV0dXJuIGJlZm9yZUNvbnRlbnRDaHVuayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29udGVudENodW5rXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgY29kZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IH5+fmpzXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiA+IHwgfn5+XG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgZWZmZWN0cy5leGl0KCdjb2RlRmVuY2VkJylcbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICAgKiBAdHlwZSB7VG9rZW5pemVyfVxuICAgKi9cbiAgZnVuY3Rpb24gdG9rZW5pemVDbG9zZVN0YXJ0KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgICBsZXQgc2l6ZSA9IDBcbiAgICByZXR1cm4gc3RhcnRCZWZvcmVcblxuICAgIC8qKlxuICAgICAqXG4gICAgICpcbiAgICAgKiBAdHlwZSB7U3RhdGV9XG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhcnRCZWZvcmUoY29kZSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgICByZXR1cm4gc3RhcnRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCZWZvcmUgY2xvc2luZyBmZW5jZSwgYXQgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICAgKlxuICAgICAqIGBgYG1hcmtkb3duXG4gICAgICogICB8IH5+fmpzXG4gICAgICogICB8IGFsZXJ0KDEpXG4gICAgICogPiB8IH5+flxuICAgICAqICAgICBeXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7U3RhdGV9XG4gICAgICovXG4gICAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgICAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICAgICAgLy8gVG8gZG86IGBlbnRlcmAgaGVyZSBvciBpbiBuZXh0IHN0YXRlP1xuICAgICAgZWZmZWN0cy5lbnRlcignY29kZUZlbmNlZEZlbmNlJylcbiAgICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICAgID8gZmFjdG9yeVNwYWNlKFxuICAgICAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgICAgIGJlZm9yZVNlcXVlbmNlQ2xvc2UsXG4gICAgICAgICAgICAnbGluZVByZWZpeCcsXG4gICAgICAgICAgICBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJylcbiAgICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgOiA0XG4gICAgICAgICAgKShjb2RlKVxuICAgICAgICA6IGJlZm9yZVNlcXVlbmNlQ2xvc2UoY29kZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbiBjbG9zaW5nIGZlbmNlLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLCBhdCBzZXF1ZW5jZS5cbiAgICAgKlxuICAgICAqIGBgYG1hcmtkb3duXG4gICAgICogICB8IH5+fmpzXG4gICAgICogICB8IGFsZXJ0KDEpXG4gICAgICogPiB8IH5+flxuICAgICAqICAgICBeXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAdHlwZSB7U3RhdGV9XG4gICAgICovXG4gICAgZnVuY3Rpb24gYmVmb3JlU2VxdWVuY2VDbG9zZShjb2RlKSB7XG4gICAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVGZW5jZWRGZW5jZVNlcXVlbmNlJylcbiAgICAgICAgcmV0dXJuIHNlcXVlbmNlQ2xvc2UoY29kZSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbiBjbG9zaW5nIGZlbmNlIHNlcXVlbmNlLlxuICAgICAqXG4gICAgICogYGBgbWFya2Rvd25cbiAgICAgKiAgIHwgfn5+anNcbiAgICAgKiAgIHwgYWxlcnQoMSlcbiAgICAgKiA+IHwgfn5+XG4gICAgICogICAgIF5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtTdGF0ZX1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXF1ZW5jZUNsb3NlKGNvZGUpIHtcbiAgICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgICAgc2l6ZSsrXG4gICAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgICByZXR1cm4gc2VxdWVuY2VDbG9zZVxuICAgICAgfVxuICAgICAgaWYgKHNpemUgPj0gc2l6ZU9wZW4pIHtcbiAgICAgICAgZWZmZWN0cy5leGl0KCdjb2RlRmVuY2VkRmVuY2VTZXF1ZW5jZScpXG4gICAgICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICAgICAgPyBmYWN0b3J5U3BhY2UoZWZmZWN0cywgc2VxdWVuY2VDbG9zZUFmdGVyLCAnd2hpdGVzcGFjZScpKGNvZGUpXG4gICAgICAgICAgOiBzZXF1ZW5jZUNsb3NlQWZ0ZXIoY29kZSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZnRlciBjbG9zaW5nIGZlbmNlIHNlcXVlbmNlLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgICAqXG4gICAgICogYGBgbWFya2Rvd25cbiAgICAgKiAgIHwgfn5+anNcbiAgICAgKiAgIHwgYWxlcnQoMSlcbiAgICAgKiA+IHwgfn5+XG4gICAgICogICAgICAgIF5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtTdGF0ZX1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXF1ZW5jZUNsb3NlQWZ0ZXIoY29kZSkge1xuICAgICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICAgIGVmZmVjdHMuZXhpdCgnY29kZUZlbmNlZEZlbmNlJylcbiAgICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgICB9XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTm9uTGF6eUNvbnRpbnVhdGlvbihlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICByZXR1cm4gbGluZVN0YXJ0XG4gIH1cblxuICAvKipcbiAgICpcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGluZVN0YXJ0KGNvZGUpIHtcbiAgICByZXR1cm4gc2VsZi5wYXJzZXIubGF6eVtzZWxmLm5vdygpLmxpbmVdID8gbm9rKGNvZGUpIDogb2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZywgbWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgY29kZUluZGVudGVkID0ge1xuICBuYW1lOiAnY29kZUluZGVudGVkJyxcbiAgdG9rZW5pemU6IHRva2VuaXplQ29kZUluZGVudGVkXG59XG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgZnVydGhlclN0YXJ0ID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVGdXJ0aGVyU3RhcnQsXG4gIHBhcnRpYWw6IHRydWVcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDb2RlSW5kZW50ZWQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgY29kZSAoaW5kZW50ZWQpLlxuICAgKlxuICAgKiA+ICoqUGFyc2luZyBub3RlKio6IGl0IGlzIG5vdCBuZWVkZWQgdG8gY2hlY2sgaWYgdGhpcyBmaXJzdCBsaW5lIGlzIGFcbiAgICogPiBmaWxsZWQgbGluZSAodGhhdCBpdCBoYXMgYSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIpLCBiZWNhdXNlIGJsYW5rIGxpbmVzXG4gICAqID4gYXJlIHBhcnNlZCBhbHJlYWR5LCBzbyB3ZSBuZXZlciBydW4gaW50byB0aGF0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgICAgIGFhYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIC8vIFRvIGRvOiBtYW51YWxseSBjaGVjayBpZiBpbnRlcnJ1cHRpbmcgbGlrZSBgbWFya2Rvd24tcnNgLlxuXG4gICAgZWZmZWN0cy5lbnRlcignY29kZUluZGVudGVkJylcbiAgICAvLyBUbyBkbzogdXNlIGFuIGltcHJvdmVkIGBzcGFjZV9vcl90YWJgIGZ1bmN0aW9uIGxpa2UgYG1hcmtkb3duLXJzYCxcbiAgICAvLyBzbyB0aGF0IHdlIGNhbiBkcm9wIHRoZSBuZXh0IHN0YXRlLlxuICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgYWZ0ZXJQcmVmaXgsICdsaW5lUHJlZml4JywgNCArIDEpKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgc3RhcnQsIGFmdGVyIDEgb3IgNCBzcGFjZXMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAgICAgYWFhXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXJQcmVmaXgoY29kZSkge1xuICAgIGNvbnN0IHRhaWwgPSBzZWxmLmV2ZW50c1tzZWxmLmV2ZW50cy5sZW5ndGggLSAxXVxuICAgIHJldHVybiB0YWlsICYmXG4gICAgICB0YWlsWzFdLnR5cGUgPT09ICdsaW5lUHJlZml4JyAmJlxuICAgICAgdGFpbFsyXS5zbGljZVNlcmlhbGl6ZSh0YWlsWzFdLCB0cnVlKS5sZW5ndGggPj0gNFxuICAgICAgPyBhdEJyZWFrKGNvZGUpXG4gICAgICA6IG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IGEgYnJlYWsuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAgICAgYWFhXG4gICAqICAgICAgICAgXiAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYXRCcmVhayhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBhZnRlcihjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KGZ1cnRoZXJTdGFydCwgYXRCcmVhaywgYWZ0ZXIpKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVGbG93VmFsdWUnKVxuICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb2RlIGNvbnRlbnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAgICAgYWFhXG4gICAqICAgICAgICAgXl5eXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY29kZUZsb3dWYWx1ZScpXG4gICAgICByZXR1cm4gYXRCcmVhayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gaW5zaWRlXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgZWZmZWN0cy5leGl0KCdjb2RlSW5kZW50ZWQnKVxuICAgIC8vIFRvIGRvOiBhbGxvdyBpbnRlcnJ1cHRpbmcgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIC8vIEZlZWwgZnJlZSB0byBpbnRlcnJ1cHQuXG4gICAgLy8gdG9rZW5pemVyLmludGVycnVwdCA9IGZhbHNlXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVGdXJ0aGVyU3RhcnQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gZnVydGhlclN0YXJ0XG5cbiAgLyoqXG4gICAqIEF0IGVvbCwgdHJ5aW5nIHRvIHBhcnNlIGFub3RoZXIgaW5kZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgICAgIGFhYVxuICAgKiAgICAgICAgICAgIF5cbiAgICogICB8ICAgICBiYmJcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGZ1cnRoZXJTdGFydChjb2RlKSB7XG4gICAgLy8gVG8gZG86IGltcHJvdmUgYGxhenlgIC8gYHBpZXJjZWAgaGFuZGxpbmcuXG4gICAgLy8gSWYgdGhpcyBpcyBhIGxhenkgbGluZSwgaXQgY2FuXHUyMDE5dCBiZSBjb2RlLlxuICAgIGlmIChzZWxmLnBhcnNlci5sYXp5W3NlbGYubm93KCkubGluZV0pIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgICByZXR1cm4gZnVydGhlclN0YXJ0XG4gICAgfVxuXG4gICAgLy8gVG8gZG86IHRoZSBjb2RlIGhlcmUgaW4gYG1pY3JvbWFyay1qc2AgaXMgYSBiaXQgZGlmZmVyZW50IGZyb21cbiAgICAvLyBgbWFya2Rvd24tcnNgIGJlY2F1c2UgdGhlcmUgaXQgY2FuIGF0dGVtcHQgc3BhY2VzLlxuICAgIC8vIFdlIGNhblx1MjAxOXQgeWV0LlxuICAgIC8vXG4gICAgLy8gVG8gZG86IHVzZSBhbiBpbXByb3ZlZCBgc3BhY2Vfb3JfdGFiYCBmdW5jdGlvbiBsaWtlIGBtYXJrZG93bi1yc2AsXG4gICAgLy8gc28gdGhhdCB3ZSBjYW4gZHJvcCB0aGUgbmV4dCBzdGF0ZS5cbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGFmdGVyUHJlZml4LCAnbGluZVByZWZpeCcsIDQgKyAxKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IHN0YXJ0LCBhZnRlciAxIG9yIDQgc3BhY2VzLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgICAgIGFhYVxuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyUHJlZml4KGNvZGUpIHtcbiAgICBjb25zdCB0YWlsID0gc2VsZi5ldmVudHNbc2VsZi5ldmVudHMubGVuZ3RoIC0gMV1cbiAgICByZXR1cm4gdGFpbCAmJlxuICAgICAgdGFpbFsxXS50eXBlID09PSAnbGluZVByZWZpeCcgJiZcbiAgICAgIHRhaWxbMl0uc2xpY2VTZXJpYWxpemUodGFpbFsxXSwgdHJ1ZSkubGVuZ3RoID49IDRcbiAgICAgID8gb2soY29kZSlcbiAgICAgIDogbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpXG4gICAgICA/IGZ1cnRoZXJTdGFydChjb2RlKVxuICAgICAgOiBub2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5QcmV2aW91c30gUHJldmlvdXNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUmVzb2x2ZXJ9IFJlc29sdmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgY29kZVRleHQgPSB7XG4gIG5hbWU6ICdjb2RlVGV4dCcsXG4gIHRva2VuaXplOiB0b2tlbml6ZUNvZGVUZXh0LFxuICByZXNvbHZlOiByZXNvbHZlQ29kZVRleHQsXG4gIHByZXZpb3VzXG59XG5cbi8vIFRvIGRvOiBuZXh0IG1ham9yOiBkb25cdTIwMTl0IHJlc29sdmUsIGxpa2UgYG1hcmtkb3duLXJzYC5cbi8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG5mdW5jdGlvbiByZXNvbHZlQ29kZVRleHQoZXZlbnRzKSB7XG4gIGxldCB0YWlsRXhpdEluZGV4ID0gZXZlbnRzLmxlbmd0aCAtIDRcbiAgbGV0IGhlYWRFbnRlckluZGV4ID0gM1xuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IGluZGV4XG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgZW50ZXJcblxuICAvLyBJZiB3ZSBzdGFydCBhbmQgZW5kIHdpdGggYW4gRU9MIG9yIGEgc3BhY2UuXG4gIGlmIChcbiAgICAoZXZlbnRzW2hlYWRFbnRlckluZGV4XVsxXS50eXBlID09PSAnbGluZUVuZGluZycgfHxcbiAgICAgIGV2ZW50c1toZWFkRW50ZXJJbmRleF1bMV0udHlwZSA9PT0gJ3NwYWNlJykgJiZcbiAgICAoZXZlbnRzW3RhaWxFeGl0SW5kZXhdWzFdLnR5cGUgPT09ICdsaW5lRW5kaW5nJyB8fFxuICAgICAgZXZlbnRzW3RhaWxFeGl0SW5kZXhdWzFdLnR5cGUgPT09ICdzcGFjZScpXG4gICkge1xuICAgIGluZGV4ID0gaGVhZEVudGVySW5kZXhcblxuICAgIC8vIEFuZCB3ZSBoYXZlIGRhdGEuXG4gICAgd2hpbGUgKCsraW5kZXggPCB0YWlsRXhpdEluZGV4KSB7XG4gICAgICBpZiAoZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnY29kZVRleHREYXRhJykge1xuICAgICAgICAvLyBUaGVuIHdlIGhhdmUgcGFkZGluZy5cbiAgICAgICAgZXZlbnRzW2hlYWRFbnRlckluZGV4XVsxXS50eXBlID0gJ2NvZGVUZXh0UGFkZGluZydcbiAgICAgICAgZXZlbnRzW3RhaWxFeGl0SW5kZXhdWzFdLnR5cGUgPSAnY29kZVRleHRQYWRkaW5nJ1xuICAgICAgICBoZWFkRW50ZXJJbmRleCArPSAyXG4gICAgICAgIHRhaWxFeGl0SW5kZXggLT0gMlxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE1lcmdlIGFkamFjZW50IHNwYWNlcyBhbmQgZGF0YS5cbiAgaW5kZXggPSBoZWFkRW50ZXJJbmRleCAtIDFcbiAgdGFpbEV4aXRJbmRleCsrXG4gIHdoaWxlICgrK2luZGV4IDw9IHRhaWxFeGl0SW5kZXgpIHtcbiAgICBpZiAoZW50ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGluZGV4ICE9PSB0YWlsRXhpdEluZGV4ICYmIGV2ZW50c1tpbmRleF1bMV0udHlwZSAhPT0gJ2xpbmVFbmRpbmcnKSB7XG4gICAgICAgIGVudGVyID0gaW5kZXhcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgaW5kZXggPT09IHRhaWxFeGl0SW5kZXggfHxcbiAgICAgIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2xpbmVFbmRpbmcnXG4gICAgKSB7XG4gICAgICBldmVudHNbZW50ZXJdWzFdLnR5cGUgPSAnY29kZVRleHREYXRhJ1xuICAgICAgaWYgKGluZGV4ICE9PSBlbnRlciArIDIpIHtcbiAgICAgICAgZXZlbnRzW2VudGVyXVsxXS5lbmQgPSBldmVudHNbaW5kZXggLSAxXVsxXS5lbmRcbiAgICAgICAgZXZlbnRzLnNwbGljZShlbnRlciArIDIsIGluZGV4IC0gZW50ZXIgLSAyKVxuICAgICAgICB0YWlsRXhpdEluZGV4IC09IGluZGV4IC0gZW50ZXIgLSAyXG4gICAgICAgIGluZGV4ID0gZW50ZXIgKyAyXG4gICAgICB9XG4gICAgICBlbnRlciA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfVxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtQcmV2aW91c31cbiAqL1xuZnVuY3Rpb24gcHJldmlvdXMoY29kZSkge1xuICAvLyBJZiB0aGVyZSBpcyBhIHByZXZpb3VzIGNvZGUsIHRoZXJlIHdpbGwgYWx3YXlzIGJlIGEgdGFpbC5cbiAgcmV0dXJuIChcbiAgICBjb2RlICE9PSA5NiB8fFxuICAgIHRoaXMuZXZlbnRzW3RoaXMuZXZlbnRzLmxlbmd0aCAtIDFdWzFdLnR5cGUgPT09ICdjaGFyYWN0ZXJFc2NhcGUnXG4gIClcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDb2RlVGV4dChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGxldCBzaXplT3BlbiA9IDBcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBzaXplXG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCB0b2tlblxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgY29kZSAodGV4dCkuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBgYWBcbiAgICogICAgIF5cbiAgICogPiB8IFxcYGFgXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVUZXh0JylcbiAgICBlZmZlY3RzLmVudGVyKCdjb2RlVGV4dFNlcXVlbmNlJylcbiAgICByZXR1cm4gc2VxdWVuY2VPcGVuKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gb3BlbmluZyBzZXF1ZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGBhYFxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc2VxdWVuY2VPcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gOTYpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgc2l6ZU9wZW4rK1xuICAgICAgcmV0dXJuIHNlcXVlbmNlT3BlblxuICAgIH1cbiAgICBlZmZlY3RzLmV4aXQoJ2NvZGVUZXh0U2VxdWVuY2UnKVxuICAgIHJldHVybiBiZXR3ZWVuKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQmV0d2VlbiBzb21ldGhpbmcgYW5kIHNvbWV0aGluZyBlbHNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYGFgXG4gICAqICAgICAgXl5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJldHdlZW4oY29kZSkge1xuICAgIC8vIEVPRi5cbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIC8vIFRvIGRvOiBuZXh0IG1ham9yOiBkb25cdTIwMTl0IGRvIHNwYWNlcyBpbiByZXNvbHZlLCBidXQgd2hlbiBjb21waWxpbmcsXG4gICAgLy8gbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIC8vIFRhYnMgZG9uXHUyMDE5dCB3b3JrLCBhbmQgdmlydHVhbCBzcGFjZXMgZG9uXHUyMDE5dCBtYWtlIHNlbnNlLlxuICAgIGlmIChjb2RlID09PSAzMikge1xuICAgICAgZWZmZWN0cy5lbnRlcignc3BhY2UnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ3NwYWNlJylcbiAgICAgIHJldHVybiBiZXR3ZWVuXG4gICAgfVxuXG4gICAgLy8gQ2xvc2luZyBmZW5jZT8gQ291bGQgYWxzbyBiZSBkYXRhLlxuICAgIGlmIChjb2RlID09PSA5Nikge1xuICAgICAgdG9rZW4gPSBlZmZlY3RzLmVudGVyKCdjb2RlVGV4dFNlcXVlbmNlJylcbiAgICAgIHNpemUgPSAwXG4gICAgICByZXR1cm4gc2VxdWVuY2VDbG9zZShjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICAgIHJldHVybiBiZXR3ZWVuXG4gICAgfVxuXG4gICAgLy8gRGF0YS5cbiAgICBlZmZlY3RzLmVudGVyKCdjb2RlVGV4dERhdGEnKVxuICAgIHJldHVybiBkYXRhKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gZGF0YS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGBhYFxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGRhdGEoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IG51bGwgfHxcbiAgICAgIGNvZGUgPT09IDMyIHx8XG4gICAgICBjb2RlID09PSA5NiB8fFxuICAgICAgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NvZGVUZXh0RGF0YScpXG4gICAgICByZXR1cm4gYmV0d2Vlbihjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNsb3Npbmcgc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBgYWBcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc2VxdWVuY2VDbG9zZShjb2RlKSB7XG4gICAgLy8gTW9yZS5cbiAgICBpZiAoY29kZSA9PT0gOTYpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgc2l6ZSsrXG4gICAgICByZXR1cm4gc2VxdWVuY2VDbG9zZVxuICAgIH1cblxuICAgIC8vIERvbmUhXG4gICAgaWYgKHNpemUgPT09IHNpemVPcGVuKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NvZGVUZXh0U2VxdWVuY2UnKVxuICAgICAgZWZmZWN0cy5leGl0KCdjb2RlVGV4dCcpXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG5cbiAgICAvLyBNb3JlIG9yIGxlc3MgYWNjZW50czogbWFyayBhcyBkYXRhLlxuICAgIHRva2VuLnR5cGUgPSAnY29kZVRleHREYXRhJ1xuICAgIHJldHVybiBkYXRhKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ2h1bmt9IENodW5rXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqL1xuXG5pbXBvcnQge3NwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbi8qKlxuICogVG9rZW5pemUgc3ViY29udGVudC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PEV2ZW50Pn0gZXZlbnRzXG4gKiAgIExpc3Qgb2YgZXZlbnRzLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgc3VidG9rZW5zIHdlcmUgZm91bmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdWJ0b2tlbml6ZShldmVudHMpIHtcbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBudW1iZXI+fSAqL1xuICBjb25zdCBqdW1wcyA9IHt9XG4gIGxldCBpbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7RXZlbnR9ICovXG4gIGxldCBldmVudFxuICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGxpbmVJbmRleFxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IG90aGVySW5kZXhcbiAgLyoqIEB0eXBlIHtFdmVudH0gKi9cbiAgbGV0IG90aGVyRXZlbnRcbiAgLyoqIEB0eXBlIHtBcnJheTxFdmVudD59ICovXG4gIGxldCBwYXJhbWV0ZXJzXG4gIC8qKiBAdHlwZSB7QXJyYXk8RXZlbnQ+fSAqL1xuICBsZXQgc3ViZXZlbnRzXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IG1vcmVcbiAgd2hpbGUgKCsraW5kZXggPCBldmVudHMubGVuZ3RoKSB7XG4gICAgd2hpbGUgKGluZGV4IGluIGp1bXBzKSB7XG4gICAgICBpbmRleCA9IGp1bXBzW2luZGV4XVxuICAgIH1cbiAgICBldmVudCA9IGV2ZW50c1tpbmRleF1cblxuICAgIC8vIEFkZCBhIGhvb2sgZm9yIHRoZSBHRk0gdGFza2xpc3QgZXh0ZW5zaW9uLCB3aGljaCBuZWVkcyB0byBrbm93IGlmIHRleHRcbiAgICAvLyBpcyBpbiB0aGUgZmlyc3QgY29udGVudCBvZiBhIGxpc3QgaXRlbS5cbiAgICBpZiAoXG4gICAgICBpbmRleCAmJlxuICAgICAgZXZlbnRbMV0udHlwZSA9PT0gJ2NodW5rRmxvdycgJiZcbiAgICAgIGV2ZW50c1tpbmRleCAtIDFdWzFdLnR5cGUgPT09ICdsaXN0SXRlbVByZWZpeCdcbiAgICApIHtcbiAgICAgIHN1YmV2ZW50cyA9IGV2ZW50WzFdLl90b2tlbml6ZXIuZXZlbnRzXG4gICAgICBvdGhlckluZGV4ID0gMFxuICAgICAgaWYgKFxuICAgICAgICBvdGhlckluZGV4IDwgc3ViZXZlbnRzLmxlbmd0aCAmJlxuICAgICAgICBzdWJldmVudHNbb3RoZXJJbmRleF1bMV0udHlwZSA9PT0gJ2xpbmVFbmRpbmdCbGFuaydcbiAgICAgICkge1xuICAgICAgICBvdGhlckluZGV4ICs9IDJcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgb3RoZXJJbmRleCA8IHN1YmV2ZW50cy5sZW5ndGggJiZcbiAgICAgICAgc3ViZXZlbnRzW290aGVySW5kZXhdWzFdLnR5cGUgPT09ICdjb250ZW50J1xuICAgICAgKSB7XG4gICAgICAgIHdoaWxlICgrK290aGVySW5kZXggPCBzdWJldmVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHN1YmV2ZW50c1tvdGhlckluZGV4XVsxXS50eXBlID09PSAnY29udGVudCcpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdWJldmVudHNbb3RoZXJJbmRleF1bMV0udHlwZSA9PT0gJ2NodW5rVGV4dCcpIHtcbiAgICAgICAgICAgIHN1YmV2ZW50c1tvdGhlckluZGV4XVsxXS5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW0gPSB0cnVlXG4gICAgICAgICAgICBvdGhlckluZGV4KytcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFbnRlci5cbiAgICBpZiAoZXZlbnRbMF0gPT09ICdlbnRlcicpIHtcbiAgICAgIGlmIChldmVudFsxXS5jb250ZW50VHlwZSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGp1bXBzLCBzdWJjb250ZW50KGV2ZW50cywgaW5kZXgpKVxuICAgICAgICBpbmRleCA9IGp1bXBzW2luZGV4XVxuICAgICAgICBtb3JlID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBFeGl0LlxuICAgIGVsc2UgaWYgKGV2ZW50WzFdLl9jb250YWluZXIpIHtcbiAgICAgIG90aGVySW5kZXggPSBpbmRleFxuICAgICAgbGluZUluZGV4ID0gdW5kZWZpbmVkXG4gICAgICB3aGlsZSAob3RoZXJJbmRleC0tKSB7XG4gICAgICAgIG90aGVyRXZlbnQgPSBldmVudHNbb3RoZXJJbmRleF1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIG90aGVyRXZlbnRbMV0udHlwZSA9PT0gJ2xpbmVFbmRpbmcnIHx8XG4gICAgICAgICAgb3RoZXJFdmVudFsxXS50eXBlID09PSAnbGluZUVuZGluZ0JsYW5rJ1xuICAgICAgICApIHtcbiAgICAgICAgICBpZiAob3RoZXJFdmVudFswXSA9PT0gJ2VudGVyJykge1xuICAgICAgICAgICAgaWYgKGxpbmVJbmRleCkge1xuICAgICAgICAgICAgICBldmVudHNbbGluZUluZGV4XVsxXS50eXBlID0gJ2xpbmVFbmRpbmdCbGFuaydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG90aGVyRXZlbnRbMV0udHlwZSA9ICdsaW5lRW5kaW5nJ1xuICAgICAgICAgICAgbGluZUluZGV4ID0gb3RoZXJJbmRleFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobGluZUluZGV4KSB7XG4gICAgICAgIC8vIEZpeCBwb3NpdGlvbi5cbiAgICAgICAgZXZlbnRbMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2xpbmVJbmRleF1bMV0uc3RhcnQpXG5cbiAgICAgICAgLy8gU3dpdGNoIGNvbnRhaW5lciBleGl0IHcvIGxpbmUgZW5kaW5ncy5cbiAgICAgICAgcGFyYW1ldGVycyA9IGV2ZW50cy5zbGljZShsaW5lSW5kZXgsIGluZGV4KVxuICAgICAgICBwYXJhbWV0ZXJzLnVuc2hpZnQoZXZlbnQpXG4gICAgICAgIHNwbGljZShldmVudHMsIGxpbmVJbmRleCwgaW5kZXggLSBsaW5lSW5kZXggKyAxLCBwYXJhbWV0ZXJzKVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gIW1vcmVcbn1cblxuLyoqXG4gKiBUb2tlbml6ZSBlbWJlZGRlZCB0b2tlbnMuXG4gKlxuICogQHBhcmFtIHtBcnJheTxFdmVudD59IGV2ZW50c1xuICogQHBhcmFtIHtudW1iZXJ9IGV2ZW50SW5kZXhcbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBudW1iZXI+fVxuICovXG5mdW5jdGlvbiBzdWJjb250ZW50KGV2ZW50cywgZXZlbnRJbmRleCkge1xuICBjb25zdCB0b2tlbiA9IGV2ZW50c1tldmVudEluZGV4XVsxXVxuICBjb25zdCBjb250ZXh0ID0gZXZlbnRzW2V2ZW50SW5kZXhdWzJdXG4gIGxldCBzdGFydFBvc2l0aW9uID0gZXZlbnRJbmRleCAtIDFcbiAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqL1xuICBjb25zdCBzdGFydFBvc2l0aW9ucyA9IFtdXG4gIGNvbnN0IHRva2VuaXplciA9XG4gICAgdG9rZW4uX3Rva2VuaXplciB8fCBjb250ZXh0LnBhcnNlclt0b2tlbi5jb250ZW50VHlwZV0odG9rZW4uc3RhcnQpXG4gIGNvbnN0IGNoaWxkRXZlbnRzID0gdG9rZW5pemVyLmV2ZW50c1xuICAvKiogQHR5cGUge0FycmF5PFtudW1iZXIsIG51bWJlcl0+fSAqL1xuICBjb25zdCBqdW1wcyA9IFtdXG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgbnVtYmVyPn0gKi9cbiAgY29uc3QgZ2FwcyA9IHt9XG4gIC8qKiBAdHlwZSB7QXJyYXk8Q2h1bms+fSAqL1xuICBsZXQgc3RyZWFtXG4gIC8qKiBAdHlwZSB7VG9rZW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBwcmV2aW91c1xuICBsZXQgaW5kZXggPSAtMVxuICAvKiogQHR5cGUge1Rva2VuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgY3VycmVudCA9IHRva2VuXG4gIGxldCBhZGp1c3QgPSAwXG4gIGxldCBzdGFydCA9IDBcbiAgY29uc3QgYnJlYWtzID0gW3N0YXJ0XVxuXG4gIC8vIExvb3AgZm9yd2FyZCB0aHJvdWdoIHRoZSBsaW5rZWQgdG9rZW5zIHRvIHBhc3MgdGhlbSBpbiBvcmRlciB0byB0aGVcbiAgLy8gc3VidG9rZW5pemVyLlxuICB3aGlsZSAoY3VycmVudCkge1xuICAgIC8vIEZpbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSBldmVudCBmb3IgdGhpcyB0b2tlbi5cbiAgICB3aGlsZSAoZXZlbnRzWysrc3RhcnRQb3NpdGlvbl1bMV0gIT09IGN1cnJlbnQpIHtcbiAgICAgIC8vIEVtcHR5LlxuICAgIH1cbiAgICBzdGFydFBvc2l0aW9ucy5wdXNoKHN0YXJ0UG9zaXRpb24pXG4gICAgaWYgKCFjdXJyZW50Ll90b2tlbml6ZXIpIHtcbiAgICAgIHN0cmVhbSA9IGNvbnRleHQuc2xpY2VTdHJlYW0oY3VycmVudClcbiAgICAgIGlmICghY3VycmVudC5uZXh0KSB7XG4gICAgICAgIHN0cmVhbS5wdXNoKG51bGwpXG4gICAgICB9XG4gICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgdG9rZW5pemVyLmRlZmluZVNraXAoY3VycmVudC5zdGFydClcbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50Ll9pc0luRmlyc3RDb250ZW50T2ZMaXN0SXRlbSkge1xuICAgICAgICB0b2tlbml6ZXIuX2dmbVRhc2tsaXN0Rmlyc3RDb250ZW50T2ZMaXN0SXRlbSA9IHRydWVcbiAgICAgIH1cbiAgICAgIHRva2VuaXplci53cml0ZShzdHJlYW0pXG4gICAgICBpZiAoY3VycmVudC5faXNJbkZpcnN0Q29udGVudE9mTGlzdEl0ZW0pIHtcbiAgICAgICAgdG9rZW5pemVyLl9nZm1UYXNrbGlzdEZpcnN0Q29udGVudE9mTGlzdEl0ZW0gPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVbnJhdmVsIHRoZSBuZXh0IHRva2VuLlxuICAgIHByZXZpb3VzID0gY3VycmVudFxuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHRcbiAgfVxuXG4gIC8vIE5vdywgbG9vcCBiYWNrIHRocm91Z2ggYWxsIGV2ZW50cyAoYW5kIGxpbmtlZCB0b2tlbnMpLCB0byBmaWd1cmUgb3V0IHdoaWNoXG4gIC8vIHBhcnRzIGJlbG9uZyB3aGVyZS5cbiAgY3VycmVudCA9IHRva2VuXG4gIHdoaWxlICgrK2luZGV4IDwgY2hpbGRFdmVudHMubGVuZ3RoKSB7XG4gICAgaWYgKFxuICAgICAgLy8gRmluZCBhIHZvaWQgdG9rZW4gdGhhdCBpbmNsdWRlcyBhIGJyZWFrLlxuICAgICAgY2hpbGRFdmVudHNbaW5kZXhdWzBdID09PSAnZXhpdCcgJiZcbiAgICAgIGNoaWxkRXZlbnRzW2luZGV4IC0gMV1bMF0gPT09ICdlbnRlcicgJiZcbiAgICAgIGNoaWxkRXZlbnRzW2luZGV4XVsxXS50eXBlID09PSBjaGlsZEV2ZW50c1tpbmRleCAtIDFdWzFdLnR5cGUgJiZcbiAgICAgIGNoaWxkRXZlbnRzW2luZGV4XVsxXS5zdGFydC5saW5lICE9PSBjaGlsZEV2ZW50c1tpbmRleF1bMV0uZW5kLmxpbmVcbiAgICApIHtcbiAgICAgIHN0YXJ0ID0gaW5kZXggKyAxXG4gICAgICBicmVha3MucHVzaChzdGFydClcbiAgICAgIC8vIEhlbHAgR0MuXG4gICAgICBjdXJyZW50Ll90b2tlbml6ZXIgPSB1bmRlZmluZWRcbiAgICAgIGN1cnJlbnQucHJldmlvdXMgPSB1bmRlZmluZWRcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHRcbiAgICB9XG4gIH1cblxuICAvLyBIZWxwIEdDLlxuICB0b2tlbml6ZXIuZXZlbnRzID0gW11cblxuICAvLyBJZiB0aGVyZVx1MjAxOXMgb25lIG1vcmUgdG9rZW4gKHdoaWNoIGlzIHRoZSBjYXNlcyBmb3IgbGluZXMgdGhhdCBlbmQgaW4gYW5cbiAgLy8gRU9GKSwgdGhhdFx1MjAxOXMgcGVyZmVjdDogdGhlIGxhc3QgcG9pbnQgd2UgZm91bmQgc3RhcnRzIGl0LlxuICAvLyBJZiB0aGVyZSBpc25cdTIwMTl0IHRoZW4gbWFrZSBzdXJlIGFueSByZW1haW5pbmcgY29udGVudCBpcyBhZGRlZCB0byBpdC5cbiAgaWYgKGN1cnJlbnQpIHtcbiAgICAvLyBIZWxwIEdDLlxuICAgIGN1cnJlbnQuX3Rva2VuaXplciA9IHVuZGVmaW5lZFxuICAgIGN1cnJlbnQucHJldmlvdXMgPSB1bmRlZmluZWRcbiAgfSBlbHNlIHtcbiAgICBicmVha3MucG9wKClcbiAgfVxuXG4gIC8vIE5vdyBzcGxpY2UgdGhlIGV2ZW50cyBmcm9tIHRoZSBzdWJ0b2tlbml6ZXIgaW50byB0aGUgY3VycmVudCBldmVudHMsXG4gIC8vIG1vdmluZyBiYWNrIHRvIGZyb250IHNvIHRoYXQgc3BsaWNlIGluZGljZXMgYXJlblx1MjAxOXQgYWZmZWN0ZWQuXG4gIGluZGV4ID0gYnJlYWtzLmxlbmd0aFxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGNvbnN0IHNsaWNlID0gY2hpbGRFdmVudHMuc2xpY2UoYnJlYWtzW2luZGV4XSwgYnJlYWtzW2luZGV4ICsgMV0pXG4gICAgY29uc3Qgc3RhcnQgPSBzdGFydFBvc2l0aW9ucy5wb3AoKVxuICAgIGp1bXBzLnVuc2hpZnQoW3N0YXJ0LCBzdGFydCArIHNsaWNlLmxlbmd0aCAtIDFdKVxuICAgIHNwbGljZShldmVudHMsIHN0YXJ0LCAyLCBzbGljZSlcbiAgfVxuICBpbmRleCA9IC0xXG4gIHdoaWxlICgrK2luZGV4IDwganVtcHMubGVuZ3RoKSB7XG4gICAgZ2Fwc1thZGp1c3QgKyBqdW1wc1tpbmRleF1bMF1dID0gYWRqdXN0ICsganVtcHNbaW5kZXhdWzFdXG4gICAgYWRqdXN0ICs9IGp1bXBzW2luZGV4XVsxXSAtIGp1bXBzW2luZGV4XVswXSAtIDFcbiAgfVxuICByZXR1cm4gZ2Fwc1xufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VufSBUb2tlblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge3N1YnRva2VuaXplfSBmcm9tICdtaWNyb21hcmstdXRpbC1zdWJ0b2tlbml6ZSdcbi8qKlxuICogTm8gbmFtZSBiZWNhdXNlIGl0IG11c3Qgbm90IGJlIHR1cm5lZCBvZmYuXG4gKiBAdHlwZSB7Q29uc3RydWN0fVxuICovXG5leHBvcnQgY29uc3QgY29udGVudCA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplQ29udGVudCxcbiAgcmVzb2x2ZTogcmVzb2x2ZUNvbnRlbnRcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCBjb250aW51YXRpb25Db25zdHJ1Y3QgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZUNvbnRpbnVhdGlvbixcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKipcbiAqIENvbnRlbnQgaXMgdHJhbnNwYXJlbnQ6IGl0XHUyMDE5cyBwYXJzZWQgcmlnaHQgbm93LiBUaGF0IHdheSwgZGVmaW5pdGlvbnMgYXJlIGFsc29cbiAqIHBhcnNlZCByaWdodCBub3c6IGJlZm9yZSB0ZXh0IGluIHBhcmFncmFwaHMgKHNwZWNpZmljYWxseSwgbWVkaWEpIGFyZSBwYXJzZWQuXG4gKlxuICogQHR5cGUge1Jlc29sdmVyfVxuICovXG5mdW5jdGlvbiByZXNvbHZlQ29udGVudChldmVudHMpIHtcbiAgc3VidG9rZW5pemUoZXZlbnRzKVxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQ29udGVudChlZmZlY3RzLCBvaykge1xuICAvKiogQHR5cGUge1Rva2VuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgcHJldmlvdXNcbiAgcmV0dXJuIGNodW5rU3RhcnRcblxuICAvKipcbiAgICogQmVmb3JlIGEgY29udGVudCBjaHVuay5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGFiY1xuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2h1bmtTdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignY29udGVudCcpXG4gICAgcHJldmlvdXMgPSBlZmZlY3RzLmVudGVyKCdjaHVua0NvbnRlbnQnLCB7XG4gICAgICBjb250ZW50VHlwZTogJ2NvbnRlbnQnXG4gICAgfSlcbiAgICByZXR1cm4gY2h1bmtJbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhIGNvbnRlbnQgY2h1bmsuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhYmNcbiAgICogICAgIF5eXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2h1bmtJbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29udGVudEVuZChjb2RlKVxuICAgIH1cblxuICAgIC8vIFRvIGRvOiBpbiBgbWFya2Rvd24tcnNgLCBlYWNoIGxpbmUgaXMgcGFyc2VkIG9uIGl0cyBvd24sIGFuZCBldmVyeXRoaW5nXG4gICAgLy8gaXMgc3RpdGNoZWQgdG9nZXRoZXIgcmVzb2x2aW5nLlxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBlZmZlY3RzLmNoZWNrKFxuICAgICAgICBjb250aW51YXRpb25Db25zdHJ1Y3QsXG4gICAgICAgIGNvbnRlbnRDb250aW51ZSxcbiAgICAgICAgY29udGVudEVuZFxuICAgICAgKShjb2RlKVxuICAgIH1cblxuICAgIC8vIERhdGEuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNodW5rSW5zaWRlXG4gIH1cblxuICAvKipcbiAgICpcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGVudEVuZChjb2RlKSB7XG4gICAgZWZmZWN0cy5leGl0KCdjaHVua0NvbnRlbnQnKVxuICAgIGVmZmVjdHMuZXhpdCgnY29udGVudCcpXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICpcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGVudENvbnRpbnVlKGNvZGUpIHtcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2NodW5rQ29udGVudCcpXG4gICAgcHJldmlvdXMubmV4dCA9IGVmZmVjdHMuZW50ZXIoJ2NodW5rQ29udGVudCcsIHtcbiAgICAgIGNvbnRlbnRUeXBlOiAnY29udGVudCcsXG4gICAgICBwcmV2aW91c1xuICAgIH0pXG4gICAgcHJldmlvdXMgPSBwcmV2aW91cy5uZXh0XG4gICAgcmV0dXJuIGNodW5rSW5zaWRlXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDb250aW51YXRpb24oZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gc3RhcnRMb29rYWhlYWRcblxuICAvKipcbiAgICpcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnRMb29rYWhlYWQoY29kZSkge1xuICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtDb250ZW50JylcbiAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgcHJlZml4ZWQsICdsaW5lUHJlZml4JylcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBwcmVmaXhlZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICAgIGNvbnN0IHRhaWwgPSBzZWxmLmV2ZW50c1tzZWxmLmV2ZW50cy5sZW5ndGggLSAxXVxuICAgIGlmIChcbiAgICAgICFzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJykgJiZcbiAgICAgIHRhaWwgJiZcbiAgICAgIHRhaWxbMV0udHlwZSA9PT0gJ2xpbmVQcmVmaXgnICYmXG4gICAgICB0YWlsWzJdLnNsaWNlU2VyaWFsaXplKHRhaWxbMV0sIHRydWUpLmxlbmd0aCA+PSA0XG4gICAgKSB7XG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIGVmZmVjdHMuaW50ZXJydXB0KHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZmxvdywgbm9rLCBvaykoY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FZmZlY3RzfSBFZmZlY3RzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlblR5cGV9IFRva2VuVHlwZVxuICovXG5cbmltcG9ydCB7XG4gIGFzY2lpQ29udHJvbCxcbiAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZSxcbiAgbWFya2Rvd25MaW5lRW5kaW5nXG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKlxuICogUGFyc2UgZGVzdGluYXRpb25zLlxuICpcbiAqICMjIyMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYG1hcmtkb3duXG4gKiA8YT5cbiAqIDxhXFw+Yj5cbiAqIDxhIGI+XG4gKiA8YSk+XG4gKiBhXG4gKiBhXFwpYlxuICogYShiKWNcbiAqIGEoYilcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7RWZmZWN0c30gZWZmZWN0c1xuICogICBDb250ZXh0LlxuICogQHBhcmFtIHtTdGF0ZX0gb2tcbiAqICAgU3RhdGUgc3dpdGNoZWQgdG8gd2hlbiBzdWNjZXNzZnVsLlxuICogQHBhcmFtIHtTdGF0ZX0gbm9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gdW5zdWNjZXNzZnVsLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHR5cGVcbiAqICAgVHlwZSBmb3Igd2hvbGUgKGA8YT5gIG9yIGBiYCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gbGl0ZXJhbFR5cGVcbiAqICAgVHlwZSB3aGVuIGVuY2xvc2VkIChgPGE+YCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gbGl0ZXJhbE1hcmtlclR5cGVcbiAqICAgVHlwZSBmb3IgZW5jbG9zaW5nIChgPGAgYW5kIGA+YCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gcmF3VHlwZVxuICogICBUeXBlIHdoZW4gbm90IGVuY2xvc2VkIChgYmApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHN0cmluZ1R5cGVcbiAqICAgVHlwZSBmb3IgdGhlIHZhbHVlIChgYWAgb3IgYGJgKS5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBbbWF4PUluZmluaXR5XVxuICogICBEZXB0aCBvZiBuZXN0ZWQgcGFyZW5zIChpbmNsdXNpdmUpLlxuICogQHJldHVybnMge1N0YXRlfVxuICogICBTdGFydCBzdGF0ZS5cbiAqLyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXBhcmFtc1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlEZXN0aW5hdGlvbihcbiAgZWZmZWN0cyxcbiAgb2ssXG4gIG5vayxcbiAgdHlwZSxcbiAgbGl0ZXJhbFR5cGUsXG4gIGxpdGVyYWxNYXJrZXJUeXBlLFxuICByYXdUeXBlLFxuICBzdHJpbmdUeXBlLFxuICBtYXhcbikge1xuICBjb25zdCBsaW1pdCA9IG1heCB8fCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbiAgbGV0IGJhbGFuY2UgPSAwXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhYT5cbiAgICogICAgIF5cbiAgICogPiB8IGFhXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYwKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgICBlZmZlY3RzLmVudGVyKGxpdGVyYWxUeXBlKVxuICAgICAgZWZmZWN0cy5lbnRlcihsaXRlcmFsTWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KGxpdGVyYWxNYXJrZXJUeXBlKVxuICAgICAgcmV0dXJuIGVuY2xvc2VkQmVmb3JlXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgY29udHJvbCwgc3BhY2UsIGNsb3NpbmcgcGFyZW4uXG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgY29kZSA9PT0gMzIgfHwgY29kZSA9PT0gNDEgfHwgYXNjaWlDb250cm9sKGNvZGUpKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIodHlwZSlcbiAgICBlZmZlY3RzLmVudGVyKHJhd1R5cGUpXG4gICAgZWZmZWN0cy5lbnRlcihzdHJpbmdUeXBlKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NodW5rU3RyaW5nJywge1xuICAgICAgY29udGVudFR5cGU6ICdzdHJpbmcnXG4gICAgfSlcbiAgICByZXR1cm4gcmF3KGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDxgLCBhdCBhbiBlbmNsb3NlZCBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhYT5cbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbmNsb3NlZEJlZm9yZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYyKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKGxpdGVyYWxNYXJrZXJUeXBlKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQobGl0ZXJhbE1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmV4aXQobGl0ZXJhbFR5cGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZSlcbiAgICAgIHJldHVybiBva1xuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKHN0cmluZ1R5cGUpXG4gICAgZWZmZWN0cy5lbnRlcignY2h1bmtTdHJpbmcnLCB7XG4gICAgICBjb250ZW50VHlwZTogJ3N0cmluZydcbiAgICB9KVxuICAgIHJldHVybiBlbmNsb3NlZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGVuY2xvc2VkIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGFhPlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVuY2xvc2VkKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjIpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtTdHJpbmcnKVxuICAgICAgZWZmZWN0cy5leGl0KHN0cmluZ1R5cGUpXG4gICAgICByZXR1cm4gZW5jbG9zZWRCZWZvcmUoY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgY29kZSA9PT0gNjAgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjb2RlID09PSA5MiA/IGVuY2xvc2VkRXNjYXBlIDogZW5jbG9zZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgXFxgLCBhdCBhIHNwZWNpYWwgY2hhcmFjdGVyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGFcXCphPlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZW5jbG9zZWRFc2NhcGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2MCB8fCBjb2RlID09PSA2MiB8fCBjb2RlID09PSA5Mikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gZW5jbG9zZWRcbiAgICB9XG4gICAgcmV0dXJuIGVuY2xvc2VkKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmF3IGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYWFcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJhdyhjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgIWJhbGFuY2UgJiZcbiAgICAgIChjb2RlID09PSBudWxsIHx8IGNvZGUgPT09IDQxIHx8IG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSkpXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NodW5rU3RyaW5nJylcbiAgICAgIGVmZmVjdHMuZXhpdChzdHJpbmdUeXBlKVxuICAgICAgZWZmZWN0cy5leGl0KHJhd1R5cGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZSlcbiAgICAgIHJldHVybiBvayhjb2RlKVxuICAgIH1cbiAgICBpZiAoYmFsYW5jZSA8IGxpbWl0ICYmIGNvZGUgPT09IDQwKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGJhbGFuY2UrK1xuICAgICAgcmV0dXJuIHJhd1xuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNDEpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgYmFsYW5jZS0tXG4gICAgICByZXR1cm4gcmF3XG4gICAgfVxuXG4gICAgLy8gQVNDSUkgY29udHJvbCAoYnV0ICpub3QqIGBcXDBgKSBhbmQgc3BhY2UgYW5kIGAoYC5cbiAgICAvLyBOb3RlOiBpbiBgbWFya2Rvd24tcnNgLCBgXFwwYCBleGlzdHMgaW4gY29kZXMsIGluIGBtaWNyb21hcmstanNgIGl0XG4gICAgLy8gZG9lc25cdTIwMTl0LlxuICAgIGlmIChjb2RlID09PSBudWxsIHx8IGNvZGUgPT09IDMyIHx8IGNvZGUgPT09IDQwIHx8IGFzY2lpQ29udHJvbChjb2RlKSkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29kZSA9PT0gOTIgPyByYXdFc2NhcGUgOiByYXdcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgXFxgLCBhdCBzcGVjaWFsIGNoYXJhY3Rlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGFcXCphXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJhd0VzY2FwZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQwIHx8IGNvZGUgPT09IDQxIHx8IGNvZGUgPT09IDkyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiByYXdcbiAgICB9XG4gICAgcmV0dXJuIHJhdyhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVmZmVjdHN9IEVmZmVjdHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuVHlwZX0gVG9rZW5UeXBlXG4gKi9cblxuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKlxuICogUGFyc2UgbGFiZWxzLlxuICpcbiAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiBsYWJlbHMgaW4gbWFya2Rvd24gYXJlIGNhcHBlZCBhdCA5OTkgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nLlxuICpcbiAqICMjIyMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYG1hcmtkb3duXG4gKiBbYV1cbiAqIFthXG4gKiBiXVxuICogW2FcXF1iXVxuICogYGBgXG4gKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqICAgVG9rZW5pemUgY29udGV4dC5cbiAqIEBwYXJhbSB7RWZmZWN0c30gZWZmZWN0c1xuICogICBDb250ZXh0LlxuICogQHBhcmFtIHtTdGF0ZX0gb2tcbiAqICAgU3RhdGUgc3dpdGNoZWQgdG8gd2hlbiBzdWNjZXNzZnVsLlxuICogQHBhcmFtIHtTdGF0ZX0gbm9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gdW5zdWNjZXNzZnVsLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IHR5cGVcbiAqICAgVHlwZSBvZiB0aGUgd2hvbGUgbGFiZWwgKGBbYV1gKS5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSBtYXJrZXJUeXBlXG4gKiAgIFR5cGUgZm9yIHRoZSBtYXJrZXJzIChgW2AgYW5kIGBdYCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gc3RyaW5nVHlwZVxuICogICBUeXBlIGZvciB0aGUgaWRlbnRpZmllciAoYGFgKS5cbiAqIEByZXR1cm5zIHtTdGF0ZX1cbiAqICAgU3RhcnQgc3RhdGUuXG4gKi8gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1wYXJhbXNcbmV4cG9ydCBmdW5jdGlvbiBmYWN0b3J5TGFiZWwoZWZmZWN0cywgb2ssIG5vaywgdHlwZSwgbWFya2VyVHlwZSwgc3RyaW5nVHlwZSkge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICBsZXQgc2l6ZSA9IDBcbiAgLyoqIEB0eXBlIHtib29sZWFufSAqL1xuICBsZXQgc2VlblxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgbGFiZWwuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV1cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgZWZmZWN0cy5lbnRlcihtYXJrZXJUeXBlKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdChtYXJrZXJUeXBlKVxuICAgIGVmZmVjdHMuZW50ZXIoc3RyaW5nVHlwZSlcbiAgICByZXR1cm4gYXRCcmVha1xuICB9XG5cbiAgLyoqXG4gICAqIEluIGxhYmVsLCBhdCBzb21ldGhpbmcsIGJlZm9yZSBzb21ldGhpbmcgZWxzZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGF0QnJlYWsoY29kZSkge1xuICAgIGlmIChcbiAgICAgIHNpemUgPiA5OTkgfHxcbiAgICAgIGNvZGUgPT09IG51bGwgfHxcbiAgICAgIGNvZGUgPT09IDkxIHx8XG4gICAgICAoY29kZSA9PT0gOTMgJiYgIXNlZW4pIHx8XG4gICAgICAvLyBUbyBkbzogcmVtb3ZlIGluIHRoZSBmdXR1cmUgb25jZSB3ZVx1MjAxOXZlIHN3aXRjaGVkIGZyb21cbiAgICAgIC8vIGBtaWNyb21hcmstZXh0ZW5zaW9uLWZvb3Rub3RlYCB0byBgbWljcm9tYXJrLWV4dGVuc2lvbi1nZm0tZm9vdG5vdGVgLFxuICAgICAgLy8gd2hpY2ggZG9lc25cdTIwMTl0IG5lZWQgdGhpcy5cbiAgICAgIC8vIEhpZGRlbiBmb290bm90ZXMgaG9vay5cbiAgICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICAgIChjb2RlID09PSA5NCAmJlxuICAgICAgICAhc2l6ZSAmJlxuICAgICAgICAnX2hpZGRlbkZvb3Rub3RlU3VwcG9ydCcgaW4gc2VsZi5wYXJzZXIuY29uc3RydWN0cylcbiAgICApIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDkzKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoc3RyaW5nVHlwZSlcbiAgICAgIGVmZmVjdHMuZW50ZXIobWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KG1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZSlcbiAgICAgIHJldHVybiBva1xuICAgIH1cblxuICAgIC8vIFRvIGRvOiBpbmRlbnQ/IExpbmsgY2h1bmtzIGFuZCBFT0xzIHRvZ2V0aGVyP1xuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgICAgcmV0dXJuIGF0QnJlYWtcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignY2h1bmtTdHJpbmcnLCB7XG4gICAgICBjb250ZW50VHlwZTogJ3N0cmluZydcbiAgICB9KVxuICAgIHJldHVybiBsYWJlbEluc2lkZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGxhYmVsLCBpbiB0ZXh0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGFiZWxJbnNpZGUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IG51bGwgfHxcbiAgICAgIGNvZGUgPT09IDkxIHx8XG4gICAgICBjb2RlID09PSA5MyB8fFxuICAgICAgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpIHx8XG4gICAgICBzaXplKysgPiA5OTlcbiAgICApIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtTdHJpbmcnKVxuICAgICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgaWYgKCFzZWVuKSBzZWVuID0gIW1hcmtkb3duU3BhY2UoY29kZSlcbiAgICByZXR1cm4gY29kZSA9PT0gOTIgPyBsYWJlbEVzY2FwZSA6IGxhYmVsSW5zaWRlXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgYSBzcGVjaWFsIGNoYXJhY3Rlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXFwqYV1cbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGxhYmVsRXNjYXBlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gOTEgfHwgY29kZSA9PT0gOTIgfHwgY29kZSA9PT0gOTMpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgc2l6ZSsrXG4gICAgICByZXR1cm4gbGFiZWxJbnNpZGVcbiAgICB9XG4gICAgcmV0dXJuIGxhYmVsSW5zaWRlKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FZmZlY3RzfSBFZmZlY3RzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlblR5cGV9IFRva2VuVHlwZVxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKipcbiAqIFBhcnNlIHRpdGxlcy5cbiAqXG4gKiAjIyMjIyMgRXhhbXBsZXNcbiAqXG4gKiBgYGBtYXJrZG93blxuICogXCJhXCJcbiAqICdiJ1xuICogKGMpXG4gKiBcImFcbiAqIGJcIlxuICogJ2FcbiAqICAgICBiJ1xuICogKGFcXCliKVxuICogYGBgXG4gKlxuICogQHBhcmFtIHtFZmZlY3RzfSBlZmZlY3RzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1N0YXRlfSBva1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHN1Y2Nlc3NmdWwuXG4gKiBAcGFyYW0ge1N0YXRlfSBub2tcbiAqICAgU3RhdGUgc3dpdGNoZWQgdG8gd2hlbiB1bnN1Y2Nlc3NmdWwuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gdHlwZVxuICogICBUeXBlIG9mIHRoZSB3aG9sZSB0aXRsZSAoYFwiYVwiYCwgYCdiJ2AsIGAoYylgKS5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSBtYXJrZXJUeXBlXG4gKiAgIFR5cGUgZm9yIHRoZSBtYXJrZXJzIChgXCJgLCBgJ2AsIGAoYCwgYW5kIGApYCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gc3RyaW5nVHlwZVxuICogICBUeXBlIGZvciB0aGUgdmFsdWUgKGBhYCkuXG4gKiBAcmV0dXJucyB7U3RhdGV9XG4gKiAgIFN0YXJ0IHN0YXRlLlxuICovIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zXG5leHBvcnQgZnVuY3Rpb24gZmFjdG9yeVRpdGxlKGVmZmVjdHMsIG9rLCBub2ssIHR5cGUsIG1hcmtlclR5cGUsIHN0cmluZ1R5cGUpIHtcbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgdGl0bGUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBcImFcIlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSAzNCB8fCBjb2RlID09PSAzOSB8fCBjb2RlID09PSA0MCkge1xuICAgICAgZWZmZWN0cy5lbnRlcih0eXBlKVxuICAgICAgZWZmZWN0cy5lbnRlcihtYXJrZXJUeXBlKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQobWFya2VyVHlwZSlcbiAgICAgIG1hcmtlciA9IGNvZGUgPT09IDQwID8gNDEgOiBjb2RlXG4gICAgICByZXR1cm4gYmVnaW5cbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIG9wZW5pbmcgbWFya2VyLlxuICAgKlxuICAgKiBUaGlzIGlzIGFsc28gdXNlZCBhdCB0aGUgY2xvc2luZyBtYXJrZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBcImFcIlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZ2luKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKG1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdChtYXJrZXJUeXBlKVxuICAgICAgZWZmZWN0cy5leGl0KHR5cGUpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcihzdHJpbmdUeXBlKVxuICAgIHJldHVybiBhdEJyZWFrKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgc29tZXRoaW5nLCBiZWZvcmUgc29tZXRoaW5nIGVsc2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBcImFcIlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGF0QnJlYWsoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuZXhpdChzdHJpbmdUeXBlKVxuICAgICAgcmV0dXJuIGJlZ2luKG1hcmtlcilcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICAvLyBOb3RlOiBibGFuayBsaW5lcyBjYW5cdTIwMTl0IGV4aXN0IGluIGNvbnRlbnQuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgLy8gVG8gZG86IHVzZSBgc3BhY2Vfb3JfdGFiX2VvbF93aXRoX29wdGlvbnNgLCBjb25uZWN0LlxuICAgICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGF0QnJlYWssICdsaW5lUHJlZml4JylcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignY2h1bmtTdHJpbmcnLCB7XG4gICAgICBjb250ZW50VHlwZTogJ3N0cmluZydcbiAgICB9KVxuICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIgfHwgY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtTdHJpbmcnKVxuICAgICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvZGUgPT09IDkyID8gZXNjYXBlIDogaW5zaWRlXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgYSBzcGVjaWFsIGNoYXJhY3Rlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFwiYVxcKmJcIlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVzY2FwZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlciB8fCBjb2RlID09PSA5Mikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gaW5zaWRlXG4gICAgfVxuICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FZmZlY3RzfSBFZmZlY3RzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nLCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKipcbiAqIFBhcnNlIHNwYWNlcyBhbmQgdGFicy5cbiAqXG4gKiBUaGVyZSBpcyBubyBgbm9rYCBwYXJhbWV0ZXI6XG4gKlxuICogKiAgIGxpbmUgZW5kaW5ncyBvciBzcGFjZXMgaW4gbWFya2Rvd24gYXJlIG9mdGVuIG9wdGlvbmFsLCBpbiB3aGljaCBjYXNlIHRoaXNcbiAqICAgICBmYWN0b3J5IGNhbiBiZSB1c2VkIGFuZCBgb2tgIHdpbGwgYmUgc3dpdGNoZWQgdG8gd2hldGhlciBzcGFjZXMgd2VyZSBmb3VuZFxuICogICAgIG9yIG5vdFxuICogKiAgIG9uZSBsaW5lIGVuZGluZyBvciBzcGFjZSBjYW4gYmUgZGV0ZWN0ZWQgd2l0aFxuICogICAgIGBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpYCByaWdodCBiZWZvcmUgdXNpbmcgYGZhY3RvcnlXaGl0ZXNwYWNlYFxuICpcbiAqIEBwYXJhbSB7RWZmZWN0c30gZWZmZWN0c1xuICogICBDb250ZXh0LlxuICogQHBhcmFtIHtTdGF0ZX0gb2tcbiAqICAgU3RhdGUgc3dpdGNoZWQgdG8gd2hlbiBzdWNjZXNzZnVsLlxuICogQHJldHVybnNcbiAqICAgU3RhcnQgc3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmYWN0b3J5V2hpdGVzcGFjZShlZmZlY3RzLCBvaykge1xuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gIGxldCBzZWVuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICAgIHNlZW4gPSB0cnVlXG4gICAgICByZXR1cm4gc3RhcnRcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIHJldHVybiBmYWN0b3J5U3BhY2UoXG4gICAgICAgIGVmZmVjdHMsXG4gICAgICAgIHN0YXJ0LFxuICAgICAgICBzZWVuID8gJ2xpbmVQcmVmaXgnIDogJ2xpbmVTdWZmaXgnXG4gICAgICApKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBOb3JtYWxpemUgYW4gaWRlbnRpZmllciAoYXMgZm91bmQgaW4gcmVmZXJlbmNlcywgZGVmaW5pdGlvbnMpLlxuICpcbiAqIENvbGxhcHNlcyBtYXJrZG93biB3aGl0ZXNwYWNlLCB0cmltLCBhbmQgdGhlbiBsb3dlci0gYW5kIHVwcGVyY2FzZS5cbiAqXG4gKiBTb21lIGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQgXHUyMDFDdXBwZXJjYXNlXHUyMDFELCBzdWNoIGFzIFUrMDNGNCAoYFx1MDNGNGApLCBidXQgaWYgdGhlaXJcbiAqIGxvd2VyY2FzZSBjb3VudGVycGFydCAoVSswM0I4IChgXHUwM0I4YCkpIGlzIHVwcGVyY2FzZWQgd2lsbCByZXN1bHQgaW4gYSBkaWZmZXJlbnRcbiAqIHVwcGVyY2FzZSBjaGFyYWN0ZXIgKFUrMDM5OCAoYFx1MDM5OGApKS5cbiAqIFNvLCB0byBnZXQgYSBjYW5vbmljYWwgZm9ybSwgd2UgcGVyZm9ybSBib3RoIGxvd2VyLSBhbmQgdXBwZXJjYXNlLlxuICpcbiAqIFVzaW5nIHVwcGVyY2FzZSBsYXN0IG1ha2VzIHN1cmUga2V5cyB3aWxsIG5ldmVyIGludGVyYWN0IHdpdGggZGVmYXVsdFxuICogcHJvdG90eXBhbCB2YWx1ZXMgKHN1Y2ggYXMgYGNvbnN0cnVjdG9yYCk6IG5vdGhpbmcgaW4gdGhlIHByb3RvdHlwZSBvZlxuICogYE9iamVjdGAgaXMgdXBwZXJjYXNlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogICBJZGVudGlmaWVyIHRvIG5vcm1hbGl6ZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIE5vcm1hbGl6ZWQgaWRlbnRpZmllci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUlkZW50aWZpZXIodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZVxuICAgICAgLy8gQ29sbGFwc2UgbWFya2Rvd24gd2hpdGVzcGFjZS5cbiAgICAgIC5yZXBsYWNlKC9bXFx0XFxuXFxyIF0rL2csICcgJylcbiAgICAgIC8vIFRyaW0uXG4gICAgICAucmVwbGFjZSgvXiB8ICQvZywgJycpXG4gICAgICAvLyBTb21lIGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQgXHUyMDFDdXBwZXJjYXNlXHUyMDFELCBidXQgaWYgdGhlaXIgbG93ZXJjYXNlXG4gICAgICAvLyBjb3VudGVycGFydCBpcyB1cHBlcmNhc2VkIHdpbGwgcmVzdWx0IGluIGEgZGlmZmVyZW50IHVwcGVyY2FzZVxuICAgICAgLy8gY2hhcmFjdGVyLlxuICAgICAgLy8gSGVuY2UsIHRvIGdldCB0aGF0IGZvcm0sIHdlIHBlcmZvcm0gYm90aCBsb3dlci0gYW5kIHVwcGVyY2FzZS5cbiAgICAgIC8vIFVwcGVyIGNhc2UgbWFrZXMgc3VyZSBrZXlzIHdpbGwgbm90IGludGVyYWN0IHdpdGggZGVmYXVsdCBwcm90b3R5cGFsXG4gICAgICAvLyBtZXRob2RzOiBubyBtZXRob2QgaXMgdXBwZXJjYXNlLlxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC50b1VwcGVyQ2FzZSgpXG4gIClcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5RGVzdGluYXRpb259IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LWRlc3RpbmF0aW9uJ1xuaW1wb3J0IHtmYWN0b3J5TGFiZWx9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LWxhYmVsJ1xuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHtmYWN0b3J5VGl0bGV9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXRpdGxlJ1xuaW1wb3J0IHtmYWN0b3J5V2hpdGVzcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktd2hpdGVzcGFjZSdcbmltcG9ydCB7XG4gIG1hcmtkb3duTGluZUVuZGluZyxcbiAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZSxcbiAgbWFya2Rvd25TcGFjZVxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge25vcm1hbGl6ZUlkZW50aWZpZXJ9IGZyb20gJ21pY3JvbWFyay11dGlsLW5vcm1hbGl6ZS1pZGVudGlmaWVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgZGVmaW5pdGlvbiA9IHtcbiAgbmFtZTogJ2RlZmluaXRpb24nLFxuICB0b2tlbml6ZTogdG9rZW5pemVEZWZpbml0aW9uXG59XG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgdGl0bGVCZWZvcmUgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZVRpdGxlQmVmb3JlLFxuICBwYXJ0aWFsOiB0cnVlXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplRGVmaW5pdGlvbihlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICBsZXQgaWRlbnRpZmllclxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogQXQgc3RhcnQgb2YgYSBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgLy8gRG8gbm90IGludGVycnVwdCBwYXJhZ3JhcGhzIChidXQgZG8gZm9sbG93IGRlZmluaXRpb25zKS5cbiAgICAvLyBUbyBkbzogZG8gYGludGVycnVwdGAgdGhlIHdheSBgbWFya2Rvd24tcnNgIGRvZXMuXG4gICAgLy8gVG8gZG86IHBhcnNlIHdoaXRlc3BhY2UgdGhlIHdheSBgbWFya2Rvd24tcnNgIGRvZXMuXG4gICAgZWZmZWN0cy5lbnRlcignZGVmaW5pdGlvbicpXG4gICAgcmV0dXJuIGJlZm9yZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UsIGF0IGBbYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlKGNvZGUpIHtcbiAgICAvLyBUbyBkbzogcGFyc2Ugd2hpdGVzcGFjZSB0aGUgd2F5IGBtYXJrZG93bi1yc2AgZG9lcy5cblxuICAgIHJldHVybiBmYWN0b3J5TGFiZWwuY2FsbChcbiAgICAgIHNlbGYsXG4gICAgICBlZmZlY3RzLFxuICAgICAgbGFiZWxBZnRlcixcbiAgICAgIC8vIE5vdGU6IHdlIGRvblx1MjAxOXQgbmVlZCB0byByZXNldCB0aGUgd2F5IGBtYXJrZG93bi1yc2AgZG9lcy5cbiAgICAgIG5vayxcbiAgICAgICdkZWZpbml0aW9uTGFiZWwnLFxuICAgICAgJ2RlZmluaXRpb25MYWJlbE1hcmtlcicsXG4gICAgICAnZGVmaW5pdGlvbkxhYmVsU3RyaW5nJ1xuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBsYWJlbC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGFiZWxBZnRlcihjb2RlKSB7XG4gICAgaWRlbnRpZmllciA9IG5vcm1hbGl6ZUlkZW50aWZpZXIoXG4gICAgICBzZWxmLnNsaWNlU2VyaWFsaXplKHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdWzFdKS5zbGljZSgxLCAtMSlcbiAgICApXG4gICAgaWYgKGNvZGUgPT09IDU4KSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdkZWZpbml0aW9uTWFya2VyJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdkZWZpbml0aW9uTWFya2VyJylcbiAgICAgIHJldHVybiBtYXJrZXJBZnRlclxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgbWFya2VyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbWFya2VyQWZ0ZXIoY29kZSkge1xuICAgIC8vIE5vdGU6IHdoaXRlc3BhY2UgaXMgb3B0aW9uYWwuXG4gICAgcmV0dXJuIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVdoaXRlc3BhY2UoZWZmZWN0cywgZGVzdGluYXRpb25CZWZvcmUpKGNvZGUpXG4gICAgICA6IGRlc3RpbmF0aW9uQmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQmVmb3JlIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGRlc3RpbmF0aW9uQmVmb3JlKGNvZGUpIHtcbiAgICByZXR1cm4gZmFjdG9yeURlc3RpbmF0aW9uKFxuICAgICAgZWZmZWN0cyxcbiAgICAgIGRlc3RpbmF0aW9uQWZ0ZXIsXG4gICAgICAvLyBOb3RlOiB3ZSBkb25cdTIwMTl0IG5lZWQgdG8gcmVzZXQgdGhlIHdheSBgbWFya2Rvd24tcnNgIGRvZXMuXG4gICAgICBub2ssXG4gICAgICAnZGVmaW5pdGlvbkRlc3RpbmF0aW9uJyxcbiAgICAgICdkZWZpbml0aW9uRGVzdGluYXRpb25MaXRlcmFsJyxcbiAgICAgICdkZWZpbml0aW9uRGVzdGluYXRpb25MaXRlcmFsTWFya2VyJyxcbiAgICAgICdkZWZpbml0aW9uRGVzdGluYXRpb25SYXcnLFxuICAgICAgJ2RlZmluaXRpb25EZXN0aW5hdGlvblN0cmluZydcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGRlc3RpbmF0aW9uQWZ0ZXIoY29kZSkge1xuICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQodGl0bGVCZWZvcmUsIGFmdGVyLCBhZnRlcikoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBkZWZpbml0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiXG4gICAqICAgICAgICAgICBeXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGFmdGVyV2hpdGVzcGFjZSwgJ3doaXRlc3BhY2UnKShjb2RlKVxuICAgICAgOiBhZnRlcldoaXRlc3BhY2UoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBkZWZpbml0aW9uLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiXG4gICAqICAgICAgICAgICBeXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcldoaXRlc3BhY2UoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdkZWZpbml0aW9uJylcblxuICAgICAgLy8gTm90ZTogd2UgZG9uXHUyMDE5dCBjYXJlIGFib3V0IHVuaXF1ZW5lc3MuXG4gICAgICAvLyBJdFx1MjAxOXMgbGlrZWx5IHRoYXQgdGhhdCBkb2Vzblx1MjAxOXQgaGFwcGVuIHZlcnkgZnJlcXVlbnRseS5cbiAgICAgIC8vIEl0IGlzIG1vcmUgbGlrZWx5IHRoYXQgaXQgd2FzdGVzIHByZWNpb3VzIHRpbWUuXG4gICAgICBzZWxmLnBhcnNlci5kZWZpbmVkLnB1c2goaWRlbnRpZmllcilcblxuICAgICAgLy8gVG8gZG86IGBtYXJrZG93bi1yc2AgaW50ZXJydXB0LlxuICAgICAgLy8gLy8gWW91XHUyMDE5ZCBiZSBpbnRlcnJ1cHRpbmcuXG4gICAgICAvLyB0b2tlbml6ZXIuaW50ZXJydXB0ID0gdHJ1ZVxuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZVRpdGxlQmVmb3JlKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgcmV0dXJuIHRpdGxlQmVmb3JlXG5cbiAgLyoqXG4gICAqIEFmdGVyIGRlc3RpbmF0aW9uLCBhdCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiXG4gICAqICAgICAgICAgICBeXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRpdGxlQmVmb3JlKGNvZGUpIHtcbiAgICByZXR1cm4gbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5V2hpdGVzcGFjZShlZmZlY3RzLCBiZWZvcmVNYXJrZXIpKGNvZGUpXG4gICAgICA6IG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IHRpdGxlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgW2FdOiBiXG4gICAqID4gfCBcImNcIlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlTWFya2VyKGNvZGUpIHtcbiAgICByZXR1cm4gZmFjdG9yeVRpdGxlKFxuICAgICAgZWZmZWN0cyxcbiAgICAgIHRpdGxlQWZ0ZXIsXG4gICAgICBub2ssXG4gICAgICAnZGVmaW5pdGlvblRpdGxlJyxcbiAgICAgICdkZWZpbml0aW9uVGl0bGVNYXJrZXInLFxuICAgICAgJ2RlZmluaXRpb25UaXRsZVN0cmluZydcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgdGl0bGUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0aXRsZUFmdGVyKGNvZGUpIHtcbiAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoZWZmZWN0cywgdGl0bGVBZnRlck9wdGlvbmFsV2hpdGVzcGFjZSwgJ3doaXRlc3BhY2UnKShjb2RlKVxuICAgICAgOiB0aXRsZUFmdGVyT3B0aW9uYWxXaGl0ZXNwYWNlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgdGl0bGUsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0aXRsZUFmdGVyT3B0aW9uYWxXaGl0ZXNwYWNlKGNvZGUpIHtcbiAgICByZXR1cm4gY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkgPyBvayhjb2RlKSA6IG5vayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBoYXJkQnJlYWtFc2NhcGUgPSB7XG4gIG5hbWU6ICdoYXJkQnJlYWtFc2NhcGUnLFxuICB0b2tlbml6ZTogdG9rZW5pemVIYXJkQnJlYWtFc2NhcGVcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVIYXJkQnJlYWtFc2NhcGUoZWZmZWN0cywgb2ssIG5vaykge1xuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgYSBoYXJkIGJyZWFrIChlc2NhcGUpLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYVxcXG4gICAqICAgICAgXlxuICAgKiAgIHwgYlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2hhcmRCcmVha0VzY2FwZScpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGFmdGVyXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYFxcYCwgYXQgZW9sLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYVxcXG4gICAqICAgICAgIF5cbiAgICogICB8IGJcbiAgICogYGBgXG4gICAqXG4gICAqICBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdoYXJkQnJlYWtFc2NhcGUnKVxuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VufSBUb2tlblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7XG4gIG1hcmtkb3duTGluZUVuZGluZyxcbiAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZSxcbiAgbWFya2Rvd25TcGFjZVxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge3NwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGhlYWRpbmdBdHggPSB7XG4gIG5hbWU6ICdoZWFkaW5nQXR4JyxcbiAgdG9rZW5pemU6IHRva2VuaXplSGVhZGluZ0F0eCxcbiAgcmVzb2x2ZTogcmVzb2x2ZUhlYWRpbmdBdHhcbn1cblxuLyoqIEB0eXBlIHtSZXNvbHZlcn0gKi9cbmZ1bmN0aW9uIHJlc29sdmVIZWFkaW5nQXR4KGV2ZW50cywgY29udGV4dCkge1xuICBsZXQgY29udGVudEVuZCA9IGV2ZW50cy5sZW5ndGggLSAyXG4gIGxldCBjb250ZW50U3RhcnQgPSAzXG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCBjb250ZW50XG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCB0ZXh0XG5cbiAgLy8gUHJlZml4IHdoaXRlc3BhY2UsIHBhcnQgb2YgdGhlIG9wZW5pbmcuXG4gIGlmIChldmVudHNbY29udGVudFN0YXJ0XVsxXS50eXBlID09PSAnd2hpdGVzcGFjZScpIHtcbiAgICBjb250ZW50U3RhcnQgKz0gMlxuICB9XG5cbiAgLy8gU3VmZml4IHdoaXRlc3BhY2UsIHBhcnQgb2YgdGhlIGNsb3NpbmcuXG4gIGlmIChcbiAgICBjb250ZW50RW5kIC0gMiA+IGNvbnRlbnRTdGFydCAmJlxuICAgIGV2ZW50c1tjb250ZW50RW5kXVsxXS50eXBlID09PSAnd2hpdGVzcGFjZSdcbiAgKSB7XG4gICAgY29udGVudEVuZCAtPSAyXG4gIH1cbiAgaWYgKFxuICAgIGV2ZW50c1tjb250ZW50RW5kXVsxXS50eXBlID09PSAnYXR4SGVhZGluZ1NlcXVlbmNlJyAmJlxuICAgIChjb250ZW50U3RhcnQgPT09IGNvbnRlbnRFbmQgLSAxIHx8XG4gICAgICAoY29udGVudEVuZCAtIDQgPiBjb250ZW50U3RhcnQgJiZcbiAgICAgICAgZXZlbnRzW2NvbnRlbnRFbmQgLSAyXVsxXS50eXBlID09PSAnd2hpdGVzcGFjZScpKVxuICApIHtcbiAgICBjb250ZW50RW5kIC09IGNvbnRlbnRTdGFydCArIDEgPT09IGNvbnRlbnRFbmQgPyAyIDogNFxuICB9XG4gIGlmIChjb250ZW50RW5kID4gY29udGVudFN0YXJ0KSB7XG4gICAgY29udGVudCA9IHtcbiAgICAgIHR5cGU6ICdhdHhIZWFkaW5nVGV4dCcsXG4gICAgICBzdGFydDogZXZlbnRzW2NvbnRlbnRTdGFydF1bMV0uc3RhcnQsXG4gICAgICBlbmQ6IGV2ZW50c1tjb250ZW50RW5kXVsxXS5lbmRcbiAgICB9XG4gICAgdGV4dCA9IHtcbiAgICAgIHR5cGU6ICdjaHVua1RleHQnLFxuICAgICAgc3RhcnQ6IGV2ZW50c1tjb250ZW50U3RhcnRdWzFdLnN0YXJ0LFxuICAgICAgZW5kOiBldmVudHNbY29udGVudEVuZF1bMV0uZW5kLFxuICAgICAgY29udGVudFR5cGU6ICd0ZXh0J1xuICAgIH1cbiAgICBzcGxpY2UoZXZlbnRzLCBjb250ZW50U3RhcnQsIGNvbnRlbnRFbmQgLSBjb250ZW50U3RhcnQgKyAxLCBbXG4gICAgICBbJ2VudGVyJywgY29udGVudCwgY29udGV4dF0sXG4gICAgICBbJ2VudGVyJywgdGV4dCwgY29udGV4dF0sXG4gICAgICBbJ2V4aXQnLCB0ZXh0LCBjb250ZXh0XSxcbiAgICAgIFsnZXhpdCcsIGNvbnRlbnQsIGNvbnRleHRdXG4gICAgXSlcbiAgfVxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplSGVhZGluZ0F0eChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGxldCBzaXplID0gMFxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgYSBoZWFkaW5nIChhdHgpLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgIyMgYWFcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAvLyBUbyBkbzogcGFyc2UgaW5kZW50IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICBlZmZlY3RzLmVudGVyKCdhdHhIZWFkaW5nJylcbiAgICByZXR1cm4gYmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgYCNgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgIyMgYWFcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZShjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignYXR4SGVhZGluZ1NlcXVlbmNlJylcbiAgICByZXR1cm4gc2VxdWVuY2VPcGVuKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gb3BlbmluZyBzZXF1ZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICMjIGFhXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzZXF1ZW5jZU9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSAzNSAmJiBzaXplKysgPCA2KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBzZXF1ZW5jZU9wZW5cbiAgICB9XG5cbiAgICAvLyBBbHdheXMgYXQgbGVhc3Qgb25lIGAjYC5cbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2F0eEhlYWRpbmdTZXF1ZW5jZScpXG4gICAgICByZXR1cm4gYXRCcmVhayhjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgc29tZXRoaW5nLCBiZWZvcmUgc29tZXRoaW5nIGVsc2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAjIyBhYVxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhdEJyZWFrKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gMzUpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2F0eEhlYWRpbmdTZXF1ZW5jZScpXG4gICAgICByZXR1cm4gc2VxdWVuY2VGdXJ0aGVyKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdhdHhIZWFkaW5nJylcbiAgICAgIC8vIFRvIGRvOiBpbnRlcnJ1cHQgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgICAgLy8gLy8gRmVlbCBmcmVlIHRvIGludGVycnVwdC5cbiAgICAgIC8vIHRva2VuaXplci5pbnRlcnJ1cHQgPSBmYWxzZVxuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGF0QnJlYWssICd3aGl0ZXNwYWNlJykoY29kZSlcbiAgICB9XG5cbiAgICAvLyBUbyBkbzogZ2VuZXJhdGUgYGRhdGFgIHRva2VucywgYWRkIHRoZSBgdGV4dGAgdG9rZW4gbGF0ZXIuXG4gICAgLy8gTmVlZHMgZWRpdCBtYXAsIHNlZTogYG1hcmtkb3duLnJzYC5cbiAgICBlZmZlY3RzLmVudGVyKCdhdHhIZWFkaW5nVGV4dCcpXG4gICAgcmV0dXJuIGRhdGEoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBmdXJ0aGVyIHNlcXVlbmNlIChhZnRlciB3aGl0ZXNwYWNlKS5cbiAgICpcbiAgICogQ291bGQgYmUgbm9ybWFsIFx1MjAxQ3Zpc2libGVcdTIwMUQgaGFzaGVzIGluIHRoZSBoZWFkaW5nIG9yIGEgZmluYWwgc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAjIyBhYSAjI1xuICAgKiAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc2VxdWVuY2VGdXJ0aGVyKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gMzUpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHNlcXVlbmNlRnVydGhlclxuICAgIH1cbiAgICBlZmZlY3RzLmV4aXQoJ2F0eEhlYWRpbmdTZXF1ZW5jZScpXG4gICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiB0ZXh0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgIyMgYWFcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGRhdGEoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IGNvZGUgPT09IDM1IHx8IG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnYXR4SGVhZGluZ1RleHQnKVxuICAgICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGRhdGFcbiAgfVxufVxuIiwgIi8qKlxuICogTGlzdCBvZiBsb3dlcmNhc2UgSFRNTCBcdTIwMUNibG9ja1x1MjAxRCB0YWcgbmFtZXMuXG4gKlxuICogVGhlIGxpc3QsIHdoZW4gcGFyc2luZyBIVE1MIChmbG93KSwgcmVzdWx0cyBpbiBtb3JlIHJlbGF4ZWQgcnVsZXMgKGNvbmRpdGlvblxuICogNikuXG4gKiBCZWNhdXNlIHRoZXkgYXJlIGtub3duIGJsb2NrcywgdGhlIEhUTUwtbGlrZSBzeW50YXggZG9lc25cdTIwMTl0IGhhdmUgdG8gYmVcbiAqIHN0cmljdGx5IHBhcnNlZC5cbiAqIEZvciB0YWcgbmFtZXMgbm90IGluIHRoaXMgbGlzdCwgYSBtb3JlIHN0cmljdCBhbGdvcml0aG0gKGNvbmRpdGlvbiA3KSBpcyB1c2VkXG4gKiB0byBkZXRlY3Qgd2hldGhlciB0aGUgSFRNTC1saWtlIHN5bnRheCBpcyBzZWVuIGFzIEhUTUwgKGZsb3cpIG9yIG5vdC5cbiAqXG4gKiBUaGlzIGlzIGNvcGllZCBmcm9tOlxuICogPGh0dHBzOi8vc3BlYy5jb21tb25tYXJrLm9yZy8wLjMwLyNodG1sLWJsb2Nrcz4uXG4gKlxuICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IGBzZWFyY2hgIHdhcyBhZGRlZCBpbiBgQ29tbW9uTWFya0AwLjMxYC5cbiAqL1xuZXhwb3J0IGNvbnN0IGh0bWxCbG9ja05hbWVzID0gW1xuICAnYWRkcmVzcycsXG4gICdhcnRpY2xlJyxcbiAgJ2FzaWRlJyxcbiAgJ2Jhc2UnLFxuICAnYmFzZWZvbnQnLFxuICAnYmxvY2txdW90ZScsXG4gICdib2R5JyxcbiAgJ2NhcHRpb24nLFxuICAnY2VudGVyJyxcbiAgJ2NvbCcsXG4gICdjb2xncm91cCcsXG4gICdkZCcsXG4gICdkZXRhaWxzJyxcbiAgJ2RpYWxvZycsXG4gICdkaXInLFxuICAnZGl2JyxcbiAgJ2RsJyxcbiAgJ2R0JyxcbiAgJ2ZpZWxkc2V0JyxcbiAgJ2ZpZ2NhcHRpb24nLFxuICAnZmlndXJlJyxcbiAgJ2Zvb3RlcicsXG4gICdmb3JtJyxcbiAgJ2ZyYW1lJyxcbiAgJ2ZyYW1lc2V0JyxcbiAgJ2gxJyxcbiAgJ2gyJyxcbiAgJ2gzJyxcbiAgJ2g0JyxcbiAgJ2g1JyxcbiAgJ2g2JyxcbiAgJ2hlYWQnLFxuICAnaGVhZGVyJyxcbiAgJ2hyJyxcbiAgJ2h0bWwnLFxuICAnaWZyYW1lJyxcbiAgJ2xlZ2VuZCcsXG4gICdsaScsXG4gICdsaW5rJyxcbiAgJ21haW4nLFxuICAnbWVudScsXG4gICdtZW51aXRlbScsXG4gICduYXYnLFxuICAnbm9mcmFtZXMnLFxuICAnb2wnLFxuICAnb3B0Z3JvdXAnLFxuICAnb3B0aW9uJyxcbiAgJ3AnLFxuICAncGFyYW0nLFxuICAnc2VhcmNoJyxcbiAgJ3NlY3Rpb24nLFxuICAnc3VtbWFyeScsXG4gICd0YWJsZScsXG4gICd0Ym9keScsXG4gICd0ZCcsXG4gICd0Zm9vdCcsXG4gICd0aCcsXG4gICd0aGVhZCcsXG4gICd0aXRsZScsXG4gICd0cicsXG4gICd0cmFjaycsXG4gICd1bCdcbl1cblxuLyoqXG4gKiBMaXN0IG9mIGxvd2VyY2FzZSBIVE1MIFx1MjAxQ3Jhd1x1MjAxRCB0YWcgbmFtZXMuXG4gKlxuICogVGhlIGxpc3QsIHdoZW4gcGFyc2luZyBIVE1MIChmbG93KSwgcmVzdWx0cyBpbiBIVE1MIHRoYXQgY2FuIGluY2x1ZGUgbGluZXNcbiAqIHdpdGhvdXQgZXhpdGluZywgdW50aWwgYSBjbG9zaW5nIHRhZyBhbHNvIGluIHRoaXMgbGlzdCBpcyBmb3VuZCAoY29uZGl0aW9uXG4gKiAxKS5cbiAqXG4gKiBUaGlzIG1vZHVsZSBpcyBjb3BpZWQgZnJvbTpcbiAqIDxodHRwczovL3NwZWMuY29tbW9ubWFyay5vcmcvMC4zMC8jaHRtbC1ibG9ja3M+LlxuICpcbiAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiBgdGV4dGFyZWFgIHdhcyBhZGRlZCBpbiBgQ29tbW9uTWFya0AwLjMwYC5cbiAqL1xuZXhwb3J0IGNvbnN0IGh0bWxSYXdOYW1lcyA9IFsncHJlJywgJ3NjcmlwdCcsICdzdHlsZScsICd0ZXh0YXJlYSddXG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUmVzb2x2ZXJ9IFJlc29sdmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7XG4gIGFzY2lpQWxwaGEsXG4gIGFzY2lpQWxwaGFudW1lcmljLFxuICBtYXJrZG93bkxpbmVFbmRpbmcsXG4gIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UsXG4gIG1hcmtkb3duU3BhY2Vcbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtodG1sQmxvY2tOYW1lcywgaHRtbFJhd05hbWVzfSBmcm9tICdtaWNyb21hcmstdXRpbC1odG1sLXRhZy1uYW1lJ1xuaW1wb3J0IHtibGFua0xpbmV9IGZyb20gJy4vYmxhbmstbGluZS5qcydcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgaHRtbEZsb3cgPSB7XG4gIG5hbWU6ICdodG1sRmxvdycsXG4gIHRva2VuaXplOiB0b2tlbml6ZUh0bWxGbG93LFxuICByZXNvbHZlVG86IHJlc29sdmVUb0h0bWxGbG93LFxuICBjb25jcmV0ZTogdHJ1ZVxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IGJsYW5rTGluZUJlZm9yZSA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplQmxhbmtMaW5lQmVmb3JlLFxuICBwYXJ0aWFsOiB0cnVlXG59XG5jb25zdCBub25MYXp5Q29udGludWF0aW9uU3RhcnQgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZU5vbkxhenlDb250aW51YXRpb25TdGFydCxcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuZnVuY3Rpb24gcmVzb2x2ZVRvSHRtbEZsb3coZXZlbnRzKSB7XG4gIGxldCBpbmRleCA9IGV2ZW50cy5sZW5ndGhcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICBpZiAoZXZlbnRzW2luZGV4XVswXSA9PT0gJ2VudGVyJyAmJiBldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdodG1sRmxvdycpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIGlmIChpbmRleCA+IDEgJiYgZXZlbnRzW2luZGV4IC0gMl1bMV0udHlwZSA9PT0gJ2xpbmVQcmVmaXgnKSB7XG4gICAgLy8gQWRkIHRoZSBwcmVmaXggc3RhcnQgdG8gdGhlIEhUTUwgdG9rZW4uXG4gICAgZXZlbnRzW2luZGV4XVsxXS5zdGFydCA9IGV2ZW50c1tpbmRleCAtIDJdWzFdLnN0YXJ0XG4gICAgLy8gQWRkIHRoZSBwcmVmaXggc3RhcnQgdG8gdGhlIEhUTUwgbGluZSB0b2tlbi5cbiAgICBldmVudHNbaW5kZXggKyAxXVsxXS5zdGFydCA9IGV2ZW50c1tpbmRleCAtIDJdWzFdLnN0YXJ0XG4gICAgLy8gUmVtb3ZlIHRoZSBsaW5lIHByZWZpeC5cbiAgICBldmVudHMuc3BsaWNlKGluZGV4IC0gMiwgMilcbiAgfVxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplSHRtbEZsb3coZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IG1hcmtlclxuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gIGxldCBjbG9zaW5nVGFnXG4gIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICBsZXQgYnVmZmVyXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgaW5kZXhcbiAgLyoqIEB0eXBlIHtDb2RlfSAqL1xuICBsZXQgbWFya2VyQlxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgSFRNTCAoZmxvdykuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8eCAvPlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIC8vIFRvIGRvOiBwYXJzZSBpbmRlbnQgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIHJldHVybiBiZWZvcmUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBgPGAsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8eCAvPlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlKGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdodG1sRmxvdycpXG4gICAgZWZmZWN0cy5lbnRlcignaHRtbEZsb3dEYXRhJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gb3BlblxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8YCwgYXQgdGFnIG5hbWUgb3Igb3RoZXIgc3R1ZmYuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8eCAvPlxuICAgKiAgICAgIF5cbiAgICogPiB8IDwhZG9jdHlwZT5cbiAgICogICAgICBeXG4gICAqID4gfCA8IS0teHh4LS0+XG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gb3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDMzKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBkZWNsYXJhdGlvbk9wZW5cbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDQ3KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGNsb3NpbmdUYWcgPSB0cnVlXG4gICAgICByZXR1cm4gdGFnQ2xvc2VTdGFydFxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNjMpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gM1xuICAgICAgLy8gVG8gZG86XG4gICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICAvLyBUbyBkbzogdXNlIGBtYXJrZG93bi1yc2Agc3R5bGUgaW50ZXJydXB0LlxuICAgICAgLy8gV2hpbGUgd2VcdTIwMTlyZSBpbiBhbiBpbnN0cnVjdGlvbiBpbnN0ZWFkIG9mIGEgZGVjbGFyYXRpb24sIHdlXHUyMDE5cmUgb24gYSBgP2BcbiAgICAgIC8vIHJpZ2h0IG5vdywgc28gd2UgZG8gbmVlZCB0byBzZWFyY2ggZm9yIGA+YCwgc2ltaWxhciB0byBkZWNsYXJhdGlvbnMuXG4gICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayA6IGNvbnRpbnVhdGlvbkRlY2xhcmF0aW9uSW5zaWRlXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFiZXRpY2FsLlxuICAgIGlmIChhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG5vdCBudWxsLlxuICAgICAgYnVmZmVyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ05hbWVcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8IWAsIGF0IGRlY2xhcmF0aW9uLCBjb21tZW50LCBvciBDREFUQS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhZG9jdHlwZT5cbiAgICogICAgICAgXlxuICAgKiA+IHwgPCEtLXh4eC0tPlxuICAgKiAgICAgICBeXG4gICAqID4gfCA8IVtDREFUQVs+JjxdXT5cbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGVjbGFyYXRpb25PcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDUpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gMlxuICAgICAgcmV0dXJuIGNvbW1lbnRPcGVuSW5zaWRlXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA5MSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXIgPSA1XG4gICAgICBpbmRleCA9IDBcbiAgICAgIHJldHVybiBjZGF0YU9wZW5JbnNpZGVcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gNFxuICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgIHJldHVybiBzZWxmLmludGVycnVwdCA/IG9rIDogY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8IS1gLCBpbnNpZGUgYSBjb21tZW50LCBhdCBhbm90aGVyIGAtYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnRPcGVuSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDUpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgIHJldHVybiBzZWxmLmludGVycnVwdCA/IG9rIDogY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8IVtgLCBpbnNpZGUgQ0RBVEEsIGV4cGVjdGluZyBgQ0RBVEFbYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhW0NEQVRBWz4mPF1dPlxuICAgKiAgICAgICAgXl5eXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjZGF0YU9wZW5JbnNpZGUoY29kZSkge1xuICAgIGNvbnN0IHZhbHVlID0gJ0NEQVRBWydcbiAgICBpZiAoY29kZSA9PT0gdmFsdWUuY2hhckNvZGVBdChpbmRleCsrKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBpZiAoaW5kZXggPT09IHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAvLyAvLyBEbyBub3QgZm9ybSBjb250YWluZXJzLlxuICAgICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICAgIHJldHVybiBzZWxmLmludGVycnVwdCA/IG9rIDogY29udGludWF0aW9uXG4gICAgICB9XG4gICAgICByZXR1cm4gY2RhdGFPcGVuSW5zaWRlXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPC9gLCBpbiBjbG9zaW5nIHRhZywgYXQgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8L3g+XG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ0Nsb3NlU3RhcnQoY29kZSkge1xuICAgIGlmIChhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG5vdCBudWxsLlxuICAgICAgYnVmZmVyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ05hbWVcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGFiPlxuICAgKiAgICAgIF5eXG4gICAqID4gfCA8L2FiPlxuICAgKiAgICAgICBeXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnTmFtZShjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gbnVsbCB8fFxuICAgICAgY29kZSA9PT0gNDcgfHxcbiAgICAgIGNvZGUgPT09IDYyIHx8XG4gICAgICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgKSB7XG4gICAgICBjb25zdCBzbGFzaCA9IGNvZGUgPT09IDQ3XG4gICAgICBjb25zdCBuYW1lID0gYnVmZmVyLnRvTG93ZXJDYXNlKClcbiAgICAgIGlmICghc2xhc2ggJiYgIWNsb3NpbmdUYWcgJiYgaHRtbFJhd05hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgICAgIG1hcmtlciA9IDFcbiAgICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgPyBvayhjb2RlKSA6IGNvbnRpbnVhdGlvbihjb2RlKVxuICAgICAgfVxuICAgICAgaWYgKGh0bWxCbG9ja05hbWVzLmluY2x1ZGVzKGJ1ZmZlci50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICBtYXJrZXIgPSA2XG4gICAgICAgIGlmIChzbGFzaCkge1xuICAgICAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgICAgIHJldHVybiBiYXNpY1NlbGZDbG9zaW5nXG4gICAgICAgIH1cblxuICAgICAgICAvLyAvLyBEbyBub3QgZm9ybSBjb250YWluZXJzLlxuICAgICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICAgIHJldHVybiBzZWxmLmludGVycnVwdCA/IG9rKGNvZGUpIDogY29udGludWF0aW9uKGNvZGUpXG4gICAgICB9XG4gICAgICBtYXJrZXIgPSA3XG4gICAgICAvLyBEbyBub3Qgc3VwcG9ydCBjb21wbGV0ZSBIVE1MIHdoZW4gaW50ZXJydXB0aW5nLlxuICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ICYmICFzZWxmLnBhcnNlci5sYXp5W3NlbGYubm93KCkubGluZV1cbiAgICAgICAgPyBub2soY29kZSlcbiAgICAgICAgOiBjbG9zaW5nVGFnXG4gICAgICAgID8gY29tcGxldGVDbG9zaW5nVGFnQWZ0ZXIoY29kZSlcbiAgICAgICAgOiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVCZWZvcmUoY29kZSlcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWNhbCBhbmQgYC1gLlxuICAgIGlmIChjb2RlID09PSA0NSB8fCBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBidWZmZXIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ05hbWVcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGNsb3Npbmcgc2xhc2ggb2YgYSBiYXNpYyB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxkaXYvPlxuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiYXNpY1NlbGZDbG9zaW5nKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgLy8gLy8gRG8gbm90IGZvcm0gY29udGFpbmVycy5cbiAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgIHJldHVybiBzZWxmLmludGVycnVwdCA/IG9rIDogY29udGludWF0aW9uXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBjbG9zaW5nIHNsYXNoIG9mIGEgY29tcGxldGUgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8eC8+XG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUNsb3NpbmdUYWdBZnRlcihjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQ2xvc2luZ1RhZ0FmdGVyXG4gICAgfVxuICAgIHJldHVybiBjb21wbGV0ZUVuZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IGFuIGF0dHJpYnV0ZSBuYW1lLlxuICAgKlxuICAgKiBBdCBmaXJzdCwgdGhpcyBzdGF0ZSBpcyB1c2VkIGFmdGVyIGEgY29tcGxldGUgdGFnIG5hbWUsIGFmdGVyIHdoaXRlc3BhY2UsXG4gICAqIHdoZXJlIGl0IGV4cGVjdHMgb3B0aW9uYWwgYXR0cmlidXRlcyBvciB0aGUgZW5kIG9mIHRoZSB0YWcuXG4gICAqIEl0IGlzIGFsc28gcmV1c2VkIGFmdGVyIGF0dHJpYnV0ZXMsIHdoZW4gZXhwZWN0aW5nIG1vcmUgb3B0aW9uYWxcbiAgICogYXR0cmlidXRlcy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIC8+XG4gICAqICAgICAgICBeXG4gICAqID4gfCA8YSA6Yj5cbiAgICogICAgICAgIF5cbiAgICogPiB8IDxhIF9iPlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgPGEgYj5cbiAgICogICAgICAgIF5cbiAgICogPiB8IDxhID5cbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQXR0cmlidXRlTmFtZUJlZm9yZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ3KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUVuZFxuICAgIH1cblxuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpY2FsIGFuZCBgOmAgYW5kIGBfYC5cbiAgICBpZiAoY29kZSA9PT0gNTggfHwgY29kZSA9PT0gOTUgfHwgYXNjaWlBbHBoYShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVOYW1lXG4gICAgfVxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVCZWZvcmVcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBsZXRlRW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gYXR0cmlidXRlIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSA6Yj5cbiAgICogICAgICAgICBeXG4gICAqID4gfCA8YSBfYj5cbiAgICogICAgICAgICBeXG4gICAqID4gfCA8YSBiPlxuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQXR0cmlidXRlTmFtZShjb2RlKSB7XG4gICAgLy8gQVNDSUkgYWxwaGFudW1lcmljYWwgYW5kIGAtYCwgYC5gLCBgOmAsIGFuZCBgX2AuXG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gNDUgfHxcbiAgICAgIGNvZGUgPT09IDQ2IHx8XG4gICAgICBjb2RlID09PSA1OCB8fFxuICAgICAgY29kZSA9PT0gOTUgfHxcbiAgICAgIGFzY2lpQWxwaGFudW1lcmljKGNvZGUpXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUFmdGVyKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYXR0cmlidXRlIG5hbWUsIGF0IGFuIG9wdGlvbmFsIGluaXRpYWxpemVyLCB0aGUgZW5kIG9mIHRoZSB0YWcsIG9yXG4gICAqIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSBiPlxuICAgKiAgICAgICAgIF5cbiAgICogPiB8IDxhIGI9Yz5cbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVBZnRlcihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYxKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlQmVmb3JlXG4gICAgfVxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVBZnRlclxuICAgIH1cbiAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVOYW1lQmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQmVmb3JlIHVucXVvdGVkLCBkb3VibGUgcXVvdGVkLCBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSwgYWxsb3dpbmdcbiAgICogd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI9Yz5cbiAgICogICAgICAgICAgXlxuICAgKiA+IHwgPGEgYj1cImNcIj5cbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZUJlZm9yZShjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gbnVsbCB8fFxuICAgICAgY29kZSA9PT0gNjAgfHxcbiAgICAgIGNvZGUgPT09IDYxIHx8XG4gICAgICBjb2RlID09PSA2MiB8fFxuICAgICAgY29kZSA9PT0gOTZcbiAgICApIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDM0IHx8IGNvZGUgPT09IDM5KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlckIgPSBjb2RlXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVF1b3RlZFxuICAgIH1cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZUJlZm9yZVxuICAgIH1cbiAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gZG91YmxlIG9yIHNpbmdsZSBxdW90ZWQgYXR0cmlidXRlIHZhbHVlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgYj1cImNcIj5cbiAgICogICAgICAgICAgIF5cbiAgICogPiB8IDxhIGI9J2MnPlxuICAgKiAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVF1b3RlZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlckIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyQiA9IG51bGxcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlUXVvdGVkQWZ0ZXJcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlUXVvdGVkXG4gIH1cblxuICAvKipcbiAgICogSW4gdW5xdW90ZWQgYXR0cmlidXRlIHZhbHVlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgYj1jPlxuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IG51bGwgfHxcbiAgICAgIGNvZGUgPT09IDM0IHx8XG4gICAgICBjb2RlID09PSAzOSB8fFxuICAgICAgY29kZSA9PT0gNDcgfHxcbiAgICAgIGNvZGUgPT09IDYwIHx8XG4gICAgICBjb2RlID09PSA2MSB8fFxuICAgICAgY29kZSA9PT0gNjIgfHxcbiAgICAgIGNvZGUgPT09IDk2IHx8XG4gICAgICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVOYW1lQWZ0ZXIoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVVbnF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGRvdWJsZSBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSwgYmVmb3JlIHdoaXRlc3BhY2Ugb3IgdGhlXG4gICAqIGVuZCBvZiB0aGUgdGFnLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgYj1cImNcIj5cbiAgICogICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlUXVvdGVkQWZ0ZXIoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0NyB8fCBjb2RlID09PSA2MiB8fCBtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVOYW1lQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgb2YgYSBjb21wbGV0ZSB0YWcgd2hlcmUgb25seSBhbiBgPmAgaXMgYWxsb3dlZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI9XCJjXCI+XG4gICAqICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlRW5kKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQWZ0ZXJcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA+YCBpbiBhIGNvbXBsZXRlIHRhZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDx4PlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBZnRlcihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICAvLyAvLyBEbyBub3QgZm9ybSBjb250YWluZXJzLlxuICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBZnRlclxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY29udGludWF0aW9uIG9mIGFueSBIVE1MIGtpbmQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IS0teHh4LS0+XG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ1ICYmIG1hcmtlciA9PT0gMikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ29tbWVudEluc2lkZVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNjAgJiYgbWFya2VyID09PSAxKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25SYXdUYWdPcGVuXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA2MiAmJiBtYXJrZXIgPT09IDQpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbkNsb3NlXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA2MyAmJiBtYXJrZXIgPT09IDMpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbkRlY2xhcmF0aW9uSW5zaWRlXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA5MyAmJiBtYXJrZXIgPT09IDUpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbkNkYXRhSW5zaWRlXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkgJiYgKG1hcmtlciA9PT0gNiB8fCBtYXJrZXIgPT09IDcpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2h0bWxGbG93RGF0YScpXG4gICAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhcbiAgICAgICAgYmxhbmtMaW5lQmVmb3JlLFxuICAgICAgICBjb250aW51YXRpb25BZnRlcixcbiAgICAgICAgY29udGludWF0aW9uU3RhcnRcbiAgICAgICkoY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2h0bWxGbG93RGF0YScpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uU3RhcnQoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbnRpbnVhdGlvbiwgYXQgZW9sLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHg+XG4gICAqICAgICAgICBeXG4gICAqICAgfCBhc2RcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvblN0YXJ0KGNvZGUpIHtcbiAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhcbiAgICAgIG5vbkxhenlDb250aW51YXRpb25TdGFydCxcbiAgICAgIGNvbnRpbnVhdGlvblN0YXJ0Tm9uTGF6eSxcbiAgICAgIGNvbnRpbnVhdGlvbkFmdGVyXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbnRpbnVhdGlvbiwgYXQgZW9sLCBiZWZvcmUgbm9uLWxhenkgY29udGVudC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDx4PlxuICAgKiAgICAgICAgXlxuICAgKiAgIHwgYXNkXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25TdGFydE5vbkxhenkoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbkJlZm9yZVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbnRpbnVhdGlvbiwgYmVmb3JlIG5vbi1sYXp5IGNvbnRlbnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCA8eD5cbiAgICogPiB8IGFzZFxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBjb250aW51YXRpb25TdGFydChjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdodG1sRmxvd0RhdGEnKVxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb21tZW50IGNvbnRpbnVhdGlvbiwgYWZ0ZXIgb25lIGAtYCwgZXhwZWN0aW5nIGFub3RoZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IS0teHh4LS0+XG4gICAqICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkNvbW1lbnRJbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0NSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJhdyBjb250aW51YXRpb24sIGFmdGVyIGA8YCwgYXQgYC9gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHNjcmlwdD5jb25zb2xlLmxvZygxKTwvc2NyaXB0PlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25SYXdUYWdPcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDcpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgYnVmZmVyID0gJydcbiAgICAgIHJldHVybiBjb250aW51YXRpb25SYXdFbmRUYWdcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJhdyBjb250aW51YXRpb24sIGFmdGVyIGA8L2AsIGluIGEgcmF3IHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHNjcmlwdD5jb25zb2xlLmxvZygxKTwvc2NyaXB0PlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25SYXdFbmRUYWcoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2Mikge1xuICAgICAgY29uc3QgbmFtZSA9IGJ1ZmZlci50b0xvd2VyQ2FzZSgpXG4gICAgICBpZiAoaHRtbFJhd05hbWVzLmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgICByZXR1cm4gY29udGludWF0aW9uQ2xvc2VcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgICB9XG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkgJiYgYnVmZmVyLmxlbmd0aCA8IDgpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbm90IG51bGwuXG4gICAgICBidWZmZXIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvblJhd0VuZFRhZ1xuICAgIH1cbiAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY2RhdGEgY29udGludWF0aW9uLCBhZnRlciBgXWAsIGV4cGVjdGluZyBgXT5gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPCFbQ0RBVEFbPiY8XV0+XG4gICAqICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uQ2RhdGFJbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA5Mykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRlY2xhcmF0aW9uIG9yIGluc3RydWN0aW9uIGNvbnRpbnVhdGlvbiwgYXQgYD5gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPCEtLT5cbiAgICogICAgICAgICBeXG4gICAqID4gfCA8Pz5cbiAgICogICAgICAgXlxuICAgKiA+IHwgPCFxPlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgPCEtLWFiLS0+XG4gICAqICAgICAgICAgICAgIF5cbiAgICogPiB8IDwhW0NEQVRBWz4mPF1dPlxuICAgKiAgICAgICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25DbG9zZVxuICAgIH1cblxuICAgIC8vIE1vcmUgZGFzaGVzLlxuICAgIGlmIChjb2RlID09PSA0NSAmJiBtYXJrZXIgPT09IDIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbkRlY2xhcmF0aW9uSW5zaWRlXG4gICAgfVxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjbG9zZWQgY29udGludWF0aW9uOiBldmVyeXRoaW5nIHdlIGdldCB1bnRpbCB0aGUgZW9sL2VvZiBpcyBwYXJ0IG9mIGl0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPCFkb2N0eXBlPlxuICAgKiAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkNsb3NlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnaHRtbEZsb3dEYXRhJylcbiAgICAgIHJldHVybiBjb250aW51YXRpb25BZnRlcihjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29udGludWF0aW9uQ2xvc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBEb25lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPCFkb2N0eXBlPlxuICAgKiAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkFmdGVyKGNvZGUpIHtcbiAgICBlZmZlY3RzLmV4aXQoJ2h0bWxGbG93JylcbiAgICAvLyAvLyBGZWVsIGZyZWUgdG8gaW50ZXJydXB0LlxuICAgIC8vIHRva2VuaXplci5pbnRlcnJ1cHQgPSBmYWxzZVxuICAgIC8vIC8vIE5vIGxvbmdlciBjb25jcmV0ZS5cbiAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSBmYWxzZVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTm9uTGF6eUNvbnRpbnVhdGlvblN0YXJ0KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIEF0IGVvbCwgYmVmb3JlIGNvbnRpbnVhdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICogYGBganNcbiAgICogICAgICAgICAgICBeXG4gICAqICAgfCBiXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgICByZXR1cm4gYWZ0ZXJcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEEgY29udGludWF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgKiBgYGBqc1xuICAgKiA+IHwgYlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIHJldHVybiBzZWxmLnBhcnNlci5sYXp5W3NlbGYubm93KCkubGluZV0gPyBub2soY29kZSkgOiBvayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQmxhbmtMaW5lQmVmb3JlKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIEJlZm9yZSBlb2wsIGV4cGVjdGluZyBibGFuayBsaW5lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGRpdj5cbiAgICogICAgICAgICAgXlxuICAgKiAgIHxcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoYmxhbmtMaW5lLCBvaywgbm9rKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHtcbiAgYXNjaWlBbHBoYSxcbiAgYXNjaWlBbHBoYW51bWVyaWMsXG4gIG1hcmtkb3duTGluZUVuZGluZyxcbiAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZSxcbiAgbWFya2Rvd25TcGFjZVxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBodG1sVGV4dCA9IHtcbiAgbmFtZTogJ2h0bWxUZXh0JyxcbiAgdG9rZW5pemU6IHRva2VuaXplSHRtbFRleHRcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVIdG1sVGV4dChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7Tm9uTnVsbGFibGU8Q29kZT4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBtYXJrZXJcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBpbmRleFxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBsZXQgcmV0dXJuU3RhdGVcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIEhUTUwgKHRleHQpLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8Yj4gY1xuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignaHRtbFRleHQnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2h0bWxUZXh0RGF0YScpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIG9wZW5cbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPGAsIGF0IHRhZyBuYW1lIG9yIG90aGVyIHN0dWZmLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8Yj4gY1xuICAgKiAgICAgICAgXlxuICAgKiA+IHwgYSA8IWRvY3R5cGU+IGNcbiAgICogICAgICAgIF5cbiAgICogPiB8IGEgPCEtLWItLT4gY1xuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gb3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDMzKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBkZWNsYXJhdGlvbk9wZW5cbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDQ3KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdDbG9zZVN0YXJ0XG4gICAgfVxuICAgIGlmIChjb2RlID09PSA2Mykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gaW5zdHJ1Y3Rpb25cbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5cbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8IWAsIGF0IGRlY2xhcmF0aW9uLCBjb21tZW50LCBvciBDREFUQS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCFkb2N0eXBlPiBjXG4gICAqICAgICAgICAgXlxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICAgXlxuICAgKiA+IHwgYSA8IVtDREFUQVs+JjxdXT4gY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGRlY2xhcmF0aW9uT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ1KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21tZW50T3Blbkluc2lkZVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gOTEpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgaW5kZXggPSAwXG4gICAgICByZXR1cm4gY2RhdGFPcGVuSW5zaWRlXG4gICAgfVxuICAgIGlmIChhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBkZWNsYXJhdGlvblxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gYSBjb21tZW50LCBhZnRlciBgPCEtYCwgYXQgYW5vdGhlciBgLWAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwhLS1iLS0+IGNcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tbWVudE9wZW5JbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0NSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tbWVudEVuZFxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY29tbWVudC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCEtLWItLT4gY1xuICAgKiAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tbWVudChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDQ1KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21tZW50Q2xvc2VcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSBjb21tZW50XG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29tbWVudFxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbW1lbnQsIGFmdGVyIGAtYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCEtLWItLT4gY1xuICAgKiAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50Q2xvc2UoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0NSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tbWVudEVuZFxuICAgIH1cbiAgICByZXR1cm4gY29tbWVudChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbW1lbnQsIGFmdGVyIGAtLWAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwhLS1iLS0+IGNcbiAgICogICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnRFbmQoY29kZSkge1xuICAgIHJldHVybiBjb2RlID09PSA2MlxuICAgICAgPyBlbmQoY29kZSlcbiAgICAgIDogY29kZSA9PT0gNDVcbiAgICAgID8gY29tbWVudENsb3NlKGNvZGUpXG4gICAgICA6IGNvbW1lbnQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPCFbYCwgaW4gQ0RBVEEsIGV4cGVjdGluZyBgQ0RBVEFbYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCFbQ0RBVEFbPiY8XV0+IGJcbiAgICogICAgICAgICAgXl5eXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjZGF0YU9wZW5JbnNpZGUoY29kZSkge1xuICAgIGNvbnN0IHZhbHVlID0gJ0NEQVRBWydcbiAgICBpZiAoY29kZSA9PT0gdmFsdWUuY2hhckNvZGVBdChpbmRleCsrKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gaW5kZXggPT09IHZhbHVlLmxlbmd0aCA/IGNkYXRhIDogY2RhdGFPcGVuSW5zaWRlXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBDREFUQS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCFbQ0RBVEFbPiY8XV0+IGJcbiAgICogICAgICAgICAgICAgICAgXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjZGF0YShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDkzKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjZGF0YUNsb3NlXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gY2RhdGFcbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEluIENEQVRBLCBhZnRlciBgXWAsIGF0IGFub3RoZXIgYF1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IVtDREFUQVs+JjxdXT4gYlxuICAgKiAgICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2RhdGFDbG9zZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDkzKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjZGF0YUVuZFxuICAgIH1cbiAgICByZXR1cm4gY2RhdGEoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBDREFUQSwgYWZ0ZXIgYF1dYCwgYXQgYD5gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IVtDREFUQVs+JjxdXT4gYlxuICAgKiAgICAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNkYXRhRW5kKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjIpIHtcbiAgICAgIHJldHVybiBlbmQoY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDkzKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjZGF0YUVuZFxuICAgIH1cbiAgICByZXR1cm4gY2RhdGEoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBkZWNsYXJhdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCFiPiBjXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGRlY2xhcmF0aW9uKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBjb2RlID09PSA2Mikge1xuICAgICAgcmV0dXJuIGVuZChjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IGRlY2xhcmF0aW9uXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gZGVjbGFyYXRpb25cbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBpbnN0cnVjdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPD9iPz4gY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluc3RydWN0aW9uKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNjMpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGluc3RydWN0aW9uQ2xvc2VcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSBpbnN0cnVjdGlvblxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGluc3RydWN0aW9uXG4gIH1cblxuICAvKipcbiAgICogSW4gaW5zdHJ1Y3Rpb24sIGFmdGVyIGA/YCwgYXQgYD5gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8P2I/PiBjXG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnN0cnVjdGlvbkNsb3NlKGNvZGUpIHtcbiAgICByZXR1cm4gY29kZSA9PT0gNjIgPyBlbmQoY29kZSkgOiBpbnN0cnVjdGlvbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8L2AsIGluIGNsb3NpbmcgdGFnLCBhdCB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPC9iPiBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnQ2xvc2VTdGFydChjb2RlKSB7XG4gICAgLy8gQVNDSUkgYWxwaGFiZXRpY2FsLlxuICAgIGlmIChhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdDbG9zZVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwveGAsIGluIGEgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwvYj4gY1xuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdDbG9zZShjb2RlKSB7XG4gICAgLy8gQVNDSUkgYWxwaGFudW1lcmljYWwgYW5kIGAtYC5cbiAgICBpZiAoY29kZSA9PT0gNDUgfHwgYXNjaWlBbHBoYW51bWVyaWMoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ0Nsb3NlXG4gICAgfVxuICAgIHJldHVybiB0YWdDbG9zZUJldHdlZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjbG9zaW5nIHRhZywgYWZ0ZXIgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwvYj4gY1xuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdDbG9zZUJldHdlZW4oY29kZSkge1xuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gdGFnQ2xvc2VCZXR3ZWVuXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnQ2xvc2VCZXR3ZWVuXG4gICAgfVxuICAgIHJldHVybiBlbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPHhgLCBpbiBvcGVuaW5nIHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8Yj4gY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW4oY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpY2FsIGFuZCBgLWAuXG4gICAgaWYgKGNvZGUgPT09IDQ1IHx8IGFzY2lpQWxwaGFudW1lcmljKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA0NyB8fCBjb2RlID09PSA2MiB8fCBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpKSB7XG4gICAgICByZXR1cm4gdGFnT3BlbkJldHdlZW4oY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIG9wZW5pbmcgdGFnLCBhZnRlciB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGI+IGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuQmV0d2Vlbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ3KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBlbmRcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwgYW5kIGA6YCBhbmQgYF9gLlxuICAgIGlmIChjb2RlID09PSA1OCB8fCBjb2RlID09PSA5NSB8fCBhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlTmFtZVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IHRhZ09wZW5CZXR3ZWVuXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnT3BlbkJldHdlZW5cbiAgICB9XG4gICAgcmV0dXJuIGVuZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGF0dHJpYnV0ZSBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8YiBjPiBkXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW5BdHRyaWJ1dGVOYW1lKGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwgYW5kIGAtYCwgYC5gLCBgOmAsIGFuZCBgX2AuXG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gNDUgfHxcbiAgICAgIGNvZGUgPT09IDQ2IHx8XG4gICAgICBjb2RlID09PSA1OCB8fFxuICAgICAgY29kZSA9PT0gOTUgfHxcbiAgICAgIGFzY2lpQWxwaGFudW1lcmljKGNvZGUpXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlTmFtZVxuICAgIH1cbiAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZU5hbWVBZnRlcihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGF0dHJpYnV0ZSBuYW1lLCBiZWZvcmUgaW5pdGlhbGl6ZXIsIHRoZSBlbmQgb2YgdGhlIHRhZywgb3JcbiAgICogd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz4gZFxuICAgKiAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkF0dHJpYnV0ZU5hbWVBZnRlcihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYxKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlVmFsdWVCZWZvcmVcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdPcGVuQXR0cmlidXRlTmFtZUFmdGVyXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZU5hbWVBZnRlclxuICAgIH1cbiAgICByZXR1cm4gdGFnT3BlbkJldHdlZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWZvcmUgdW5xdW90ZWQsIGRvdWJsZSBxdW90ZWQsIG9yIHNpbmdsZSBxdW90ZWQgYXR0cmlidXRlIHZhbHVlLCBhbGxvd2luZ1xuICAgKiB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8YiBjPWQ+IGVcbiAgICogICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuQXR0cmlidXRlVmFsdWVCZWZvcmUoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IG51bGwgfHxcbiAgICAgIGNvZGUgPT09IDYwIHx8XG4gICAgICBjb2RlID09PSA2MSB8fFxuICAgICAgY29kZSA9PT0gNjIgfHxcbiAgICAgIGNvZGUgPT09IDk2XG4gICAgKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSAzNCB8fCBjb2RlID09PSAzOSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXIgPSBjb2RlXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlUXVvdGVkXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlQmVmb3JlXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlQmVmb3JlXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlVmFsdWVVbnF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRvdWJsZSBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz1cImRcIj4gZVxuICAgKiAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyID0gdW5kZWZpbmVkXG4gICAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlUXVvdGVkQWZ0ZXJcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWRcbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM9ZD4gZVxuICAgKiAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVVucXVvdGVkKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBudWxsIHx8XG4gICAgICBjb2RlID09PSAzNCB8fFxuICAgICAgY29kZSA9PT0gMzkgfHxcbiAgICAgIGNvZGUgPT09IDYwIHx8XG4gICAgICBjb2RlID09PSA2MSB8fFxuICAgICAgY29kZSA9PT0gOTZcbiAgICApIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDQ3IHx8IGNvZGUgPT09IDYyIHx8IG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSkpIHtcbiAgICAgIHJldHVybiB0YWdPcGVuQmV0d2Vlbihjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBkb3VibGUgb3Igc2luZ2xlIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUsIGJlZm9yZSB3aGl0ZXNwYWNlIG9yIHRoZSBlbmRcbiAgICogb2YgdGhlIHRhZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz1cImRcIj4gZVxuICAgKiAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVF1b3RlZEFmdGVyKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDcgfHwgY29kZSA9PT0gNjIgfHwgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKSkge1xuICAgICAgcmV0dXJuIHRhZ09wZW5CZXR3ZWVuKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgb2YgYSB0YWcgd2hlcmUgb25seSBhbiBgPmAgaXMgYWxsb3dlZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz1cImRcIj4gZVxuICAgKiAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVuZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnaHRtbFRleHREYXRhJylcbiAgICAgIGVmZmVjdHMuZXhpdCgnaHRtbFRleHQnKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBlb2wuXG4gICAqXG4gICAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiB3ZSBjYW5cdTIwMTl0IGhhdmUgYmxhbmsgbGluZXMgaW4gdGV4dCwgc28gbm8gbmVlZCB0byB3b3JyeSBhYm91dFxuICAgKiA+IGVtcHR5IHRva2Vucy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCEtLWFcbiAgICogICAgICAgICAgICBeXG4gICAqICAgfCBiLS0+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpIHtcbiAgICBlZmZlY3RzLmV4aXQoJ2h0bWxUZXh0RGF0YScpXG4gICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICByZXR1cm4gbGluZUVuZGluZ0FmdGVyXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZW9sLCBhdCBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogd2UgY2FuXHUyMDE5dCBoYXZlIGJsYW5rIGxpbmVzIGluIHRleHQsIHNvIG5vIG5lZWQgdG8gd29ycnkgYWJvdXRcbiAgICogPiBlbXB0eSB0b2tlbnMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCBhIDwhLS1hXG4gICAqID4gfCBiLS0+XG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsaW5lRW5kaW5nQWZ0ZXIoY29kZSkge1xuICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoXG4gICAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgICBsaW5lRW5kaW5nQWZ0ZXJQcmVmaXgsXG4gICAgICAgICAgJ2xpbmVQcmVmaXgnLFxuICAgICAgICAgIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCdjb2RlSW5kZW50ZWQnKVxuICAgICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICAgIDogNFxuICAgICAgICApKGNvZGUpXG4gICAgICA6IGxpbmVFbmRpbmdBZnRlclByZWZpeChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGVvbCwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IHdlIGNhblx1MjAxOXQgaGF2ZSBibGFuayBsaW5lcyBpbiB0ZXh0LCBzbyBubyBuZWVkIHRvIHdvcnJ5IGFib3V0XG4gICAqID4gZW1wdHkgdG9rZW5zLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYSA8IS0tYVxuICAgKiA+IHwgYi0tPlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGluZUVuZGluZ0FmdGVyUHJlZml4KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdodG1sVGV4dERhdGEnKVxuICAgIHJldHVybiByZXR1cm5TdGF0ZShjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VufSBUb2tlblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeURlc3RpbmF0aW9ufSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1kZXN0aW5hdGlvbidcbmltcG9ydCB7ZmFjdG9yeUxhYmVsfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1sYWJlbCdcbmltcG9ydCB7ZmFjdG9yeVRpdGxlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS10aXRsZSdcbmltcG9ydCB7ZmFjdG9yeVdoaXRlc3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXdoaXRlc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ09yU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7cHVzaCwgc3BsaWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaHVua2VkJ1xuaW1wb3J0IHtub3JtYWxpemVJZGVudGlmaWVyfSBmcm9tICdtaWNyb21hcmstdXRpbC1ub3JtYWxpemUtaWRlbnRpZmllcidcbmltcG9ydCB7cmVzb2x2ZUFsbH0gZnJvbSAnbWljcm9tYXJrLXV0aWwtcmVzb2x2ZS1hbGwnXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBsYWJlbEVuZCA9IHtcbiAgbmFtZTogJ2xhYmVsRW5kJyxcbiAgdG9rZW5pemU6IHRva2VuaXplTGFiZWxFbmQsXG4gIHJlc29sdmVUbzogcmVzb2x2ZVRvTGFiZWxFbmQsXG4gIHJlc29sdmVBbGw6IHJlc29sdmVBbGxMYWJlbEVuZFxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IHJlc291cmNlQ29uc3RydWN0ID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVSZXNvdXJjZVxufVxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCByZWZlcmVuY2VGdWxsQ29uc3RydWN0ID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVSZWZlcmVuY2VGdWxsXG59XG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IHJlZmVyZW5jZUNvbGxhcHNlZENvbnN0cnVjdCA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplUmVmZXJlbmNlQ29sbGFwc2VkXG59XG5cbi8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG5mdW5jdGlvbiByZXNvbHZlQWxsTGFiZWxFbmQoZXZlbnRzKSB7XG4gIGxldCBpbmRleCA9IC0xXG4gIHdoaWxlICgrK2luZGV4IDwgZXZlbnRzLmxlbmd0aCkge1xuICAgIGNvbnN0IHRva2VuID0gZXZlbnRzW2luZGV4XVsxXVxuICAgIGlmIChcbiAgICAgIHRva2VuLnR5cGUgPT09ICdsYWJlbEltYWdlJyB8fFxuICAgICAgdG9rZW4udHlwZSA9PT0gJ2xhYmVsTGluaycgfHxcbiAgICAgIHRva2VuLnR5cGUgPT09ICdsYWJlbEVuZCdcbiAgICApIHtcbiAgICAgIC8vIFJlbW92ZSB0aGUgbWFya2VyLlxuICAgICAgZXZlbnRzLnNwbGljZShpbmRleCArIDEsIHRva2VuLnR5cGUgPT09ICdsYWJlbEltYWdlJyA/IDQgOiAyKVxuICAgICAgdG9rZW4udHlwZSA9ICdkYXRhJ1xuICAgICAgaW5kZXgrK1xuICAgIH1cbiAgfVxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG5mdW5jdGlvbiByZXNvbHZlVG9MYWJlbEVuZChldmVudHMsIGNvbnRleHQpIHtcbiAgbGV0IGluZGV4ID0gZXZlbnRzLmxlbmd0aFxuICBsZXQgb2Zmc2V0ID0gMFxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgdG9rZW5cbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCBvcGVuXG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgY2xvc2VcbiAgLyoqIEB0eXBlIHtBcnJheTxFdmVudD59ICovXG4gIGxldCBtZWRpYVxuXG4gIC8vIEZpbmQgYW4gb3BlbmluZy5cbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB0b2tlbiA9IGV2ZW50c1tpbmRleF1bMV1cbiAgICBpZiAob3Blbikge1xuICAgICAgLy8gSWYgd2Ugc2VlIGFub3RoZXIgbGluaywgb3IgaW5hY3RpdmUgbGluayBsYWJlbCwgd2VcdTIwMTl2ZSBiZWVuIGhlcmUgYmVmb3JlLlxuICAgICAgaWYgKFxuICAgICAgICB0b2tlbi50eXBlID09PSAnbGluaycgfHxcbiAgICAgICAgKHRva2VuLnR5cGUgPT09ICdsYWJlbExpbmsnICYmIHRva2VuLl9pbmFjdGl2ZSlcbiAgICAgICkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICAvLyBNYXJrIG90aGVyIGxpbmsgb3BlbmluZ3MgYXMgaW5hY3RpdmUsIGFzIHdlIGNhblx1MjAxOXQgaGF2ZSBsaW5rcyBpblxuICAgICAgLy8gbGlua3MuXG4gICAgICBpZiAoZXZlbnRzW2luZGV4XVswXSA9PT0gJ2VudGVyJyAmJiB0b2tlbi50eXBlID09PSAnbGFiZWxMaW5rJykge1xuICAgICAgICB0b2tlbi5faW5hY3RpdmUgPSB0cnVlXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjbG9zZSkge1xuICAgICAgaWYgKFxuICAgICAgICBldmVudHNbaW5kZXhdWzBdID09PSAnZW50ZXInICYmXG4gICAgICAgICh0b2tlbi50eXBlID09PSAnbGFiZWxJbWFnZScgfHwgdG9rZW4udHlwZSA9PT0gJ2xhYmVsTGluaycpICYmXG4gICAgICAgICF0b2tlbi5fYmFsYW5jZWRcbiAgICAgICkge1xuICAgICAgICBvcGVuID0gaW5kZXhcbiAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09ICdsYWJlbExpbmsnKSB7XG4gICAgICAgICAgb2Zmc2V0ID0gMlxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRva2VuLnR5cGUgPT09ICdsYWJlbEVuZCcpIHtcbiAgICAgIGNsb3NlID0gaW5kZXhcbiAgICB9XG4gIH1cbiAgY29uc3QgZ3JvdXAgPSB7XG4gICAgdHlwZTogZXZlbnRzW29wZW5dWzFdLnR5cGUgPT09ICdsYWJlbExpbmsnID8gJ2xpbmsnIDogJ2ltYWdlJyxcbiAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW29wZW5dWzFdLnN0YXJ0KSxcbiAgICBlbmQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tldmVudHMubGVuZ3RoIC0gMV1bMV0uZW5kKVxuICB9XG4gIGNvbnN0IGxhYmVsID0ge1xuICAgIHR5cGU6ICdsYWJlbCcsXG4gICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tvcGVuXVsxXS5zdGFydCksXG4gICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbY2xvc2VdWzFdLmVuZClcbiAgfVxuICBjb25zdCB0ZXh0ID0ge1xuICAgIHR5cGU6ICdsYWJlbFRleHQnLFxuICAgIHN0YXJ0OiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbb3BlbiArIG9mZnNldCArIDJdWzFdLmVuZCksXG4gICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbY2xvc2UgLSAyXVsxXS5zdGFydClcbiAgfVxuICBtZWRpYSA9IFtcbiAgICBbJ2VudGVyJywgZ3JvdXAsIGNvbnRleHRdLFxuICAgIFsnZW50ZXInLCBsYWJlbCwgY29udGV4dF1cbiAgXVxuXG4gIC8vIE9wZW5pbmcgbWFya2VyLlxuICBtZWRpYSA9IHB1c2gobWVkaWEsIGV2ZW50cy5zbGljZShvcGVuICsgMSwgb3BlbiArIG9mZnNldCArIDMpKVxuXG4gIC8vIFRleHQgb3Blbi5cbiAgbWVkaWEgPSBwdXNoKG1lZGlhLCBbWydlbnRlcicsIHRleHQsIGNvbnRleHRdXSlcblxuICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gIC8vIEJldHdlZW4uXG4gIG1lZGlhID0gcHVzaChcbiAgICBtZWRpYSxcbiAgICByZXNvbHZlQWxsKFxuICAgICAgY29udGV4dC5wYXJzZXIuY29uc3RydWN0cy5pbnNpZGVTcGFuLm51bGwsXG4gICAgICBldmVudHMuc2xpY2Uob3BlbiArIG9mZnNldCArIDQsIGNsb3NlIC0gMyksXG4gICAgICBjb250ZXh0XG4gICAgKVxuICApXG5cbiAgLy8gVGV4dCBjbG9zZSwgbWFya2VyIGNsb3NlLCBsYWJlbCBjbG9zZS5cbiAgbWVkaWEgPSBwdXNoKG1lZGlhLCBbXG4gICAgWydleGl0JywgdGV4dCwgY29udGV4dF0sXG4gICAgZXZlbnRzW2Nsb3NlIC0gMl0sXG4gICAgZXZlbnRzW2Nsb3NlIC0gMV0sXG4gICAgWydleGl0JywgbGFiZWwsIGNvbnRleHRdXG4gIF0pXG5cbiAgLy8gUmVmZXJlbmNlLCByZXNvdXJjZSwgb3Igc28uXG4gIG1lZGlhID0gcHVzaChtZWRpYSwgZXZlbnRzLnNsaWNlKGNsb3NlICsgMSkpXG5cbiAgLy8gTWVkaWEgY2xvc2UuXG4gIG1lZGlhID0gcHVzaChtZWRpYSwgW1snZXhpdCcsIGdyb3VwLCBjb250ZXh0XV0pXG4gIHNwbGljZShldmVudHMsIG9wZW4sIGV2ZW50cy5sZW5ndGgsIG1lZGlhKVxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGFiZWxFbmQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICBsZXQgaW5kZXggPSBzZWxmLmV2ZW50cy5sZW5ndGhcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IGxhYmVsU3RhcnRcbiAgLyoqIEB0eXBlIHtib29sZWFufSAqL1xuICBsZXQgZGVmaW5lZFxuXG4gIC8vIEZpbmQgYW4gb3BlbmluZy5cbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICBpZiAoXG4gICAgICAoc2VsZi5ldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdsYWJlbEltYWdlJyB8fFxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2xhYmVsTGluaycpICYmXG4gICAgICAhc2VsZi5ldmVudHNbaW5kZXhdWzFdLl9iYWxhbmNlZFxuICAgICkge1xuICAgICAgbGFiZWxTdGFydCA9IHNlbGYuZXZlbnRzW2luZGV4XVsxXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGxhYmVsIGVuZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtiXSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtdIGJcbiAgICogICAgICAgXlxuICAgKiA+IHwgW2FdIGJcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAvLyBJZiB0aGVyZSBpcyBub3QgYW4gb2theSBvcGVuaW5nLlxuICAgIGlmICghbGFiZWxTdGFydCkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBjb3JyZXNwb25kaW5nIGxhYmVsIChsaW5rKSBzdGFydCBpcyBtYXJrZWQgYXMgaW5hY3RpdmUsXG4gICAgLy8gaXQgbWVhbnMgd2VcdTIwMTlkIGJlIHdyYXBwaW5nIGEgbGluaywgbGlrZSB0aGlzOlxuICAgIC8vXG4gICAgLy8gYGBgbWFya2Rvd25cbiAgICAvLyA+IHwgYSBbYiBbY10oZCkgZV0oZikgZy5cbiAgICAvLyAgICAgICAgICAgICAgICAgIF5cbiAgICAvLyBgYGBcbiAgICAvL1xuICAgIC8vIFdlIGNhblx1MjAxOXQgaGF2ZSB0aGF0LCBzbyBpdFx1MjAxOXMganVzdCBiYWxhbmNlZCBicmFja2V0cy5cbiAgICBpZiAobGFiZWxTdGFydC5faW5hY3RpdmUpIHtcbiAgICAgIHJldHVybiBsYWJlbEVuZE5vayhjb2RlKVxuICAgIH1cbiAgICBkZWZpbmVkID0gc2VsZi5wYXJzZXIuZGVmaW5lZC5pbmNsdWRlcyhcbiAgICAgIG5vcm1hbGl6ZUlkZW50aWZpZXIoXG4gICAgICAgIHNlbGYuc2xpY2VTZXJpYWxpemUoe1xuICAgICAgICAgIHN0YXJ0OiBsYWJlbFN0YXJ0LmVuZCxcbiAgICAgICAgICBlbmQ6IHNlbGYubm93KClcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gICAgZWZmZWN0cy5lbnRlcignbGFiZWxFbmQnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2xhYmVsTWFya2VyJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xhYmVsTWFya2VyJylcbiAgICBlZmZlY3RzLmV4aXQoJ2xhYmVsRW5kJylcbiAgICByZXR1cm4gYWZ0ZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgXWAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgY1xuICAgKiAgICAgICBeXG4gICAqID4gfCBbYV1bYl0gY1xuICAgKiAgICAgICBeXG4gICAqID4gfCBbYV1bXSBiXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXSBiXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICAvLyBOb3RlOiBgbWFya2Rvd24tcnNgIGFsc28gcGFyc2VzIEdGTSBmb290bm90ZXMgaGVyZSwgd2hpY2ggZm9yIHVzIGlzIGluXG4gICAgLy8gYW4gZXh0ZW5zaW9uLlxuXG4gICAgLy8gUmVzb3VyY2UgKGBbYXNkXShmZ2gpYCk/XG4gICAgaWYgKGNvZGUgPT09IDQwKSB7XG4gICAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgICByZXNvdXJjZUNvbnN0cnVjdCxcbiAgICAgICAgbGFiZWxFbmRPayxcbiAgICAgICAgZGVmaW5lZCA/IGxhYmVsRW5kT2sgOiBsYWJlbEVuZE5va1xuICAgICAgKShjb2RlKVxuICAgIH1cblxuICAgIC8vIEZ1bGwgKGBbYXNkXVtmZ2hdYCkgb3IgY29sbGFwc2VkIChgW2FzZF1bXWApIHJlZmVyZW5jZT9cbiAgICBpZiAoY29kZSA9PT0gOTEpIHtcbiAgICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICAgIHJlZmVyZW5jZUZ1bGxDb25zdHJ1Y3QsXG4gICAgICAgIGxhYmVsRW5kT2ssXG4gICAgICAgIGRlZmluZWQgPyByZWZlcmVuY2VOb3RGdWxsIDogbGFiZWxFbmROb2tcbiAgICAgICkoY29kZSlcbiAgICB9XG5cbiAgICAvLyBTaG9ydGN1dCAoYFthc2RdYCkgcmVmZXJlbmNlP1xuICAgIHJldHVybiBkZWZpbmVkID8gbGFiZWxFbmRPayhjb2RlKSA6IGxhYmVsRW5kTm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYF1gLCBhdCBgW2AsIGJ1dCBub3QgYXQgYSBmdWxsIHJlZmVyZW5jZS5cbiAgICpcbiAgICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IHdlIG9ubHkgZ2V0IGhlcmUgaWYgdGhlIGxhYmVsIGlzIGRlZmluZWQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV1bXSBiXG4gICAqICAgICAgICBeXG4gICAqID4gfCBbYV0gYlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVmZXJlbmNlTm90RnVsbChjb2RlKSB7XG4gICAgcmV0dXJuIGVmZmVjdHMuYXR0ZW1wdChcbiAgICAgIHJlZmVyZW5jZUNvbGxhcHNlZENvbnN0cnVjdCxcbiAgICAgIGxhYmVsRW5kT2ssXG4gICAgICBsYWJlbEVuZE5va1xuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEb25lLCB3ZSBmb3VuZCBzb21ldGhpbmcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgY1xuICAgKiAgICAgICAgICAgXlxuICAgKiA+IHwgW2FdW2JdIGNcbiAgICogICAgICAgICAgIF5cbiAgICogPiB8IFthXVtdIGJcbiAgICogICAgICAgICAgXlxuICAgKiA+IHwgW2FdIGJcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGxhYmVsRW5kT2soY29kZSkge1xuICAgIC8vIE5vdGU6IGBtYXJrZG93bi1yc2AgZG9lcyBhIGJ1bmNoIG9mIHN0dWZmIGhlcmUuXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogRG9uZSwgaXRcdTIwMTlzIG5vdGhpbmcuXG4gICAqXG4gICAqIFRoZXJlIHdhcyBhbiBva2F5IG9wZW5pbmcsIGJ1dCB3ZSBkaWRuXHUyMDE5dCBtYXRjaCBhbnl0aGluZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiIGNcbiAgICogICAgICAgIF5cbiAgICogPiB8IFthXVtiIGNcbiAgICogICAgICAgIF5cbiAgICogPiB8IFthXSBiXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsYWJlbEVuZE5vayhjb2RlKSB7XG4gICAgbGFiZWxTdGFydC5fYmFsYW5jZWQgPSB0cnVlXG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplUmVzb3VyY2UoZWZmZWN0cywgb2ssIG5vaykge1xuICByZXR1cm4gcmVzb3VyY2VTdGFydFxuXG4gIC8qKlxuICAgKiBBdCBhIHJlc291cmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGNcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlU3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ3Jlc291cmNlJylcbiAgICBlZmZlY3RzLmVudGVyKCdyZXNvdXJjZU1hcmtlcicpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdyZXNvdXJjZU1hcmtlcicpXG4gICAgcmV0dXJuIHJlc291cmNlQmVmb3JlXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVzb3VyY2UsIGFmdGVyIGAoYCwgYXQgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VCZWZvcmUoY29kZSkge1xuICAgIHJldHVybiBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlXaGl0ZXNwYWNlKGVmZmVjdHMsIHJlc291cmNlT3BlbikoY29kZSlcbiAgICAgIDogcmVzb3VyY2VPcGVuKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVzb3VyY2UsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UsIGF0IGApYCBvciBhIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZU9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0MSkge1xuICAgICAgcmV0dXJuIHJlc291cmNlRW5kKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBmYWN0b3J5RGVzdGluYXRpb24oXG4gICAgICBlZmZlY3RzLFxuICAgICAgcmVzb3VyY2VEZXN0aW5hdGlvbkFmdGVyLFxuICAgICAgcmVzb3VyY2VEZXN0aW5hdGlvbk1pc3NpbmcsXG4gICAgICAncmVzb3VyY2VEZXN0aW5hdGlvbicsXG4gICAgICAncmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWwnLFxuICAgICAgJ3Jlc291cmNlRGVzdGluYXRpb25MaXRlcmFsTWFya2VyJyxcbiAgICAgICdyZXNvdXJjZURlc3RpbmF0aW9uUmF3JyxcbiAgICAgICdyZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nJyxcbiAgICAgIDMyXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlc291cmNlLCBhZnRlciBkZXN0aW5hdGlvbiwgYXQgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlRGVzdGluYXRpb25BZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVdoaXRlc3BhY2UoZWZmZWN0cywgcmVzb3VyY2VCZXR3ZWVuKShjb2RlKVxuICAgICAgOiByZXNvdXJjZUVuZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IGludmFsaWQgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oPDwpIGJcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZURlc3RpbmF0aW9uTWlzc2luZyhjb2RlKSB7XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlc291cmNlLCBhZnRlciBkZXN0aW5hdGlvbiBhbmQgd2hpdGVzcGFjZSwgYXQgYChgIG9yIHRpdGxlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIgKSBjXG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZUJldHdlZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSAzNCB8fCBjb2RlID09PSAzOSB8fCBjb2RlID09PSA0MCkge1xuICAgICAgcmV0dXJuIGZhY3RvcnlUaXRsZShcbiAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgcmVzb3VyY2VUaXRsZUFmdGVyLFxuICAgICAgICBub2ssXG4gICAgICAgICdyZXNvdXJjZVRpdGxlJyxcbiAgICAgICAgJ3Jlc291cmNlVGl0bGVNYXJrZXInLFxuICAgICAgICAncmVzb3VyY2VUaXRsZVN0cmluZydcbiAgICAgICkoY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc291cmNlRW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVzb3VyY2UsIGFmdGVyIHRpdGxlLCBhdCBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIgXCJjXCIpIGRcbiAgICogICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlVGl0bGVBZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVdoaXRlc3BhY2UoZWZmZWN0cywgcmVzb3VyY2VFbmQpKGNvZGUpXG4gICAgICA6IHJlc291cmNlRW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVzb3VyY2UsIGF0IGApYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBkXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlRW5kKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDEpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ3Jlc291cmNlTWFya2VyJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdyZXNvdXJjZU1hcmtlcicpXG4gICAgICBlZmZlY3RzLmV4aXQoJ3Jlc291cmNlJylcbiAgICAgIHJldHVybiBva1xuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVSZWZlcmVuY2VGdWxsKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgcmV0dXJuIHJlZmVyZW5jZUZ1bGxcblxuICAvKipcbiAgICogSW4gYSByZWZlcmVuY2UgKGZ1bGwpLCBhdCB0aGUgYFtgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdW2JdIGRcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUZ1bGwoY29kZSkge1xuICAgIHJldHVybiBmYWN0b3J5TGFiZWwuY2FsbChcbiAgICAgIHNlbGYsXG4gICAgICBlZmZlY3RzLFxuICAgICAgcmVmZXJlbmNlRnVsbEFmdGVyLFxuICAgICAgcmVmZXJlbmNlRnVsbE1pc3NpbmcsXG4gICAgICAncmVmZXJlbmNlJyxcbiAgICAgICdyZWZlcmVuY2VNYXJrZXInLFxuICAgICAgJ3JlZmVyZW5jZVN0cmluZydcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gYSByZWZlcmVuY2UgKGZ1bGwpLCBhZnRlciBgXWAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV1bYl0gZFxuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZWZlcmVuY2VGdWxsQWZ0ZXIoY29kZSkge1xuICAgIHJldHVybiBzZWxmLnBhcnNlci5kZWZpbmVkLmluY2x1ZGVzKFxuICAgICAgbm9ybWFsaXplSWRlbnRpZmllcihcbiAgICAgICAgc2VsZi5zbGljZVNlcmlhbGl6ZShzZWxmLmV2ZW50c1tzZWxmLmV2ZW50cy5sZW5ndGggLSAxXVsxXSkuc2xpY2UoMSwgLTEpXG4gICAgICApXG4gICAgKVxuICAgICAgPyBvayhjb2RlKVxuICAgICAgOiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZWZlcmVuY2UgKGZ1bGwpIHRoYXQgd2FzIG1pc3NpbmcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV1bYiBkXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZWZlcmVuY2VGdWxsTWlzc2luZyhjb2RlKSB7XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplUmVmZXJlbmNlQ29sbGFwc2VkKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgcmV0dXJuIHJlZmVyZW5jZUNvbGxhcHNlZFN0YXJ0XG5cbiAgLyoqXG4gICAqIEluIHJlZmVyZW5jZSAoY29sbGFwc2VkKSwgYXQgYFtgLlxuICAgKlxuICAgKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogd2Ugb25seSBnZXQgaGVyZSBpZiB0aGUgbGFiZWwgaXMgZGVmaW5lZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtdIGRcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUNvbGxhcHNlZFN0YXJ0KGNvZGUpIHtcbiAgICAvLyBXZSBvbmx5IGF0dGVtcHQgYSBjb2xsYXBzZWQgbGFiZWwgaWYgdGhlcmVcdTIwMTlzIGEgYFtgLlxuXG4gICAgZWZmZWN0cy5lbnRlcigncmVmZXJlbmNlJylcbiAgICBlZmZlY3RzLmVudGVyKCdyZWZlcmVuY2VNYXJrZXInKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgncmVmZXJlbmNlTWFya2VyJylcbiAgICByZXR1cm4gcmVmZXJlbmNlQ29sbGFwc2VkT3BlblxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlZmVyZW5jZSAoY29sbGFwc2VkKSwgYXQgYF1gLlxuICAgKlxuICAgKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogd2Ugb25seSBnZXQgaGVyZSBpZiB0aGUgbGFiZWwgaXMgZGVmaW5lZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtdIGRcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiAgQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVmZXJlbmNlQ29sbGFwc2VkT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDkzKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdyZWZlcmVuY2VNYXJrZXInKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ3JlZmVyZW5jZU1hcmtlcicpXG4gICAgICBlZmZlY3RzLmV4aXQoJ3JlZmVyZW5jZScpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7bGFiZWxFbmR9IGZyb20gJy4vbGFiZWwtZW5kLmpzJ1xuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBsYWJlbFN0YXJ0SW1hZ2UgPSB7XG4gIG5hbWU6ICdsYWJlbFN0YXJ0SW1hZ2UnLFxuICB0b2tlbml6ZTogdG9rZW5pemVMYWJlbFN0YXJ0SW1hZ2UsXG4gIHJlc29sdmVBbGw6IGxhYmVsRW5kLnJlc29sdmVBbGxcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMYWJlbFN0YXJ0SW1hZ2UoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgbGFiZWwgKGltYWdlKSBzdGFydC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgIVtiXSBjXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdsYWJlbEltYWdlJylcbiAgICBlZmZlY3RzLmVudGVyKCdsYWJlbEltYWdlTWFya2VyJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xhYmVsSW1hZ2VNYXJrZXInKVxuICAgIHJldHVybiBvcGVuXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYCFgLCBhdCBgW2AuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhICFbYl0gY1xuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gb3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDkxKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdsYWJlbE1hcmtlcicpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnbGFiZWxNYXJrZXInKVxuICAgICAgZWZmZWN0cy5leGl0KCdsYWJlbEltYWdlJylcbiAgICAgIHJldHVybiBhZnRlclxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYCFbYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgIVtiXSBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyBpcyBuZWVkZWQgaW4gYmVjYXVzZSwgd2hlbiBHRk0gZm9vdG5vdGVzIGFyZSBlbmFibGVkLCBpbWFnZXMgbmV2ZXJcbiAgICogZm9ybSB3aGVuIHN0YXJ0ZWQgd2l0aCBhIGBeYC5cbiAgICogSW5zdGVhZCwgbGlua3MgZm9ybTpcbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogIVteYV0oYilcbiAgICpcbiAgICogIVteYV1bYl1cbiAgICpcbiAgICogW2JdOiBjXG4gICAqIGBgYFxuICAgKlxuICAgKiBgYGBodG1sXG4gICAqIDxwPiE8YSBocmVmPVxcXCJiXFxcIj5eYTwvYT48L3A+XG4gICAqIDxwPiE8YSBocmVmPVxcXCJjXFxcIj5eYTwvYT48L3A+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgLy8gVG8gZG86IHVzZSBhIG5ldyBmaWVsZCB0byBkbyB0aGlzLCB0aGlzIGlzIHN0aWxsIG5lZWRlZCBmb3JcbiAgICAvLyBgbWljcm9tYXJrLWV4dGVuc2lvbi1nZm0tZm9vdG5vdGVgLCBidXQgdGhlIGBsYWJlbC1zdGFydC1saW5rYFxuICAgIC8vIGJlaGF2aW9yIGlzblx1MjAxOXQuXG4gICAgLy8gSGlkZGVuIGZvb3Rub3RlcyBob29rLlxuICAgIC8qIGM4IGlnbm9yZSBuZXh0IDMgKi9cbiAgICByZXR1cm4gY29kZSA9PT0gOTQgJiYgJ19oaWRkZW5Gb290bm90ZVN1cHBvcnQnIGluIHNlbGYucGFyc2VyLmNvbnN0cnVjdHNcbiAgICAgID8gbm9rKGNvZGUpXG4gICAgICA6IG9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtsYWJlbEVuZH0gZnJvbSAnLi9sYWJlbC1lbmQuanMnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGxhYmVsU3RhcnRMaW5rID0ge1xuICBuYW1lOiAnbGFiZWxTdGFydExpbmsnLFxuICB0b2tlbml6ZTogdG9rZW5pemVMYWJlbFN0YXJ0TGluayxcbiAgcmVzb2x2ZUFsbDogbGFiZWxFbmQucmVzb2x2ZUFsbFxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxhYmVsU3RhcnRMaW5rKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGxhYmVsIChsaW5rKSBzdGFydC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgW2JdIGNcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2xhYmVsTGluaycpXG4gICAgZWZmZWN0cy5lbnRlcignbGFiZWxNYXJrZXInKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGFiZWxNYXJrZXInKVxuICAgIGVmZmVjdHMuZXhpdCgnbGFiZWxMaW5rJylcbiAgICByZXR1cm4gYWZ0ZXJcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICAvLyBUbyBkbzogdGhpcyBpc25cdTIwMTl0IG5lZWRlZCBpbiBgbWljcm9tYXJrLWV4dGVuc2lvbi1nZm0tZm9vdG5vdGVgLFxuICAgIC8vIHJlbW92ZS5cbiAgICAvLyBIaWRkZW4gZm9vdG5vdGVzIGhvb2suXG4gICAgLyogYzggaWdub3JlIG5leHQgMyAqL1xuICAgIHJldHVybiBjb2RlID09PSA5NCAmJiAnX2hpZGRlbkZvb3Rub3RlU3VwcG9ydCcgaW4gc2VsZi5wYXJzZXIuY29uc3RydWN0c1xuICAgICAgPyBub2soY29kZSlcbiAgICAgIDogb2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgbGluZUVuZGluZyA9IHtcbiAgbmFtZTogJ2xpbmVFbmRpbmcnLFxuICB0b2tlbml6ZTogdG9rZW5pemVMaW5lRW5kaW5nXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGluZUVuZGluZyhlZmZlY3RzLCBvaykge1xuICByZXR1cm4gc3RhcnRcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIG9rLCAnbGluZVByZWZpeCcpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZywgbWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgdGhlbWF0aWNCcmVhayA9IHtcbiAgbmFtZTogJ3RoZW1hdGljQnJlYWsnLFxuICB0b2tlbml6ZTogdG9rZW5pemVUaGVtYXRpY0JyZWFrXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplVGhlbWF0aWNCcmVhayhlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGxldCBzaXplID0gMFxuICAvKiogQHR5cGUge05vbk51bGxhYmxlPENvZGU+fSAqL1xuICBsZXQgbWFya2VyXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiB0aGVtYXRpYyBicmVhay5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICoqKlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ3RoZW1hdGljQnJlYWsnKVxuICAgIC8vIFRvIGRvOiBwYXJzZSBpbmRlbnQgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIHJldHVybiBiZWZvcmUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLCBhdCBtYXJrZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAqKipcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZShjb2RlKSB7XG4gICAgbWFya2VyID0gY29kZVxuICAgIHJldHVybiBhdEJyZWFrKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgc29tZXRoaW5nLCBiZWZvcmUgc29tZXRoaW5nIGVsc2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAqKipcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGF0QnJlYWsoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ3RoZW1hdGljQnJlYWtTZXF1ZW5jZScpXG4gICAgICByZXR1cm4gc2VxdWVuY2UoY29kZSlcbiAgICB9XG4gICAgaWYgKHNpemUgPj0gMyAmJiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ3RoZW1hdGljQnJlYWsnKVxuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBzZXF1ZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICoqKlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc2VxdWVuY2UoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgc2l6ZSsrXG4gICAgICByZXR1cm4gc2VxdWVuY2VcbiAgICB9XG4gICAgZWZmZWN0cy5leGl0KCd0aGVtYXRpY0JyZWFrU2VxdWVuY2UnKVxuICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlTcGFjZShlZmZlY3RzLCBhdEJyZWFrLCAnd2hpdGVzcGFjZScpKGNvZGUpXG4gICAgICA6IGF0QnJlYWsoY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnRhaW5lclN0YXRlfSBDb250YWluZXJTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FeGl0ZXJ9IEV4aXRlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge2FzY2lpRGlnaXQsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7YmxhbmtMaW5lfSBmcm9tICcuL2JsYW5rLWxpbmUuanMnXG5pbXBvcnQge3RoZW1hdGljQnJlYWt9IGZyb20gJy4vdGhlbWF0aWMtYnJlYWsuanMnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGxpc3QgPSB7XG4gIG5hbWU6ICdsaXN0JyxcbiAgdG9rZW5pemU6IHRva2VuaXplTGlzdFN0YXJ0LFxuICBjb250aW51YXRpb246IHtcbiAgICB0b2tlbml6ZTogdG9rZW5pemVMaXN0Q29udGludWF0aW9uXG4gIH0sXG4gIGV4aXQ6IHRva2VuaXplTGlzdEVuZFxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IGxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZUNvbnN0cnVjdCA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplTGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlLFxuICBwYXJ0aWFsOiB0cnVlXG59XG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgaW5kZW50Q29uc3RydWN0ID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVJbmRlbnQsXG4gIHBhcnRpYWw6IHRydWVcbn1cblxuLy8gVG8gZG86IGBtYXJrZG93bi1yc2AgcGFyc2VzIGxpc3QgaXRlbXMgb24gdGhlaXIgb3duIGFuZCBsYXRlciBzdGl0Y2hlcyB0aGVtXG4vLyB0b2dldGhlci5cblxuLyoqXG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMaXN0U3RhcnQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICBjb25zdCB0YWlsID0gc2VsZi5ldmVudHNbc2VsZi5ldmVudHMubGVuZ3RoIC0gMV1cbiAgbGV0IGluaXRpYWxTaXplID1cbiAgICB0YWlsICYmIHRhaWxbMV0udHlwZSA9PT0gJ2xpbmVQcmVmaXgnXG4gICAgICA/IHRhaWxbMl0uc2xpY2VTZXJpYWxpemUodGFpbFsxXSwgdHJ1ZSkubGVuZ3RoXG4gICAgICA6IDBcbiAgbGV0IHNpemUgPSAwXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBjb25zdCBraW5kID1cbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUudHlwZSB8fFxuICAgICAgKGNvZGUgPT09IDQyIHx8IGNvZGUgPT09IDQzIHx8IGNvZGUgPT09IDQ1XG4gICAgICAgID8gJ2xpc3RVbm9yZGVyZWQnXG4gICAgICAgIDogJ2xpc3RPcmRlcmVkJylcbiAgICBpZiAoXG4gICAgICBraW5kID09PSAnbGlzdFVub3JkZXJlZCdcbiAgICAgICAgPyAhc2VsZi5jb250YWluZXJTdGF0ZS5tYXJrZXIgfHwgY29kZSA9PT0gc2VsZi5jb250YWluZXJTdGF0ZS5tYXJrZXJcbiAgICAgICAgOiBhc2NpaURpZ2l0KGNvZGUpXG4gICAgKSB7XG4gICAgICBpZiAoIXNlbGYuY29udGFpbmVyU3RhdGUudHlwZSkge1xuICAgICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLnR5cGUgPSBraW5kXG4gICAgICAgIGVmZmVjdHMuZW50ZXIoa2luZCwge1xuICAgICAgICAgIF9jb250YWluZXI6IHRydWVcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGlmIChraW5kID09PSAnbGlzdFVub3JkZXJlZCcpIHtcbiAgICAgICAgZWZmZWN0cy5lbnRlcignbGlzdEl0ZW1QcmVmaXgnKVxuICAgICAgICByZXR1cm4gY29kZSA9PT0gNDIgfHwgY29kZSA9PT0gNDVcbiAgICAgICAgICA/IGVmZmVjdHMuY2hlY2sodGhlbWF0aWNCcmVhaywgbm9rLCBhdE1hcmtlcikoY29kZSlcbiAgICAgICAgICA6IGF0TWFya2VyKGNvZGUpXG4gICAgICB9XG4gICAgICBpZiAoIXNlbGYuaW50ZXJydXB0IHx8IGNvZGUgPT09IDQ5KSB7XG4gICAgICAgIGVmZmVjdHMuZW50ZXIoJ2xpc3RJdGVtUHJlZml4JylcbiAgICAgICAgZWZmZWN0cy5lbnRlcignbGlzdEl0ZW1WYWx1ZScpXG4gICAgICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gaW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoYXNjaWlEaWdpdChjb2RlKSAmJiArK3NpemUgPCAxMCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gaW5zaWRlXG4gICAgfVxuICAgIGlmIChcbiAgICAgICghc2VsZi5pbnRlcnJ1cHQgfHwgc2l6ZSA8IDIpICYmXG4gICAgICAoc2VsZi5jb250YWluZXJTdGF0ZS5tYXJrZXJcbiAgICAgICAgPyBjb2RlID09PSBzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlclxuICAgICAgICA6IGNvZGUgPT09IDQxIHx8IGNvZGUgPT09IDQ2KVxuICAgICkge1xuICAgICAgZWZmZWN0cy5leGl0KCdsaXN0SXRlbVZhbHVlJylcbiAgICAgIHJldHVybiBhdE1hcmtlcihjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKiovXG4gIGZ1bmN0aW9uIGF0TWFya2VyKGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdsaXN0SXRlbU1hcmtlcicpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsaXN0SXRlbU1hcmtlcicpXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5tYXJrZXIgPSBzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlciB8fCBjb2RlXG4gICAgcmV0dXJuIGVmZmVjdHMuY2hlY2soXG4gICAgICBibGFua0xpbmUsXG4gICAgICAvLyBDYW5cdTIwMTl0IGJlIGVtcHR5IHdoZW4gaW50ZXJydXB0aW5nLlxuICAgICAgc2VsZi5pbnRlcnJ1cHQgPyBub2sgOiBvbkJsYW5rLFxuICAgICAgZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgICBsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2VDb25zdHJ1Y3QsXG4gICAgICAgIGVuZE9mUHJlZml4LFxuICAgICAgICBvdGhlclByZWZpeFxuICAgICAgKVxuICAgIClcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIG9uQmxhbmsoY29kZSkge1xuICAgIHNlbGYuY29udGFpbmVyU3RhdGUuaW5pdGlhbEJsYW5rTGluZSA9IHRydWVcbiAgICBpbml0aWFsU2l6ZSsrXG4gICAgcmV0dXJuIGVuZE9mUHJlZml4KGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBvdGhlclByZWZpeChjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2xpc3RJdGVtUHJlZml4V2hpdGVzcGFjZScpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlJylcbiAgICAgIHJldHVybiBlbmRPZlByZWZpeFxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBlbmRPZlByZWZpeChjb2RlKSB7XG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5zaXplID1cbiAgICAgIGluaXRpYWxTaXplICtcbiAgICAgIHNlbGYuc2xpY2VTZXJpYWxpemUoZWZmZWN0cy5leGl0KCdsaXN0SXRlbVByZWZpeCcpLCB0cnVlKS5sZW5ndGhcbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxpc3RDb250aW51YXRpb24oZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICBzZWxmLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3cgPSB1bmRlZmluZWRcbiAgcmV0dXJuIGVmZmVjdHMuY2hlY2soYmxhbmtMaW5lLCBvbkJsYW5rLCBub3RCbGFuaylcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBvbkJsYW5rKGNvZGUpIHtcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzID1cbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXMgfHxcbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUuaW5pdGlhbEJsYW5rTGluZVxuXG4gICAgLy8gV2UgaGF2ZSBhIGJsYW5rIGxpbmUuXG4gICAgLy8gU3RpbGwsIHRyeSB0byBjb25zdW1lIGF0IG1vc3QgdGhlIGl0ZW1zIHNpemUuXG4gICAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICAgIGVmZmVjdHMsXG4gICAgICBvayxcbiAgICAgICdsaXN0SXRlbUluZGVudCcsXG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLnNpemUgKyAxXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gbm90QmxhbmsoY29kZSkge1xuICAgIGlmIChzZWxmLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzIHx8ICFtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmZ1cnRoZXJCbGFua0xpbmVzID0gdW5kZWZpbmVkXG4gICAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmluaXRpYWxCbGFua0xpbmUgPSB1bmRlZmluZWRcbiAgICAgIHJldHVybiBub3RJbkN1cnJlbnRJdGVtKGNvZGUpXG4gICAgfVxuICAgIHNlbGYuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXMgPSB1bmRlZmluZWRcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLmluaXRpYWxCbGFua0xpbmUgPSB1bmRlZmluZWRcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KGluZGVudENvbnN0cnVjdCwgb2ssIG5vdEluQ3VycmVudEl0ZW0pKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBub3RJbkN1cnJlbnRJdGVtKGNvZGUpIHtcbiAgICAvLyBXaGlsZSB3ZSBkbyBjb250aW51ZSwgd2Ugc2lnbmFsIHRoYXQgdGhlIGZsb3cgc2hvdWxkIGJlIGNsb3NlZC5cbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3cgPSB0cnVlXG4gICAgLy8gQXMgd2VcdTIwMTlyZSBjbG9zaW5nIGZsb3csIHdlXHUyMDE5cmUgbm8gbG9uZ2VyIGludGVycnVwdGluZy5cbiAgICBzZWxmLmludGVycnVwdCA9IHVuZGVmaW5lZFxuICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgICAgZWZmZWN0cyxcbiAgICAgIGVmZmVjdHMuYXR0ZW1wdChsaXN0LCBvaywgbm9rKSxcbiAgICAgICdsaW5lUHJlZml4JyxcbiAgICAgIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCdjb2RlSW5kZW50ZWQnKVxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IDRcbiAgICApKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVJbmRlbnQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgIGVmZmVjdHMsXG4gICAgYWZ0ZXJQcmVmaXgsXG4gICAgJ2xpc3RJdGVtSW5kZW50JyxcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLnNpemUgKyAxXG4gIClcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlclByZWZpeChjb2RlKSB7XG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gICAgcmV0dXJuIHRhaWwgJiZcbiAgICAgIHRhaWxbMV0udHlwZSA9PT0gJ2xpc3RJdGVtSW5kZW50JyAmJlxuICAgICAgdGFpbFsyXS5zbGljZVNlcmlhbGl6ZSh0YWlsWzFdLCB0cnVlKS5sZW5ndGggPT09IHNlbGYuY29udGFpbmVyU3RhdGUuc2l6ZVxuICAgICAgPyBvayhjb2RlKVxuICAgICAgOiBub2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlIHtFeGl0ZXJ9XG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxpc3RFbmQoZWZmZWN0cykge1xuICBlZmZlY3RzLmV4aXQodGhpcy5jb250YWluZXJTdGF0ZS50eXBlKVxufVxuXG4vKipcbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG5cbiAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgIGVmZmVjdHMsXG4gICAgYWZ0ZXJQcmVmaXgsXG4gICAgJ2xpc3RJdGVtUHJlZml4V2hpdGVzcGFjZScsXG4gICAgc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoJ2NvZGVJbmRlbnRlZCcpXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiA0ICsgMVxuICApXG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gYWZ0ZXJQcmVmaXgoY29kZSkge1xuICAgIGNvbnN0IHRhaWwgPSBzZWxmLmV2ZW50c1tzZWxmLmV2ZW50cy5sZW5ndGggLSAxXVxuICAgIHJldHVybiAhbWFya2Rvd25TcGFjZShjb2RlKSAmJlxuICAgICAgdGFpbCAmJlxuICAgICAgdGFpbFsxXS50eXBlID09PSAnbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlJ1xuICAgICAgPyBvayhjb2RlKVxuICAgICAgOiBub2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZywgbWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3Qgc2V0ZXh0VW5kZXJsaW5lID0ge1xuICBuYW1lOiAnc2V0ZXh0VW5kZXJsaW5lJyxcbiAgdG9rZW5pemU6IHRva2VuaXplU2V0ZXh0VW5kZXJsaW5lLFxuICByZXNvbHZlVG86IHJlc29sdmVUb1NldGV4dFVuZGVybGluZVxufVxuXG4vKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuZnVuY3Rpb24gcmVzb2x2ZVRvU2V0ZXh0VW5kZXJsaW5lKGV2ZW50cywgY29udGV4dCkge1xuICAvLyBUbyBkbzogcmVzb2x2ZSBsaWtlIGBtYXJrZG93bi1yc2AuXG4gIGxldCBpbmRleCA9IGV2ZW50cy5sZW5ndGhcbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCBjb250ZW50XG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgdGV4dFxuICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGRlZmluaXRpb25cblxuICAvLyBGaW5kIHRoZSBvcGVuaW5nIG9mIHRoZSBjb250ZW50LlxuICAvLyBJdFx1MjAxOWxsIGFsd2F5cyBleGlzdDogd2UgZG9uXHUyMDE5dCB0b2tlbml6ZSBpZiBpdCBpc25cdTIwMTl0IHRoZXJlLlxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGlmIChldmVudHNbaW5kZXhdWzBdID09PSAnZW50ZXInKSB7XG4gICAgICBpZiAoZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnY29udGVudCcpIHtcbiAgICAgICAgY29udGVudCA9IGluZGV4XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBpZiAoZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAncGFyYWdyYXBoJykge1xuICAgICAgICB0ZXh0ID0gaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRXhpdFxuICAgIGVsc2Uge1xuICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICAgIC8vIFJlbW92ZSB0aGUgY29udGVudCBlbmQgKGlmIG5lZWRlZCB3ZVx1MjAxOWxsIGFkZCBpdCBsYXRlcilcbiAgICAgICAgZXZlbnRzLnNwbGljZShpbmRleCwgMSlcbiAgICAgIH1cbiAgICAgIGlmICghZGVmaW5pdGlvbiAmJiBldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdkZWZpbml0aW9uJykge1xuICAgICAgICBkZWZpbml0aW9uID0gaW5kZXhcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3QgaGVhZGluZyA9IHtcbiAgICB0eXBlOiAnc2V0ZXh0SGVhZGluZycsXG4gICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1t0ZXh0XVsxXS5zdGFydCksXG4gICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbZXZlbnRzLmxlbmd0aCAtIDFdWzFdLmVuZClcbiAgfVxuXG4gIC8vIENoYW5nZSB0aGUgcGFyYWdyYXBoIHRvIHNldGV4dCBoZWFkaW5nIHRleHQuXG4gIGV2ZW50c1t0ZXh0XVsxXS50eXBlID0gJ3NldGV4dEhlYWRpbmdUZXh0J1xuXG4gIC8vIElmIHdlIGhhdmUgZGVmaW5pdGlvbnMgaW4gdGhlIGNvbnRlbnQsIHdlXHUyMDE5bGwga2VlcCBvbiBoYXZpbmcgY29udGVudCxcbiAgLy8gYnV0IHdlIG5lZWQgbW92ZSBpdC5cbiAgaWYgKGRlZmluaXRpb24pIHtcbiAgICBldmVudHMuc3BsaWNlKHRleHQsIDAsIFsnZW50ZXInLCBoZWFkaW5nLCBjb250ZXh0XSlcbiAgICBldmVudHMuc3BsaWNlKGRlZmluaXRpb24gKyAxLCAwLCBbJ2V4aXQnLCBldmVudHNbY29udGVudF1bMV0sIGNvbnRleHRdKVxuICAgIGV2ZW50c1tjb250ZW50XVsxXS5lbmQgPSBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbZGVmaW5pdGlvbl1bMV0uZW5kKVxuICB9IGVsc2Uge1xuICAgIGV2ZW50c1tjb250ZW50XVsxXSA9IGhlYWRpbmdcbiAgfVxuXG4gIC8vIEFkZCB0aGUgaGVhZGluZyBleGl0IGF0IHRoZSBlbmQuXG4gIGV2ZW50cy5wdXNoKFsnZXhpdCcsIGhlYWRpbmcsIGNvbnRleHRdKVxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplU2V0ZXh0VW5kZXJsaW5lKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogQXQgc3RhcnQgb2YgaGVhZGluZyAoc2V0ZXh0KSB1bmRlcmxpbmUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCBhYVxuICAgKiA+IHwgPT1cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBsZXQgaW5kZXggPSBzZWxmLmV2ZW50cy5sZW5ndGhcbiAgICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gICAgbGV0IHBhcmFncmFwaFxuICAgIC8vIEZpbmQgYW4gb3BlbmluZy5cbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgLy8gU2tpcCBlbnRlci9leGl0IG9mIGxpbmUgZW5kaW5nLCBsaW5lIHByZWZpeCwgYW5kIGNvbnRlbnQuXG4gICAgICAvLyBXZSBjYW4gbm93IGVpdGhlciBoYXZlIGEgZGVmaW5pdGlvbiBvciBhIHBhcmFncmFwaC5cbiAgICAgIGlmIChcbiAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhdWzFdLnR5cGUgIT09ICdsaW5lRW5kaW5nJyAmJlxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSAhPT0gJ2xpbmVQcmVmaXgnICYmXG4gICAgICAgIHNlbGYuZXZlbnRzW2luZGV4XVsxXS50eXBlICE9PSAnY29udGVudCdcbiAgICAgICkge1xuICAgICAgICBwYXJhZ3JhcGggPSBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ3BhcmFncmFwaCdcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUbyBkbzogaGFuZGxlIGxhenkvcGllcmNlIGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICAvLyBUbyBkbzogcGFyc2UgaW5kZW50IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICBpZiAoIXNlbGYucGFyc2VyLmxhenlbc2VsZi5ub3coKS5saW5lXSAmJiAoc2VsZi5pbnRlcnJ1cHQgfHwgcGFyYWdyYXBoKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignc2V0ZXh0SGVhZGluZ0xpbmUnKVxuICAgICAgbWFya2VyID0gY29kZVxuICAgICAgcmV0dXJuIGJlZm9yZShjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgYC1gIG9yIGA9YC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IGFhXG4gICAqID4gfCA9PVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlKGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdzZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlJylcbiAgICByZXR1cm4gaW5zaWRlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCBhYVxuICAgKiA+IHwgPT1cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluc2lkZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gaW5zaWRlXG4gICAgfVxuICAgIGVmZmVjdHMuZXhpdCgnc2V0ZXh0SGVhZGluZ0xpbmVTZXF1ZW5jZScpXG4gICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGFmdGVyLCAnbGluZVN1ZmZpeCcpKGNvZGUpXG4gICAgICA6IGFmdGVyKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgc2VxdWVuY2UsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCBhYVxuICAgKiA+IHwgPT1cbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdzZXRleHRIZWFkaW5nTGluZScpXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbGl6ZXJ9IEluaXRpYWxpemVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICovXG5cbmltcG9ydCB7YmxhbmtMaW5lLCBjb250ZW50fSBmcm9tICdtaWNyb21hcmstY29yZS1jb21tb25tYXJrJ1xuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmd9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7SW5pdGlhbENvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBmbG93ID0ge1xuICB0b2tlbml6ZTogaW5pdGlhbGl6ZUZsb3dcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge0luaXRpYWxpemVyfVxuICovXG5mdW5jdGlvbiBpbml0aWFsaXplRmxvdyhlZmZlY3RzKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGNvbnN0IGluaXRpYWwgPSBlZmZlY3RzLmF0dGVtcHQoXG4gICAgLy8gVHJ5IHRvIHBhcnNlIGEgYmxhbmsgbGluZS5cbiAgICBibGFua0xpbmUsXG4gICAgYXRCbGFua0VuZGluZyxcbiAgICAvLyBUcnkgdG8gcGFyc2UgaW5pdGlhbCBmbG93IChlc3NlbnRpYWxseSwgb25seSBjb2RlKS5cbiAgICBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICB0aGlzLnBhcnNlci5jb25zdHJ1Y3RzLmZsb3dJbml0aWFsLFxuICAgICAgYWZ0ZXJDb25zdHJ1Y3QsXG4gICAgICBmYWN0b3J5U3BhY2UoXG4gICAgICAgIGVmZmVjdHMsXG4gICAgICAgIGVmZmVjdHMuYXR0ZW1wdChcbiAgICAgICAgICB0aGlzLnBhcnNlci5jb25zdHJ1Y3RzLmZsb3csXG4gICAgICAgICAgYWZ0ZXJDb25zdHJ1Y3QsXG4gICAgICAgICAgZWZmZWN0cy5hdHRlbXB0KGNvbnRlbnQsIGFmdGVyQ29uc3RydWN0KVxuICAgICAgICApLFxuICAgICAgICAnbGluZVByZWZpeCdcbiAgICAgIClcbiAgICApXG4gIClcbiAgcmV0dXJuIGluaXRpYWxcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhdEJsYW5rRW5kaW5nKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZ0JsYW5rJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmdCbGFuaycpXG4gICAgc2VsZi5jdXJyZW50Q29uc3RydWN0ID0gdW5kZWZpbmVkXG4gICAgcmV0dXJuIGluaXRpYWxcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGFmdGVyQ29uc3RydWN0KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICBzZWxmLmN1cnJlbnRDb25zdHJ1Y3QgPSB1bmRlZmluZWRcbiAgICByZXR1cm4gaW5pdGlhbFxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbENvbnN0cnVjdH0gSW5pdGlhbENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsaXplcn0gSW5pdGlhbGl6ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUmVzb2x2ZXJ9IFJlc29sdmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICovXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlciA9IHtcbiAgcmVzb2x2ZUFsbDogY3JlYXRlUmVzb2x2ZXIoKVxufVxuZXhwb3J0IGNvbnN0IHN0cmluZyA9IGluaXRpYWxpemVGYWN0b3J5KCdzdHJpbmcnKVxuZXhwb3J0IGNvbnN0IHRleHQgPSBpbml0aWFsaXplRmFjdG9yeSgndGV4dCcpXG5cbi8qKlxuICogQHBhcmFtIHsnc3RyaW5nJyB8ICd0ZXh0J30gZmllbGRcbiAqIEByZXR1cm5zIHtJbml0aWFsQ29uc3RydWN0fVxuICovXG5mdW5jdGlvbiBpbml0aWFsaXplRmFjdG9yeShmaWVsZCkge1xuICByZXR1cm4ge1xuICAgIHRva2VuaXplOiBpbml0aWFsaXplVGV4dCxcbiAgICByZXNvbHZlQWxsOiBjcmVhdGVSZXNvbHZlcihcbiAgICAgIGZpZWxkID09PSAndGV4dCcgPyByZXNvbHZlQWxsTGluZVN1ZmZpeGVzIDogdW5kZWZpbmVkXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gICAqIEB0eXBlIHtJbml0aWFsaXplcn1cbiAgICovXG4gIGZ1bmN0aW9uIGluaXRpYWxpemVUZXh0KGVmZmVjdHMpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpc1xuICAgIGNvbnN0IGNvbnN0cnVjdHMgPSB0aGlzLnBhcnNlci5jb25zdHJ1Y3RzW2ZpZWxkXVxuICAgIGNvbnN0IHRleHQgPSBlZmZlY3RzLmF0dGVtcHQoY29uc3RydWN0cywgc3RhcnQsIG5vdFRleHQpXG4gICAgcmV0dXJuIHN0YXJ0XG5cbiAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAgIHJldHVybiBhdEJyZWFrKGNvZGUpID8gdGV4dChjb2RlKSA6IG5vdFRleHQoY29kZSlcbiAgICB9XG5cbiAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgIGZ1bmN0aW9uIG5vdFRleHQoY29kZSkge1xuICAgICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgZWZmZWN0cy5lbnRlcignZGF0YScpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBkYXRhXG4gICAgfVxuXG4gICAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgICBmdW5jdGlvbiBkYXRhKGNvZGUpIHtcbiAgICAgIGlmIChhdEJyZWFrKGNvZGUpKSB7XG4gICAgICAgIGVmZmVjdHMuZXhpdCgnZGF0YScpXG4gICAgICAgIHJldHVybiB0ZXh0KGNvZGUpXG4gICAgICB9XG5cbiAgICAgIC8vIERhdGEuXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBkYXRhXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtDb2RlfSBjb2RlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgZnVuY3Rpb24gYXRCcmVhayhjb2RlKSB7XG4gICAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgICAgY29uc3QgbGlzdCA9IGNvbnN0cnVjdHNbY29kZV1cbiAgICAgIGxldCBpbmRleCA9IC0xXG4gICAgICBpZiAobGlzdCkge1xuICAgICAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgbGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBpdGVtID0gbGlzdFtpbmRleF1cbiAgICAgICAgICBpZiAoIWl0ZW0ucHJldmlvdXMgfHwgaXRlbS5wcmV2aW91cy5jYWxsKHNlbGYsIHNlbGYucHJldmlvdXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZXNvbHZlciB8IHVuZGVmaW5lZH0gW2V4dHJhUmVzb2x2ZXJdXG4gKiBAcmV0dXJucyB7UmVzb2x2ZXJ9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVJlc29sdmVyKGV4dHJhUmVzb2x2ZXIpIHtcbiAgcmV0dXJuIHJlc29sdmVBbGxUZXh0XG5cbiAgLyoqIEB0eXBlIHtSZXNvbHZlcn0gKi9cbiAgZnVuY3Rpb24gcmVzb2x2ZUFsbFRleHQoZXZlbnRzLCBjb250ZXh0KSB7XG4gICAgbGV0IGluZGV4ID0gLTFcbiAgICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgZW50ZXJcblxuICAgIC8vIEEgcmF0aGVyIGJvcmluZyBjb21wdXRhdGlvbiAodG8gbWVyZ2UgYWRqYWNlbnQgYGRhdGFgIGV2ZW50cykgd2hpY2hcbiAgICAvLyBpbXByb3ZlcyBtbSBwZXJmb3JtYW5jZSBieSAyOSUuXG4gICAgd2hpbGUgKCsraW5kZXggPD0gZXZlbnRzLmxlbmd0aCkge1xuICAgICAgaWYgKGVudGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGV2ZW50c1tpbmRleF0gJiYgZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnZGF0YScpIHtcbiAgICAgICAgICBlbnRlciA9IGluZGV4XG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFldmVudHNbaW5kZXhdIHx8IGV2ZW50c1tpbmRleF1bMV0udHlwZSAhPT0gJ2RhdGEnKSB7XG4gICAgICAgIC8vIERvblx1MjAxOXQgZG8gYW55dGhpbmcgaWYgdGhlcmUgaXMgb25lIGRhdGEgdG9rZW4uXG4gICAgICAgIGlmIChpbmRleCAhPT0gZW50ZXIgKyAyKSB7XG4gICAgICAgICAgZXZlbnRzW2VudGVyXVsxXS5lbmQgPSBldmVudHNbaW5kZXggLSAxXVsxXS5lbmRcbiAgICAgICAgICBldmVudHMuc3BsaWNlKGVudGVyICsgMiwgaW5kZXggLSBlbnRlciAtIDIpXG4gICAgICAgICAgaW5kZXggPSBlbnRlciArIDJcbiAgICAgICAgfVxuICAgICAgICBlbnRlciA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXh0cmFSZXNvbHZlciA/IGV4dHJhUmVzb2x2ZXIoZXZlbnRzLCBjb250ZXh0KSA6IGV2ZW50c1xuICB9XG59XG5cbi8qKlxuICogQSByYXRoZXIgdWdseSBzZXQgb2YgaW5zdHJ1Y3Rpb25zIHdoaWNoIGFnYWluIGxvb2tzIGF0IGNodW5rcyBpbiB0aGUgaW5wdXRcbiAqIHN0cmVhbS5cbiAqIFRoZSByZWFzb24gdG8gZG8gdGhpcyBoZXJlIGlzIHRoYXQgaXQgaXMgKm11Y2gqIGZhc3RlciB0byBwYXJzZSBpbiByZXZlcnNlLlxuICogQW5kIHRoYXQgd2UgY2FuXHUyMDE5dCBob29rIGludG8gYG51bGxgIHRvIHNwbGl0IHRoZSBsaW5lIHN1ZmZpeCBiZWZvcmUgYW4gRU9GLlxuICogVG8gZG86IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIG1ha2UgdGhpcyBpbnRvIGEgY2xlYW4gdXRpbGl0eSwgb3IgZXZlbiBpbiBjb3JlLlxuICogQXMgaXQgd2lsbCBiZSB1c2VmdWwgZm9yIEdGTXMgbGl0ZXJhbCBhdXRvbGluayBleHRlbnNpb24gKGFuZCBtYXliZSBldmVuXG4gKiB0YWJsZXM/KVxuICpcbiAqIEB0eXBlIHtSZXNvbHZlcn1cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUFsbExpbmVTdWZmaXhlcyhldmVudHMsIGNvbnRleHQpIHtcbiAgbGV0IGV2ZW50SW5kZXggPSAwIC8vIFNraXAgZmlyc3QuXG5cbiAgd2hpbGUgKCsrZXZlbnRJbmRleCA8PSBldmVudHMubGVuZ3RoKSB7XG4gICAgaWYgKFxuICAgICAgKGV2ZW50SW5kZXggPT09IGV2ZW50cy5sZW5ndGggfHxcbiAgICAgICAgZXZlbnRzW2V2ZW50SW5kZXhdWzFdLnR5cGUgPT09ICdsaW5lRW5kaW5nJykgJiZcbiAgICAgIGV2ZW50c1tldmVudEluZGV4IC0gMV1bMV0udHlwZSA9PT0gJ2RhdGEnXG4gICAgKSB7XG4gICAgICBjb25zdCBkYXRhID0gZXZlbnRzW2V2ZW50SW5kZXggLSAxXVsxXVxuICAgICAgY29uc3QgY2h1bmtzID0gY29udGV4dC5zbGljZVN0cmVhbShkYXRhKVxuICAgICAgbGV0IGluZGV4ID0gY2h1bmtzLmxlbmd0aFxuICAgICAgbGV0IGJ1ZmZlckluZGV4ID0gLTFcbiAgICAgIGxldCBzaXplID0gMFxuICAgICAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICAgICAgbGV0IHRhYnNcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIGNvbnN0IGNodW5rID0gY2h1bmtzW2luZGV4XVxuICAgICAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGJ1ZmZlckluZGV4ID0gY2h1bmsubGVuZ3RoXG4gICAgICAgICAgd2hpbGUgKGNodW5rLmNoYXJDb2RlQXQoYnVmZmVySW5kZXggLSAxKSA9PT0gMzIpIHtcbiAgICAgICAgICAgIHNpemUrK1xuICAgICAgICAgICAgYnVmZmVySW5kZXgtLVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYnVmZmVySW5kZXgpIGJyZWFrXG4gICAgICAgICAgYnVmZmVySW5kZXggPSAtMVxuICAgICAgICB9XG4gICAgICAgIC8vIE51bWJlclxuICAgICAgICBlbHNlIGlmIChjaHVuayA9PT0gLTIpIHtcbiAgICAgICAgICB0YWJzID0gdHJ1ZVxuICAgICAgICAgIHNpemUrK1xuICAgICAgICB9IGVsc2UgaWYgKGNodW5rID09PSAtMSkge1xuICAgICAgICAgIC8vIEVtcHR5XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVwbGFjZW1lbnQgY2hhcmFjdGVyLCBleGl0LlxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoc2l6ZSkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHtcbiAgICAgICAgICB0eXBlOlxuICAgICAgICAgICAgZXZlbnRJbmRleCA9PT0gZXZlbnRzLmxlbmd0aCB8fCB0YWJzIHx8IHNpemUgPCAyXG4gICAgICAgICAgICAgID8gJ2xpbmVTdWZmaXgnXG4gICAgICAgICAgICAgIDogJ2hhcmRCcmVha1RyYWlsaW5nJyxcbiAgICAgICAgICBzdGFydDoge1xuICAgICAgICAgICAgbGluZTogZGF0YS5lbmQubGluZSxcbiAgICAgICAgICAgIGNvbHVtbjogZGF0YS5lbmQuY29sdW1uIC0gc2l6ZSxcbiAgICAgICAgICAgIG9mZnNldDogZGF0YS5lbmQub2Zmc2V0IC0gc2l6ZSxcbiAgICAgICAgICAgIF9pbmRleDogZGF0YS5zdGFydC5faW5kZXggKyBpbmRleCxcbiAgICAgICAgICAgIF9idWZmZXJJbmRleDogaW5kZXhcbiAgICAgICAgICAgICAgPyBidWZmZXJJbmRleFxuICAgICAgICAgICAgICA6IGRhdGEuc3RhcnQuX2J1ZmZlckluZGV4ICsgYnVmZmVySW5kZXhcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZGF0YS5lbmQpXG4gICAgICAgIH1cbiAgICAgICAgZGF0YS5lbmQgPSBPYmplY3QuYXNzaWduKHt9LCB0b2tlbi5zdGFydClcbiAgICAgICAgaWYgKGRhdGEuc3RhcnQub2Zmc2V0ID09PSBkYXRhLmVuZC5vZmZzZXQpIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGRhdGEsIHRva2VuKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGV2ZW50cy5zcGxpY2UoXG4gICAgICAgICAgICBldmVudEluZGV4LFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIFsnZW50ZXInLCB0b2tlbiwgY29udGV4dF0sXG4gICAgICAgICAgICBbJ2V4aXQnLCB0b2tlbiwgY29udGV4dF1cbiAgICAgICAgICApXG4gICAgICAgICAgZXZlbnRJbmRleCArPSAyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGV2ZW50SW5kZXgrK1xuICAgIH1cbiAgfVxuICByZXR1cm4gZXZlbnRzXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNodW5rfSBDaHVua1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdFJlY29yZH0gQ29uc3RydWN0UmVjb3JkXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVmZmVjdHN9IEVmZmVjdHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbENvbnN0cnVjdH0gSW5pdGlhbENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5QYXJzZUNvbnRleHR9IFBhcnNlQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Qb2ludH0gUG9pbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VufSBUb2tlblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlblR5cGV9IFRva2VuVHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIFJlc3RvcmVcbiAqIEByZXR1cm5zIHt2b2lkfVxuICpcbiAqIEB0eXBlZGVmIEluZm9cbiAqIEBwcm9wZXJ0eSB7UmVzdG9yZX0gcmVzdG9yZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGZyb21cbiAqXG4gKiBAY2FsbGJhY2sgUmV0dXJuSGFuZGxlXG4gKiAgIEhhbmRsZSBhIHN1Y2Nlc3NmdWwgcnVuLlxuICogQHBhcmFtIHtDb25zdHJ1Y3R9IGNvbnN0cnVjdFxuICogQHBhcmFtIHtJbmZvfSBpbmZvXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtwdXNoLCBzcGxpY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNodW5rZWQnXG5pbXBvcnQge3Jlc29sdmVBbGx9IGZyb20gJ21pY3JvbWFyay11dGlsLXJlc29sdmUtYWxsJ1xuLyoqXG4gKiBDcmVhdGUgYSB0b2tlbml6ZXIuXG4gKiBUb2tlbml6ZXJzIGRlYWwgd2l0aCBvbmUgdHlwZSBvZiBkYXRhIChlLmcuLCBjb250YWluZXJzLCBmbG93LCB0ZXh0KS5cbiAqIFRoZSBwYXJzZXIgaXMgdGhlIG9iamVjdCBkZWFsaW5nIHdpdGggaXQgYWxsLlxuICogYGluaXRpYWxpemVgIHdvcmtzIGxpa2Ugb3RoZXIgY29uc3RydWN0cywgZXhjZXB0IHRoYXQgb25seSBpdHMgYHRva2VuaXplYFxuICogZnVuY3Rpb24gaXMgdXNlZCwgaW4gd2hpY2ggY2FzZSBpdCBkb2Vzblx1MjAxOXQgcmVjZWl2ZSBhbiBgb2tgIG9yIGBub2tgLlxuICogYGZyb21gIGNhbiBiZSBnaXZlbiB0byBzZXQgdGhlIHBvaW50IGJlZm9yZSB0aGUgZmlyc3QgY2hhcmFjdGVyLCBhbHRob3VnaFxuICogd2hlbiBmdXJ0aGVyIGxpbmVzIGFyZSBpbmRlbnRlZCwgdGhleSBtdXN0IGJlIHNldCB3aXRoIGBkZWZpbmVTa2lwYC5cbiAqXG4gKiBAcGFyYW0ge1BhcnNlQ29udGV4dH0gcGFyc2VyXG4gKiBAcGFyYW0ge0luaXRpYWxDb25zdHJ1Y3R9IGluaXRpYWxpemVcbiAqIEBwYXJhbSB7T21pdDxQb2ludCwgJ19idWZmZXJJbmRleCcgfCAnX2luZGV4Jz4gfCB1bmRlZmluZWR9IFtmcm9tXVxuICogQHJldHVybnMge1Rva2VuaXplQ29udGV4dH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRva2VuaXplcihwYXJzZXIsIGluaXRpYWxpemUsIGZyb20pIHtcbiAgLyoqIEB0eXBlIHtQb2ludH0gKi9cbiAgbGV0IHBvaW50ID0gT2JqZWN0LmFzc2lnbihcbiAgICBmcm9tXG4gICAgICA/IE9iamVjdC5hc3NpZ24oe30sIGZyb20pXG4gICAgICA6IHtcbiAgICAgICAgICBsaW5lOiAxLFxuICAgICAgICAgIGNvbHVtbjogMSxcbiAgICAgICAgICBvZmZzZXQ6IDBcbiAgICAgICAgfSxcbiAgICB7XG4gICAgICBfaW5kZXg6IDAsXG4gICAgICBfYnVmZmVySW5kZXg6IC0xXG4gICAgfVxuICApXG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgbnVtYmVyPn0gKi9cbiAgY29uc3QgY29sdW1uU3RhcnQgPSB7fVxuICAvKiogQHR5cGUge0FycmF5PENvbnN0cnVjdD59ICovXG4gIGNvbnN0IHJlc29sdmVBbGxDb25zdHJ1Y3RzID0gW11cbiAgLyoqIEB0eXBlIHtBcnJheTxDaHVuaz59ICovXG4gIGxldCBjaHVua3MgPSBbXVxuICAvKiogQHR5cGUge0FycmF5PFRva2VuPn0gKi9cbiAgbGV0IHN0YWNrID0gW11cbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgY29uc3VtZWQgPSB0cnVlXG5cbiAgLyoqXG4gICAqIFRvb2xzIHVzZWQgZm9yIHRva2VuaXppbmcuXG4gICAqXG4gICAqIEB0eXBlIHtFZmZlY3RzfVxuICAgKi9cbiAgY29uc3QgZWZmZWN0cyA9IHtcbiAgICBjb25zdW1lLFxuICAgIGVudGVyLFxuICAgIGV4aXQsXG4gICAgYXR0ZW1wdDogY29uc3RydWN0RmFjdG9yeShvbnN1Y2Nlc3NmdWxjb25zdHJ1Y3QpLFxuICAgIGNoZWNrOiBjb25zdHJ1Y3RGYWN0b3J5KG9uc3VjY2Vzc2Z1bGNoZWNrKSxcbiAgICBpbnRlcnJ1cHQ6IGNvbnN0cnVjdEZhY3Rvcnkob25zdWNjZXNzZnVsY2hlY2ssIHtcbiAgICAgIGludGVycnVwdDogdHJ1ZVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogU3RhdGUgYW5kIHRvb2xzIGZvciByZXNvbHZpbmcgYW5kIHNlcmlhbGl6aW5nLlxuICAgKlxuICAgKiBAdHlwZSB7VG9rZW5pemVDb250ZXh0fVxuICAgKi9cbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBwcmV2aW91czogbnVsbCxcbiAgICBjb2RlOiBudWxsLFxuICAgIGNvbnRhaW5lclN0YXRlOiB7fSxcbiAgICBldmVudHM6IFtdLFxuICAgIHBhcnNlcixcbiAgICBzbGljZVN0cmVhbSxcbiAgICBzbGljZVNlcmlhbGl6ZSxcbiAgICBub3csXG4gICAgZGVmaW5lU2tpcCxcbiAgICB3cml0ZVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0ZSBmdW5jdGlvbi5cbiAgICpcbiAgICogQHR5cGUge1N0YXRlIHwgdm9pZH1cbiAgICovXG4gIGxldCBzdGF0ZSA9IGluaXRpYWxpemUudG9rZW5pemUuY2FsbChjb250ZXh0LCBlZmZlY3RzKVxuXG4gIC8qKlxuICAgKiBUcmFjayB3aGljaCBjaGFyYWN0ZXIgd2UgZXhwZWN0IHRvIGJlIGNvbnN1bWVkLCB0byBjYXRjaCBidWdzLlxuICAgKlxuICAgKiBAdHlwZSB7Q29kZX1cbiAgICovXG4gIGxldCBleHBlY3RlZENvZGVcbiAgaWYgKGluaXRpYWxpemUucmVzb2x2ZUFsbCkge1xuICAgIHJlc29sdmVBbGxDb25zdHJ1Y3RzLnB1c2goaW5pdGlhbGl6ZSlcbiAgfVxuICByZXR1cm4gY29udGV4dFxuXG4gIC8qKiBAdHlwZSB7VG9rZW5pemVDb250ZXh0Wyd3cml0ZSddfSAqL1xuICBmdW5jdGlvbiB3cml0ZShzbGljZSkge1xuICAgIGNodW5rcyA9IHB1c2goY2h1bmtzLCBzbGljZSlcbiAgICBtYWluKClcblxuICAgIC8vIEV4aXQgaWYgd2VcdTIwMTlyZSBub3QgZG9uZSwgcmVzb2x2ZSBtaWdodCBjaGFuZ2Ugc3R1ZmYuXG4gICAgaWYgKGNodW5rc1tjaHVua3MubGVuZ3RoIC0gMV0gIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH1cbiAgICBhZGRSZXN1bHQoaW5pdGlhbGl6ZSwgMClcblxuICAgIC8vIE90aGVyd2lzZSwgcmVzb2x2ZSwgYW5kIGV4aXQuXG4gICAgY29udGV4dC5ldmVudHMgPSByZXNvbHZlQWxsKHJlc29sdmVBbGxDb25zdHJ1Y3RzLCBjb250ZXh0LmV2ZW50cywgY29udGV4dClcbiAgICByZXR1cm4gY29udGV4dC5ldmVudHNcbiAgfVxuXG4gIC8vXG4gIC8vIFRvb2xzLlxuICAvL1xuXG4gIC8qKiBAdHlwZSB7VG9rZW5pemVDb250ZXh0WydzbGljZVNlcmlhbGl6ZSddfSAqL1xuICBmdW5jdGlvbiBzbGljZVNlcmlhbGl6ZSh0b2tlbiwgZXhwYW5kVGFicykge1xuICAgIHJldHVybiBzZXJpYWxpemVDaHVua3Moc2xpY2VTdHJlYW0odG9rZW4pLCBleHBhbmRUYWJzKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtUb2tlbml6ZUNvbnRleHRbJ3NsaWNlU3RyZWFtJ119ICovXG4gIGZ1bmN0aW9uIHNsaWNlU3RyZWFtKHRva2VuKSB7XG4gICAgcmV0dXJuIHNsaWNlQ2h1bmtzKGNodW5rcywgdG9rZW4pXG4gIH1cblxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dFsnbm93J119ICovXG4gIGZ1bmN0aW9uIG5vdygpIHtcbiAgICAvLyBUaGlzIGlzIGEgaG90IHBhdGgsIHNvIHdlIGNsb25lIG1hbnVhbGx5IGluc3RlYWQgb2YgYE9iamVjdC5hc3NpZ24oe30sIHBvaW50KWBcbiAgICBjb25zdCB7bGluZSwgY29sdW1uLCBvZmZzZXQsIF9pbmRleCwgX2J1ZmZlckluZGV4fSA9IHBvaW50XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmUsXG4gICAgICBjb2x1bW4sXG4gICAgICBvZmZzZXQsXG4gICAgICBfaW5kZXgsXG4gICAgICBfYnVmZmVySW5kZXhcbiAgICB9XG4gIH1cblxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dFsnZGVmaW5lU2tpcCddfSAqL1xuICBmdW5jdGlvbiBkZWZpbmVTa2lwKHZhbHVlKSB7XG4gICAgY29sdW1uU3RhcnRbdmFsdWUubGluZV0gPSB2YWx1ZS5jb2x1bW5cbiAgICBhY2NvdW50Rm9yUG90ZW50aWFsU2tpcCgpXG4gIH1cblxuICAvL1xuICAvLyBTdGF0ZSBtYW5hZ2VtZW50LlxuICAvL1xuXG4gIC8qKlxuICAgKiBNYWluIGxvb3AgKG5vdGUgdGhhdCBgX2luZGV4YCBhbmQgYF9idWZmZXJJbmRleGAgaW4gYHBvaW50YCBhcmUgbW9kaWZpZWQgYnlcbiAgICogYGNvbnN1bWVgKS5cbiAgICogSGVyZSBpcyB3aGVyZSB3ZSB3YWxrIHRocm91Z2ggdGhlIGNodW5rcywgd2hpY2ggZWl0aGVyIGluY2x1ZGUgc3RyaW5ncyBvZlxuICAgKiBzZXZlcmFsIGNoYXJhY3RlcnMsIG9yIG51bWVyaWNhbCBjaGFyYWN0ZXIgY29kZXMuXG4gICAqIFRoZSByZWFzb24gdG8gZG8gdGhpcyBpbiBhIGxvb3AgaW5zdGVhZCBvZiBhIGNhbGwgaXMgc28gdGhlIHN0YWNrIGNhblxuICAgKiBkcmFpbi5cbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiBtYWluKCkge1xuICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICAgIGxldCBjaHVua0luZGV4XG4gICAgd2hpbGUgKHBvaW50Ll9pbmRleCA8IGNodW5rcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGNodW5rID0gY2h1bmtzW3BvaW50Ll9pbmRleF1cblxuICAgICAgLy8gSWYgd2VcdTIwMTlyZSBpbiBhIGJ1ZmZlciBjaHVuaywgbG9vcCB0aHJvdWdoIGl0LlxuICAgICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2h1bmtJbmRleCA9IHBvaW50Ll9pbmRleFxuICAgICAgICBpZiAocG9pbnQuX2J1ZmZlckluZGV4IDwgMCkge1xuICAgICAgICAgIHBvaW50Ll9idWZmZXJJbmRleCA9IDBcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoXG4gICAgICAgICAgcG9pbnQuX2luZGV4ID09PSBjaHVua0luZGV4ICYmXG4gICAgICAgICAgcG9pbnQuX2J1ZmZlckluZGV4IDwgY2h1bmsubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGdvKGNodW5rLmNoYXJDb2RlQXQocG9pbnQuX2J1ZmZlckluZGV4KSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ28oY2h1bmspXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlYWwgd2l0aCBvbmUgY29kZS5cbiAgICpcbiAgICogQHBhcmFtIHtDb2RlfSBjb2RlXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gZ28oY29kZSkge1xuICAgIGNvbnN1bWVkID0gdW5kZWZpbmVkXG4gICAgZXhwZWN0ZWRDb2RlID0gY29kZVxuICAgIHN0YXRlID0gc3RhdGUoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7RWZmZWN0c1snY29uc3VtZSddfSAqL1xuICBmdW5jdGlvbiBjb25zdW1lKGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBwb2ludC5saW5lKytcbiAgICAgIHBvaW50LmNvbHVtbiA9IDFcbiAgICAgIHBvaW50Lm9mZnNldCArPSBjb2RlID09PSAtMyA/IDIgOiAxXG4gICAgICBhY2NvdW50Rm9yUG90ZW50aWFsU2tpcCgpXG4gICAgfSBlbHNlIGlmIChjb2RlICE9PSAtMSkge1xuICAgICAgcG9pbnQuY29sdW1uKytcbiAgICAgIHBvaW50Lm9mZnNldCsrXG4gICAgfVxuXG4gICAgLy8gTm90IGluIGEgc3RyaW5nIGNodW5rLlxuICAgIGlmIChwb2ludC5fYnVmZmVySW5kZXggPCAwKSB7XG4gICAgICBwb2ludC5faW5kZXgrK1xuICAgIH0gZWxzZSB7XG4gICAgICBwb2ludC5fYnVmZmVySW5kZXgrK1xuXG4gICAgICAvLyBBdCBlbmQgb2Ygc3RyaW5nIGNodW5rLlxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBQb2ludHMgdy8gbm9uLW5lZ2F0aXZlIGBfYnVmZmVySW5kZXhgIHJlZmVyZW5jZVxuICAgICAgLy8gc3RyaW5ncy5cbiAgICAgIGlmIChwb2ludC5fYnVmZmVySW5kZXggPT09IGNodW5rc1twb2ludC5faW5kZXhdLmxlbmd0aCkge1xuICAgICAgICBwb2ludC5fYnVmZmVySW5kZXggPSAtMVxuICAgICAgICBwb2ludC5faW5kZXgrK1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEV4cG9zZSB0aGUgcHJldmlvdXMgY2hhcmFjdGVyLlxuICAgIGNvbnRleHQucHJldmlvdXMgPSBjb2RlXG5cbiAgICAvLyBNYXJrIGFzIGNvbnN1bWVkLlxuICAgIGNvbnN1bWVkID0gdHJ1ZVxuICB9XG5cbiAgLyoqIEB0eXBlIHtFZmZlY3RzWydlbnRlciddfSAqL1xuICBmdW5jdGlvbiBlbnRlcih0eXBlLCBmaWVsZHMpIHtcbiAgICAvKiogQHR5cGUge1Rva2VufSAqL1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgUGF0Y2ggaW5zdGVhZCBvZiBhc3NpZ24gcmVxdWlyZWQgZmllbGRzIHRvIGhlbHAgR0MuXG4gICAgY29uc3QgdG9rZW4gPSBmaWVsZHMgfHwge31cbiAgICB0b2tlbi50eXBlID0gdHlwZVxuICAgIHRva2VuLnN0YXJ0ID0gbm93KClcbiAgICBjb250ZXh0LmV2ZW50cy5wdXNoKFsnZW50ZXInLCB0b2tlbiwgY29udGV4dF0pXG4gICAgc3RhY2sucHVzaCh0b2tlbilcbiAgICByZXR1cm4gdG9rZW5cbiAgfVxuXG4gIC8qKiBAdHlwZSB7RWZmZWN0c1snZXhpdCddfSAqL1xuICBmdW5jdGlvbiBleGl0KHR5cGUpIHtcbiAgICBjb25zdCB0b2tlbiA9IHN0YWNrLnBvcCgpXG4gICAgdG9rZW4uZW5kID0gbm93KClcbiAgICBjb250ZXh0LmV2ZW50cy5wdXNoKFsnZXhpdCcsIHRva2VuLCBjb250ZXh0XSlcbiAgICByZXR1cm4gdG9rZW5cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgcmVzdWx0cy5cbiAgICpcbiAgICogQHR5cGUge1JldHVybkhhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uc3VjY2Vzc2Z1bGNvbnN0cnVjdChjb25zdHJ1Y3QsIGluZm8pIHtcbiAgICBhZGRSZXN1bHQoY29uc3RydWN0LCBpbmZvLmZyb20pXG4gIH1cblxuICAvKipcbiAgICogRGlzY2FyZCByZXN1bHRzLlxuICAgKlxuICAgKiBAdHlwZSB7UmV0dXJuSGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25zdWNjZXNzZnVsY2hlY2soXywgaW5mbykge1xuICAgIGluZm8ucmVzdG9yZSgpXG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yeSB0byBhdHRlbXB0L2NoZWNrL2ludGVycnVwdC5cbiAgICpcbiAgICogQHBhcmFtIHtSZXR1cm5IYW5kbGV9IG9ucmV0dXJuXG4gICAqIEBwYXJhbSB7e2ludGVycnVwdD86IGJvb2xlYW4gfCB1bmRlZmluZWR9IHwgdW5kZWZpbmVkfSBbZmllbGRzXVxuICAgKi9cbiAgZnVuY3Rpb24gY29uc3RydWN0RmFjdG9yeShvbnJldHVybiwgZmllbGRzKSB7XG4gICAgcmV0dXJuIGhvb2tcblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBlaXRoZXIgYW4gb2JqZWN0IG1hcHBpbmcgY29kZXMgdG8gY29uc3RydWN0cywgYSBsaXN0IG9mXG4gICAgICogY29uc3RydWN0cywgb3IgYSBzaW5nbGUgY29uc3RydWN0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBcnJheTxDb25zdHJ1Y3Q+IHwgQ29uc3RydWN0IHwgQ29uc3RydWN0UmVjb3JkfSBjb25zdHJ1Y3RzXG4gICAgICogQHBhcmFtIHtTdGF0ZX0gcmV0dXJuU3RhdGVcbiAgICAgKiBAcGFyYW0ge1N0YXRlIHwgdW5kZWZpbmVkfSBbYm9ndXNTdGF0ZV1cbiAgICAgKiBAcmV0dXJucyB7U3RhdGV9XG4gICAgICovXG4gICAgZnVuY3Rpb24gaG9vayhjb25zdHJ1Y3RzLCByZXR1cm5TdGF0ZSwgYm9ndXNTdGF0ZSkge1xuICAgICAgLyoqIEB0eXBlIHtBcnJheTxDb25zdHJ1Y3Q+fSAqL1xuICAgICAgbGV0IGxpc3RPZkNvbnN0cnVjdHNcbiAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICAgICAgbGV0IGNvbnN0cnVjdEluZGV4XG4gICAgICAvKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbiAgICAgIGxldCBjdXJyZW50Q29uc3RydWN0XG4gICAgICAvKiogQHR5cGUge0luZm99ICovXG4gICAgICBsZXQgaW5mb1xuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoY29uc3RydWN0cykgLyogYzggaWdub3JlIG5leHQgMSAqL1xuICAgICAgICA/IGhhbmRsZUxpc3RPZkNvbnN0cnVjdHMoY29uc3RydWN0cylcbiAgICAgICAgOiAndG9rZW5pemUnIGluIGNvbnN0cnVjdHNcbiAgICAgICAgPyAvLyBAdHMtZXhwZWN0LWVycm9yIExvb2tzIGxpa2UgYSBjb25zdHJ1Y3QuXG4gICAgICAgICAgaGFuZGxlTGlzdE9mQ29uc3RydWN0cyhbY29uc3RydWN0c10pXG4gICAgICAgIDogaGFuZGxlTWFwT2ZDb25zdHJ1Y3RzKGNvbnN0cnVjdHMpXG5cbiAgICAgIC8qKlxuICAgICAgICogSGFuZGxlIGEgbGlzdCBvZiBjb25zdHJ1Y3QuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtDb25zdHJ1Y3RSZWNvcmR9IG1hcFxuICAgICAgICogQHJldHVybnMge1N0YXRlfVxuICAgICAgICovXG4gICAgICBmdW5jdGlvbiBoYW5kbGVNYXBPZkNvbnN0cnVjdHMobWFwKSB7XG4gICAgICAgIHJldHVybiBzdGFydFxuXG4gICAgICAgIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gICAgICAgIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAgICAgICBjb25zdCBkZWYgPSBjb2RlICE9PSBudWxsICYmIG1hcFtjb2RlXVxuICAgICAgICAgIGNvbnN0IGFsbCA9IGNvZGUgIT09IG51bGwgJiYgbWFwLm51bGxcbiAgICAgICAgICBjb25zdCBsaXN0ID0gW1xuICAgICAgICAgICAgLy8gVG8gZG86IGFkZCBtb3JlIGV4dGVuc2lvbiB0ZXN0cy5cbiAgICAgICAgICAgIC8qIGM4IGlnbm9yZSBuZXh0IDIgKi9cbiAgICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KGRlZikgPyBkZWYgOiBkZWYgPyBbZGVmXSA6IFtdKSxcbiAgICAgICAgICAgIC4uLihBcnJheS5pc0FycmF5KGFsbCkgPyBhbGwgOiBhbGwgPyBbYWxsXSA6IFtdKVxuICAgICAgICAgIF1cbiAgICAgICAgICByZXR1cm4gaGFuZGxlTGlzdE9mQ29uc3RydWN0cyhsaXN0KShjb2RlKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogSGFuZGxlIGEgbGlzdCBvZiBjb25zdHJ1Y3QuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtBcnJheTxDb25zdHJ1Y3Q+fSBsaXN0XG4gICAgICAgKiBAcmV0dXJucyB7U3RhdGV9XG4gICAgICAgKi9cbiAgICAgIGZ1bmN0aW9uIGhhbmRsZUxpc3RPZkNvbnN0cnVjdHMobGlzdCkge1xuICAgICAgICBsaXN0T2ZDb25zdHJ1Y3RzID0gbGlzdFxuICAgICAgICBjb25zdHJ1Y3RJbmRleCA9IDBcbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGJvZ3VzU3RhdGVcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFuZGxlQ29uc3RydWN0KGxpc3RbY29uc3RydWN0SW5kZXhdKVxuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIEhhbmRsZSBhIHNpbmdsZSBjb25zdHJ1Y3QuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtDb25zdHJ1Y3R9IGNvbnN0cnVjdFxuICAgICAgICogQHJldHVybnMge1N0YXRlfVxuICAgICAgICovXG4gICAgICBmdW5jdGlvbiBoYW5kbGVDb25zdHJ1Y3QoY29uc3RydWN0KSB7XG4gICAgICAgIHJldHVybiBzdGFydFxuXG4gICAgICAgIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gICAgICAgIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAgICAgICAvLyBUbyBkbzogbm90IG5lZWRlZCB0byBzdG9yZSBpZiB0aGVyZSBpcyBubyBib2d1cyBzdGF0ZSwgcHJvYmFibHk/XG4gICAgICAgICAgLy8gQ3VycmVudGx5IGRvZXNuXHUyMDE5dCB3b3JrIGJlY2F1c2UgYGluc3BlY3RgIGluIGRvY3VtZW50IGRvZXMgYSBjaGVja1xuICAgICAgICAgIC8vIHcvbyBhIGJvZ3VzLCB3aGljaCBkb2Vzblx1MjAxOXQgbWFrZSBzZW5zZS4gQnV0IGl0IGRvZXMgc2VlbSB0byBoZWxwIHBlcmZcbiAgICAgICAgICAvLyBieSBub3Qgc3RvcmluZy5cbiAgICAgICAgICBpbmZvID0gc3RvcmUoKVxuICAgICAgICAgIGN1cnJlbnRDb25zdHJ1Y3QgPSBjb25zdHJ1Y3RcbiAgICAgICAgICBpZiAoIWNvbnN0cnVjdC5wYXJ0aWFsKSB7XG4gICAgICAgICAgICBjb250ZXh0LmN1cnJlbnRDb25zdHJ1Y3QgPSBjb25zdHJ1Y3RcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgY29uc3RydWN0Lm5hbWUgJiZcbiAgICAgICAgICAgIGNvbnRleHQucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKGNvbnN0cnVjdC5uYW1lKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29uc3RydWN0LnRva2VuaXplLmNhbGwoXG4gICAgICAgICAgICAvLyBJZiB3ZSBkbyBoYXZlIGZpZWxkcywgY3JlYXRlIGFuIG9iamVjdCB3LyBgY29udGV4dGAgYXMgaXRzXG4gICAgICAgICAgICAvLyBwcm90b3R5cGUuXG4gICAgICAgICAgICAvLyBUaGlzIGFsbG93cyBhIFx1MjAxQ2xpdmUgYmluZGluZ1x1MjAxRCwgd2hpY2ggaXMgbmVlZGVkIGZvciBgaW50ZXJydXB0YC5cbiAgICAgICAgICAgIGZpZWxkcyA/IE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShjb250ZXh0KSwgZmllbGRzKSA6IGNvbnRleHQsXG4gICAgICAgICAgICBlZmZlY3RzLFxuICAgICAgICAgICAgb2ssXG4gICAgICAgICAgICBub2tcbiAgICAgICAgICApKGNvZGUpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgICAgIGZ1bmN0aW9uIG9rKGNvZGUpIHtcbiAgICAgICAgY29uc3VtZWQgPSB0cnVlXG4gICAgICAgIG9ucmV0dXJuKGN1cnJlbnRDb25zdHJ1Y3QsIGluZm8pXG4gICAgICAgIHJldHVybiByZXR1cm5TdGF0ZVxuICAgICAgfVxuXG4gICAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgICAgZnVuY3Rpb24gbm9rKGNvZGUpIHtcbiAgICAgICAgY29uc3VtZWQgPSB0cnVlXG4gICAgICAgIGluZm8ucmVzdG9yZSgpXG4gICAgICAgIGlmICgrK2NvbnN0cnVjdEluZGV4IDwgbGlzdE9mQ29uc3RydWN0cy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlQ29uc3RydWN0KGxpc3RPZkNvbnN0cnVjdHNbY29uc3RydWN0SW5kZXhdKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBib2d1c1N0YXRlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Q29uc3RydWN0fSBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IGZyb21cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiBhZGRSZXN1bHQoY29uc3RydWN0LCBmcm9tKSB7XG4gICAgaWYgKGNvbnN0cnVjdC5yZXNvbHZlQWxsICYmICFyZXNvbHZlQWxsQ29uc3RydWN0cy5pbmNsdWRlcyhjb25zdHJ1Y3QpKSB7XG4gICAgICByZXNvbHZlQWxsQ29uc3RydWN0cy5wdXNoKGNvbnN0cnVjdClcbiAgICB9XG4gICAgaWYgKGNvbnN0cnVjdC5yZXNvbHZlKSB7XG4gICAgICBzcGxpY2UoXG4gICAgICAgIGNvbnRleHQuZXZlbnRzLFxuICAgICAgICBmcm9tLFxuICAgICAgICBjb250ZXh0LmV2ZW50cy5sZW5ndGggLSBmcm9tLFxuICAgICAgICBjb25zdHJ1Y3QucmVzb2x2ZShjb250ZXh0LmV2ZW50cy5zbGljZShmcm9tKSwgY29udGV4dClcbiAgICAgIClcbiAgICB9XG4gICAgaWYgKGNvbnN0cnVjdC5yZXNvbHZlVG8pIHtcbiAgICAgIGNvbnRleHQuZXZlbnRzID0gY29uc3RydWN0LnJlc29sdmVUbyhjb250ZXh0LmV2ZW50cywgY29udGV4dClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RvcmUgc3RhdGUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtJbmZvfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RvcmUoKSB7XG4gICAgY29uc3Qgc3RhcnRQb2ludCA9IG5vdygpXG4gICAgY29uc3Qgc3RhcnRQcmV2aW91cyA9IGNvbnRleHQucHJldmlvdXNcbiAgICBjb25zdCBzdGFydEN1cnJlbnRDb25zdHJ1Y3QgPSBjb250ZXh0LmN1cnJlbnRDb25zdHJ1Y3RcbiAgICBjb25zdCBzdGFydEV2ZW50c0luZGV4ID0gY29udGV4dC5ldmVudHMubGVuZ3RoXG4gICAgY29uc3Qgc3RhcnRTdGFjayA9IEFycmF5LmZyb20oc3RhY2spXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc3RvcmUsXG4gICAgICBmcm9tOiBzdGFydEV2ZW50c0luZGV4XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVzdG9yZSBzdGF0ZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHJlc3RvcmUoKSB7XG4gICAgICBwb2ludCA9IHN0YXJ0UG9pbnRcbiAgICAgIGNvbnRleHQucHJldmlvdXMgPSBzdGFydFByZXZpb3VzXG4gICAgICBjb250ZXh0LmN1cnJlbnRDb25zdHJ1Y3QgPSBzdGFydEN1cnJlbnRDb25zdHJ1Y3RcbiAgICAgIGNvbnRleHQuZXZlbnRzLmxlbmd0aCA9IHN0YXJ0RXZlbnRzSW5kZXhcbiAgICAgIHN0YWNrID0gc3RhcnRTdGFja1xuICAgICAgYWNjb3VudEZvclBvdGVudGlhbFNraXAoKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIHRoZSBjdXJyZW50IHBvaW50IGEgYml0IGZvcndhcmQgaW4gdGhlIGxpbmUgd2hlbiBpdFx1MjAxOXMgb24gYSBjb2x1bW5cbiAgICogc2tpcC5cbiAgICpcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiBhY2NvdW50Rm9yUG90ZW50aWFsU2tpcCgpIHtcbiAgICBpZiAocG9pbnQubGluZSBpbiBjb2x1bW5TdGFydCAmJiBwb2ludC5jb2x1bW4gPCAyKSB7XG4gICAgICBwb2ludC5jb2x1bW4gPSBjb2x1bW5TdGFydFtwb2ludC5saW5lXVxuICAgICAgcG9pbnQub2Zmc2V0ICs9IGNvbHVtblN0YXJ0W3BvaW50LmxpbmVdIC0gMVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgY2h1bmtzIGZyb20gYSBzbGljZSBvZiBjaHVua3MgaW4gdGhlIHJhbmdlIG9mIGEgdG9rZW4uXG4gKlxuICogQHBhcmFtIHtBcnJheTxDaHVuaz59IGNodW5rc1xuICogQHBhcmFtIHtQaWNrPFRva2VuLCAnZW5kJyB8ICdzdGFydCc+fSB0b2tlblxuICogQHJldHVybnMge0FycmF5PENodW5rPn1cbiAqL1xuZnVuY3Rpb24gc2xpY2VDaHVua3MoY2h1bmtzLCB0b2tlbikge1xuICBjb25zdCBzdGFydEluZGV4ID0gdG9rZW4uc3RhcnQuX2luZGV4XG4gIGNvbnN0IHN0YXJ0QnVmZmVySW5kZXggPSB0b2tlbi5zdGFydC5fYnVmZmVySW5kZXhcbiAgY29uc3QgZW5kSW5kZXggPSB0b2tlbi5lbmQuX2luZGV4XG4gIGNvbnN0IGVuZEJ1ZmZlckluZGV4ID0gdG9rZW4uZW5kLl9idWZmZXJJbmRleFxuICAvKiogQHR5cGUge0FycmF5PENodW5rPn0gKi9cbiAgbGV0IHZpZXdcbiAgaWYgKHN0YXJ0SW5kZXggPT09IGVuZEluZGV4KSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBgX2J1ZmZlckluZGV4YCBpcyB1c2VkIG9uIHN0cmluZyBjaHVua3MuXG4gICAgdmlldyA9IFtjaHVua3Nbc3RhcnRJbmRleF0uc2xpY2Uoc3RhcnRCdWZmZXJJbmRleCwgZW5kQnVmZmVySW5kZXgpXVxuICB9IGVsc2Uge1xuICAgIHZpZXcgPSBjaHVua3Muc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpXG4gICAgaWYgKHN0YXJ0QnVmZmVySW5kZXggPiAtMSkge1xuICAgICAgY29uc3QgaGVhZCA9IHZpZXdbMF1cbiAgICAgIGlmICh0eXBlb2YgaGVhZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmlld1swXSA9IGhlYWQuc2xpY2Uoc3RhcnRCdWZmZXJJbmRleClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZpZXcuc2hpZnQoKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5kQnVmZmVySW5kZXggPiAwKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBfYnVmZmVySW5kZXhgIGlzIHVzZWQgb24gc3RyaW5nIGNodW5rcy5cbiAgICAgIHZpZXcucHVzaChjaHVua3NbZW5kSW5kZXhdLnNsaWNlKDAsIGVuZEJ1ZmZlckluZGV4KSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZpZXdcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHN0cmluZyB2YWx1ZSBvZiBhIHNsaWNlIG9mIGNodW5rcy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PENodW5rPn0gY2h1bmtzXG4gKiBAcGFyYW0ge2Jvb2xlYW4gfCB1bmRlZmluZWR9IFtleHBhbmRUYWJzPWZhbHNlXVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc2VyaWFsaXplQ2h1bmtzKGNodW5rcywgZXhwYW5kVGFicykge1xuICBsZXQgaW5kZXggPSAtMVxuICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovXG4gIGNvbnN0IHJlc3VsdCA9IFtdXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGF0VGFiXG4gIHdoaWxlICgrK2luZGV4IDwgY2h1bmtzLmxlbmd0aCkge1xuICAgIGNvbnN0IGNodW5rID0gY2h1bmtzW2luZGV4XVxuICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICAgIGxldCB2YWx1ZVxuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IGNodW5rXG4gICAgfSBlbHNlXG4gICAgICBzd2l0Y2ggKGNodW5rKSB7XG4gICAgICAgIGNhc2UgLTU6IHtcbiAgICAgICAgICB2YWx1ZSA9ICdcXHInXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIC00OiB7XG4gICAgICAgICAgdmFsdWUgPSAnXFxuJ1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAtMzoge1xuICAgICAgICAgIHZhbHVlID0gJ1xccicgKyAnXFxuJ1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAtMjoge1xuICAgICAgICAgIHZhbHVlID0gZXhwYW5kVGFicyA/ICcgJyA6ICdcXHQnXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIC0xOiB7XG4gICAgICAgICAgaWYgKCFleHBhbmRUYWJzICYmIGF0VGFiKSBjb250aW51ZVxuICAgICAgICAgIHZhbHVlID0gJyAnXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgLy8gQ3VycmVudGx5IG9ubHkgcmVwbGFjZW1lbnQgY2hhcmFjdGVyLlxuICAgICAgICAgIHZhbHVlID0gU3RyaW5nLmZyb21DaGFyQ29kZShjaHVuaylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGF0VGFiID0gY2h1bmsgPT09IC0yXG4gICAgcmVzdWx0LnB1c2godmFsdWUpXG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcnKVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FeHRlbnNpb259IEV4dGVuc2lvblxuICovXG5cbmltcG9ydCB7XG4gIGF0dGVudGlvbixcbiAgYXV0b2xpbmssXG4gIGJsb2NrUXVvdGUsXG4gIGNoYXJhY3RlckVzY2FwZSxcbiAgY2hhcmFjdGVyUmVmZXJlbmNlLFxuICBjb2RlRmVuY2VkLFxuICBjb2RlSW5kZW50ZWQsXG4gIGNvZGVUZXh0LFxuICBkZWZpbml0aW9uLFxuICBoYXJkQnJlYWtFc2NhcGUsXG4gIGhlYWRpbmdBdHgsXG4gIGh0bWxGbG93LFxuICBodG1sVGV4dCxcbiAgbGFiZWxFbmQsXG4gIGxhYmVsU3RhcnRJbWFnZSxcbiAgbGFiZWxTdGFydExpbmssXG4gIGxpbmVFbmRpbmcsXG4gIGxpc3QsXG4gIHNldGV4dFVuZGVybGluZSxcbiAgdGhlbWF0aWNCcmVha1xufSBmcm9tICdtaWNyb21hcmstY29yZS1jb21tb25tYXJrJ1xuaW1wb3J0IHtyZXNvbHZlciBhcyByZXNvbHZlVGV4dH0gZnJvbSAnLi9pbml0aWFsaXplL3RleHQuanMnXG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ2RvY3VtZW50J119ICovXG5leHBvcnQgY29uc3QgZG9jdW1lbnQgPSB7XG4gIFs0Ml06IGxpc3QsXG4gIFs0M106IGxpc3QsXG4gIFs0NV06IGxpc3QsXG4gIFs0OF06IGxpc3QsXG4gIFs0OV06IGxpc3QsXG4gIFs1MF06IGxpc3QsXG4gIFs1MV06IGxpc3QsXG4gIFs1Ml06IGxpc3QsXG4gIFs1M106IGxpc3QsXG4gIFs1NF06IGxpc3QsXG4gIFs1NV06IGxpc3QsXG4gIFs1Nl06IGxpc3QsXG4gIFs1N106IGxpc3QsXG4gIFs2Ml06IGJsb2NrUXVvdGVcbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnY29udGVudEluaXRpYWwnXX0gKi9cbmV4cG9ydCBjb25zdCBjb250ZW50SW5pdGlhbCA9IHtcbiAgWzkxXTogZGVmaW5pdGlvblxufVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydmbG93SW5pdGlhbCddfSAqL1xuZXhwb3J0IGNvbnN0IGZsb3dJbml0aWFsID0ge1xuICBbLTJdOiBjb2RlSW5kZW50ZWQsXG4gIFstMV06IGNvZGVJbmRlbnRlZCxcbiAgWzMyXTogY29kZUluZGVudGVkXG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ2Zsb3cnXX0gKi9cbmV4cG9ydCBjb25zdCBmbG93ID0ge1xuICBbMzVdOiBoZWFkaW5nQXR4LFxuICBbNDJdOiB0aGVtYXRpY0JyZWFrLFxuICBbNDVdOiBbc2V0ZXh0VW5kZXJsaW5lLCB0aGVtYXRpY0JyZWFrXSxcbiAgWzYwXTogaHRtbEZsb3csXG4gIFs2MV06IHNldGV4dFVuZGVybGluZSxcbiAgWzk1XTogdGhlbWF0aWNCcmVhayxcbiAgWzk2XTogY29kZUZlbmNlZCxcbiAgWzEyNl06IGNvZGVGZW5jZWRcbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnc3RyaW5nJ119ICovXG5leHBvcnQgY29uc3Qgc3RyaW5nID0ge1xuICBbMzhdOiBjaGFyYWN0ZXJSZWZlcmVuY2UsXG4gIFs5Ml06IGNoYXJhY3RlckVzY2FwZVxufVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWyd0ZXh0J119ICovXG5leHBvcnQgY29uc3QgdGV4dCA9IHtcbiAgWy01XTogbGluZUVuZGluZyxcbiAgWy00XTogbGluZUVuZGluZyxcbiAgWy0zXTogbGluZUVuZGluZyxcbiAgWzMzXTogbGFiZWxTdGFydEltYWdlLFxuICBbMzhdOiBjaGFyYWN0ZXJSZWZlcmVuY2UsXG4gIFs0Ml06IGF0dGVudGlvbixcbiAgWzYwXTogW2F1dG9saW5rLCBodG1sVGV4dF0sXG4gIFs5MV06IGxhYmVsU3RhcnRMaW5rLFxuICBbOTJdOiBbaGFyZEJyZWFrRXNjYXBlLCBjaGFyYWN0ZXJFc2NhcGVdLFxuICBbOTNdOiBsYWJlbEVuZCxcbiAgWzk1XTogYXR0ZW50aW9uLFxuICBbOTZdOiBjb2RlVGV4dFxufVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydpbnNpZGVTcGFuJ119ICovXG5leHBvcnQgY29uc3QgaW5zaWRlU3BhbiA9IHtcbiAgbnVsbDogW2F0dGVudGlvbiwgcmVzb2x2ZVRleHRdXG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ2F0dGVudGlvbk1hcmtlcnMnXX0gKi9cbmV4cG9ydCBjb25zdCBhdHRlbnRpb25NYXJrZXJzID0ge1xuICBudWxsOiBbNDIsIDk1XVxufVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydkaXNhYmxlJ119ICovXG5leHBvcnQgY29uc3QgZGlzYWJsZSA9IHtcbiAgbnVsbDogW11cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ3JlYXRlfSBDcmVhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRnVsbE5vcm1hbGl6ZWRFeHRlbnNpb259IEZ1bGxOb3JtYWxpemVkRXh0ZW5zaW9uXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUGFyc2VDb250ZXh0fSBQYXJzZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUGFyc2VPcHRpb25zfSBQYXJzZU9wdGlvbnNcbiAqL1xuXG5pbXBvcnQge2NvbWJpbmVFeHRlbnNpb25zfSBmcm9tICdtaWNyb21hcmstdXRpbC1jb21iaW5lLWV4dGVuc2lvbnMnXG5pbXBvcnQge2NvbnRlbnR9IGZyb20gJy4vaW5pdGlhbGl6ZS9jb250ZW50LmpzJ1xuaW1wb3J0IHtkb2N1bWVudH0gZnJvbSAnLi9pbml0aWFsaXplL2RvY3VtZW50LmpzJ1xuaW1wb3J0IHtmbG93fSBmcm9tICcuL2luaXRpYWxpemUvZmxvdy5qcydcbmltcG9ydCB7dGV4dCwgc3RyaW5nfSBmcm9tICcuL2luaXRpYWxpemUvdGV4dC5qcydcbmltcG9ydCB7Y3JlYXRlVG9rZW5pemVyfSBmcm9tICcuL2NyZWF0ZS10b2tlbml6ZXIuanMnXG5pbXBvcnQgKiBhcyBkZWZhdWx0Q29uc3RydWN0cyBmcm9tICcuL2NvbnN0cnVjdHMuanMnXG5cbi8qKlxuICogQHBhcmFtIHtQYXJzZU9wdGlvbnMgfCBudWxsIHwgdW5kZWZpbmVkfSBbb3B0aW9uc11cbiAqIEByZXR1cm5zIHtQYXJzZUNvbnRleHR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShvcHRpb25zKSB7XG4gIGNvbnN0IHNldHRpbmdzID0gb3B0aW9ucyB8fCB7fVxuICBjb25zdCBjb25zdHJ1Y3RzID1cbiAgICAvKiogQHR5cGUge0Z1bGxOb3JtYWxpemVkRXh0ZW5zaW9ufSAqL1xuICAgIGNvbWJpbmVFeHRlbnNpb25zKFtkZWZhdWx0Q29uc3RydWN0cywgLi4uKHNldHRpbmdzLmV4dGVuc2lvbnMgfHwgW10pXSlcblxuICAvKiogQHR5cGUge1BhcnNlQ29udGV4dH0gKi9cbiAgY29uc3QgcGFyc2VyID0ge1xuICAgIGRlZmluZWQ6IFtdLFxuICAgIGxhenk6IHt9LFxuICAgIGNvbnN0cnVjdHMsXG4gICAgY29udGVudDogY3JlYXRlKGNvbnRlbnQpLFxuICAgIGRvY3VtZW50OiBjcmVhdGUoZG9jdW1lbnQpLFxuICAgIGZsb3c6IGNyZWF0ZShmbG93KSxcbiAgICBzdHJpbmc6IGNyZWF0ZShzdHJpbmcpLFxuICAgIHRleHQ6IGNyZWF0ZSh0ZXh0KVxuICB9XG4gIHJldHVybiBwYXJzZXJcblxuICAvKipcbiAgICogQHBhcmFtIHtJbml0aWFsQ29uc3RydWN0fSBpbml0aWFsXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGUoaW5pdGlhbCkge1xuICAgIHJldHVybiBjcmVhdG9yXG4gICAgLyoqIEB0eXBlIHtDcmVhdGV9ICovXG4gICAgZnVuY3Rpb24gY3JlYXRvcihmcm9tKSB7XG4gICAgICByZXR1cm4gY3JlYXRlVG9rZW5pemVyKHBhcnNlciwgaW5pdGlhbCwgZnJvbSlcbiAgICB9XG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ2h1bmt9IENodW5rXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRW5jb2Rpbmd9IEVuY29kaW5nXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlZhbHVlfSBWYWx1ZVxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIFByZXByb2Nlc3NvclxuICogQHBhcmFtIHtWYWx1ZX0gdmFsdWVcbiAqIEBwYXJhbSB7RW5jb2RpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbZW5jb2RpbmddXG4gKiBAcGFyYW0ge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbZW5kPWZhbHNlXVxuICogQHJldHVybnMge0FycmF5PENodW5rPn1cbiAqL1xuXG5jb25zdCBzZWFyY2ggPSAvW1xcMFxcdFxcblxccl0vZ1xuXG4vKipcbiAqIEByZXR1cm5zIHtQcmVwcm9jZXNzb3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwcm9jZXNzKCkge1xuICBsZXQgY29sdW1uID0gMVxuICBsZXQgYnVmZmVyID0gJydcbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgc3RhcnQgPSB0cnVlXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGF0Q2FycmlhZ2VSZXR1cm5cbiAgcmV0dXJuIHByZXByb2Nlc3NvclxuXG4gIC8qKiBAdHlwZSB7UHJlcHJvY2Vzc29yfSAqL1xuICBmdW5jdGlvbiBwcmVwcm9jZXNzb3IodmFsdWUsIGVuY29kaW5nLCBlbmQpIHtcbiAgICAvKiogQHR5cGUge0FycmF5PENodW5rPn0gKi9cbiAgICBjb25zdCBjaHVua3MgPSBbXVxuICAgIC8qKiBAdHlwZSB7UmVnRXhwTWF0Y2hBcnJheSB8IG51bGx9ICovXG4gICAgbGV0IG1hdGNoXG4gICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gICAgbGV0IG5leHRcbiAgICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgICBsZXQgc3RhcnRQb3NpdGlvblxuICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICAgIGxldCBlbmRQb3NpdGlvblxuICAgIC8qKiBAdHlwZSB7Q29kZX0gKi9cbiAgICBsZXQgY29kZVxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBgQnVmZmVyYCBkb2VzIGFsbG93IGFuIGVuY29kaW5nLlxuICAgIHZhbHVlID0gYnVmZmVyICsgdmFsdWUudG9TdHJpbmcoZW5jb2RpbmcpXG4gICAgc3RhcnRQb3NpdGlvbiA9IDBcbiAgICBidWZmZXIgPSAnJ1xuICAgIGlmIChzdGFydCkge1xuICAgICAgLy8gVG8gZG86IGBtYXJrZG93bi1yc2AgYWN0dWFsbHkgcGFyc2VzIEJPTXMgKGJ5dGUgb3JkZXIgbWFyaykuXG4gICAgICBpZiAodmFsdWUuY2hhckNvZGVBdCgwKSA9PT0gNjUyNzkpIHtcbiAgICAgICAgc3RhcnRQb3NpdGlvbisrXG4gICAgICB9XG4gICAgICBzdGFydCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgICB3aGlsZSAoc3RhcnRQb3NpdGlvbiA8IHZhbHVlLmxlbmd0aCkge1xuICAgICAgc2VhcmNoLmxhc3RJbmRleCA9IHN0YXJ0UG9zaXRpb25cbiAgICAgIG1hdGNoID0gc2VhcmNoLmV4ZWModmFsdWUpXG4gICAgICBlbmRQb3NpdGlvbiA9XG4gICAgICAgIG1hdGNoICYmIG1hdGNoLmluZGV4ICE9PSB1bmRlZmluZWQgPyBtYXRjaC5pbmRleCA6IHZhbHVlLmxlbmd0aFxuICAgICAgY29kZSA9IHZhbHVlLmNoYXJDb2RlQXQoZW5kUG9zaXRpb24pXG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIGJ1ZmZlciA9IHZhbHVlLnNsaWNlKHN0YXJ0UG9zaXRpb24pXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gMTAgJiYgc3RhcnRQb3NpdGlvbiA9PT0gZW5kUG9zaXRpb24gJiYgYXRDYXJyaWFnZVJldHVybikge1xuICAgICAgICBjaHVua3MucHVzaCgtMylcbiAgICAgICAgYXRDYXJyaWFnZVJldHVybiA9IHVuZGVmaW5lZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGF0Q2FycmlhZ2VSZXR1cm4pIHtcbiAgICAgICAgICBjaHVua3MucHVzaCgtNSlcbiAgICAgICAgICBhdENhcnJpYWdlUmV0dXJuID0gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0UG9zaXRpb24gPCBlbmRQb3NpdGlvbikge1xuICAgICAgICAgIGNodW5rcy5wdXNoKHZhbHVlLnNsaWNlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKSlcbiAgICAgICAgICBjb2x1bW4gKz0gZW5kUG9zaXRpb24gLSBzdGFydFBvc2l0aW9uXG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgY2FzZSAwOiB7XG4gICAgICAgICAgICBjaHVua3MucHVzaCg2NTUzMylcbiAgICAgICAgICAgIGNvbHVtbisrXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIDk6IHtcbiAgICAgICAgICAgIG5leHQgPSBNYXRoLmNlaWwoY29sdW1uIC8gNCkgKiA0XG4gICAgICAgICAgICBjaHVua3MucHVzaCgtMilcbiAgICAgICAgICAgIHdoaWxlIChjb2x1bW4rKyA8IG5leHQpIGNodW5rcy5wdXNoKC0xKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSAxMDoge1xuICAgICAgICAgICAgY2h1bmtzLnB1c2goLTQpXG4gICAgICAgICAgICBjb2x1bW4gPSAxXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBhdENhcnJpYWdlUmV0dXJuID0gdHJ1ZVxuICAgICAgICAgICAgY29sdW1uID0gMVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc3RhcnRQb3NpdGlvbiA9IGVuZFBvc2l0aW9uICsgMVxuICAgIH1cbiAgICBpZiAoZW5kKSB7XG4gICAgICBpZiAoYXRDYXJyaWFnZVJldHVybikgY2h1bmtzLnB1c2goLTUpXG4gICAgICBpZiAoYnVmZmVyKSBjaHVua3MucHVzaChidWZmZXIpXG4gICAgICBjaHVua3MucHVzaChudWxsKVxuICAgIH1cbiAgICByZXR1cm4gY2h1bmtzXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXZlbnR9IEV2ZW50XG4gKi9cblxuaW1wb3J0IHtzdWJ0b2tlbml6ZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtc3VidG9rZW5pemUnXG5cbi8qKlxuICogQHBhcmFtIHtBcnJheTxFdmVudD59IGV2ZW50c1xuICogQHJldHVybnMge0FycmF5PEV2ZW50Pn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvc3Rwcm9jZXNzKGV2ZW50cykge1xuICB3aGlsZSAoIXN1YnRva2VuaXplKGV2ZW50cykpIHtcbiAgICAvLyBFbXB0eVxuICB9XG4gIHJldHVybiBldmVudHNcbn1cbiIsICIvKipcbiAqIFR1cm4gdGhlIG51bWJlciAoaW4gc3RyaW5nIGZvcm0gYXMgZWl0aGVyIGhleGEtIG9yIHBsYWluIGRlY2ltYWwpIGNvbWluZyBmcm9tXG4gKiBhIG51bWVyaWMgY2hhcmFjdGVyIHJlZmVyZW5jZSBpbnRvIGEgY2hhcmFjdGVyLlxuICpcbiAqIFNvcnQgb2YgbGlrZSBgU3RyaW5nLmZyb21DaGFyQ29kZShOdW1iZXIucGFyc2VJbnQodmFsdWUsIGJhc2UpKWAsIGJ1dCBtYWtlc1xuICogbm9uLWNoYXJhY3RlcnMgYW5kIGNvbnRyb2wgY2hhcmFjdGVycyBzYWZlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogICBWYWx1ZSB0byBkZWNvZGUuXG4gKiBAcGFyYW0ge251bWJlcn0gYmFzZVxuICogICBOdW1lcmljIGJhc2UuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBDaGFyYWN0ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKHZhbHVlLCBiYXNlKSB7XG4gIGNvbnN0IGNvZGUgPSBOdW1iZXIucGFyc2VJbnQodmFsdWUsIGJhc2UpXG4gIGlmIChcbiAgICAvLyBDMCBleGNlcHQgZm9yIEhULCBMRiwgRkYsIENSLCBzcGFjZS5cbiAgICBjb2RlIDwgOSB8fFxuICAgIGNvZGUgPT09IDExIHx8XG4gICAgKGNvZGUgPiAxMyAmJiBjb2RlIDwgMzIpIHx8XG4gICAgLy8gQ29udHJvbCBjaGFyYWN0ZXIgKERFTCkgb2YgQzAsIGFuZCBDMSBjb250cm9scy5cbiAgICAoY29kZSA+IDEyNiAmJiBjb2RlIDwgMTYwKSB8fFxuICAgIC8vIExvbmUgaGlnaCBzdXJyb2dhdGVzIGFuZCBsb3cgc3Vycm9nYXRlcy5cbiAgICAoY29kZSA+IDU1Mjk1ICYmIGNvZGUgPCA1NzM0NCkgfHxcbiAgICAvLyBOb25jaGFyYWN0ZXJzLlxuICAgIChjb2RlID4gNjQ5NzUgJiYgY29kZSA8IDY1MDA4KSAvKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovIHx8XG4gICAgKGNvZGUgJiA2NTUzNSkgPT09IDY1NTM1IHx8XG4gICAgKGNvZGUgJiA2NTUzNSkgPT09IDY1NTM0IC8qIGVzbGludC1lbmFibGUgbm8tYml0d2lzZSAqLyB8fFxuICAgIC8vIE91dCBvZiByYW5nZVxuICAgIGNvZGUgPiAxMTE0MTExXG4gICkge1xuICAgIHJldHVybiAnXFx1RkZGRCdcbiAgfVxuICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKVxufVxuIiwgImltcG9ydCB7ZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2V9IGZyb20gJ2RlY29kZS1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlJ1xuaW1wb3J0IHtkZWNvZGVOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1kZWNvZGUtbnVtZXJpYy1jaGFyYWN0ZXItcmVmZXJlbmNlJ1xuY29uc3QgY2hhcmFjdGVyRXNjYXBlT3JSZWZlcmVuY2UgPVxuICAvXFxcXChbIS0vOi1AWy1gey1+XSl8JigjKD86XFxkezEsN318eFtcXGRhLWZdezEsNn0pfFtcXGRhLXpdezEsMzF9KTsvZ2lcblxuLyoqXG4gKiBEZWNvZGUgbWFya2Rvd24gc3RyaW5ncyAod2hpY2ggb2NjdXIgaW4gcGxhY2VzIHN1Y2ggYXMgZmVuY2VkIGNvZGUgaW5mb1xuICogc3RyaW5ncywgZGVzdGluYXRpb25zLCBsYWJlbHMsIGFuZCB0aXRsZXMpLlxuICpcbiAqIFRoZSBcdTIwMUNzdHJpbmdcdTIwMUQgY29udGVudCB0eXBlIGFsbG93cyBjaGFyYWN0ZXIgZXNjYXBlcyBhbmQgLXJlZmVyZW5jZXMuXG4gKiBUaGlzIGRlY29kZXMgdGhvc2UuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiAgIFZhbHVlIHRvIGRlY29kZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIERlY29kZWQgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoY2hhcmFjdGVyRXNjYXBlT3JSZWZlcmVuY2UsIGRlY29kZSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gJDBcbiAqIEBwYXJhbSB7c3RyaW5nfSAkMVxuICogQHBhcmFtIHtzdHJpbmd9ICQyXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBkZWNvZGUoJDAsICQxLCAkMikge1xuICBpZiAoJDEpIHtcbiAgICAvLyBFc2NhcGUuXG4gICAgcmV0dXJuICQxXG4gIH1cblxuICAvLyBSZWZlcmVuY2UuXG4gIGNvbnN0IGhlYWQgPSAkMi5jaGFyQ29kZUF0KDApXG4gIGlmIChoZWFkID09PSAzNSkge1xuICAgIGNvbnN0IGhlYWQgPSAkMi5jaGFyQ29kZUF0KDEpXG4gICAgY29uc3QgaGV4ID0gaGVhZCA9PT0gMTIwIHx8IGhlYWQgPT09IDg4XG4gICAgcmV0dXJuIGRlY29kZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UoJDIuc2xpY2UoaGV4ID8gMiA6IDEpLCBoZXggPyAxNiA6IDEwKVxuICB9XG4gIHJldHVybiBkZWNvZGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZSgkMikgfHwgJDBcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRW5jb2Rpbmd9IEVuY29kaW5nXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV2ZW50fSBFdmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5QYXJzZU9wdGlvbnN9IFBhcnNlT3B0aW9uc1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVmFsdWV9IFZhbHVlXG4gKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5QYXJlbnR9IFVuaXN0UGFyZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvaW50fSBQb2ludFxuICpcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuUGhyYXNpbmdDb250ZW50fSBQaHJhc2luZ0NvbnRlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuU3RhdGljUGhyYXNpbmdDb250ZW50fSBTdGF0aWNQaHJhc2luZ0NvbnRlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuQ29udGVudH0gQ29udGVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5CcmVha30gQnJlYWtcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuQmxvY2txdW90ZX0gQmxvY2txdW90ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkRlZmluaXRpb259IERlZmluaXRpb25cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuRW1waGFzaXN9IEVtcGhhc2lzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkhlYWRpbmd9IEhlYWRpbmdcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuSFRNTH0gSFRNTFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5JbWFnZX0gSW1hZ2VcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuSW1hZ2VSZWZlcmVuY2V9IEltYWdlUmVmZXJlbmNlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLklubGluZUNvZGV9IElubGluZUNvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuTGlua30gTGlua1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5MaW5rUmVmZXJlbmNlfSBMaW5rUmVmZXJlbmNlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkxpc3R9IExpc3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuTGlzdEl0ZW19IExpc3RJdGVtXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlBhcmFncmFwaH0gUGFyYWdyYXBoXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlJvb3R9IFJvb3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuU3Ryb25nfSBTdHJvbmdcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuVGV4dH0gVGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5UaGVtYXRpY0JyZWFrfSBUaGVtYXRpY0JyZWFrXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlJlZmVyZW5jZVR5cGV9IFJlZmVyZW5jZVR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2luZGV4LmpzJykuQ29tcGlsZURhdGF9IENvbXBpbGVEYXRhXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7Um9vdCB8IENvbnRlbnR9IE5vZGVcbiAqIEB0eXBlZGVmIHtFeHRyYWN0PE5vZGUsIFVuaXN0UGFyZW50Pn0gUGFyZW50XG4gKlxuICogQHR5cGVkZWYge09taXQ8VW5pc3RQYXJlbnQsICd0eXBlJyB8ICdjaGlsZHJlbic+ICYge3R5cGU6ICdmcmFnbWVudCcsIGNoaWxkcmVuOiBBcnJheTxQaHJhc2luZ0NvbnRlbnQ+fX0gRnJhZ21lbnRcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBUcmFuc2Zvcm1cbiAqICAgRXh0cmEgdHJhbnNmb3JtLCB0byBjaGFuZ2UgdGhlIEFTVCBhZnRlcndhcmRzLlxuICogQHBhcmFtIHtSb290fSB0cmVlXG4gKiAgIFRyZWUgdG8gdHJhbnNmb3JtLlxuICogQHJldHVybnMge1Jvb3QgfCB1bmRlZmluZWQgfCBudWxsIHwgdm9pZH1cbiAqICAgTmV3IHRyZWUgb3Igbm90aGluZyAoaW4gd2hpY2ggY2FzZSB0aGUgY3VycmVudCB0cmVlIGlzIHVzZWQpLlxuICpcbiAqIEBjYWxsYmFjayBIYW5kbGVcbiAqICAgSGFuZGxlIGEgdG9rZW4uXG4gKiBAcGFyYW0ge0NvbXBpbGVDb250ZXh0fSB0aGlzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICogICBDdXJyZW50IHRva2VuLlxuICogQHJldHVybnMge3ZvaWR9XG4gKiAgIE5vdGhpbmcuXG4gKlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIEhhbmRsZT59IEhhbmRsZXNcbiAqICAgVG9rZW4gdHlwZXMgbWFwcGluZyB0byBoYW5kbGVzXG4gKlxuICogQGNhbGxiYWNrIE9uRW50ZXJFcnJvclxuICogICBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGByaWdodGAgdG9rZW4gaXMgb3BlbiwgYnV0IGl0IGlzIGNsb3NlZCAoYnkgdGhlXG4gKiAgIGBsZWZ0YCB0b2tlbikgb3IgYmVjYXVzZSB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LlxuICogQHBhcmFtIHtPbWl0PENvbXBpbGVDb250ZXh0LCAnc2xpY2VTZXJpYWxpemUnPn0gdGhpc1xuICogICBDb250ZXh0LlxuICogQHBhcmFtIHtUb2tlbiB8IHVuZGVmaW5lZH0gbGVmdFxuICogICBMZWZ0IHRva2VuLlxuICogQHBhcmFtIHtUb2tlbn0gcmlnaHRcbiAqICAgUmlnaHQgdG9rZW4uXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqICAgTm90aGluZy5cbiAqXG4gKiBAY2FsbGJhY2sgT25FeGl0RXJyb3JcbiAqICAgSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBgcmlnaHRgIHRva2VuIGlzIG9wZW4gYnV0IGl0IGlzIGNsb3NlZCBieVxuICogICBleGl0aW5nIHRoZSBgbGVmdGAgdG9rZW4uXG4gKiBAcGFyYW0ge09taXQ8Q29tcGlsZUNvbnRleHQsICdzbGljZVNlcmlhbGl6ZSc+fSB0aGlzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1Rva2VufSBsZWZ0XG4gKiAgIExlZnQgdG9rZW4uXG4gKiBAcGFyYW0ge1Rva2VufSByaWdodFxuICogICBSaWdodCB0b2tlbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICogICBOb3RoaW5nLlxuICpcbiAqIEB0eXBlZGVmIHtbVG9rZW4sIE9uRW50ZXJFcnJvciB8IHVuZGVmaW5lZF19IFRva2VuVHVwbGVcbiAqICAgT3BlbiB0b2tlbiBvbiB0aGUgc3RhY2ssIHdpdGggYW4gb3B0aW9uYWwgZXJyb3IgaGFuZGxlciBmb3Igd2hlblxuICogICB0aGF0IHRva2VuIGlzblx1MjAxOXQgY2xvc2VkIHByb3Blcmx5LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgQ29uZmlnXG4gKiAgIENvbmZpZ3VyYXRpb24uXG4gKlxuICogICBXZSBoYXZlIG91ciBkZWZhdWx0cywgYnV0IGV4dGVuc2lvbnMgd2lsbCBhZGQgbW9yZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPn0gY2FuQ29udGFpbkVvbHNcbiAqICAgVG9rZW4gdHlwZXMgd2hlcmUgbGluZSBlbmRpbmdzIGFyZSB1c2VkLlxuICogQHByb3BlcnR5IHtIYW5kbGVzfSBlbnRlclxuICogICBPcGVuaW5nIGhhbmRsZXMuXG4gKiBAcHJvcGVydHkge0hhbmRsZXN9IGV4aXRcbiAqICAgQ2xvc2luZyBoYW5kbGVzLlxuICogQHByb3BlcnR5IHtBcnJheTxUcmFuc2Zvcm0+fSB0cmFuc2Zvcm1zXG4gKiAgIFRyZWUgdHJhbnNmb3Jtcy5cbiAqXG4gKiBAdHlwZWRlZiB7UGFydGlhbDxDb25maWc+fSBFeHRlbnNpb25cbiAqICAgQ2hhbmdlIGhvdyBtYXJrZG93biB0b2tlbnMgZnJvbSBtaWNyb21hcmsgYXJlIHR1cm5lZCBpbnRvIG1kYXN0LlxuICpcbiAqIEB0eXBlZGVmIENvbXBpbGVDb250ZXh0XG4gKiAgIG1kYXN0IGNvbXBpbGVyIGNvbnRleHQuXG4gKiBAcHJvcGVydHkge0FycmF5PE5vZGUgfCBGcmFnbWVudD59IHN0YWNrXG4gKiAgIFN0YWNrIG9mIG5vZGVzLlxuICogQHByb3BlcnR5IHtBcnJheTxUb2tlblR1cGxlPn0gdG9rZW5TdGFja1xuICogICBTdGFjayBvZiB0b2tlbnMuXG4gKiBAcHJvcGVydHkgezxLZXkgZXh0ZW5kcyBrZXlvZiBDb21waWxlRGF0YT4oa2V5OiBLZXkpID0+IENvbXBpbGVEYXRhW0tleV19IGdldERhdGFcbiAqICAgR2V0IGRhdGEgZnJvbSB0aGUga2V5L3ZhbHVlIHN0b3JlLlxuICogQHByb3BlcnR5IHs8S2V5IGV4dGVuZHMga2V5b2YgQ29tcGlsZURhdGE+KGtleTogS2V5LCB2YWx1ZT86IENvbXBpbGVEYXRhW0tleV0pID0+IHZvaWR9IHNldERhdGFcbiAqICAgU2V0IGRhdGEgaW50byB0aGUga2V5L3ZhbHVlIHN0b3JlLlxuICogQHByb3BlcnR5IHsodGhpczogQ29tcGlsZUNvbnRleHQpID0+IHZvaWR9IGJ1ZmZlclxuICogICBDYXB0dXJlIHNvbWUgb2YgdGhlIG91dHB1dCBkYXRhLlxuICogQHByb3BlcnR5IHsodGhpczogQ29tcGlsZUNvbnRleHQpID0+IHN0cmluZ30gcmVzdW1lXG4gKiAgIFN0b3AgY2FwdHVyaW5nIGFuZCBhY2Nlc3MgdGhlIG91dHB1dCBkYXRhLlxuICogQHByb3BlcnR5IHs8S2luZCBleHRlbmRzIE5vZGU+KHRoaXM6IENvbXBpbGVDb250ZXh0LCBub2RlOiBLaW5kLCB0b2tlbjogVG9rZW4sIG9uRXJyb3I/OiBPbkVudGVyRXJyb3IpID0+IEtpbmR9IGVudGVyXG4gKiAgIEVudGVyIGEgdG9rZW4uXG4gKiBAcHJvcGVydHkgeyh0aGlzOiBDb21waWxlQ29udGV4dCwgdG9rZW46IFRva2VuLCBvbkVycm9yPzogT25FeGl0RXJyb3IpID0+IE5vZGV9IGV4aXRcbiAqICAgRXhpdCBhIHRva2VuLlxuICogQHByb3BlcnR5IHtUb2tlbml6ZUNvbnRleHRbJ3NsaWNlU2VyaWFsaXplJ119IHNsaWNlU2VyaWFsaXplXG4gKiAgIEdldCB0aGUgc3RyaW5nIHZhbHVlIG9mIGEgdG9rZW4uXG4gKiBAcHJvcGVydHkge0NvbmZpZ30gY29uZmlnXG4gKiAgIENvbmZpZ3VyYXRpb24uXG4gKlxuICogQHR5cGVkZWYgRnJvbU1hcmtkb3duT3B0aW9uc1xuICogICBDb25maWd1cmF0aW9uIGZvciBob3cgdG8gYnVpbGQgbWRhc3QuXG4gKiBAcHJvcGVydHkge0FycmF5PEV4dGVuc2lvbiB8IEFycmF5PEV4dGVuc2lvbj4+IHwgbnVsbCB8IHVuZGVmaW5lZH0gW21kYXN0RXh0ZW5zaW9uc11cbiAqICAgRXh0ZW5zaW9ucyBmb3IgdGhpcyB1dGlsaXR5IHRvIGNoYW5nZSBob3cgdG9rZW5zIGFyZSB0dXJuZWQgaW50byBhIHRyZWUuXG4gKlxuICogQHR5cGVkZWYge1BhcnNlT3B0aW9ucyAmIEZyb21NYXJrZG93bk9wdGlvbnN9IE9wdGlvbnNcbiAqICAgQ29uZmlndXJhdGlvbi5cbiAqL1xuXG4vLyBUbyBkbzogbWljcm9tYXJrOiBjcmVhdGUgYSByZWdpc3RyeSBvZiB0b2tlbnM/XG4vLyBUbyBkbzogbmV4dCBtYWpvcjogZG9uXHUyMDE5dCByZXR1cm4gZ2l2ZW4gYE5vZGVgIGZyb20gYGVudGVyYC5cbi8vIFRvIGRvOiBuZXh0IG1ham9yOiByZW1vdmUgc2V0dGVyL2dldHRlci5cblxuaW1wb3J0IHt0b1N0cmluZ30gZnJvbSAnbWRhc3QtdXRpbC10by1zdHJpbmcnXG5pbXBvcnQge3BhcnNlfSBmcm9tICdtaWNyb21hcmsvbGliL3BhcnNlLmpzJ1xuaW1wb3J0IHtwcmVwcm9jZXNzfSBmcm9tICdtaWNyb21hcmsvbGliL3ByZXByb2Nlc3MuanMnXG5pbXBvcnQge3Bvc3Rwcm9jZXNzfSBmcm9tICdtaWNyb21hcmsvbGliL3Bvc3Rwcm9jZXNzLmpzJ1xuaW1wb3J0IHtkZWNvZGVOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1kZWNvZGUtbnVtZXJpYy1jaGFyYWN0ZXItcmVmZXJlbmNlJ1xuaW1wb3J0IHtkZWNvZGVTdHJpbmd9IGZyb20gJ21pY3JvbWFyay11dGlsLWRlY29kZS1zdHJpbmcnXG5pbXBvcnQge25vcm1hbGl6ZUlkZW50aWZpZXJ9IGZyb20gJ21pY3JvbWFyay11dGlsLW5vcm1hbGl6ZS1pZGVudGlmaWVyJ1xuaW1wb3J0IHtkZWNvZGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZX0gZnJvbSAnZGVjb2RlLW5hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2UnXG5pbXBvcnQge3N0cmluZ2lmeVBvc2l0aW9ufSBmcm9tICd1bmlzdC11dGlsLXN0cmluZ2lmeS1wb3NpdGlvbidcbmNvbnN0IG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbi8qKlxuICogQHBhcmFtIHZhbHVlXG4gKiAgIE1hcmtkb3duIHRvIHBhcnNlLlxuICogQHBhcmFtIGVuY29kaW5nXG4gKiAgIENoYXJhY3RlciBlbmNvZGluZyBmb3Igd2hlbiBgdmFsdWVgIGlzIGBCdWZmZXJgLlxuICogQHBhcmFtIG9wdGlvbnNcbiAqICAgQ29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zXG4gKiAgIG1kYXN0IHRyZWUuXG4gKi9cbmV4cG9ydCBjb25zdCBmcm9tTWFya2Rvd24gPVxuICAvKipcbiAgICogQHR5cGUgeyhcbiAgICogICAoKHZhbHVlOiBWYWx1ZSwgZW5jb2Rpbmc6IEVuY29kaW5nLCBvcHRpb25zPzogT3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWQpID0+IFJvb3QpICZcbiAgICogICAoKHZhbHVlOiBWYWx1ZSwgb3B0aW9ucz86IE9wdGlvbnMgfCBudWxsIHwgdW5kZWZpbmVkKSA9PiBSb290KVxuICAgKiApfVxuICAgKi9cblxuICAvKipcbiAgICogQHBhcmFtIHtWYWx1ZX0gdmFsdWVcbiAgICogQHBhcmFtIHtFbmNvZGluZyB8IE9wdGlvbnMgfCBudWxsIHwgdW5kZWZpbmVkfSBbZW5jb2RpbmddXG4gICAqIEBwYXJhbSB7T3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcHRpb25zXVxuICAgKiBAcmV0dXJucyB7Um9vdH1cbiAgICovXG4gIGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgb3B0aW9ucyA9IGVuY29kaW5nXG4gICAgICBlbmNvZGluZyA9IHVuZGVmaW5lZFxuICAgIH1cbiAgICByZXR1cm4gY29tcGlsZXIob3B0aW9ucykoXG4gICAgICBwb3N0cHJvY2VzcyhcbiAgICAgICAgcGFyc2Uob3B0aW9ucykuZG9jdW1lbnQoKS53cml0ZShwcmVwcm9jZXNzKCkodmFsdWUsIGVuY29kaW5nLCB0cnVlKSlcbiAgICAgIClcbiAgICApXG4gIH1cblxuLyoqXG4gKiBOb3RlIHRoaXMgY29tcGlsZXIgb25seSB1bmRlcnN0YW5kIGNvbXBsZXRlIGJ1ZmZlcmluZywgbm90IHN0cmVhbWluZy5cbiAqXG4gKiBAcGFyYW0ge09wdGlvbnMgfCBudWxsIHwgdW5kZWZpbmVkfSBbb3B0aW9uc11cbiAqL1xuZnVuY3Rpb24gY29tcGlsZXIob3B0aW9ucykge1xuICAvKiogQHR5cGUge0NvbmZpZ30gKi9cbiAgY29uc3QgY29uZmlnID0ge1xuICAgIHRyYW5zZm9ybXM6IFtdLFxuICAgIGNhbkNvbnRhaW5Fb2xzOiBbJ2VtcGhhc2lzJywgJ2ZyYWdtZW50JywgJ2hlYWRpbmcnLCAncGFyYWdyYXBoJywgJ3N0cm9uZyddLFxuICAgIGVudGVyOiB7XG4gICAgICBhdXRvbGluazogb3BlbmVyKGxpbmspLFxuICAgICAgYXV0b2xpbmtQcm90b2NvbDogb25lbnRlcmRhdGEsXG4gICAgICBhdXRvbGlua0VtYWlsOiBvbmVudGVyZGF0YSxcbiAgICAgIGF0eEhlYWRpbmc6IG9wZW5lcihoZWFkaW5nKSxcbiAgICAgIGJsb2NrUXVvdGU6IG9wZW5lcihibG9ja1F1b3RlKSxcbiAgICAgIGNoYXJhY3RlckVzY2FwZTogb25lbnRlcmRhdGEsXG4gICAgICBjaGFyYWN0ZXJSZWZlcmVuY2U6IG9uZW50ZXJkYXRhLFxuICAgICAgY29kZUZlbmNlZDogb3BlbmVyKGNvZGVGbG93KSxcbiAgICAgIGNvZGVGZW5jZWRGZW5jZUluZm86IGJ1ZmZlcixcbiAgICAgIGNvZGVGZW5jZWRGZW5jZU1ldGE6IGJ1ZmZlcixcbiAgICAgIGNvZGVJbmRlbnRlZDogb3BlbmVyKGNvZGVGbG93LCBidWZmZXIpLFxuICAgICAgY29kZVRleHQ6IG9wZW5lcihjb2RlVGV4dCwgYnVmZmVyKSxcbiAgICAgIGNvZGVUZXh0RGF0YTogb25lbnRlcmRhdGEsXG4gICAgICBkYXRhOiBvbmVudGVyZGF0YSxcbiAgICAgIGNvZGVGbG93VmFsdWU6IG9uZW50ZXJkYXRhLFxuICAgICAgZGVmaW5pdGlvbjogb3BlbmVyKGRlZmluaXRpb24pLFxuICAgICAgZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nOiBidWZmZXIsXG4gICAgICBkZWZpbml0aW9uTGFiZWxTdHJpbmc6IGJ1ZmZlcixcbiAgICAgIGRlZmluaXRpb25UaXRsZVN0cmluZzogYnVmZmVyLFxuICAgICAgZW1waGFzaXM6IG9wZW5lcihlbXBoYXNpcyksXG4gICAgICBoYXJkQnJlYWtFc2NhcGU6IG9wZW5lcihoYXJkQnJlYWspLFxuICAgICAgaGFyZEJyZWFrVHJhaWxpbmc6IG9wZW5lcihoYXJkQnJlYWspLFxuICAgICAgaHRtbEZsb3c6IG9wZW5lcihodG1sLCBidWZmZXIpLFxuICAgICAgaHRtbEZsb3dEYXRhOiBvbmVudGVyZGF0YSxcbiAgICAgIGh0bWxUZXh0OiBvcGVuZXIoaHRtbCwgYnVmZmVyKSxcbiAgICAgIGh0bWxUZXh0RGF0YTogb25lbnRlcmRhdGEsXG4gICAgICBpbWFnZTogb3BlbmVyKGltYWdlKSxcbiAgICAgIGxhYmVsOiBidWZmZXIsXG4gICAgICBsaW5rOiBvcGVuZXIobGluayksXG4gICAgICBsaXN0SXRlbTogb3BlbmVyKGxpc3RJdGVtKSxcbiAgICAgIGxpc3RJdGVtVmFsdWU6IG9uZW50ZXJsaXN0aXRlbXZhbHVlLFxuICAgICAgbGlzdE9yZGVyZWQ6IG9wZW5lcihsaXN0LCBvbmVudGVybGlzdG9yZGVyZWQpLFxuICAgICAgbGlzdFVub3JkZXJlZDogb3BlbmVyKGxpc3QpLFxuICAgICAgcGFyYWdyYXBoOiBvcGVuZXIocGFyYWdyYXBoKSxcbiAgICAgIHJlZmVyZW5jZTogb25lbnRlcnJlZmVyZW5jZSxcbiAgICAgIHJlZmVyZW5jZVN0cmluZzogYnVmZmVyLFxuICAgICAgcmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZzogYnVmZmVyLFxuICAgICAgcmVzb3VyY2VUaXRsZVN0cmluZzogYnVmZmVyLFxuICAgICAgc2V0ZXh0SGVhZGluZzogb3BlbmVyKGhlYWRpbmcpLFxuICAgICAgc3Ryb25nOiBvcGVuZXIoc3Ryb25nKSxcbiAgICAgIHRoZW1hdGljQnJlYWs6IG9wZW5lcih0aGVtYXRpY0JyZWFrKVxuICAgIH0sXG4gICAgZXhpdDoge1xuICAgICAgYXR4SGVhZGluZzogY2xvc2VyKCksXG4gICAgICBhdHhIZWFkaW5nU2VxdWVuY2U6IG9uZXhpdGF0eGhlYWRpbmdzZXF1ZW5jZSxcbiAgICAgIGF1dG9saW5rOiBjbG9zZXIoKSxcbiAgICAgIGF1dG9saW5rRW1haWw6IG9uZXhpdGF1dG9saW5rZW1haWwsXG4gICAgICBhdXRvbGlua1Byb3RvY29sOiBvbmV4aXRhdXRvbGlua3Byb3RvY29sLFxuICAgICAgYmxvY2tRdW90ZTogY2xvc2VyKCksXG4gICAgICBjaGFyYWN0ZXJFc2NhcGVWYWx1ZTogb25leGl0ZGF0YSxcbiAgICAgIGNoYXJhY3RlclJlZmVyZW5jZU1hcmtlckhleGFkZWNpbWFsOiBvbmV4aXRjaGFyYWN0ZXJyZWZlcmVuY2VtYXJrZXIsXG4gICAgICBjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljOiBvbmV4aXRjaGFyYWN0ZXJyZWZlcmVuY2VtYXJrZXIsXG4gICAgICBjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZTogb25leGl0Y2hhcmFjdGVycmVmZXJlbmNldmFsdWUsXG4gICAgICBjb2RlRmVuY2VkOiBjbG9zZXIob25leGl0Y29kZWZlbmNlZCksXG4gICAgICBjb2RlRmVuY2VkRmVuY2U6IG9uZXhpdGNvZGVmZW5jZWRmZW5jZSxcbiAgICAgIGNvZGVGZW5jZWRGZW5jZUluZm86IG9uZXhpdGNvZGVmZW5jZWRmZW5jZWluZm8sXG4gICAgICBjb2RlRmVuY2VkRmVuY2VNZXRhOiBvbmV4aXRjb2RlZmVuY2VkZmVuY2VtZXRhLFxuICAgICAgY29kZUZsb3dWYWx1ZTogb25leGl0ZGF0YSxcbiAgICAgIGNvZGVJbmRlbnRlZDogY2xvc2VyKG9uZXhpdGNvZGVpbmRlbnRlZCksXG4gICAgICBjb2RlVGV4dDogY2xvc2VyKG9uZXhpdGNvZGV0ZXh0KSxcbiAgICAgIGNvZGVUZXh0RGF0YTogb25leGl0ZGF0YSxcbiAgICAgIGRhdGE6IG9uZXhpdGRhdGEsXG4gICAgICBkZWZpbml0aW9uOiBjbG9zZXIoKSxcbiAgICAgIGRlZmluaXRpb25EZXN0aW5hdGlvblN0cmluZzogb25leGl0ZGVmaW5pdGlvbmRlc3RpbmF0aW9uc3RyaW5nLFxuICAgICAgZGVmaW5pdGlvbkxhYmVsU3RyaW5nOiBvbmV4aXRkZWZpbml0aW9ubGFiZWxzdHJpbmcsXG4gICAgICBkZWZpbml0aW9uVGl0bGVTdHJpbmc6IG9uZXhpdGRlZmluaXRpb250aXRsZXN0cmluZyxcbiAgICAgIGVtcGhhc2lzOiBjbG9zZXIoKSxcbiAgICAgIGhhcmRCcmVha0VzY2FwZTogY2xvc2VyKG9uZXhpdGhhcmRicmVhayksXG4gICAgICBoYXJkQnJlYWtUcmFpbGluZzogY2xvc2VyKG9uZXhpdGhhcmRicmVhayksXG4gICAgICBodG1sRmxvdzogY2xvc2VyKG9uZXhpdGh0bWxmbG93KSxcbiAgICAgIGh0bWxGbG93RGF0YTogb25leGl0ZGF0YSxcbiAgICAgIGh0bWxUZXh0OiBjbG9zZXIob25leGl0aHRtbHRleHQpLFxuICAgICAgaHRtbFRleHREYXRhOiBvbmV4aXRkYXRhLFxuICAgICAgaW1hZ2U6IGNsb3NlcihvbmV4aXRpbWFnZSksXG4gICAgICBsYWJlbDogb25leGl0bGFiZWwsXG4gICAgICBsYWJlbFRleHQ6IG9uZXhpdGxhYmVsdGV4dCxcbiAgICAgIGxpbmVFbmRpbmc6IG9uZXhpdGxpbmVlbmRpbmcsXG4gICAgICBsaW5rOiBjbG9zZXIob25leGl0bGluayksXG4gICAgICBsaXN0SXRlbTogY2xvc2VyKCksXG4gICAgICBsaXN0T3JkZXJlZDogY2xvc2VyKCksXG4gICAgICBsaXN0VW5vcmRlcmVkOiBjbG9zZXIoKSxcbiAgICAgIHBhcmFncmFwaDogY2xvc2VyKCksXG4gICAgICByZWZlcmVuY2VTdHJpbmc6IG9uZXhpdHJlZmVyZW5jZXN0cmluZyxcbiAgICAgIHJlc291cmNlRGVzdGluYXRpb25TdHJpbmc6IG9uZXhpdHJlc291cmNlZGVzdGluYXRpb25zdHJpbmcsXG4gICAgICByZXNvdXJjZVRpdGxlU3RyaW5nOiBvbmV4aXRyZXNvdXJjZXRpdGxlc3RyaW5nLFxuICAgICAgcmVzb3VyY2U6IG9uZXhpdHJlc291cmNlLFxuICAgICAgc2V0ZXh0SGVhZGluZzogY2xvc2VyKG9uZXhpdHNldGV4dGhlYWRpbmcpLFxuICAgICAgc2V0ZXh0SGVhZGluZ0xpbmVTZXF1ZW5jZTogb25leGl0c2V0ZXh0aGVhZGluZ2xpbmVzZXF1ZW5jZSxcbiAgICAgIHNldGV4dEhlYWRpbmdUZXh0OiBvbmV4aXRzZXRleHRoZWFkaW5ndGV4dCxcbiAgICAgIHN0cm9uZzogY2xvc2VyKCksXG4gICAgICB0aGVtYXRpY0JyZWFrOiBjbG9zZXIoKVxuICAgIH1cbiAgfVxuICBjb25maWd1cmUoY29uZmlnLCAob3B0aW9ucyB8fCB7fSkubWRhc3RFeHRlbnNpb25zIHx8IFtdKVxuXG4gIC8qKiBAdHlwZSB7Q29tcGlsZURhdGF9ICovXG4gIGNvbnN0IGRhdGEgPSB7fVxuICByZXR1cm4gY29tcGlsZVxuXG4gIC8qKlxuICAgKiBUdXJuIG1pY3JvbWFyayBldmVudHMgaW50byBhbiBtZGFzdCB0cmVlLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PEV2ZW50Pn0gZXZlbnRzXG4gICAqICAgRXZlbnRzLlxuICAgKiBAcmV0dXJucyB7Um9vdH1cbiAgICogICBtZGFzdCB0cmVlLlxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGlsZShldmVudHMpIHtcbiAgICAvKiogQHR5cGUge1Jvb3R9ICovXG4gICAgbGV0IHRyZWUgPSB7XG4gICAgICB0eXBlOiAncm9vdCcsXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9XG4gICAgLyoqIEB0eXBlIHtPbWl0PENvbXBpbGVDb250ZXh0LCAnc2xpY2VTZXJpYWxpemUnPn0gKi9cbiAgICBjb25zdCBjb250ZXh0ID0ge1xuICAgICAgc3RhY2s6IFt0cmVlXSxcbiAgICAgIHRva2VuU3RhY2s6IFtdLFxuICAgICAgY29uZmlnLFxuICAgICAgZW50ZXIsXG4gICAgICBleGl0LFxuICAgICAgYnVmZmVyLFxuICAgICAgcmVzdW1lLFxuICAgICAgc2V0RGF0YSxcbiAgICAgIGdldERhdGFcbiAgICB9XG4gICAgLyoqIEB0eXBlIHtBcnJheTxudW1iZXI+fSAqL1xuICAgIGNvbnN0IGxpc3RTdGFjayA9IFtdXG4gICAgbGV0IGluZGV4ID0gLTFcbiAgICB3aGlsZSAoKytpbmRleCA8IGV2ZW50cy5sZW5ndGgpIHtcbiAgICAgIC8vIFdlIHByZXByb2Nlc3MgbGlzdHMgdG8gYWRkIGBsaXN0SXRlbWAgdG9rZW5zLCBhbmQgdG8gaW5mZXIgd2hldGhlclxuICAgICAgLy8gaXRlbXMgdGhlIGxpc3QgaXRzZWxmIGFyZSBzcHJlYWQgb3V0LlxuICAgICAgaWYgKFxuICAgICAgICBldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdsaXN0T3JkZXJlZCcgfHxcbiAgICAgICAgZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnbGlzdFVub3JkZXJlZCdcbiAgICAgICkge1xuICAgICAgICBpZiAoZXZlbnRzW2luZGV4XVswXSA9PT0gJ2VudGVyJykge1xuICAgICAgICAgIGxpc3RTdGFjay5wdXNoKGluZGV4KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRhaWwgPSBsaXN0U3RhY2sucG9wKClcbiAgICAgICAgICBpbmRleCA9IHByZXBhcmVMaXN0KGV2ZW50cywgdGFpbCwgaW5kZXgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaW5kZXggPSAtMVxuICAgIHdoaWxlICgrK2luZGV4IDwgZXZlbnRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgaGFuZGxlciA9IGNvbmZpZ1tldmVudHNbaW5kZXhdWzBdXVxuICAgICAgaWYgKG93bi5jYWxsKGhhbmRsZXIsIGV2ZW50c1tpbmRleF1bMV0udHlwZSkpIHtcbiAgICAgICAgaGFuZGxlcltldmVudHNbaW5kZXhdWzFdLnR5cGVdLmNhbGwoXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2xpY2VTZXJpYWxpemU6IGV2ZW50c1tpbmRleF1bMl0uc2xpY2VTZXJpYWxpemVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb250ZXh0XG4gICAgICAgICAgKSxcbiAgICAgICAgICBldmVudHNbaW5kZXhdWzFdXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdG9rZW5zIHN0aWxsIGJlaW5nIG9wZW4uXG4gICAgaWYgKGNvbnRleHQudG9rZW5TdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0YWlsID0gY29udGV4dC50b2tlblN0YWNrW2NvbnRleHQudG9rZW5TdGFjay5sZW5ndGggLSAxXVxuICAgICAgY29uc3QgaGFuZGxlciA9IHRhaWxbMV0gfHwgZGVmYXVsdE9uRXJyb3JcbiAgICAgIGhhbmRsZXIuY2FsbChjb250ZXh0LCB1bmRlZmluZWQsIHRhaWxbMF0pXG4gICAgfVxuXG4gICAgLy8gRmlndXJlIG91dCBgcm9vdGAgcG9zaXRpb24uXG4gICAgdHJlZS5wb3NpdGlvbiA9IHtcbiAgICAgIHN0YXJ0OiBwb2ludChcbiAgICAgICAgZXZlbnRzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGV2ZW50c1swXVsxXS5zdGFydFxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBsaW5lOiAxLFxuICAgICAgICAgICAgICBjb2x1bW46IDEsXG4gICAgICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICAgICAgfVxuICAgICAgKSxcbiAgICAgIGVuZDogcG9pbnQoXG4gICAgICAgIGV2ZW50cy5sZW5ndGggPiAwXG4gICAgICAgICAgPyBldmVudHNbZXZlbnRzLmxlbmd0aCAtIDJdWzFdLmVuZFxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBsaW5lOiAxLFxuICAgICAgICAgICAgICBjb2x1bW46IDEsXG4gICAgICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICAgICAgfVxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIENhbGwgdHJhbnNmb3Jtcy5cbiAgICBpbmRleCA9IC0xXG4gICAgd2hpbGUgKCsraW5kZXggPCBjb25maWcudHJhbnNmb3Jtcy5sZW5ndGgpIHtcbiAgICAgIHRyZWUgPSBjb25maWcudHJhbnNmb3Jtc1tpbmRleF0odHJlZSkgfHwgdHJlZVxuICAgIH1cbiAgICByZXR1cm4gdHJlZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7QXJyYXk8RXZlbnQ+fSBldmVudHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAgICogQHJldHVybnMge251bWJlcn1cbiAgICovXG4gIGZ1bmN0aW9uIHByZXBhcmVMaXN0KGV2ZW50cywgc3RhcnQsIGxlbmd0aCkge1xuICAgIGxldCBpbmRleCA9IHN0YXJ0IC0gMVxuICAgIGxldCBjb250YWluZXJCYWxhbmNlID0gLTFcbiAgICBsZXQgbGlzdFNwcmVhZCA9IGZhbHNlXG4gICAgLyoqIEB0eXBlIHtUb2tlbiB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgbGlzdEl0ZW1cbiAgICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgbGluZUluZGV4XG4gICAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gICAgbGV0IGZpcnN0QmxhbmtMaW5lSW5kZXhcbiAgICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gICAgbGV0IGF0TWFya2VyXG4gICAgd2hpbGUgKCsraW5kZXggPD0gbGVuZ3RoKSB7XG4gICAgICBjb25zdCBldmVudCA9IGV2ZW50c1tpbmRleF1cbiAgICAgIGlmIChcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gJ2xpc3RVbm9yZGVyZWQnIHx8XG4gICAgICAgIGV2ZW50WzFdLnR5cGUgPT09ICdsaXN0T3JkZXJlZCcgfHxcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gJ2Jsb2NrUXVvdGUnXG4gICAgICApIHtcbiAgICAgICAgaWYgKGV2ZW50WzBdID09PSAnZW50ZXInKSB7XG4gICAgICAgICAgY29udGFpbmVyQmFsYW5jZSsrXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udGFpbmVyQmFsYW5jZS0tXG4gICAgICAgIH1cbiAgICAgICAgYXRNYXJrZXIgPSB1bmRlZmluZWRcbiAgICAgIH0gZWxzZSBpZiAoZXZlbnRbMV0udHlwZSA9PT0gJ2xpbmVFbmRpbmdCbGFuaycpIHtcbiAgICAgICAgaWYgKGV2ZW50WzBdID09PSAnZW50ZXInKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbGlzdEl0ZW0gJiZcbiAgICAgICAgICAgICFhdE1hcmtlciAmJlxuICAgICAgICAgICAgIWNvbnRhaW5lckJhbGFuY2UgJiZcbiAgICAgICAgICAgICFmaXJzdEJsYW5rTGluZUluZGV4XG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBmaXJzdEJsYW5rTGluZUluZGV4ID0gaW5kZXhcbiAgICAgICAgICB9XG4gICAgICAgICAgYXRNYXJrZXIgPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gJ2xpbmVQcmVmaXgnIHx8XG4gICAgICAgIGV2ZW50WzFdLnR5cGUgPT09ICdsaXN0SXRlbVZhbHVlJyB8fFxuICAgICAgICBldmVudFsxXS50eXBlID09PSAnbGlzdEl0ZW1NYXJrZXInIHx8XG4gICAgICAgIGV2ZW50WzFdLnR5cGUgPT09ICdsaXN0SXRlbVByZWZpeCcgfHxcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gJ2xpc3RJdGVtUHJlZml4V2hpdGVzcGFjZSdcbiAgICAgICkge1xuICAgICAgICAvLyBFbXB0eS5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF0TWFya2VyID0gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgICghY29udGFpbmVyQmFsYW5jZSAmJlxuICAgICAgICAgIGV2ZW50WzBdID09PSAnZW50ZXInICYmXG4gICAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gJ2xpc3RJdGVtUHJlZml4JykgfHxcbiAgICAgICAgKGNvbnRhaW5lckJhbGFuY2UgPT09IC0xICYmXG4gICAgICAgICAgZXZlbnRbMF0gPT09ICdleGl0JyAmJlxuICAgICAgICAgIChldmVudFsxXS50eXBlID09PSAnbGlzdFVub3JkZXJlZCcgfHxcbiAgICAgICAgICAgIGV2ZW50WzFdLnR5cGUgPT09ICdsaXN0T3JkZXJlZCcpKVxuICAgICAgKSB7XG4gICAgICAgIGlmIChsaXN0SXRlbSkge1xuICAgICAgICAgIGxldCB0YWlsSW5kZXggPSBpbmRleFxuICAgICAgICAgIGxpbmVJbmRleCA9IHVuZGVmaW5lZFxuICAgICAgICAgIHdoaWxlICh0YWlsSW5kZXgtLSkge1xuICAgICAgICAgICAgY29uc3QgdGFpbEV2ZW50ID0gZXZlbnRzW3RhaWxJbmRleF1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPT09ICdsaW5lRW5kaW5nJyB8fFxuICAgICAgICAgICAgICB0YWlsRXZlbnRbMV0udHlwZSA9PT0gJ2xpbmVFbmRpbmdCbGFuaydcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBpZiAodGFpbEV2ZW50WzBdID09PSAnZXhpdCcpIGNvbnRpbnVlXG4gICAgICAgICAgICAgIGlmIChsaW5lSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBldmVudHNbbGluZUluZGV4XVsxXS50eXBlID0gJ2xpbmVFbmRpbmdCbGFuaydcbiAgICAgICAgICAgICAgICBsaXN0U3ByZWFkID0gdHJ1ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID0gJ2xpbmVFbmRpbmcnXG4gICAgICAgICAgICAgIGxpbmVJbmRleCA9IHRhaWxJbmRleFxuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPT09ICdsaW5lUHJlZml4JyB8fFxuICAgICAgICAgICAgICB0YWlsRXZlbnRbMV0udHlwZSA9PT0gJ2Jsb2NrUXVvdGVQcmVmaXgnIHx8XG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID09PSAnYmxvY2tRdW90ZVByZWZpeFdoaXRlc3BhY2UnIHx8XG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID09PSAnYmxvY2tRdW90ZU1hcmtlcicgfHxcbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPT09ICdsaXN0SXRlbUluZGVudCdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAvLyBFbXB0eVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmlyc3RCbGFua0xpbmVJbmRleCAmJlxuICAgICAgICAgICAgKCFsaW5lSW5kZXggfHwgZmlyc3RCbGFua0xpbmVJbmRleCA8IGxpbmVJbmRleClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGxpc3RJdGVtLl9zcHJlYWQgPSB0cnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRml4IHBvc2l0aW9uLlxuICAgICAgICAgIGxpc3RJdGVtLmVuZCA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGxpbmVJbmRleCA/IGV2ZW50c1tsaW5lSW5kZXhdWzFdLnN0YXJ0IDogZXZlbnRbMV0uZW5kXG4gICAgICAgICAgKVxuICAgICAgICAgIGV2ZW50cy5zcGxpY2UobGluZUluZGV4IHx8IGluZGV4LCAwLCBbJ2V4aXQnLCBsaXN0SXRlbSwgZXZlbnRbMl1dKVxuICAgICAgICAgIGluZGV4KytcbiAgICAgICAgICBsZW5ndGgrK1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGxpc3QgaXRlbS5cbiAgICAgICAgaWYgKGV2ZW50WzFdLnR5cGUgPT09ICdsaXN0SXRlbVByZWZpeCcpIHtcbiAgICAgICAgICBsaXN0SXRlbSA9IHtcbiAgICAgICAgICAgIHR5cGU6ICdsaXN0SXRlbScsXG4gICAgICAgICAgICBfc3ByZWFkOiBmYWxzZSxcbiAgICAgICAgICAgIHN0YXJ0OiBPYmplY3QuYXNzaWduKHt9LCBldmVudFsxXS5zdGFydCksXG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiB3ZVx1MjAxOWxsIGFkZCBgZW5kYCBpbiBhIHNlY29uZC5cbiAgICAgICAgICAgIGVuZDogdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGBsaXN0SXRlbWAgaXMgbW9zdCBkZWZpbml0ZWx5IGRlZmluZWQsIFRTLi4uXG4gICAgICAgICAgZXZlbnRzLnNwbGljZShpbmRleCwgMCwgWydlbnRlcicsIGxpc3RJdGVtLCBldmVudFsyXV0pXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICAgIGxlbmd0aCsrXG4gICAgICAgICAgZmlyc3RCbGFua0xpbmVJbmRleCA9IHVuZGVmaW5lZFxuICAgICAgICAgIGF0TWFya2VyID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGV2ZW50c1tzdGFydF1bMV0uX3NwcmVhZCA9IGxpc3RTcHJlYWRcbiAgICByZXR1cm4gbGVuZ3RoXG4gIH1cblxuICAvKipcbiAgICogU2V0IGRhdGEuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSB7a2V5b2YgQ29tcGlsZURhdGF9IEtleVxuICAgKiAgIEZpZWxkIHR5cGUuXG4gICAqIEBwYXJhbSB7S2V5fSBrZXlcbiAgICogICBLZXkgb2YgZmllbGQuXG4gICAqIEBwYXJhbSB7Q29tcGlsZURhdGFbS2V5XX0gW3ZhbHVlXVxuICAgKiAgIE5ldyB2YWx1ZS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqICAgTm90aGluZy5cbiAgICovXG4gIGZ1bmN0aW9uIHNldERhdGEoa2V5LCB2YWx1ZSkge1xuICAgIGRhdGFba2V5XSA9IHZhbHVlXG4gIH1cblxuICAvKipcbiAgICogR2V0IGRhdGEuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSB7a2V5b2YgQ29tcGlsZURhdGF9IEtleVxuICAgKiAgIEZpZWxkIHR5cGUuXG4gICAqIEBwYXJhbSB7S2V5fSBrZXlcbiAgICogICBLZXkgb2YgZmllbGQuXG4gICAqIEByZXR1cm5zIHtDb21waWxlRGF0YVtLZXldfVxuICAgKiAgIFZhbHVlLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0RGF0YShrZXkpIHtcbiAgICByZXR1cm4gZGF0YVtrZXldXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIG9wZW5lciBoYW5kbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7KHRva2VuOiBUb2tlbikgPT4gTm9kZX0gY3JlYXRlXG4gICAqICAgQ3JlYXRlIGEgbm9kZS5cbiAgICogQHBhcmFtIHtIYW5kbGV9IFthbmRdXG4gICAqICAgT3B0aW9uYWwgZnVuY3Rpb24gdG8gYWxzbyBydW4uXG4gICAqIEByZXR1cm5zIHtIYW5kbGV9XG4gICAqICAgSGFuZGxlLlxuICAgKi9cbiAgZnVuY3Rpb24gb3BlbmVyKGNyZWF0ZSwgYW5kKSB7XG4gICAgcmV0dXJuIG9wZW5cblxuICAgIC8qKlxuICAgICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICAgKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG9wZW4odG9rZW4pIHtcbiAgICAgIGVudGVyLmNhbGwodGhpcywgY3JlYXRlKHRva2VuKSwgdG9rZW4pXG4gICAgICBpZiAoYW5kKSBhbmQuY2FsbCh0aGlzLCB0b2tlbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIGJ1ZmZlcigpIHtcbiAgICB0aGlzLnN0YWNrLnB1c2goe1xuICAgICAgdHlwZTogJ2ZyYWdtZW50JyxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHRlbXBsYXRlIHtOb2RlfSBLaW5kXG4gICAqICAgTm9kZSB0eXBlLlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqICAgQ29udGV4dC5cbiAgICogQHBhcmFtIHtLaW5kfSBub2RlXG4gICAqICAgTm9kZSB0byBlbnRlci5cbiAgICogQHBhcmFtIHtUb2tlbn0gdG9rZW5cbiAgICogICBDb3JyZXNwb25kaW5nIHRva2VuLlxuICAgKiBAcGFyYW0ge09uRW50ZXJFcnJvciB8IHVuZGVmaW5lZH0gW2Vycm9ySGFuZGxlcl1cbiAgICogICBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhpcyB0b2tlbiBpcyBvcGVuLCBidXQgaXQgaXMgY2xvc2VkIGJ5IHNvbWV0aGluZyBlbHNlLlxuICAgKiBAcmV0dXJucyB7S2luZH1cbiAgICogICBUaGUgZ2l2ZW4gbm9kZS5cbiAgICovXG4gIGZ1bmN0aW9uIGVudGVyKG5vZGUsIHRva2VuLCBlcnJvckhhbmRsZXIpIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBBc3N1bWUgYE5vZGVgIGNhbiBleGlzdCBhcyBhIGNoaWxkIG9mIGBwYXJlbnRgLlxuICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpXG4gICAgdGhpcy5zdGFjay5wdXNoKG5vZGUpXG4gICAgdGhpcy50b2tlblN0YWNrLnB1c2goW3Rva2VuLCBlcnJvckhhbmRsZXJdKVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGBlbmRgIHdpbGwgYmUgcGF0Y2hlZCBsYXRlci5cbiAgICBub2RlLnBvc2l0aW9uID0ge1xuICAgICAgc3RhcnQ6IHBvaW50KHRva2VuLnN0YXJ0KVxuICAgIH1cbiAgICByZXR1cm4gbm9kZVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGNsb3NlciBoYW5kbGUuXG4gICAqXG4gICAqIEBwYXJhbSB7SGFuZGxlfSBbYW5kXVxuICAgKiAgIE9wdGlvbmFsIGZ1bmN0aW9uIHRvIGFsc28gcnVuLlxuICAgKiBAcmV0dXJucyB7SGFuZGxlfVxuICAgKiAgIEhhbmRsZS5cbiAgICovXG4gIGZ1bmN0aW9uIGNsb3NlcihhbmQpIHtcbiAgICByZXR1cm4gY2xvc2VcblxuICAgIC8qKlxuICAgICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICAgKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGNsb3NlKHRva2VuKSB7XG4gICAgICBpZiAoYW5kKSBhbmQuY2FsbCh0aGlzLCB0b2tlbilcbiAgICAgIGV4aXQuY2FsbCh0aGlzLCB0b2tlbilcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiAgIENvbnRleHQuXG4gICAqIEBwYXJhbSB7VG9rZW59IHRva2VuXG4gICAqICAgQ29ycmVzcG9uZGluZyB0b2tlbi5cbiAgICogQHBhcmFtIHtPbkV4aXRFcnJvciB8IHVuZGVmaW5lZH0gW29uRXhpdEVycm9yXVxuICAgKiAgIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhbm90aGVyIHRva2VuIGlzIG9wZW4uXG4gICAqIEByZXR1cm5zIHtOb2RlfVxuICAgKiAgIFRoZSBjbG9zZWQgbm9kZS5cbiAgICovXG4gIGZ1bmN0aW9uIGV4aXQodG9rZW4sIG9uRXhpdEVycm9yKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2sucG9wKClcbiAgICBjb25zdCBvcGVuID0gdGhpcy50b2tlblN0YWNrLnBvcCgpXG4gICAgaWYgKCFvcGVuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgY2xvc2UgYCcgK1xuICAgICAgICAgIHRva2VuLnR5cGUgK1xuICAgICAgICAgICdgICgnICtcbiAgICAgICAgICBzdHJpbmdpZnlQb3NpdGlvbih7XG4gICAgICAgICAgICBzdGFydDogdG9rZW4uc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IHRva2VuLmVuZFxuICAgICAgICAgIH0pICtcbiAgICAgICAgICAnKTogaXRcdTIwMTlzIG5vdCBvcGVuJ1xuICAgICAgKVxuICAgIH0gZWxzZSBpZiAob3BlblswXS50eXBlICE9PSB0b2tlbi50eXBlKSB7XG4gICAgICBpZiAob25FeGl0RXJyb3IpIHtcbiAgICAgICAgb25FeGl0RXJyb3IuY2FsbCh0aGlzLCB0b2tlbiwgb3BlblswXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSBvcGVuWzFdIHx8IGRlZmF1bHRPbkVycm9yXG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCB0b2tlbiwgb3BlblswXSlcbiAgICAgIH1cbiAgICB9XG4gICAgbm9kZS5wb3NpdGlvbi5lbmQgPSBwb2ludCh0b2tlbi5lbmQpXG4gICAgcmV0dXJuIG5vZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBmdW5jdGlvbiByZXN1bWUoKSB7XG4gICAgcmV0dXJuIHRvU3RyaW5nKHRoaXMuc3RhY2sucG9wKCkpXG4gIH1cblxuICAvL1xuICAvLyBIYW5kbGVycy5cbiAgLy9cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25lbnRlcmxpc3RvcmRlcmVkKCkge1xuICAgIHNldERhdGEoJ2V4cGVjdGluZ0ZpcnN0TGlzdEl0ZW1WYWx1ZScsIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25lbnRlcmxpc3RpdGVtdmFsdWUodG9rZW4pIHtcbiAgICBpZiAoZ2V0RGF0YSgnZXhwZWN0aW5nRmlyc3RMaXN0SXRlbVZhbHVlJykpIHtcbiAgICAgIGNvbnN0IGFuY2VzdG9yID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDJdXG4gICAgICBhbmNlc3Rvci5zdGFydCA9IE51bWJlci5wYXJzZUludCh0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKSwgMTApXG4gICAgICBzZXREYXRhKCdleHBlY3RpbmdGaXJzdExpc3RJdGVtVmFsdWUnKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRjb2RlZmVuY2VkZmVuY2VpbmZvKCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUubGFuZyA9IGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRjb2RlZmVuY2VkZmVuY2VtZXRhKCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUubWV0YSA9IGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRjb2RlZmVuY2VkZmVuY2UoKSB7XG4gICAgLy8gRXhpdCBpZiB0aGlzIGlzIHRoZSBjbG9zaW5nIGZlbmNlLlxuICAgIGlmIChnZXREYXRhKCdmbG93Q29kZUluc2lkZScpKSByZXR1cm5cbiAgICB0aGlzLmJ1ZmZlcigpXG4gICAgc2V0RGF0YSgnZmxvd0NvZGVJbnNpZGUnLCB0cnVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGNvZGVmZW5jZWQoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS52YWx1ZSA9IGRhdGEucmVwbGFjZSgvXihcXHI/XFxufFxccil8KFxccj9cXG58XFxyKSQvZywgJycpXG4gICAgc2V0RGF0YSgnZmxvd0NvZGVJbnNpZGUnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGNvZGVpbmRlbnRlZCgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLnZhbHVlID0gZGF0YS5yZXBsYWNlKC8oXFxyP1xcbnxcXHIpJC9nLCAnJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRkZWZpbml0aW9ubGFiZWxzdHJpbmcodG9rZW4pIHtcbiAgICBjb25zdCBsYWJlbCA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS5sYWJlbCA9IGxhYmVsXG4gICAgbm9kZS5pZGVudGlmaWVyID0gbm9ybWFsaXplSWRlbnRpZmllcihcbiAgICAgIHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pXG4gICAgKS50b0xvd2VyQ2FzZSgpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0ZGVmaW5pdGlvbnRpdGxlc3RyaW5nKCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUudGl0bGUgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0ZGVmaW5pdGlvbmRlc3RpbmF0aW9uc3RyaW5nKCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUudXJsID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGF0eGhlYWRpbmdzZXF1ZW5jZSh0b2tlbikge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBpZiAoIW5vZGUuZGVwdGgpIHtcbiAgICAgIGNvbnN0IGRlcHRoID0gdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbikubGVuZ3RoXG4gICAgICBub2RlLmRlcHRoID0gZGVwdGhcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0c2V0ZXh0aGVhZGluZ3RleHQoKSB7XG4gICAgc2V0RGF0YSgnc2V0ZXh0SGVhZGluZ1NsdXJwTGluZUVuZGluZycsIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0c2V0ZXh0aGVhZGluZ2xpbmVzZXF1ZW5jZSh0b2tlbikge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLmRlcHRoID0gdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbikuY2hhckNvZGVBdCgwKSA9PT0gNjEgPyAxIDogMlxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdHNldGV4dGhlYWRpbmcoKSB7XG4gICAgc2V0RGF0YSgnc2V0ZXh0SGVhZGluZ1NsdXJwTGluZUVuZGluZycpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmVudGVyZGF0YSh0b2tlbikge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBsZXQgdGFpbCA9IG5vZGUuY2hpbGRyZW5bbm9kZS5jaGlsZHJlbi5sZW5ndGggLSAxXVxuICAgIGlmICghdGFpbCB8fCB0YWlsLnR5cGUgIT09ICd0ZXh0Jykge1xuICAgICAgLy8gQWRkIGEgbmV3IHRleHQgbm9kZS5cbiAgICAgIHRhaWwgPSB0ZXh0KClcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IHdlXHUyMDE5bGwgYWRkIGBlbmRgIGxhdGVyLlxuICAgICAgdGFpbC5wb3NpdGlvbiA9IHtcbiAgICAgICAgc3RhcnQ6IHBvaW50KHRva2VuLnN0YXJ0KVxuICAgICAgfVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogQXNzdW1lIGBwYXJlbnRgIGFjY2VwdHMgYHRleHRgLlxuICAgICAgbm9kZS5jaGlsZHJlbi5wdXNoKHRhaWwpXG4gICAgfVxuICAgIHRoaXMuc3RhY2sucHVzaCh0YWlsKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0ZGF0YSh0b2tlbikge1xuICAgIGNvbnN0IHRhaWwgPSB0aGlzLnN0YWNrLnBvcCgpXG4gICAgdGFpbC52YWx1ZSArPSB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKVxuICAgIHRhaWwucG9zaXRpb24uZW5kID0gcG9pbnQodG9rZW4uZW5kKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0bGluZWVuZGluZyh0b2tlbikge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICAvLyBJZiB3ZVx1MjAxOXJlIGF0IGEgaGFyZCBicmVhaywgaW5jbHVkZSB0aGUgbGluZSBlbmRpbmcgaW4gdGhlcmUuXG4gICAgaWYgKGdldERhdGEoJ2F0SGFyZEJyZWFrJykpIHtcbiAgICAgIGNvbnN0IHRhaWwgPSBjb250ZXh0LmNoaWxkcmVuW2NvbnRleHQuY2hpbGRyZW4ubGVuZ3RoIC0gMV1cbiAgICAgIHRhaWwucG9zaXRpb24uZW5kID0gcG9pbnQodG9rZW4uZW5kKVxuICAgICAgc2V0RGF0YSgnYXRIYXJkQnJlYWsnKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChcbiAgICAgICFnZXREYXRhKCdzZXRleHRIZWFkaW5nU2x1cnBMaW5lRW5kaW5nJykgJiZcbiAgICAgIGNvbmZpZy5jYW5Db250YWluRW9scy5pbmNsdWRlcyhjb250ZXh0LnR5cGUpXG4gICAgKSB7XG4gICAgICBvbmVudGVyZGF0YS5jYWxsKHRoaXMsIHRva2VuKVxuICAgICAgb25leGl0ZGF0YS5jYWxsKHRoaXMsIHRva2VuKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGhhcmRicmVhaygpIHtcbiAgICBzZXREYXRhKCdhdEhhcmRCcmVhaycsIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRodG1sZmxvdygpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLnZhbHVlID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0aHRtbHRleHQoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS52YWx1ZSA9IGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGNvZGV0ZXh0KCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUudmFsdWUgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRsaW5rKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICAvLyBOb3RlOiB0aGVyZSBhcmUgYWxzbyBgaWRlbnRpZmllcmAgYW5kIGBsYWJlbGAgZmllbGRzIG9uIHRoaXMgbGluayBub2RlIVxuICAgIC8vIFRoZXNlIGFyZSB1c2VkIC8gY2xlYW5lZCBoZXJlLlxuICAgIC8vIFRvIGRvOiBjbGVhbi5cbiAgICBpZiAoZ2V0RGF0YSgnaW5SZWZlcmVuY2UnKSkge1xuICAgICAgLyoqIEB0eXBlIHtSZWZlcmVuY2VUeXBlfSAqL1xuICAgICAgY29uc3QgcmVmZXJlbmNlVHlwZSA9IGdldERhdGEoJ3JlZmVyZW5jZVR5cGUnKSB8fCAnc2hvcnRjdXQnXG4gICAgICBub2RlLnR5cGUgKz0gJ1JlZmVyZW5jZSdcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG11dGF0ZS5cbiAgICAgIG5vZGUucmVmZXJlbmNlVHlwZSA9IHJlZmVyZW5jZVR5cGVcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG11dGF0ZS5cbiAgICAgIGRlbGV0ZSBub2RlLnVybFxuICAgICAgZGVsZXRlIG5vZGUudGl0bGVcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgZGVsZXRlIG5vZGUuaWRlbnRpZmllclxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgZGVsZXRlIG5vZGUubGFiZWxcbiAgICB9XG4gICAgc2V0RGF0YSgncmVmZXJlbmNlVHlwZScpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRpbWFnZSgpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgLy8gTm90ZTogdGhlcmUgYXJlIGFsc28gYGlkZW50aWZpZXJgIGFuZCBgbGFiZWxgIGZpZWxkcyBvbiB0aGlzIGxpbmsgbm9kZSFcbiAgICAvLyBUaGVzZSBhcmUgdXNlZCAvIGNsZWFuZWQgaGVyZS5cbiAgICAvLyBUbyBkbzogY2xlYW4uXG4gICAgaWYgKGdldERhdGEoJ2luUmVmZXJlbmNlJykpIHtcbiAgICAgIC8qKiBAdHlwZSB7UmVmZXJlbmNlVHlwZX0gKi9cbiAgICAgIGNvbnN0IHJlZmVyZW5jZVR5cGUgPSBnZXREYXRhKCdyZWZlcmVuY2VUeXBlJykgfHwgJ3Nob3J0Y3V0J1xuICAgICAgbm9kZS50eXBlICs9ICdSZWZlcmVuY2UnXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBtdXRhdGUuXG4gICAgICBub2RlLnJlZmVyZW5jZVR5cGUgPSByZWZlcmVuY2VUeXBlXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBtdXRhdGUuXG4gICAgICBkZWxldGUgbm9kZS51cmxcbiAgICAgIGRlbGV0ZSBub2RlLnRpdGxlXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG11dGF0ZS5cbiAgICAgIGRlbGV0ZSBub2RlLmlkZW50aWZpZXJcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG11dGF0ZS5cbiAgICAgIGRlbGV0ZSBub2RlLmxhYmVsXG4gICAgfVxuICAgIHNldERhdGEoJ3JlZmVyZW5jZVR5cGUnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0bGFiZWx0ZXh0KHRva2VuKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbilcbiAgICBjb25zdCBhbmNlc3RvciA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAyXVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IHN0YXNoIHRoaXMgb24gdGhlIG5vZGUsIGFzIGl0IG1pZ2h0IGJlY29tZSBhIHJlZmVyZW5jZVxuICAgIC8vIGxhdGVyLlxuICAgIGFuY2VzdG9yLmxhYmVsID0gZGVjb2RlU3RyaW5nKHN0cmluZylcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBzYW1lIGFzIGFib3ZlLlxuICAgIGFuY2VzdG9yLmlkZW50aWZpZXIgPSBub3JtYWxpemVJZGVudGlmaWVyKHN0cmluZykudG9Mb3dlckNhc2UoKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0bGFiZWwoKSB7XG4gICAgY29uc3QgZnJhZ21lbnQgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgLy8gQXNzdW1lIGEgcmVmZXJlbmNlLlxuICAgIHNldERhdGEoJ2luUmVmZXJlbmNlJywgdHJ1ZSlcbiAgICBpZiAobm9kZS50eXBlID09PSAnbGluaycpIHtcbiAgICAgIC8qKiBAdHlwZSB7QXJyYXk8U3RhdGljUGhyYXNpbmdDb250ZW50Pn0gKi9cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IEFzc3VtZSBzdGF0aWMgcGhyYXNpbmcgY29udGVudC5cbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZnJhZ21lbnQuY2hpbGRyZW5cbiAgICAgIG5vZGUuY2hpbGRyZW4gPSBjaGlsZHJlblxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLmFsdCA9IHZhbHVlXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0cmVzb3VyY2VkZXN0aW5hdGlvbnN0cmluZygpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLnVybCA9IGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdHJlc291cmNldGl0bGVzdHJpbmcoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS50aXRsZSA9IGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdHJlc291cmNlKCkge1xuICAgIHNldERhdGEoJ2luUmVmZXJlbmNlJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZW50ZXJyZWZlcmVuY2UoKSB7XG4gICAgc2V0RGF0YSgncmVmZXJlbmNlVHlwZScsICdjb2xsYXBzZWQnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0cmVmZXJlbmNlc3RyaW5nKHRva2VuKSB7XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IHN0YXNoIHRoaXMgb24gdGhlIG5vZGUsIGFzIGl0IG1pZ2h0IGJlY29tZSBhIHJlZmVyZW5jZVxuICAgIC8vIGxhdGVyLlxuICAgIG5vZGUubGFiZWwgPSBsYWJlbFxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IHNhbWUgYXMgYWJvdmUuXG4gICAgbm9kZS5pZGVudGlmaWVyID0gbm9ybWFsaXplSWRlbnRpZmllcihcbiAgICAgIHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pXG4gICAgKS50b0xvd2VyQ2FzZSgpXG4gICAgc2V0RGF0YSgncmVmZXJlbmNlVHlwZScsICdmdWxsJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGNoYXJhY3RlcnJlZmVyZW5jZW1hcmtlcih0b2tlbikge1xuICAgIHNldERhdGEoJ2NoYXJhY3RlclJlZmVyZW5jZVR5cGUnLCB0b2tlbi50eXBlKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGNoYXJhY3RlcnJlZmVyZW5jZXZhbHVlKHRva2VuKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pXG4gICAgY29uc3QgdHlwZSA9IGdldERhdGEoJ2NoYXJhY3RlclJlZmVyZW5jZVR5cGUnKVxuICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICAgIGxldCB2YWx1ZVxuICAgIGlmICh0eXBlKSB7XG4gICAgICB2YWx1ZSA9IGRlY29kZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UoXG4gICAgICAgIGRhdGEsXG4gICAgICAgIHR5cGUgPT09ICdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJOdW1lcmljJyA/IDEwIDogMTZcbiAgICAgIClcbiAgICAgIHNldERhdGEoJ2NoYXJhY3RlclJlZmVyZW5jZVR5cGUnKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBkZWNvZGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZShkYXRhKVxuICAgICAgdmFsdWUgPSByZXN1bHRcbiAgICB9XG4gICAgY29uc3QgdGFpbCA9IHRoaXMuc3RhY2sucG9wKClcbiAgICB0YWlsLnZhbHVlICs9IHZhbHVlXG4gICAgdGFpbC5wb3NpdGlvbi5lbmQgPSBwb2ludCh0b2tlbi5lbmQpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0YXV0b2xpbmtwcm90b2NvbCh0b2tlbikge1xuICAgIG9uZXhpdGRhdGEuY2FsbCh0aGlzLCB0b2tlbilcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS51cmwgPSB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGF1dG9saW5rZW1haWwodG9rZW4pIHtcbiAgICBvbmV4aXRkYXRhLmNhbGwodGhpcywgdG9rZW4pXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUudXJsID0gJ21haWx0bzonICsgdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbilcbiAgfVxuXG4gIC8vXG4gIC8vIENyZWF0ZXJzLlxuICAvL1xuXG4gIC8qKiBAcmV0dXJucyB7QmxvY2txdW90ZX0gKi9cbiAgZnVuY3Rpb24gYmxvY2tRdW90ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2Jsb2NrcXVvdGUnLFxuICAgICAgY2hpbGRyZW46IFtdXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtDb2RlfSAqL1xuICBmdW5jdGlvbiBjb2RlRmxvdygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2NvZGUnLFxuICAgICAgbGFuZzogbnVsbCxcbiAgICAgIG1ldGE6IG51bGwsXG4gICAgICB2YWx1ZTogJydcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0lubGluZUNvZGV9ICovXG4gIGZ1bmN0aW9uIGNvZGVUZXh0KCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnaW5saW5lQ29kZScsXG4gICAgICB2YWx1ZTogJydcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0RlZmluaXRpb259ICovXG4gIGZ1bmN0aW9uIGRlZmluaXRpb24oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdkZWZpbml0aW9uJyxcbiAgICAgIGlkZW50aWZpZXI6ICcnLFxuICAgICAgbGFiZWw6IG51bGwsXG4gICAgICB0aXRsZTogbnVsbCxcbiAgICAgIHVybDogJydcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0VtcGhhc2lzfSAqL1xuICBmdW5jdGlvbiBlbXBoYXNpcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2VtcGhhc2lzJyxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7SGVhZGluZ30gKi9cbiAgZnVuY3Rpb24gaGVhZGluZygpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBkZXB0aGAgd2lsbCBiZSBzZXQgbGF0ZXIuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdoZWFkaW5nJyxcbiAgICAgIGRlcHRoOiB1bmRlZmluZWQsXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0JyZWFrfSAqL1xuICBmdW5jdGlvbiBoYXJkQnJlYWsoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdicmVhaydcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0hUTUx9ICovXG4gIGZ1bmN0aW9uIGh0bWwoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdodG1sJyxcbiAgICAgIHZhbHVlOiAnJ1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7SW1hZ2V9ICovXG4gIGZ1bmN0aW9uIGltYWdlKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgdGl0bGU6IG51bGwsXG4gICAgICB1cmw6ICcnLFxuICAgICAgYWx0OiBudWxsXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtMaW5rfSAqL1xuICBmdW5jdGlvbiBsaW5rKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnbGluaycsXG4gICAgICB0aXRsZTogbnVsbCxcbiAgICAgIHVybDogJycsXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtUb2tlbn0gdG9rZW5cbiAgICogQHJldHVybnMge0xpc3R9XG4gICAqL1xuICBmdW5jdGlvbiBsaXN0KHRva2VuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdsaXN0JyxcbiAgICAgIG9yZGVyZWQ6IHRva2VuLnR5cGUgPT09ICdsaXN0T3JkZXJlZCcsXG4gICAgICBzdGFydDogbnVsbCxcbiAgICAgIHNwcmVhZDogdG9rZW4uX3NwcmVhZCxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICAgKiBAcmV0dXJucyB7TGlzdEl0ZW19XG4gICAqL1xuICBmdW5jdGlvbiBsaXN0SXRlbSh0b2tlbikge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnbGlzdEl0ZW0nLFxuICAgICAgc3ByZWFkOiB0b2tlbi5fc3ByZWFkLFxuICAgICAgY2hlY2tlZDogbnVsbCxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UGFyYWdyYXBofSAqL1xuICBmdW5jdGlvbiBwYXJhZ3JhcGgoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdwYXJhZ3JhcGgnLFxuICAgICAgY2hpbGRyZW46IFtdXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtTdHJvbmd9ICovXG4gIGZ1bmN0aW9uIHN0cm9uZygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3N0cm9uZycsXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge1RleHR9ICovXG4gIGZ1bmN0aW9uIHRleHQoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgIHZhbHVlOiAnJ1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VGhlbWF0aWNCcmVha30gKi9cbiAgZnVuY3Rpb24gdGhlbWF0aWNCcmVhaygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3RoZW1hdGljQnJlYWsnXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ29weSBhIHBvaW50LWxpa2UgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtQb2ludH0gZFxuICogICBQb2ludC1saWtlIHZhbHVlLlxuICogQHJldHVybnMge1BvaW50fVxuICogICB1bmlzdCBwb2ludC5cbiAqL1xuZnVuY3Rpb24gcG9pbnQoZCkge1xuICByZXR1cm4ge1xuICAgIGxpbmU6IGQubGluZSxcbiAgICBjb2x1bW46IGQuY29sdW1uLFxuICAgIG9mZnNldDogZC5vZmZzZXRcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Q29uZmlnfSBjb21iaW5lZFxuICogQHBhcmFtIHtBcnJheTxFeHRlbnNpb24gfCBBcnJheTxFeHRlbnNpb24+Pn0gZXh0ZW5zaW9uc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGNvbmZpZ3VyZShjb21iaW5lZCwgZXh0ZW5zaW9ucykge1xuICBsZXQgaW5kZXggPSAtMVxuICB3aGlsZSAoKytpbmRleCA8IGV4dGVuc2lvbnMubGVuZ3RoKSB7XG4gICAgY29uc3QgdmFsdWUgPSBleHRlbnNpb25zW2luZGV4XVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY29uZmlndXJlKGNvbWJpbmVkLCB2YWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgZXh0ZW5zaW9uKGNvbWJpbmVkLCB2YWx1ZSlcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge0NvbmZpZ30gY29tYmluZWRcbiAqIEBwYXJhbSB7RXh0ZW5zaW9ufSBleHRlbnNpb25cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBleHRlbnNpb24oY29tYmluZWQsIGV4dGVuc2lvbikge1xuICAvKiogQHR5cGUge2tleW9mIEV4dGVuc2lvbn0gKi9cbiAgbGV0IGtleVxuICBmb3IgKGtleSBpbiBleHRlbnNpb24pIHtcbiAgICBpZiAob3duLmNhbGwoZXh0ZW5zaW9uLCBrZXkpKSB7XG4gICAgICBpZiAoa2V5ID09PSAnY2FuQ29udGFpbkVvbHMnKSB7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gZXh0ZW5zaW9uW2tleV1cbiAgICAgICAgaWYgKHJpZ2h0KSB7XG4gICAgICAgICAgY29tYmluZWRba2V5XS5wdXNoKC4uLnJpZ2h0KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3RyYW5zZm9ybXMnKSB7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gZXh0ZW5zaW9uW2tleV1cbiAgICAgICAgaWYgKHJpZ2h0KSB7XG4gICAgICAgICAgY29tYmluZWRba2V5XS5wdXNoKC4uLnJpZ2h0KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ2VudGVyJyB8fCBrZXkgPT09ICdleGl0Jykge1xuICAgICAgICBjb25zdCByaWdodCA9IGV4dGVuc2lvbltrZXldXG4gICAgICAgIGlmIChyaWdodCkge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oY29tYmluZWRba2V5XSwgcmlnaHQpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqIEB0eXBlIHtPbkVudGVyRXJyb3J9ICovXG5mdW5jdGlvbiBkZWZhdWx0T25FcnJvcihsZWZ0LCByaWdodCkge1xuICBpZiAobGVmdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYW5ub3QgY2xvc2UgYCcgK1xuICAgICAgICBsZWZ0LnR5cGUgK1xuICAgICAgICAnYCAoJyArXG4gICAgICAgIHN0cmluZ2lmeVBvc2l0aW9uKHtcbiAgICAgICAgICBzdGFydDogbGVmdC5zdGFydCxcbiAgICAgICAgICBlbmQ6IGxlZnQuZW5kXG4gICAgICAgIH0pICtcbiAgICAgICAgJyk6IGEgZGlmZmVyZW50IHRva2VuIChgJyArXG4gICAgICAgIHJpZ2h0LnR5cGUgK1xuICAgICAgICAnYCwgJyArXG4gICAgICAgIHN0cmluZ2lmeVBvc2l0aW9uKHtcbiAgICAgICAgICBzdGFydDogcmlnaHQuc3RhcnQsXG4gICAgICAgICAgZW5kOiByaWdodC5lbmRcbiAgICAgICAgfSkgK1xuICAgICAgICAnKSBpcyBvcGVuJ1xuICAgIClcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQ2Fubm90IGNsb3NlIGRvY3VtZW50LCBhIHRva2VuIChgJyArXG4gICAgICAgIHJpZ2h0LnR5cGUgK1xuICAgICAgICAnYCwgJyArXG4gICAgICAgIHN0cmluZ2lmeVBvc2l0aW9uKHtcbiAgICAgICAgICBzdGFydDogcmlnaHQuc3RhcnQsXG4gICAgICAgICAgZW5kOiByaWdodC5lbmRcbiAgICAgICAgfSkgK1xuICAgICAgICAnKSBpcyBzdGlsbCBvcGVuJ1xuICAgIClcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5Sb290fSBSb290XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdC11dGlsLWZyb20tbWFya2Rvd24nKS5PcHRpb25zfSBPcHRpb25zXG4gKi9cblxuaW1wb3J0IHtmcm9tTWFya2Rvd259IGZyb20gJ21kYXN0LXV0aWwtZnJvbS1tYXJrZG93bidcblxuLyoqXG4gKiBAdGhpcyB7aW1wb3J0KCd1bmlmaWVkJykuUHJvY2Vzc29yfVxuICogQHR5cGUge2ltcG9ydCgndW5pZmllZCcpLlBsdWdpbjxbT3B0aW9ucz9dIHwgdm9pZFtdLCBzdHJpbmcsIFJvb3Q+fVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW1hcmtQYXJzZShvcHRpb25zKSB7XG4gIC8qKiBAdHlwZSB7aW1wb3J0KCd1bmlmaWVkJykuUGFyc2VyRnVuY3Rpb248Um9vdD59ICovXG4gIGNvbnN0IHBhcnNlciA9IChkb2MpID0+IHtcbiAgICAvLyBBc3N1bWUgb3B0aW9ucy5cbiAgICBjb25zdCBzZXR0aW5ncyA9IC8qKiBAdHlwZSB7T3B0aW9uc30gKi8gKHRoaXMuZGF0YSgnc2V0dGluZ3MnKSlcblxuICAgIHJldHVybiBmcm9tTWFya2Rvd24oXG4gICAgICBkb2MsXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCBzZXR0aW5ncywgb3B0aW9ucywge1xuICAgICAgICAvLyBOb3RlOiB0aGVzZSBvcHRpb25zIGFyZSBub3QgaW4gdGhlIHJlYWRtZS5cbiAgICAgICAgLy8gVGhlIGdvYWwgaXMgZm9yIHRoZW0gdG8gYmUgc2V0IGJ5IHBsdWdpbnMgb24gYGRhdGFgIGluc3RlYWQgb2YgYmVpbmdcbiAgICAgICAgLy8gcGFzc2VkIGJ5IHVzZXJzLlxuICAgICAgICBleHRlbnNpb25zOiB0aGlzLmRhdGEoJ21pY3JvbWFya0V4dGVuc2lvbnMnKSB8fCBbXSxcbiAgICAgICAgbWRhc3RFeHRlbnNpb25zOiB0aGlzLmRhdGEoJ2Zyb21NYXJrZG93bkV4dGVuc2lvbnMnKSB8fCBbXVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBPYmplY3QuYXNzaWduKHRoaXMsIHtQYXJzZXI6IHBhcnNlcn0pXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLk5vZGV9IE5vZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUGFyZW50fSBQYXJlbnRcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBGblxuICogQHRlbXBsYXRlIEZhbGxiYWNrXG4gKiBAdHlwZWRlZiB7Rm4gZXh0ZW5kcyAodmFsdWU6IGFueSkgPT4gdmFsdWUgaXMgaW5mZXIgVGhpbmcgPyBUaGluZyA6IEZhbGxiYWNrfSBQcmVkaWNhdGVcbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBDaGVja1xuICogICBDaGVjayB0aGF0IGFuIGFyYml0cmFyeSB2YWx1ZSBpcyBhIG5vZGUuXG4gKiBAcGFyYW0ge3Vua25vd259IHRoaXNcbiAqICAgVGhlIGdpdmVuIGNvbnRleHQuXG4gKiBAcGFyYW0ge3Vua25vd259IFtub2RlXVxuICogICBBbnl0aGluZyAodHlwaWNhbGx5IGEgbm9kZSkuXG4gKiBAcGFyYW0ge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IFtpbmRleF1cbiAqICAgVGhlIG5vZGVcdTIwMTlzIHBvc2l0aW9uIGluIGl0cyBwYXJlbnQuXG4gKiBAcGFyYW0ge1BhcmVudCB8IG51bGwgfCB1bmRlZmluZWR9IFtwYXJlbnRdXG4gKiAgIFRoZSBub2RlXHUyMDE5cyBwYXJlbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqICAgV2hldGhlciB0aGlzIGlzIGEgbm9kZSBhbmQgcGFzc2VzIGEgdGVzdC5cbiAqXG4gKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBOb2RlfSBQcm9wc1xuICogICBPYmplY3QgdG8gY2hlY2sgZm9yIGVxdWl2YWxlbmNlLlxuICpcbiAqICAgTm90ZTogYE5vZGVgIGlzIGluY2x1ZGVkIGFzIGl0IGlzIGNvbW1vbiBidXQgaXMgbm90IGluZGV4YWJsZS5cbiAqXG4gKiBAdHlwZWRlZiB7QXJyYXk8UHJvcHMgfCBUZXN0RnVuY3Rpb24gfCBzdHJpbmc+IHwgUHJvcHMgfCBUZXN0RnVuY3Rpb24gfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBUZXN0XG4gKiAgIENoZWNrIGZvciBhbiBhcmJpdHJhcnkgbm9kZS5cbiAqXG4gKiBAY2FsbGJhY2sgVGVzdEZ1bmN0aW9uXG4gKiAgIENoZWNrIGlmIGEgbm9kZSBwYXNzZXMgYSB0ZXN0LlxuICogQHBhcmFtIHt1bmtub3dufSB0aGlzXG4gKiAgIFRoZSBnaXZlbiBjb250ZXh0LlxuICogQHBhcmFtIHtOb2RlfSBub2RlXG4gKiAgIEEgbm9kZS5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBbaW5kZXhdXG4gKiAgIFRoZSBub2RlXHUyMDE5cyBwb3NpdGlvbiBpbiBpdHMgcGFyZW50LlxuICogQHBhcmFtIHtQYXJlbnQgfCB1bmRlZmluZWR9IFtwYXJlbnRdXG4gKiAgIFRoZSBub2RlXHUyMDE5cyBwYXJlbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbiB8IHVuZGVmaW5lZCB8IHZvaWR9XG4gKiAgIFdoZXRoZXIgdGhpcyBub2RlIHBhc3NlcyB0aGUgdGVzdC5cbiAqXG4gKiAgIE5vdGU6IGB2b2lkYCBpcyBpbmNsdWRlZCB1bnRpbCBUUyBzZWVzIG5vIHJldHVybiBhcyBgdW5kZWZpbmVkYC5cbiAqL1xuXG4vKipcbiAqIENoZWNrIGlmIGBub2RlYCBpcyBhIGBOb2RlYCBhbmQgd2hldGhlciBpdCBwYXNzZXMgdGhlIGdpdmVuIHRlc3QuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSBub2RlXG4gKiAgIFRoaW5nIHRvIGNoZWNrLCB0eXBpY2FsbHkgYE5vZGVgLlxuICogQHBhcmFtIHtUZXN0fSB0ZXN0XG4gKiAgIEEgY2hlY2sgZm9yIGEgc3BlY2lmaWMgbm9kZS5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZH0gaW5kZXhcbiAqICAgVGhlIG5vZGVcdTIwMTlzIHBvc2l0aW9uIGluIGl0cyBwYXJlbnQuXG4gKiBAcGFyYW0ge1BhcmVudCB8IG51bGwgfCB1bmRlZmluZWR9IHBhcmVudFxuICogICBUaGUgbm9kZVx1MjAxOXMgcGFyZW50LlxuICogQHBhcmFtIHt1bmtub3dufSBjb250ZXh0XG4gKiAgIENvbnRleHQgb2JqZWN0IChgdGhpc2ApIHRvIHBhc3MgdG8gYHRlc3RgIGZ1bmN0aW9ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIGBub2RlYCBpcyBhIG5vZGUgYW5kIHBhc3NlcyBhIHRlc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBpcyA9XG4gIC8vIE5vdGU6IG92ZXJsb2FkcyBpbiBKU0RvYyBjYW5cdTIwMTl0IHlldCB1c2UgZGlmZmVyZW50IGBAdGVtcGxhdGVgcy5cbiAgLyoqXG4gICAqIEB0eXBlIHsoXG4gICAqICAgKDxDb25kaXRpb24gZXh0ZW5kcyBzdHJpbmc+KG5vZGU6IHVua25vd24sIHRlc3Q6IENvbmRpdGlvbiwgaW5kZXg/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXJlbnQ/OiBQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBjb250ZXh0PzogdW5rbm93bikgPT4gbm9kZSBpcyBOb2RlICYge3R5cGU6IENvbmRpdGlvbn0pICZcbiAgICogICAoPENvbmRpdGlvbiBleHRlbmRzIFByb3BzPihub2RlOiB1bmtub3duLCB0ZXN0OiBDb25kaXRpb24sIGluZGV4PzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgcGFyZW50PzogUGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZCwgY29udGV4dD86IHVua25vd24pID0+IG5vZGUgaXMgTm9kZSAmIENvbmRpdGlvbikgJlxuICAgKiAgICg8Q29uZGl0aW9uIGV4dGVuZHMgVGVzdEZ1bmN0aW9uPihub2RlOiB1bmtub3duLCB0ZXN0OiBDb25kaXRpb24sIGluZGV4PzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgcGFyZW50PzogUGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZCwgY29udGV4dD86IHVua25vd24pID0+IG5vZGUgaXMgTm9kZSAmIFByZWRpY2F0ZTxDb25kaXRpb24sIE5vZGU+KSAmXG4gICAqICAgKChub2RlPzogbnVsbCB8IHVuZGVmaW5lZCkgPT4gZmFsc2UpICZcbiAgICogICAoKG5vZGU6IHVua25vd24sIHRlc3Q/OiBudWxsIHwgdW5kZWZpbmVkLCBpbmRleD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIHBhcmVudD86IFBhcmVudCB8IG51bGwgfCB1bmRlZmluZWQsIGNvbnRleHQ/OiB1bmtub3duKSA9PiBub2RlIGlzIE5vZGUpICZcbiAgICogICAoKG5vZGU6IHVua25vd24sIHRlc3Q/OiBUZXN0LCBpbmRleD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIHBhcmVudD86IFBhcmVudCB8IG51bGwgfCB1bmRlZmluZWQsIGNvbnRleHQ/OiB1bmtub3duKSA9PiBib29sZWFuKVxuICAgKiApfVxuICAgKi9cbiAgKFxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7dW5rbm93bn0gW25vZGVdXG4gICAgICogQHBhcmFtIHtUZXN0fSBbdGVzdF1cbiAgICAgKiBAcGFyYW0ge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IFtpbmRleF1cbiAgICAgKiBAcGFyYW0ge1BhcmVudCB8IG51bGwgfCB1bmRlZmluZWR9IFtwYXJlbnRdXG4gICAgICogQHBhcmFtIHt1bmtub3dufSBbY29udGV4dF1cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXBhcmFtc1xuICAgIGZ1bmN0aW9uIChub2RlLCB0ZXN0LCBpbmRleCwgcGFyZW50LCBjb250ZXh0KSB7XG4gICAgICBjb25zdCBjaGVjayA9IGNvbnZlcnQodGVzdClcblxuICAgICAgaWYgKFxuICAgICAgICBpbmRleCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIGluZGV4ICE9PSBudWxsICYmXG4gICAgICAgICh0eXBlb2YgaW5kZXggIT09ICdudW1iZXInIHx8XG4gICAgICAgICAgaW5kZXggPCAwIHx8XG4gICAgICAgICAgaW5kZXggPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSlcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHBvc2l0aXZlIGZpbml0ZSBpbmRleCcpXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgcGFyZW50ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgcGFyZW50ICE9PSBudWxsICYmXG4gICAgICAgICghaXMocGFyZW50KSB8fCAhcGFyZW50LmNoaWxkcmVuKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgcGFyZW50IG5vZGUnKVxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIChwYXJlbnQgPT09IHVuZGVmaW5lZCB8fCBwYXJlbnQgPT09IG51bGwpICE9PVxuICAgICAgICAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpbmRleCA9PT0gbnVsbClcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGJvdGggcGFyZW50IGFuZCBpbmRleCcpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsb29rc0xpa2VBTm9kZShub2RlKVxuICAgICAgICA/IGNoZWNrLmNhbGwoY29udGV4dCwgbm9kZSwgaW5kZXgsIHBhcmVudClcbiAgICAgICAgOiBmYWxzZVxuICAgIH1cbiAgKVxuXG4vKipcbiAqIEdlbmVyYXRlIGFuIGFzc2VydGlvbiBmcm9tIGEgdGVzdC5cbiAqXG4gKiBVc2VmdWwgaWYgeW91XHUyMDE5cmUgZ29pbmcgdG8gdGVzdCBtYW55IG5vZGVzLCBmb3IgZXhhbXBsZSB3aGVuIGNyZWF0aW5nIGFcbiAqIHV0aWxpdHkgd2hlcmUgc29tZXRoaW5nIGVsc2UgcGFzc2VzIGEgY29tcGF0aWJsZSB0ZXN0LlxuICpcbiAqIFRoZSBjcmVhdGVkIGZ1bmN0aW9uIGlzIGEgYml0IGZhc3RlciBiZWNhdXNlIGl0IGV4cGVjdHMgdmFsaWQgaW5wdXQgb25seTpcbiAqIGEgYG5vZGVgLCBgaW5kZXhgLCBhbmQgYHBhcmVudGAuXG4gKlxuICogQHBhcmFtIHtUZXN0fSB0ZXN0XG4gKiAgICogICB3aGVuIG51bGxpc2gsIGNoZWNrcyBpZiBgbm9kZWAgaXMgYSBgTm9kZWAuXG4gKiAgICogICB3aGVuIGBzdHJpbmdgLCB3b3JrcyBsaWtlIHBhc3NpbmcgYChub2RlKSA9PiBub2RlLnR5cGUgPT09IHRlc3RgLlxuICogICAqICAgd2hlbiBgZnVuY3Rpb25gIGNoZWNrcyBpZiBmdW5jdGlvbiBwYXNzZWQgdGhlIG5vZGUgaXMgdHJ1ZS5cbiAqICAgKiAgIHdoZW4gYG9iamVjdGAsIGNoZWNrcyB0aGF0IGFsbCBrZXlzIGluIHRlc3QgYXJlIGluIG5vZGUsIGFuZCB0aGF0IHRoZXkgaGF2ZSAoc3RyaWN0bHkpIGVxdWFsIHZhbHVlcy5cbiAqICAgKiAgIHdoZW4gYGFycmF5YCwgY2hlY2tzIGlmIGFueSBvbmUgb2YgdGhlIHN1YnRlc3RzIHBhc3MuXG4gKiBAcmV0dXJucyB7Q2hlY2t9XG4gKiAgIEFuIGFzc2VydGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbnZlcnQgPVxuICAvLyBOb3RlOiBvdmVybG9hZHMgaW4gSlNEb2MgY2FuXHUyMDE5dCB5ZXQgdXNlIGRpZmZlcmVudCBgQHRlbXBsYXRlYHMuXG4gIC8qKlxuICAgKiBAdHlwZSB7KFxuICAgKiAgICg8Q29uZGl0aW9uIGV4dGVuZHMgc3RyaW5nPih0ZXN0OiBDb25kaXRpb24pID0+IChub2RlOiB1bmtub3duLCBpbmRleD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIHBhcmVudD86IFBhcmVudCB8IG51bGwgfCB1bmRlZmluZWQsIGNvbnRleHQ/OiB1bmtub3duKSA9PiBub2RlIGlzIE5vZGUgJiB7dHlwZTogQ29uZGl0aW9ufSkgJlxuICAgKiAgICg8Q29uZGl0aW9uIGV4dGVuZHMgUHJvcHM+KHRlc3Q6IENvbmRpdGlvbikgPT4gKG5vZGU6IHVua25vd24sIGluZGV4PzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgcGFyZW50PzogUGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZCwgY29udGV4dD86IHVua25vd24pID0+IG5vZGUgaXMgTm9kZSAmIENvbmRpdGlvbikgJlxuICAgKiAgICg8Q29uZGl0aW9uIGV4dGVuZHMgVGVzdEZ1bmN0aW9uPih0ZXN0OiBDb25kaXRpb24pID0+IChub2RlOiB1bmtub3duLCBpbmRleD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIHBhcmVudD86IFBhcmVudCB8IG51bGwgfCB1bmRlZmluZWQsIGNvbnRleHQ/OiB1bmtub3duKSA9PiBub2RlIGlzIE5vZGUgJiBQcmVkaWNhdGU8Q29uZGl0aW9uLCBOb2RlPikgJlxuICAgKiAgICgodGVzdD86IG51bGwgfCB1bmRlZmluZWQpID0+IChub2RlPzogdW5rbm93biwgaW5kZXg/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXJlbnQ/OiBQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBjb250ZXh0PzogdW5rbm93bikgPT4gbm9kZSBpcyBOb2RlKSAmXG4gICAqICAgKCh0ZXN0PzogVGVzdCkgPT4gQ2hlY2spXG4gICAqICl9XG4gICAqL1xuICAoXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtUZXN0fSBbdGVzdF1cbiAgICAgKiBAcmV0dXJucyB7Q2hlY2t9XG4gICAgICovXG4gICAgZnVuY3Rpb24gKHRlc3QpIHtcbiAgICAgIGlmICh0ZXN0ID09PSBudWxsIHx8IHRlc3QgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gb2tcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB0ZXN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBjYXN0RmFjdG9yeSh0ZXN0KVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRlc3QgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHRlc3QpID8gYW55RmFjdG9yeSh0ZXN0KSA6IHByb3BzRmFjdG9yeSh0ZXN0KVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRlc3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB0eXBlRmFjdG9yeSh0ZXN0KVxuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGZ1bmN0aW9uLCBzdHJpbmcsIG9yIG9iamVjdCBhcyB0ZXN0JylcbiAgICB9XG4gIClcblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5PFByb3BzIHwgVGVzdEZ1bmN0aW9uIHwgc3RyaW5nPn0gdGVzdHNcbiAqIEByZXR1cm5zIHtDaGVja31cbiAqL1xuZnVuY3Rpb24gYW55RmFjdG9yeSh0ZXN0cykge1xuICAvKiogQHR5cGUge0FycmF5PENoZWNrPn0gKi9cbiAgY29uc3QgY2hlY2tzID0gW11cbiAgbGV0IGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IHRlc3RzLmxlbmd0aCkge1xuICAgIGNoZWNrc1tpbmRleF0gPSBjb252ZXJ0KHRlc3RzW2luZGV4XSlcbiAgfVxuXG4gIHJldHVybiBjYXN0RmFjdG9yeShhbnkpXG5cbiAgLyoqXG4gICAqIEB0aGlzIHt1bmtub3dufVxuICAgKiBAdHlwZSB7VGVzdEZ1bmN0aW9ufVxuICAgKi9cbiAgZnVuY3Rpb24gYW55KC4uLnBhcmFtZXRlcnMpIHtcbiAgICBsZXQgaW5kZXggPSAtMVxuXG4gICAgd2hpbGUgKCsraW5kZXggPCBjaGVja3MubGVuZ3RoKSB7XG4gICAgICBpZiAoY2hlY2tzW2luZGV4XS5hcHBseSh0aGlzLCBwYXJhbWV0ZXJzKSkgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vKipcbiAqIFR1cm4gYW4gb2JqZWN0IGludG8gYSB0ZXN0IGZvciBhIG5vZGUgd2l0aCBhIGNlcnRhaW4gZmllbGRzLlxuICpcbiAqIEBwYXJhbSB7UHJvcHN9IGNoZWNrXG4gKiBAcmV0dXJucyB7Q2hlY2t9XG4gKi9cbmZ1bmN0aW9uIHByb3BzRmFjdG9yeShjaGVjaykge1xuICBjb25zdCBjaGVja0FzUmVjb3JkID0gLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gKi8gKGNoZWNrKVxuXG4gIHJldHVybiBjYXN0RmFjdG9yeShhbGwpXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tm9kZX0gbm9kZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIGZ1bmN0aW9uIGFsbChub2RlKSB7XG4gICAgY29uc3Qgbm9kZUFzUmVjb3JkID0gLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gKi8gKFxuICAgICAgLyoqIEB0eXBlIHt1bmtub3dufSAqLyAobm9kZSlcbiAgICApXG5cbiAgICAvKiogQHR5cGUge3N0cmluZ30gKi9cbiAgICBsZXQga2V5XG5cbiAgICBmb3IgKGtleSBpbiBjaGVjaykge1xuICAgICAgaWYgKG5vZGVBc1JlY29yZFtrZXldICE9PSBjaGVja0FzUmVjb3JkW2tleV0pIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cbn1cblxuLyoqXG4gKiBUdXJuIGEgc3RyaW5nIGludG8gYSB0ZXN0IGZvciBhIG5vZGUgd2l0aCBhIGNlcnRhaW4gdHlwZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gY2hlY2tcbiAqIEByZXR1cm5zIHtDaGVja31cbiAqL1xuZnVuY3Rpb24gdHlwZUZhY3RvcnkoY2hlY2spIHtcbiAgcmV0dXJuIGNhc3RGYWN0b3J5KHR5cGUpXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tm9kZX0gbm9kZVxuICAgKi9cbiAgZnVuY3Rpb24gdHlwZShub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUgJiYgbm9kZS50eXBlID09PSBjaGVja1xuICB9XG59XG5cbi8qKlxuICogVHVybiBhIGN1c3RvbSB0ZXN0IGludG8gYSB0ZXN0IGZvciBhIG5vZGUgdGhhdCBwYXNzZXMgdGhhdCB0ZXN0LlxuICpcbiAqIEBwYXJhbSB7VGVzdEZ1bmN0aW9ufSB0ZXN0RnVuY3Rpb25cbiAqIEByZXR1cm5zIHtDaGVja31cbiAqL1xuZnVuY3Rpb24gY2FzdEZhY3RvcnkodGVzdEZ1bmN0aW9uKSB7XG4gIHJldHVybiBjaGVja1xuXG4gIC8qKlxuICAgKiBAdGhpcyB7dW5rbm93bn1cbiAgICogQHR5cGUge0NoZWNrfVxuICAgKi9cbiAgZnVuY3Rpb24gY2hlY2sodmFsdWUsIGluZGV4LCBwYXJlbnQpIHtcbiAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgIGxvb2tzTGlrZUFOb2RlKHZhbHVlKSAmJlxuICAgICAgICB0ZXN0RnVuY3Rpb24uY2FsbChcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIHR5cGVvZiBpbmRleCA9PT0gJ251bWJlcicgPyBpbmRleCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwYXJlbnQgfHwgdW5kZWZpbmVkXG4gICAgICAgIClcbiAgICApXG4gIH1cbn1cblxuZnVuY3Rpb24gb2soKSB7XG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZVxuICogQHJldHVybnMge3ZhbHVlIGlzIE5vZGV9XG4gKi9cbmZ1bmN0aW9uIGxvb2tzTGlrZUFOb2RlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICd0eXBlJyBpbiB2YWx1ZVxufVxuIiwgIi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xvcihkKSB7XG4gIHJldHVybiBkXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLk5vZGV9IFVuaXN0Tm9kZVxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5QYXJlbnR9IFVuaXN0UGFyZW50XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7RXhjbHVkZTxpbXBvcnQoJ3VuaXN0LXV0aWwtaXMnKS5UZXN0LCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkfSBUZXN0XG4gKiAgIFRlc3QgZnJvbSBgdW5pc3QtdXRpbC1pc2AuXG4gKlxuICogICBOb3RlOiB3ZSBoYXZlIHJlbW92ZSBhbmQgYWRkIGB1bmRlZmluZWRgLCBiZWNhdXNlIG90aGVyd2lzZSB3aGVuIGdlbmVyYXRpbmdcbiAqICAgYXV0b21hdGljIGAuZC50c2AgZmlsZXMsIFRTIHRyaWVzIHRvIGZsYXR0ZW4gcGF0aHMgZnJvbSBhIGxvY2FsIHBlcnNwZWN0aXZlLFxuICogICB3aGljaCBkb2Vzblx1MjAxOXQgd29yayB3aGVuIHB1Ymxpc2hpbmcgb24gbnBtLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgRm4gZXh0ZW5kcyAodmFsdWU6IGFueSkgPT4gdmFsdWUgaXMgaW5mZXIgVGhpbmdcbiAqICAgPyBUaGluZ1xuICogICA6IEZhbGxiYWNrXG4gKiApfSBQcmVkaWNhdGVcbiAqICAgR2V0IHRoZSB2YWx1ZSBvZiBhIHR5cGUgZ3VhcmQgYEZuYC5cbiAqIEB0ZW1wbGF0ZSBGblxuICogICBWYWx1ZTsgdHlwaWNhbGx5IGZ1bmN0aW9uIHRoYXQgaXMgYSB0eXBlIGd1YXJkIChzdWNoIGFzIGAoeCk6IHggaXMgWWApLlxuICogQHRlbXBsYXRlIEZhbGxiYWNrXG4gKiAgIFZhbHVlIHRvIHlpZWxkIGlmIGBGbmAgaXMgbm90IGEgdHlwZSBndWFyZC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIENoZWNrIGV4dGVuZHMgbnVsbCB8IHVuZGVmaW5lZCAvLyBObyB0ZXN0LlxuICogICA/IFZhbHVlXG4gKiAgIDogVmFsdWUgZXh0ZW5kcyB7dHlwZTogQ2hlY2t9IC8vIFN0cmluZyAodHlwZSkgdGVzdC5cbiAqICAgPyBWYWx1ZVxuICogICA6IFZhbHVlIGV4dGVuZHMgQ2hlY2sgLy8gUGFydGlhbCB0ZXN0LlxuICogICA/IFZhbHVlXG4gKiAgIDogQ2hlY2sgZXh0ZW5kcyBGdW5jdGlvbiAvLyBGdW5jdGlvbiB0ZXN0LlxuICogICA/IFByZWRpY2F0ZTxDaGVjaywgVmFsdWU+IGV4dGVuZHMgVmFsdWVcbiAqICAgICA/IFByZWRpY2F0ZTxDaGVjaywgVmFsdWU+XG4gKiAgICAgOiBuZXZlclxuICogICA6IG5ldmVyIC8vIFNvbWUgb3RoZXIgdGVzdD9cbiAqICl9IE1hdGNoZXNPbmVcbiAqICAgQ2hlY2sgd2hldGhlciBhIG5vZGUgbWF0Y2hlcyBhIHByaW1pdGl2ZSBjaGVjayBpbiB0aGUgdHlwZSBzeXN0ZW0uXG4gKiBAdGVtcGxhdGUgVmFsdWVcbiAqICAgVmFsdWU7IHR5cGljYWxseSB1bmlzdCBgTm9kZWAuXG4gKiBAdGVtcGxhdGUgQ2hlY2tcbiAqICAgVmFsdWU7IHR5cGljYWxseSBgdW5pc3QtdXRpbC1pc2AtY29tcGF0aWJsZSB0ZXN0LCBidXQgbm90IGFycmF5cy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIENoZWNrIGV4dGVuZHMgQXJyYXk8YW55PlxuICogICA/IE1hdGNoZXNPbmU8VmFsdWUsIENoZWNrW2tleW9mIENoZWNrXT5cbiAqICAgOiBNYXRjaGVzT25lPFZhbHVlLCBDaGVjaz5cbiAqICl9IE1hdGNoZXNcbiAqICAgQ2hlY2sgd2hldGhlciBhIG5vZGUgbWF0Y2hlcyBhIGNoZWNrIGluIHRoZSB0eXBlIHN5c3RlbS5cbiAqIEB0ZW1wbGF0ZSBWYWx1ZVxuICogICBWYWx1ZTsgdHlwaWNhbGx5IHVuaXN0IGBOb2RlYC5cbiAqIEB0ZW1wbGF0ZSBDaGVja1xuICogICBWYWx1ZTsgdHlwaWNhbGx5IGB1bmlzdC11dGlsLWlzYC1jb21wYXRpYmxlIHRlc3QuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7MCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiB8IDcgfCA4IHwgOSB8IDEwfSBVaW50XG4gKiAgIE51bWJlcjsgY2FwcGVkIHJlYXNvbmFibHkuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7SSBleHRlbmRzIDAgPyAxIDogSSBleHRlbmRzIDEgPyAyIDogSSBleHRlbmRzIDIgPyAzIDogSSBleHRlbmRzIDMgPyA0IDogSSBleHRlbmRzIDQgPyA1IDogSSBleHRlbmRzIDUgPyA2IDogSSBleHRlbmRzIDYgPyA3IDogSSBleHRlbmRzIDcgPyA4IDogSSBleHRlbmRzIDggPyA5IDogMTB9IEluY3JlbWVudFxuICogICBJbmNyZW1lbnQgYSBudW1iZXIgaW4gdGhlIHR5cGUgc3lzdGVtLlxuICogQHRlbXBsYXRlIHtVaW50fSBbST0wXVxuICogICBJbmRleC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIE5vZGUgZXh0ZW5kcyBVbmlzdFBhcmVudFxuICogICA/IE5vZGUgZXh0ZW5kcyB7Y2hpbGRyZW46IEFycmF5PGluZmVyIENoaWxkcmVuPn1cbiAqICAgICA/IENoaWxkIGV4dGVuZHMgQ2hpbGRyZW4gPyBOb2RlIDogbmV2ZXJcbiAqICAgICA6IG5ldmVyXG4gKiAgIDogbmV2ZXJcbiAqICl9IEludGVybmFsUGFyZW50XG4gKiAgIENvbGxlY3Qgbm9kZXMgdGhhdCBjYW4gYmUgcGFyZW50cyBvZiBgQ2hpbGRgLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IE5vZGVcbiAqICAgQWxsIG5vZGUgdHlwZXMgaW4gYSB0cmVlLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IENoaWxkXG4gKiAgIE5vZGUgdG8gc2VhcmNoIGZvci5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtJbnRlcm5hbFBhcmVudDxJbmNsdXNpdmVEZXNjZW5kYW50PFRyZWU+LCBDaGlsZD59IFBhcmVudFxuICogICBDb2xsZWN0IG5vZGVzIGluIGBUcmVlYCB0aGF0IGNhbiBiZSBwYXJlbnRzIG9mIGBDaGlsZGAuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gVHJlZVxuICogICBBbGwgbm9kZSB0eXBlcyBpbiBhIHRyZWUuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gQ2hpbGRcbiAqICAgTm9kZSB0byBzZWFyY2ggZm9yLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgRGVwdGggZXh0ZW5kcyBNYXhcbiAqICAgPyBuZXZlclxuICogICA6XG4gKiAgICAgfCBJbnRlcm5hbFBhcmVudDxOb2RlLCBDaGlsZD5cbiAqICAgICB8IEludGVybmFsQW5jZXN0b3I8Tm9kZSwgSW50ZXJuYWxQYXJlbnQ8Tm9kZSwgQ2hpbGQ+LCBNYXgsIEluY3JlbWVudDxEZXB0aD4+XG4gKiApfSBJbnRlcm5hbEFuY2VzdG9yXG4gKiAgIENvbGxlY3Qgbm9kZXMgaW4gYFRyZWVgIHRoYXQgY2FuIGJlIGFuY2VzdG9ycyBvZiBgQ2hpbGRgLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IE5vZGVcbiAqICAgQWxsIG5vZGUgdHlwZXMgaW4gYSB0cmVlLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IENoaWxkXG4gKiAgIE5vZGUgdG8gc2VhcmNoIGZvci5cbiAqIEB0ZW1wbGF0ZSB7VWludH0gW01heD0xMF1cbiAqICAgTWF4OyBzZWFyY2hlcyB1cCB0byB0aGlzIGRlcHRoLlxuICogQHRlbXBsYXRlIHtVaW50fSBbRGVwdGg9MF1cbiAqICAgQ3VycmVudCBkZXB0aC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtJbnRlcm5hbEFuY2VzdG9yPEluY2x1c2l2ZURlc2NlbmRhbnQ8VHJlZT4sIENoaWxkPn0gQW5jZXN0b3JcbiAqICAgQ29sbGVjdCBub2RlcyBpbiBgVHJlZWAgdGhhdCBjYW4gYmUgYW5jZXN0b3JzIG9mIGBDaGlsZGAuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gVHJlZVxuICogICBBbGwgbm9kZSB0eXBlcyBpbiBhIHRyZWUuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gQ2hpbGRcbiAqICAgTm9kZSB0byBzZWFyY2ggZm9yLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgVHJlZSBleHRlbmRzIFVuaXN0UGFyZW50XG4gKiAgICAgPyBEZXB0aCBleHRlbmRzIE1heFxuICogICAgICAgPyBUcmVlXG4gKiAgICAgICA6IFRyZWUgfCBJbmNsdXNpdmVEZXNjZW5kYW50PFRyZWVbJ2NoaWxkcmVuJ11bbnVtYmVyXSwgTWF4LCBJbmNyZW1lbnQ8RGVwdGg+PlxuICogICAgIDogVHJlZVxuICogKX0gSW5jbHVzaXZlRGVzY2VuZGFudFxuICogICBDb2xsZWN0IGFsbCAoaW5jbHVzaXZlKSBkZXNjZW5kYW50cyBvZiBgVHJlZWAuXG4gKlxuICogICA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGZhc3Rlc3Qgd2F5IHRvXG4gKiAgID4gcmVjdXJzZSB3aXRob3V0IGFjdHVhbGx5IHJ1bm5pbmcgaW50byBhbiBpbmZpbml0ZSBsb29wLCB3aGljaCB0aGVcbiAqICAgPiBwcmV2aW91cyB2ZXJzaW9uIGRpZC5cbiAqICAgPlxuICogICA+IFByYWN0aWNhbGx5LCBhIG1heCBvZiBgMmAgaXMgdHlwaWNhbGx5IGVub3VnaCBhc3N1bWluZyBhIGBSb290YCBpc1xuICogICA+IHBhc3NlZCwgYnV0IGl0IGRvZXNuXHUyMDE5dCBpbXByb3ZlIHBlcmZvcm1hbmNlLlxuICogICA+IEl0IGdldHMgaGlnaGVyIHdpdGggYExpc3QgPiBMaXN0SXRlbSA+IFRhYmxlID4gVGFibGVSb3cgPiBUYWJsZUNlbGxgLlxuICogICA+IFVzaW5nIHVwIHRvIGAxMGAgZG9lc25cdTIwMTl0IGh1cnQgb3IgaGVscCBlaXRoZXIuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gVHJlZVxuICogICBUcmVlIHR5cGUuXG4gKiBAdGVtcGxhdGUge1VpbnR9IFtNYXg9MTBdXG4gKiAgIE1heDsgc2VhcmNoZXMgdXAgdG8gdGhpcyBkZXB0aC5cbiAqIEB0ZW1wbGF0ZSB7VWludH0gW0RlcHRoPTBdXG4gKiAgIEN1cnJlbnQgZGVwdGguXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7J3NraXAnIHwgYm9vbGVhbn0gQWN0aW9uXG4gKiAgIFVuaW9uIG9mIHRoZSBhY3Rpb24gdHlwZXMuXG4gKlxuICogQHR5cGVkZWYge251bWJlcn0gSW5kZXhcbiAqICAgTW92ZSB0byB0aGUgc2libGluZyBhdCBgaW5kZXhgIG5leHQgKGFmdGVyIG5vZGUgaXRzZWxmIGlzIGNvbXBsZXRlbHlcbiAqICAgdHJhdmVyc2VkKS5cbiAqXG4gKiAgIFVzZWZ1bCBpZiBtdXRhdGluZyB0aGUgdHJlZSwgc3VjaCBhcyByZW1vdmluZyB0aGUgbm9kZSB0aGUgdmlzaXRvciBpc1xuICogICBjdXJyZW50bHkgb24sIG9yIGFueSBvZiBpdHMgcHJldmlvdXMgc2libGluZ3MuXG4gKiAgIFJlc3VsdHMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGBjaGlsZHJlbi5sZW5ndGhgIHN0b3BcbiAqICAgdHJhdmVyc2luZyB0aGUgcGFyZW50LlxuICpcbiAqIEB0eXBlZGVmIHtbKEFjdGlvbiB8IG51bGwgfCB1bmRlZmluZWQgfCB2b2lkKT8sIChJbmRleCB8IG51bGwgfCB1bmRlZmluZWQpP119IEFjdGlvblR1cGxlXG4gKiAgIExpc3Qgd2l0aCBvbmUgb3IgdHdvIHZhbHVlcywgdGhlIGZpcnN0IGFuIGFjdGlvbiwgdGhlIHNlY29uZCBhbiBpbmRleC5cbiAqXG4gKiBAdHlwZWRlZiB7QWN0aW9uIHwgQWN0aW9uVHVwbGUgfCBJbmRleCB8IG51bGwgfCB1bmRlZmluZWQgfCB2b2lkfSBWaXNpdG9yUmVzdWx0XG4gKiAgIEFueSB2YWx1ZSB0aGF0IGNhbiBiZSByZXR1cm5lZCBmcm9tIGEgdmlzaXRvci5cbiAqL1xuXG4vKipcbiAqIEBjYWxsYmFjayBWaXNpdG9yXG4gKiAgIEhhbmRsZSBhIG5vZGUgKG1hdGNoaW5nIGB0ZXN0YCwgaWYgZ2l2ZW4pLlxuICpcbiAqICAgVmlzaXRvcnMgYXJlIGZyZWUgdG8gdHJhbnNmb3JtIGBub2RlYC5cbiAqICAgVGhleSBjYW4gYWxzbyB0cmFuc2Zvcm0gdGhlIHBhcmVudCBvZiBub2RlICh0aGUgbGFzdCBvZiBgYW5jZXN0b3JzYCkuXG4gKlxuICogICBSZXBsYWNpbmcgYG5vZGVgIGl0c2VsZiwgaWYgYFNLSVBgIGlzIG5vdCByZXR1cm5lZCwgc3RpbGwgY2F1c2VzIGl0c1xuICogICBkZXNjZW5kYW50cyB0byBiZSB3YWxrZWQgKHdoaWNoIGlzIGEgYnVnKS5cbiAqXG4gKiAgIFdoZW4gYWRkaW5nIG9yIHJlbW92aW5nIHByZXZpb3VzIHNpYmxpbmdzIG9mIGBub2RlYCAob3IgbmV4dCBzaWJsaW5ncywgaW5cbiAqICAgY2FzZSBvZiByZXZlcnNlKSwgdGhlIGBWaXNpdG9yYCBzaG91bGQgcmV0dXJuIGEgbmV3IGBJbmRleGAgdG8gc3BlY2lmeSB0aGVcbiAqICAgc2libGluZyB0byB0cmF2ZXJzZSBhZnRlciBgbm9kZWAgaXMgdHJhdmVyc2VkLlxuICogICBBZGRpbmcgb3IgcmVtb3ZpbmcgbmV4dCBzaWJsaW5ncyBvZiBgbm9kZWAgKG9yIHByZXZpb3VzIHNpYmxpbmdzLCBpbiBjYXNlXG4gKiAgIG9mIHJldmVyc2UpIGlzIGhhbmRsZWQgYXMgZXhwZWN0ZWQgd2l0aG91dCBuZWVkaW5nIHRvIHJldHVybiBhIG5ldyBgSW5kZXhgLlxuICpcbiAqICAgUmVtb3ZpbmcgdGhlIGNoaWxkcmVuIHByb3BlcnR5IG9mIGFuIGFuY2VzdG9yIHN0aWxsIHJlc3VsdHMgaW4gdGhlbSBiZWluZ1xuICogICB0cmF2ZXJzZWQuXG4gKiBAcGFyYW0ge1Zpc2l0ZWR9IG5vZGVcbiAqICAgRm91bmQgbm9kZS5cbiAqIEBwYXJhbSB7QXJyYXk8VmlzaXRlZFBhcmVudHM+fSBhbmNlc3RvcnNcbiAqICAgQW5jZXN0b3JzIG9mIGBub2RlYC5cbiAqIEByZXR1cm5zIHtWaXNpdG9yUmVzdWx0fVxuICogICBXaGF0IHRvIGRvIG5leHQuXG4gKlxuICogICBBbiBgSW5kZXhgIGlzIHRyZWF0ZWQgYXMgYSB0dXBsZSBvZiBgW0NPTlRJTlVFLCBJbmRleF1gLlxuICogICBBbiBgQWN0aW9uYCBpcyB0cmVhdGVkIGFzIGEgdHVwbGUgb2YgYFtBY3Rpb25dYC5cbiAqXG4gKiAgIFBhc3NpbmcgYSB0dXBsZSBiYWNrIG9ubHkgbWFrZXMgc2Vuc2UgaWYgdGhlIGBBY3Rpb25gIGlzIGBTS0lQYC5cbiAqICAgV2hlbiB0aGUgYEFjdGlvbmAgaXMgYEVYSVRgLCB0aGF0IGFjdGlvbiBjYW4gYmUgcmV0dXJuZWQuXG4gKiAgIFdoZW4gdGhlIGBBY3Rpb25gIGlzIGBDT05USU5VRWAsIGBJbmRleGAgY2FuIGJlIHJldHVybmVkLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFtWaXNpdGVkPVVuaXN0Tm9kZV1cbiAqICAgVmlzaXRlZCBub2RlIHR5cGUuXG4gKiBAdGVtcGxhdGUge1VuaXN0UGFyZW50fSBbVmlzaXRlZFBhcmVudHM9VW5pc3RQYXJlbnRdXG4gKiAgIEFuY2VzdG9yIHR5cGUuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7VmlzaXRvcjxNYXRjaGVzPEluY2x1c2l2ZURlc2NlbmRhbnQ8VHJlZT4sIENoZWNrPiwgQW5jZXN0b3I8VHJlZSwgTWF0Y2hlczxJbmNsdXNpdmVEZXNjZW5kYW50PFRyZWU+LCBDaGVjaz4+Pn0gQnVpbGRWaXNpdG9yXG4gKiAgIEJ1aWxkIGEgdHlwZWQgYFZpc2l0b3JgIGZ1bmN0aW9uIGZyb20gYSB0cmVlIGFuZCBhIHRlc3QuXG4gKlxuICogICBJdCB3aWxsIGluZmVyIHdoaWNoIHZhbHVlcyBhcmUgcGFzc2VkIGFzIGBub2RlYCBhbmQgd2hpY2ggYXMgYHBhcmVudHNgLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFtUcmVlPVVuaXN0Tm9kZV1cbiAqICAgVHJlZSB0eXBlLlxuICogQHRlbXBsYXRlIHtUZXN0fSBbQ2hlY2s9VGVzdF1cbiAqICAgVGVzdCB0eXBlLlxuICovXG5cbmltcG9ydCB7Y29udmVydH0gZnJvbSAndW5pc3QtdXRpbC1pcydcbmltcG9ydCB7Y29sb3J9IGZyb20gJ3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9kby1ub3QtdXNlLWNvbG9yJ1xuXG4vKiogQHR5cGUge1JlYWRvbmx5PEFjdGlvblR1cGxlPn0gKi9cbmNvbnN0IGVtcHR5ID0gW11cblxuLyoqXG4gKiBDb250aW51ZSB0cmF2ZXJzaW5nIGFzIG5vcm1hbC5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTlRJTlVFID0gdHJ1ZVxuXG4vKipcbiAqIFN0b3AgdHJhdmVyc2luZyBpbW1lZGlhdGVseS5cbiAqL1xuZXhwb3J0IGNvbnN0IEVYSVQgPSBmYWxzZVxuXG4vKipcbiAqIERvIG5vdCB0cmF2ZXJzZSB0aGlzIG5vZGVcdTIwMTlzIGNoaWxkcmVuLlxuICovXG5leHBvcnQgY29uc3QgU0tJUCA9ICdza2lwJ1xuXG4vKipcbiAqIFZpc2l0IG5vZGVzLCB3aXRoIGFuY2VzdHJhbCBpbmZvcm1hdGlvbi5cbiAqXG4gKiBUaGlzIGFsZ29yaXRobSBwZXJmb3JtcyAqZGVwdGgtZmlyc3QqICp0cmVlIHRyYXZlcnNhbCogaW4gKnByZW9yZGVyKlxuICogKCoqTkxSKiopIG9yIGlmIGByZXZlcnNlYCBpcyBnaXZlbiwgaW4gKnJldmVyc2UgcHJlb3JkZXIqICgqKk5STCoqKS5cbiAqXG4gKiBZb3UgY2FuIGNob29zZSBmb3Igd2hpY2ggbm9kZXMgYHZpc2l0b3JgIGlzIGNhbGxlZCBieSBwYXNzaW5nIGEgYHRlc3RgLlxuICogRm9yIGNvbXBsZXggdGVzdHMsIHlvdSBzaG91bGQgdGVzdCB5b3Vyc2VsZiBpbiBgdmlzaXRvcmAsIGFzIGl0IHdpbGwgYmVcbiAqIGZhc3RlciBhbmQgd2lsbCBoYXZlIGltcHJvdmVkIHR5cGUgaW5mb3JtYXRpb24uXG4gKlxuICogV2Fsa2luZyB0aGUgdHJlZSBpcyBhbiBpbnRlbnNpdmUgdGFzay5cbiAqIE1ha2UgdXNlIG9mIHRoZSByZXR1cm4gdmFsdWVzIG9mIHRoZSB2aXNpdG9yIHdoZW4gcG9zc2libGUuXG4gKiBJbnN0ZWFkIG9mIHdhbGtpbmcgYSB0cmVlIG11bHRpcGxlIHRpbWVzLCB3YWxrIGl0IG9uY2UsIHVzZSBgdW5pc3QtdXRpbC1pc2BcbiAqIHRvIGNoZWNrIGlmIGEgbm9kZSBtYXRjaGVzLCBhbmQgdGhlbiBwZXJmb3JtIGRpZmZlcmVudCBvcGVyYXRpb25zLlxuICpcbiAqIFlvdSBjYW4gY2hhbmdlIHRoZSB0cmVlLlxuICogU2VlIGBWaXNpdG9yYCBmb3IgbW9yZSBpbmZvLlxuICpcbiAqIEBvdmVybG9hZFxuICogQHBhcmFtIHtUcmVlfSB0cmVlXG4gKiBAcGFyYW0ge0NoZWNrfSBjaGVja1xuICogQHBhcmFtIHtCdWlsZFZpc2l0b3I8VHJlZSwgQ2hlY2s+fSB2aXNpdG9yXG4gKiBAcGFyYW0ge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbcmV2ZXJzZV1cbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKlxuICogQG92ZXJsb2FkXG4gKiBAcGFyYW0ge1RyZWV9IHRyZWVcbiAqIEBwYXJhbSB7QnVpbGRWaXNpdG9yPFRyZWU+fSB2aXNpdG9yXG4gKiBAcGFyYW0ge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbcmV2ZXJzZV1cbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKlxuICogQHBhcmFtIHtVbmlzdE5vZGV9IHRyZWVcbiAqICAgVHJlZSB0byB0cmF2ZXJzZS5cbiAqIEBwYXJhbSB7VmlzaXRvciB8IFRlc3R9IHRlc3RcbiAqICAgYHVuaXN0LXV0aWwtaXNgLWNvbXBhdGlibGUgdGVzdFxuICogQHBhcmFtIHtWaXNpdG9yIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFt2aXNpdG9yXVxuICogICBIYW5kbGUgZWFjaCBub2RlLlxuICogQHBhcmFtIHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3JldmVyc2VdXG4gKiAgIFRyYXZlcnNlIGluIHJldmVyc2UgcHJlb3JkZXIgKE5STCkgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBwcmVvcmRlciAoTkxSKS5cbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKiAgIE5vdGhpbmcuXG4gKlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFRyZWVcbiAqICAgTm9kZSB0eXBlLlxuICogQHRlbXBsYXRlIHtUZXN0fSBDaGVja1xuICogICBgdW5pc3QtdXRpbC1pc2AtY29tcGF0aWJsZSB0ZXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmlzaXRQYXJlbnRzKHRyZWUsIHRlc3QsIHZpc2l0b3IsIHJldmVyc2UpIHtcbiAgLyoqIEB0eXBlIHtUZXN0fSAqL1xuICBsZXQgY2hlY2tcblxuICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZpc2l0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXZlcnNlID0gdmlzaXRvclxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3Igbm8gdmlzaXRvciBnaXZlbiwgc28gYHZpc2l0b3JgIGlzIHRlc3QuXG4gICAgdmlzaXRvciA9IHRlc3RcbiAgfSBlbHNlIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIHZpc2l0b3IgZ2l2ZW4sIHNvIGB0ZXN0YCBpc25cdTIwMTl0IGEgdmlzaXRvci5cbiAgICBjaGVjayA9IHRlc3RcbiAgfVxuXG4gIGNvbnN0IGlzID0gY29udmVydChjaGVjaylcbiAgY29uc3Qgc3RlcCA9IHJldmVyc2UgPyAtMSA6IDFcblxuICBmYWN0b3J5KHRyZWUsIHVuZGVmaW5lZCwgW10pKClcblxuICAvKipcbiAgICogQHBhcmFtIHtVbmlzdE5vZGV9IG5vZGVcbiAgICogQHBhcmFtIHtudW1iZXIgfCB1bmRlZmluZWR9IGluZGV4XG4gICAqIEBwYXJhbSB7QXJyYXk8VW5pc3RQYXJlbnQ+fSBwYXJlbnRzXG4gICAqL1xuICBmdW5jdGlvbiBmYWN0b3J5KG5vZGUsIGluZGV4LCBwYXJlbnRzKSB7XG4gICAgY29uc3QgdmFsdWUgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSAqLyAoXG4gICAgICBub2RlICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyA/IG5vZGUgOiB7fVxuICAgIClcblxuICAgIGlmICh0eXBlb2YgdmFsdWUudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IG5hbWUgPVxuICAgICAgICAvLyBgaGFzdGBcbiAgICAgICAgdHlwZW9mIHZhbHVlLnRhZ05hbWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyB2YWx1ZS50YWdOYW1lXG4gICAgICAgICAgOiAvLyBgeGFzdGBcbiAgICAgICAgICB0eXBlb2YgdmFsdWUubmFtZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IHZhbHVlLm5hbWVcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodmlzaXQsICduYW1lJywge1xuICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAnbm9kZSAoJyArIGNvbG9yKG5vZGUudHlwZSArIChuYW1lID8gJzwnICsgbmFtZSArICc+JyA6ICcnKSkgKyAnKSdcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHZpc2l0XG5cbiAgICBmdW5jdGlvbiB2aXNpdCgpIHtcbiAgICAgIC8qKiBAdHlwZSB7UmVhZG9ubHk8QWN0aW9uVHVwbGU+fSAqL1xuICAgICAgbGV0IHJlc3VsdCA9IGVtcHR5XG4gICAgICAvKiogQHR5cGUge1JlYWRvbmx5PEFjdGlvblR1cGxlPn0gKi9cbiAgICAgIGxldCBzdWJyZXN1bHRcbiAgICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICAgICAgbGV0IG9mZnNldFxuICAgICAgLyoqIEB0eXBlIHtBcnJheTxVbmlzdFBhcmVudD59ICovXG4gICAgICBsZXQgZ3JhbmRwYXJlbnRzXG5cbiAgICAgIGlmICghdGVzdCB8fCBpcyhub2RlLCBpbmRleCwgcGFyZW50c1twYXJlbnRzLmxlbmd0aCAtIDFdIHx8IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYHZpc2l0b3JgIGlzIG5vdyBhIHZpc2l0b3IuXG4gICAgICAgIHJlc3VsdCA9IHRvUmVzdWx0KHZpc2l0b3Iobm9kZSwgcGFyZW50cykpXG5cbiAgICAgICAgaWYgKHJlc3VsdFswXSA9PT0gRVhJVCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoJ2NoaWxkcmVuJyBpbiBub2RlICYmIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3Qgbm9kZUFzUGFyZW50ID0gLyoqIEB0eXBlIHtVbmlzdFBhcmVudH0gKi8gKG5vZGUpXG5cbiAgICAgICAgaWYgKG5vZGVBc1BhcmVudC5jaGlsZHJlbiAmJiByZXN1bHRbMF0gIT09IFNLSVApIHtcbiAgICAgICAgICBvZmZzZXQgPSAocmV2ZXJzZSA/IG5vZGVBc1BhcmVudC5jaGlsZHJlbi5sZW5ndGggOiAtMSkgKyBzdGVwXG4gICAgICAgICAgZ3JhbmRwYXJlbnRzID0gcGFyZW50cy5jb25jYXQobm9kZUFzUGFyZW50KVxuXG4gICAgICAgICAgd2hpbGUgKG9mZnNldCA+IC0xICYmIG9mZnNldCA8IG5vZGVBc1BhcmVudC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZUFzUGFyZW50LmNoaWxkcmVuW29mZnNldF1cblxuICAgICAgICAgICAgc3VicmVzdWx0ID0gZmFjdG9yeShjaGlsZCwgb2Zmc2V0LCBncmFuZHBhcmVudHMpKClcblxuICAgICAgICAgICAgaWYgKHN1YnJlc3VsdFswXSA9PT0gRVhJVCkge1xuICAgICAgICAgICAgICByZXR1cm4gc3VicmVzdWx0XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG9mZnNldCA9XG4gICAgICAgICAgICAgIHR5cGVvZiBzdWJyZXN1bHRbMV0gPT09ICdudW1iZXInID8gc3VicmVzdWx0WzFdIDogb2Zmc2V0ICsgc3RlcFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVHVybiBhIHJldHVybiB2YWx1ZSBpbnRvIGEgY2xlYW4gcmVzdWx0LlxuICpcbiAqIEBwYXJhbSB7VmlzaXRvclJlc3VsdH0gdmFsdWVcbiAqICAgVmFsaWQgcmV0dXJuIHZhbHVlcyBmcm9tIHZpc2l0b3JzLlxuICogQHJldHVybnMge1JlYWRvbmx5PEFjdGlvblR1cGxlPn1cbiAqICAgQ2xlYW4gcmVzdWx0LlxuICovXG5mdW5jdGlvbiB0b1Jlc3VsdCh2YWx1ZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIFtDT05USU5VRSwgdmFsdWVdXG4gIH1cblxuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCA/IGVtcHR5IDogW3ZhbHVlXVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Ob2RlfSBVbmlzdE5vZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUGFyZW50fSBVbmlzdFBhcmVudFxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QtdXRpbC12aXNpdC1wYXJlbnRzJykuVmlzaXRvclJlc3VsdH0gVmlzaXRvclJlc3VsdFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge0V4Y2x1ZGU8aW1wb3J0KCd1bmlzdC11dGlsLWlzJykuVGVzdCwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZH0gVGVzdFxuICogICBUZXN0IGZyb20gYHVuaXN0LXV0aWwtaXNgLlxuICpcbiAqICAgTm90ZTogd2UgaGF2ZSByZW1vdmUgYW5kIGFkZCBgdW5kZWZpbmVkYCwgYmVjYXVzZSBvdGhlcndpc2Ugd2hlbiBnZW5lcmF0aW5nXG4gKiAgIGF1dG9tYXRpYyBgLmQudHNgIGZpbGVzLCBUUyB0cmllcyB0byBmbGF0dGVuIHBhdGhzIGZyb20gYSBsb2NhbCBwZXJzcGVjdGl2ZSxcbiAqICAgd2hpY2ggZG9lc25cdTIwMTl0IHdvcmsgd2hlbiBwdWJsaXNoaW5nIG9uIG5wbS5cbiAqL1xuXG4vLyBUbyBkbzogdXNlIHR5cGVzIGZyb20gYHVuaXN0LXV0aWwtdmlzaXQtcGFyZW50c2Agd2hlbiBpdFx1MjAxOXMgcmVsZWFzZWQuXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgRm4gZXh0ZW5kcyAodmFsdWU6IGFueSkgPT4gdmFsdWUgaXMgaW5mZXIgVGhpbmdcbiAqICAgPyBUaGluZ1xuICogICA6IEZhbGxiYWNrXG4gKiApfSBQcmVkaWNhdGVcbiAqICAgR2V0IHRoZSB2YWx1ZSBvZiBhIHR5cGUgZ3VhcmQgYEZuYC5cbiAqIEB0ZW1wbGF0ZSBGblxuICogICBWYWx1ZTsgdHlwaWNhbGx5IGZ1bmN0aW9uIHRoYXQgaXMgYSB0eXBlIGd1YXJkIChzdWNoIGFzIGAoeCk6IHggaXMgWWApLlxuICogQHRlbXBsYXRlIEZhbGxiYWNrXG4gKiAgIFZhbHVlIHRvIHlpZWxkIGlmIGBGbmAgaXMgbm90IGEgdHlwZSBndWFyZC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIENoZWNrIGV4dGVuZHMgbnVsbCB8IHVuZGVmaW5lZCAvLyBObyB0ZXN0LlxuICogICA/IFZhbHVlXG4gKiAgIDogVmFsdWUgZXh0ZW5kcyB7dHlwZTogQ2hlY2t9IC8vIFN0cmluZyAodHlwZSkgdGVzdC5cbiAqICAgPyBWYWx1ZVxuICogICA6IFZhbHVlIGV4dGVuZHMgQ2hlY2sgLy8gUGFydGlhbCB0ZXN0LlxuICogICA/IFZhbHVlXG4gKiAgIDogQ2hlY2sgZXh0ZW5kcyBGdW5jdGlvbiAvLyBGdW5jdGlvbiB0ZXN0LlxuICogICA/IFByZWRpY2F0ZTxDaGVjaywgVmFsdWU+IGV4dGVuZHMgVmFsdWVcbiAqICAgICA/IFByZWRpY2F0ZTxDaGVjaywgVmFsdWU+XG4gKiAgICAgOiBuZXZlclxuICogICA6IG5ldmVyIC8vIFNvbWUgb3RoZXIgdGVzdD9cbiAqICl9IE1hdGNoZXNPbmVcbiAqICAgQ2hlY2sgd2hldGhlciBhIG5vZGUgbWF0Y2hlcyBhIHByaW1pdGl2ZSBjaGVjayBpbiB0aGUgdHlwZSBzeXN0ZW0uXG4gKiBAdGVtcGxhdGUgVmFsdWVcbiAqICAgVmFsdWU7IHR5cGljYWxseSB1bmlzdCBgTm9kZWAuXG4gKiBAdGVtcGxhdGUgQ2hlY2tcbiAqICAgVmFsdWU7IHR5cGljYWxseSBgdW5pc3QtdXRpbC1pc2AtY29tcGF0aWJsZSB0ZXN0LCBidXQgbm90IGFycmF5cy5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIENoZWNrIGV4dGVuZHMgQXJyYXk8YW55PlxuICogICA/IE1hdGNoZXNPbmU8VmFsdWUsIENoZWNrW2tleW9mIENoZWNrXT5cbiAqICAgOiBNYXRjaGVzT25lPFZhbHVlLCBDaGVjaz5cbiAqICl9IE1hdGNoZXNcbiAqICAgQ2hlY2sgd2hldGhlciBhIG5vZGUgbWF0Y2hlcyBhIGNoZWNrIGluIHRoZSB0eXBlIHN5c3RlbS5cbiAqIEB0ZW1wbGF0ZSBWYWx1ZVxuICogICBWYWx1ZTsgdHlwaWNhbGx5IHVuaXN0IGBOb2RlYC5cbiAqIEB0ZW1wbGF0ZSBDaGVja1xuICogICBWYWx1ZTsgdHlwaWNhbGx5IGB1bmlzdC11dGlsLWlzYC1jb21wYXRpYmxlIHRlc3QuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7MCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiB8IDcgfCA4IHwgOSB8IDEwfSBVaW50XG4gKiAgIE51bWJlcjsgY2FwcGVkIHJlYXNvbmFibHkuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7SSBleHRlbmRzIDAgPyAxIDogSSBleHRlbmRzIDEgPyAyIDogSSBleHRlbmRzIDIgPyAzIDogSSBleHRlbmRzIDMgPyA0IDogSSBleHRlbmRzIDQgPyA1IDogSSBleHRlbmRzIDUgPyA2IDogSSBleHRlbmRzIDYgPyA3IDogSSBleHRlbmRzIDcgPyA4IDogSSBleHRlbmRzIDggPyA5IDogMTB9IEluY3JlbWVudFxuICogICBJbmNyZW1lbnQgYSBudW1iZXIgaW4gdGhlIHR5cGUgc3lzdGVtLlxuICogQHRlbXBsYXRlIHtVaW50fSBbST0wXVxuICogICBJbmRleC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIE5vZGUgZXh0ZW5kcyBVbmlzdFBhcmVudFxuICogICA/IE5vZGUgZXh0ZW5kcyB7Y2hpbGRyZW46IEFycmF5PGluZmVyIENoaWxkcmVuPn1cbiAqICAgICA/IENoaWxkIGV4dGVuZHMgQ2hpbGRyZW4gPyBOb2RlIDogbmV2ZXJcbiAqICAgICA6IG5ldmVyXG4gKiAgIDogbmV2ZXJcbiAqICl9IEludGVybmFsUGFyZW50XG4gKiAgIENvbGxlY3Qgbm9kZXMgdGhhdCBjYW4gYmUgcGFyZW50cyBvZiBgQ2hpbGRgLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IE5vZGVcbiAqICAgQWxsIG5vZGUgdHlwZXMgaW4gYSB0cmVlLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IENoaWxkXG4gKiAgIE5vZGUgdG8gc2VhcmNoIGZvci5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtJbnRlcm5hbFBhcmVudDxJbmNsdXNpdmVEZXNjZW5kYW50PFRyZWU+LCBDaGlsZD59IFBhcmVudFxuICogICBDb2xsZWN0IG5vZGVzIGluIGBUcmVlYCB0aGF0IGNhbiBiZSBwYXJlbnRzIG9mIGBDaGlsZGAuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gVHJlZVxuICogICBBbGwgbm9kZSB0eXBlcyBpbiBhIHRyZWUuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gQ2hpbGRcbiAqICAgTm9kZSB0byBzZWFyY2ggZm9yLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgRGVwdGggZXh0ZW5kcyBNYXhcbiAqICAgPyBuZXZlclxuICogICA6XG4gKiAgICAgfCBJbnRlcm5hbFBhcmVudDxOb2RlLCBDaGlsZD5cbiAqICAgICB8IEludGVybmFsQW5jZXN0b3I8Tm9kZSwgSW50ZXJuYWxQYXJlbnQ8Tm9kZSwgQ2hpbGQ+LCBNYXgsIEluY3JlbWVudDxEZXB0aD4+XG4gKiApfSBJbnRlcm5hbEFuY2VzdG9yXG4gKiAgIENvbGxlY3Qgbm9kZXMgaW4gYFRyZWVgIHRoYXQgY2FuIGJlIGFuY2VzdG9ycyBvZiBgQ2hpbGRgLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IE5vZGVcbiAqICAgQWxsIG5vZGUgdHlwZXMgaW4gYSB0cmVlLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IENoaWxkXG4gKiAgIE5vZGUgdG8gc2VhcmNoIGZvci5cbiAqIEB0ZW1wbGF0ZSB7VWludH0gW01heD0xMF1cbiAqICAgTWF4OyBzZWFyY2hlcyB1cCB0byB0aGlzIGRlcHRoLlxuICogQHRlbXBsYXRlIHtVaW50fSBbRGVwdGg9MF1cbiAqICAgQ3VycmVudCBkZXB0aC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIFRyZWUgZXh0ZW5kcyBVbmlzdFBhcmVudFxuICogICAgID8gRGVwdGggZXh0ZW5kcyBNYXhcbiAqICAgICAgID8gVHJlZVxuICogICAgICAgOiBUcmVlIHwgSW5jbHVzaXZlRGVzY2VuZGFudDxUcmVlWydjaGlsZHJlbiddW251bWJlcl0sIE1heCwgSW5jcmVtZW50PERlcHRoPj5cbiAqICAgICA6IFRyZWVcbiAqICl9IEluY2x1c2l2ZURlc2NlbmRhbnRcbiAqICAgQ29sbGVjdCBhbGwgKGluY2x1c2l2ZSkgZGVzY2VuZGFudHMgb2YgYFRyZWVgLlxuICpcbiAqICAgPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB0aGlzIHNlZW1zIHRvIGJlIHRoZSBmYXN0ZXN0IHdheSB0b1xuICogICA+IHJlY3Vyc2Ugd2l0aG91dCBhY3R1YWxseSBydW5uaW5nIGludG8gYW4gaW5maW5pdGUgbG9vcCwgd2hpY2ggdGhlXG4gKiAgID4gcHJldmlvdXMgdmVyc2lvbiBkaWQuXG4gKiAgID5cbiAqICAgPiBQcmFjdGljYWxseSwgYSBtYXggb2YgYDJgIGlzIHR5cGljYWxseSBlbm91Z2ggYXNzdW1pbmcgYSBgUm9vdGAgaXNcbiAqICAgPiBwYXNzZWQsIGJ1dCBpdCBkb2Vzblx1MjAxOXQgaW1wcm92ZSBwZXJmb3JtYW5jZS5cbiAqICAgPiBJdCBnZXRzIGhpZ2hlciB3aXRoIGBMaXN0ID4gTGlzdEl0ZW0gPiBUYWJsZSA+IFRhYmxlUm93ID4gVGFibGVDZWxsYC5cbiAqICAgPiBVc2luZyB1cCB0byBgMTBgIGRvZXNuXHUyMDE5dCBodXJ0IG9yIGhlbHAgZWl0aGVyLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFRyZWVcbiAqICAgVHJlZSB0eXBlLlxuICogQHRlbXBsYXRlIHtVaW50fSBbTWF4PTEwXVxuICogICBNYXg7IHNlYXJjaGVzIHVwIHRvIHRoaXMgZGVwdGguXG4gKiBAdGVtcGxhdGUge1VpbnR9IFtEZXB0aD0wXVxuICogICBDdXJyZW50IGRlcHRoLlxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIFZpc2l0b3JcbiAqICAgSGFuZGxlIGEgbm9kZSAobWF0Y2hpbmcgYHRlc3RgLCBpZiBnaXZlbikuXG4gKlxuICogICBWaXNpdG9ycyBhcmUgZnJlZSB0byB0cmFuc2Zvcm0gYG5vZGVgLlxuICogICBUaGV5IGNhbiBhbHNvIHRyYW5zZm9ybSBgcGFyZW50YC5cbiAqXG4gKiAgIFJlcGxhY2luZyBgbm9kZWAgaXRzZWxmLCBpZiBgU0tJUGAgaXMgbm90IHJldHVybmVkLCBzdGlsbCBjYXVzZXMgaXRzXG4gKiAgIGRlc2NlbmRhbnRzIHRvIGJlIHdhbGtlZCAod2hpY2ggaXMgYSBidWcpLlxuICpcbiAqICAgV2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgcHJldmlvdXMgc2libGluZ3Mgb2YgYG5vZGVgIChvciBuZXh0IHNpYmxpbmdzLCBpblxuICogICBjYXNlIG9mIHJldmVyc2UpLCB0aGUgYFZpc2l0b3JgIHNob3VsZCByZXR1cm4gYSBuZXcgYEluZGV4YCB0byBzcGVjaWZ5IHRoZVxuICogICBzaWJsaW5nIHRvIHRyYXZlcnNlIGFmdGVyIGBub2RlYCBpcyB0cmF2ZXJzZWQuXG4gKiAgIEFkZGluZyBvciByZW1vdmluZyBuZXh0IHNpYmxpbmdzIG9mIGBub2RlYCAob3IgcHJldmlvdXMgc2libGluZ3MsIGluIGNhc2VcbiAqICAgb2YgcmV2ZXJzZSkgaXMgaGFuZGxlZCBhcyBleHBlY3RlZCB3aXRob3V0IG5lZWRpbmcgdG8gcmV0dXJuIGEgbmV3IGBJbmRleGAuXG4gKlxuICogICBSZW1vdmluZyB0aGUgY2hpbGRyZW4gcHJvcGVydHkgb2YgYHBhcmVudGAgc3RpbGwgcmVzdWx0cyBpbiB0aGVtIGJlaW5nXG4gKiAgIHRyYXZlcnNlZC5cbiAqIEBwYXJhbSB7VmlzaXRlZH0gbm9kZVxuICogICBGb3VuZCBub2RlLlxuICogQHBhcmFtIHtWaXNpdGVkIGV4dGVuZHMgVW5pc3ROb2RlID8gbnVtYmVyIHwgdW5kZWZpbmVkIDogbmV2ZXJ9IGluZGV4XG4gKiAgIEluZGV4IG9mIGBub2RlYCBpbiBgcGFyZW50YC5cbiAqIEBwYXJhbSB7QW5jZXN0b3IgZXh0ZW5kcyBVbmlzdFBhcmVudCA/IEFuY2VzdG9yIHwgdW5kZWZpbmVkIDogbmV2ZXJ9IHBhcmVudFxuICogICBQYXJlbnQgb2YgYG5vZGVgLlxuICogQHJldHVybnMge1Zpc2l0b3JSZXN1bHR9XG4gKiAgIFdoYXQgdG8gZG8gbmV4dC5cbiAqXG4gKiAgIEFuIGBJbmRleGAgaXMgdHJlYXRlZCBhcyBhIHR1cGxlIG9mIGBbQ09OVElOVUUsIEluZGV4XWAuXG4gKiAgIEFuIGBBY3Rpb25gIGlzIHRyZWF0ZWQgYXMgYSB0dXBsZSBvZiBgW0FjdGlvbl1gLlxuICpcbiAqICAgUGFzc2luZyBhIHR1cGxlIGJhY2sgb25seSBtYWtlcyBzZW5zZSBpZiB0aGUgYEFjdGlvbmAgaXMgYFNLSVBgLlxuICogICBXaGVuIHRoZSBgQWN0aW9uYCBpcyBgRVhJVGAsIHRoYXQgYWN0aW9uIGNhbiBiZSByZXR1cm5lZC5cbiAqICAgV2hlbiB0aGUgYEFjdGlvbmAgaXMgYENPTlRJTlVFYCwgYEluZGV4YCBjYW4gYmUgcmV0dXJuZWQuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gW1Zpc2l0ZWQ9VW5pc3ROb2RlXVxuICogICBWaXNpdGVkIG5vZGUgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3RQYXJlbnR9IFtBbmNlc3Rvcj1VbmlzdFBhcmVudF1cbiAqICAgQW5jZXN0b3IgdHlwZS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtWaXNpdG9yPFZpc2l0ZWQsIFBhcmVudDxBbmNlc3RvciwgVmlzaXRlZD4+fSBCdWlsZFZpc2l0b3JGcm9tTWF0Y2hcbiAqICAgQnVpbGQgYSB0eXBlZCBgVmlzaXRvcmAgZnVuY3Rpb24gZnJvbSBhIG5vZGUgYW5kIGFsbCBwb3NzaWJsZSBwYXJlbnRzLlxuICpcbiAqICAgSXQgd2lsbCBpbmZlciB3aGljaCB2YWx1ZXMgYXJlIHBhc3NlZCBhcyBgbm9kZWAgYW5kIHdoaWNoIGFzIGBwYXJlbnRgLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFZpc2l0ZWRcbiAqICAgTm9kZSB0eXBlLlxuICogQHRlbXBsYXRlIHtVbmlzdFBhcmVudH0gQW5jZXN0b3JcbiAqICAgUGFyZW50IHR5cGUuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBCdWlsZFZpc2l0b3JGcm9tTWF0Y2g8XG4gKiAgICAgTWF0Y2hlczxEZXNjZW5kYW50LCBDaGVjaz4sXG4gKiAgICAgRXh0cmFjdDxEZXNjZW5kYW50LCBVbmlzdFBhcmVudD5cbiAqICAgPlxuICogKX0gQnVpbGRWaXNpdG9yRnJvbURlc2NlbmRhbnRzXG4gKiAgIEJ1aWxkIGEgdHlwZWQgYFZpc2l0b3JgIGZ1bmN0aW9uIGZyb20gYSBsaXN0IG9mIGRlc2NlbmRhbnRzIGFuZCBhIHRlc3QuXG4gKlxuICogICBJdCB3aWxsIGluZmVyIHdoaWNoIHZhbHVlcyBhcmUgcGFzc2VkIGFzIGBub2RlYCBhbmQgd2hpY2ggYXMgYHBhcmVudGAuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gRGVzY2VuZGFudFxuICogICBOb2RlIHR5cGUuXG4gKiBAdGVtcGxhdGUge1Rlc3R9IENoZWNrXG4gKiAgIFRlc3QgdHlwZS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIEJ1aWxkVmlzaXRvckZyb21EZXNjZW5kYW50czxcbiAqICAgICBJbmNsdXNpdmVEZXNjZW5kYW50PFRyZWU+LFxuICogICAgIENoZWNrXG4gKiAgID5cbiAqICl9IEJ1aWxkVmlzaXRvclxuICogICBCdWlsZCBhIHR5cGVkIGBWaXNpdG9yYCBmdW5jdGlvbiBmcm9tIGEgdHJlZSBhbmQgYSB0ZXN0LlxuICpcbiAqICAgSXQgd2lsbCBpbmZlciB3aGljaCB2YWx1ZXMgYXJlIHBhc3NlZCBhcyBgbm9kZWAgYW5kIHdoaWNoIGFzIGBwYXJlbnRgLlxuICogQHRlbXBsYXRlIHtVbmlzdE5vZGV9IFtUcmVlPVVuaXN0Tm9kZV1cbiAqICAgTm9kZSB0eXBlLlxuICogQHRlbXBsYXRlIHtUZXN0fSBbQ2hlY2s9VGVzdF1cbiAqICAgVGVzdCB0eXBlLlxuICovXG5cbmltcG9ydCB7dmlzaXRQYXJlbnRzfSBmcm9tICd1bmlzdC11dGlsLXZpc2l0LXBhcmVudHMnXG5cbmV4cG9ydCB7Q09OVElOVUUsIEVYSVQsIFNLSVB9IGZyb20gJ3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cydcblxuLyoqXG4gKiBWaXNpdCBub2Rlcy5cbiAqXG4gKiBUaGlzIGFsZ29yaXRobSBwZXJmb3JtcyAqZGVwdGgtZmlyc3QqICp0cmVlIHRyYXZlcnNhbCogaW4gKnByZW9yZGVyKlxuICogKCoqTkxSKiopIG9yIGlmIGByZXZlcnNlYCBpcyBnaXZlbiwgaW4gKnJldmVyc2UgcHJlb3JkZXIqICgqKk5STCoqKS5cbiAqXG4gKiBZb3UgY2FuIGNob29zZSBmb3Igd2hpY2ggbm9kZXMgYHZpc2l0b3JgIGlzIGNhbGxlZCBieSBwYXNzaW5nIGEgYHRlc3RgLlxuICogRm9yIGNvbXBsZXggdGVzdHMsIHlvdSBzaG91bGQgdGVzdCB5b3Vyc2VsZiBpbiBgdmlzaXRvcmAsIGFzIGl0IHdpbGwgYmVcbiAqIGZhc3RlciBhbmQgd2lsbCBoYXZlIGltcHJvdmVkIHR5cGUgaW5mb3JtYXRpb24uXG4gKlxuICogV2Fsa2luZyB0aGUgdHJlZSBpcyBhbiBpbnRlbnNpdmUgdGFzay5cbiAqIE1ha2UgdXNlIG9mIHRoZSByZXR1cm4gdmFsdWVzIG9mIHRoZSB2aXNpdG9yIHdoZW4gcG9zc2libGUuXG4gKiBJbnN0ZWFkIG9mIHdhbGtpbmcgYSB0cmVlIG11bHRpcGxlIHRpbWVzLCB3YWxrIGl0IG9uY2UsIHVzZSBgdW5pc3QtdXRpbC1pc2BcbiAqIHRvIGNoZWNrIGlmIGEgbm9kZSBtYXRjaGVzLCBhbmQgdGhlbiBwZXJmb3JtIGRpZmZlcmVudCBvcGVyYXRpb25zLlxuICpcbiAqIFlvdSBjYW4gY2hhbmdlIHRoZSB0cmVlLlxuICogU2VlIGBWaXNpdG9yYCBmb3IgbW9yZSBpbmZvLlxuICpcbiAqIEBvdmVybG9hZFxuICogQHBhcmFtIHtUcmVlfSB0cmVlXG4gKiBAcGFyYW0ge0NoZWNrfSBjaGVja1xuICogQHBhcmFtIHtCdWlsZFZpc2l0b3I8VHJlZSwgQ2hlY2s+fSB2aXNpdG9yXG4gKiBAcGFyYW0ge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbcmV2ZXJzZV1cbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKlxuICogQG92ZXJsb2FkXG4gKiBAcGFyYW0ge1RyZWV9IHRyZWVcbiAqIEBwYXJhbSB7QnVpbGRWaXNpdG9yPFRyZWU+fSB2aXNpdG9yXG4gKiBAcGFyYW0ge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbcmV2ZXJzZV1cbiAqIEByZXR1cm5zIHt1bmRlZmluZWR9XG4gKlxuICogQHBhcmFtIHtVbmlzdE5vZGV9IHRyZWVcbiAqICAgVHJlZSB0byB0cmF2ZXJzZS5cbiAqIEBwYXJhbSB7VmlzaXRvciB8IFRlc3R9IHRlc3RPclZpc2l0b3JcbiAqICAgYHVuaXN0LXV0aWwtaXNgLWNvbXBhdGlibGUgdGVzdCAob3B0aW9uYWwsIG9taXQgdG8gcGFzcyBhIHZpc2l0b3IpLlxuICogQHBhcmFtIHtWaXNpdG9yIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFt2aXNpdG9yT3JSZXZlcnNlXVxuICogICBIYW5kbGUgZWFjaCBub2RlICh3aGVuIHRlc3QgaXMgb21pdHRlZCwgcGFzcyBgcmV2ZXJzZWApLlxuICogQHBhcmFtIHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW21heWJlUmV2ZXJzZT1mYWxzZV1cbiAqICAgVHJhdmVyc2UgaW4gcmV2ZXJzZSBwcmVvcmRlciAoTlJMKSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHByZW9yZGVyIChOTFIpLlxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqICAgTm90aGluZy5cbiAqXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gVHJlZVxuICogICBOb2RlIHR5cGUuXG4gKiBAdGVtcGxhdGUge1Rlc3R9IENoZWNrXG4gKiAgIGB1bmlzdC11dGlsLWlzYC1jb21wYXRpYmxlIHRlc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdCh0cmVlLCB0ZXN0T3JWaXNpdG9yLCB2aXNpdG9yT3JSZXZlcnNlLCBtYXliZVJldmVyc2UpIHtcbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IHJldmVyc2VcbiAgLyoqIEB0eXBlIHtUZXN0fSAqL1xuICBsZXQgdGVzdFxuICAvKiogQHR5cGUge1Zpc2l0b3J9ICovXG4gIGxldCB2aXNpdG9yXG5cbiAgaWYgKFxuICAgIHR5cGVvZiB0ZXN0T3JWaXNpdG9yID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIHZpc2l0b3JPclJldmVyc2UgIT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgdGVzdCA9IHVuZGVmaW5lZFxuICAgIHZpc2l0b3IgPSB0ZXN0T3JWaXNpdG9yXG4gICAgcmV2ZXJzZSA9IHZpc2l0b3JPclJldmVyc2VcbiAgfSBlbHNlIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBhc3N1bWUgdGhlIG92ZXJsb2FkIHdpdGggdGVzdCB3YXMgZ2l2ZW4uXG4gICAgdGVzdCA9IHRlc3RPclZpc2l0b3JcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBhc3N1bWUgdGhlIG92ZXJsb2FkIHdpdGggdGVzdCB3YXMgZ2l2ZW4uXG4gICAgdmlzaXRvciA9IHZpc2l0b3JPclJldmVyc2VcbiAgICByZXZlcnNlID0gbWF5YmVSZXZlcnNlXG4gIH1cblxuICB2aXNpdFBhcmVudHModHJlZSwgdGVzdCwgb3ZlcmxvYWQsIHJldmVyc2UpXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VW5pc3ROb2RlfSBub2RlXG4gICAqIEBwYXJhbSB7QXJyYXk8VW5pc3RQYXJlbnQ+fSBwYXJlbnRzXG4gICAqL1xuICBmdW5jdGlvbiBvdmVybG9hZChub2RlLCBwYXJlbnRzKSB7XG4gICAgY29uc3QgcGFyZW50ID0gcGFyZW50c1twYXJlbnRzLmxlbmd0aCAtIDFdXG4gICAgY29uc3QgaW5kZXggPSBwYXJlbnQgPyBwYXJlbnQuY2hpbGRyZW4uaW5kZXhPZihub2RlKSA6IHVuZGVmaW5lZFxuICAgIHJldHVybiB2aXNpdG9yKG5vZGUsIGluZGV4LCBwYXJlbnQpXG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQUFBLFNBQTJDQSxJQUFNQyxJQUFBQTtBQUMxQixrQkFBQSxPQUFaQyxXQUEwQyxZQUFBLE9BQVhDLFVBQ3hDQSxRQUFPRCxVQUFVRCxHQUFBQSxJQUNRLGNBQUEsT0FBWEcsVUFBeUJBLE9BQU9DLE1BQzlDRCxPQUFPLENBQUEsR0FBSUgsRUFBQUEsSUFDZSxZQUFBLE9BQVpDLFVBQ2RBLFFBQWUsUUFBSUQsR0FBQUEsSUFFbkJELEdBQVksUUFBSUMsR0FBQUE7SUFBQUEsRUFDZkssTUFBTSxXQUFBO0FBQ1QsY0FBQSxNQUFBO0FBQUE7QUNUQSxZQUFJQyxLQUFzQixFQ0ExQixHQUF3QixDQUFDTCxJQUFTTSxPQUFBQTtBQUNqQyxtQkFBUUMsTUFBT0Q7QUFDWEQsWUFBQUEsR0FBb0JHLEVBQUVGLElBQVlDLEVBQUFBLEtBQUFBLENB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VUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsY0FBYztBQUFBLEVBQ2QsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsYUFBYTtBQUFBLEVBQ2IsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVBQ1YsaUJBQWlCO0FBQUEsRUFDakIsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsaUJBQWlCO0FBQUEsRUFDakIsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsNEJBQTRCO0FBQUEsRUFDNUIsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AscUJBQXFCO0FBQUEsRUFDckIsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsaUJBQWlCO0FBQUEsRUFDakIsTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsYUFBYTtBQUFBLEVBQ2Isc0JBQXNCO0FBQUEsRUFDdEIsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsWUFBWTtBQUFBLEVBQ1osYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsV0FBVztBQUFBLEVBQ1gsZUFBZTtBQUFBLEVBQ2Ysa0JBQWtCO0FBQUEsRUFDbEIsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsYUFBYTtBQUFBLEVBQ2IsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsY0FBYztBQUFBLEVBQ2QsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsWUFBWTtBQUFBLEVBQ1osTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsY0FBYztBQUFBLEVBQ2QsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04scUJBQXFCO0FBQUEsRUFDckIsVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsT0FBTztBQUFBLEVBQ1AsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsbUJBQW1CO0FBQUEsRUFDbkIsY0FBYztBQUFBLEVBQ2QsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsY0FBYztBQUFBLEVBQ2QsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osUUFBUTtBQUFBLEVBQ1IsVUFBVTtBQUFBLEVBQ1YsZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsTUFBTTtBQUFBLEVBQ04sY0FBYztBQUFBLEVBQ2QsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsWUFBWTtBQUFBLEVBQ1osU0FBUztBQUFBLEVBQ1QsY0FBYztBQUFBLEVBQ2QsTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsY0FBYztBQUFBLEVBQ2QsVUFBVTtBQUFBLEVBQ1YsY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osYUFBYTtBQUFBLEVBQ2IsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsTUFBTTtBQUFBLEVBQ04sS0FBSztBQUFBLEVBQ0wsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1Isa0JBQWtCO0FBQUEsRUFDbEIsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsaUJBQWlCO0FBQUEsRUFDakIsY0FBYztBQUFBLEVBQ2QsZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsaUJBQWlCO0FBQUEsRUFDakIsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsTUFBTTtBQUFBLEVBQ04sY0FBYztBQUFBLEVBQ2QsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsaUJBQWlCO0FBQUEsRUFDakIsVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsaUJBQWlCO0FBQUEsRUFDakIsU0FBUztBQUFBLEVBQ1QsTUFBTTtBQUFBLEVBQ04sU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsTUFBTTtBQUFBLEVBQ04sWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sV0FBVztBQUFBLEVBQ1gsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsZ0JBQWdCO0FBQUEsRUFDaEIsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUFBLEVBQ1gsTUFBTTtBQUFBLEVBQ04sTUFBTTtBQUFBLEVBQ04sYUFBYTtBQUFBLEVBQ2IsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUNUO0FBQ0EsSUFBTSx5QkFBa0Q7QUFBQTtBQUFBLEVBQ3ZELE9BQU07QUFBQSxFQUNOLFNBQVE7QUFBQSxFQUNSLGNB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QUFBQSxFQUNMLE9BQU07QUFBQSxFQUNOLFNBQVE7QUFBQSxFQUNSLE9BQU07QUFBQSxFQUNOLFNBQVE7QUFBQSxFQUNSLFNBQVE7QUFBQSxFQUNSLE9BQU07QUFBQSxFQUNOLFdBQVU7QUFBQSxFQUNWLFNBQVE7QUFBQSxFQUNSLFFBQU87QUFBQSxFQUNQLFlBQVc7QUFBQSxFQUNYLE1BQUs7QUFBQSxFQUNMLFVBQVM7QUFBQSxFQUNULFFBQU87QUFBQSxFQUNQLFNBQVE7QUFBQSxFQUNSLFNBQVE7QUFBQSxFQUNSLGNBQWE7QUFBQSxFQUNiLGNBQWE7QUFBQSxFQUNiLFFBQU87QUFBQSxFQUNQLE9BQU07QUFBQSxFQUNOLFdBQVU7QUFBQSxFQUNWLE9BQU07QUFBQSxFQUNOLFNBQVE7QUFBQSxFQUNSLFlBQVc7QUFBQSxFQUNYLFlBQVc7QUFBQSxFQUNYLE1BQUs7QUFBQSxFQUNMLHFCQUFvQjtBQUFBLEVBQ3BCLFFBQU87QUFBQSxFQUNQLFVBQVM7QUFBQSxFQUNULGFBQVk7QUFBQSxFQUNaLE9BQU07QUFBQSxFQUNOLFdBQVU7QUFBQSxFQUNWLFlBQVc7QUFBQSxFQUNYLFNBQVE7QUFBQSxFQUNSLFdBQVU7QUFBQSxFQUNWLFVBQVM7QUFBQSxFQUNULGNBQWE7QUFBQSxFQUNiLFFBQU87QUFBQSxFQUNQLFFBQU87QUFBQSxFQUNQLFFBQU87QUFBQSxFQUNQLFNBQVE7QUFBQSxFQUNSLG1CQUFrQjtBQUFBLEVBQ2xCLGNBQWE7QUFBQSxFQUNiLFFBQU87QUFBQSxFQUNQLFFBQU87QUFBQSxFQUNQLFFBQU87QUFBQSxFQUNQLFNBQVE7QUFBQSxFQUNSLFNBQVE7QUFBQSxFQUNSLE9BQU07QUFBQSxFQUNOLE9BQU07QUFBQSxFQUNOLFFBQU87QUFBQSxFQUNQLGNBQWE7QUFBQSxFQUNiLFFBQU87QUFBQSxFQUNQLFNBQVE7QUFBQSxFQUNSLFFBQU87QUFBQSxFQUNQLFVBQVM7QUFBQSxFQUNULFlBQVc7QUFBQSxFQUNYLFFBQU87QUFBQSxFQUNQLE1BQUs7QUFBQSxFQUNMLFVBQVM7QUFBQSxFQUNULFVBQVM7QUFBQSxFQUNULFVBQVM7QUFBQSxFQUNULGFBQVk7QUFBQSxFQUNaLE9BQU07QUFBQSxFQUNOLFVBQVM7QUFBQSxFQUNULE1BQUs7QUFBQSxFQUNMLGNBQWE7QUFBQSxFQUNiLFNBQVE7QUFBQSxFQUNSLFFBQU87QUFBQSxFQUNQLE9BQU07QUFBQSxFQUNOLFVBQVM7QUFBQSxFQUNULGNBQWE7QUFBQSxFQUNiLGFBQVk7QUFBQSxFQUNaLFlBQVc7QUFBQSxFQUNYLFNBQVE7QUFBQSxFQUNSLGNBQWE7QUFBQSxFQUNiLE1BQUs7QUFBQSxFQUNMLFdBQVU7QUFBQSxFQUNWLGNBQWE7QUFBQSxFQUNiLGNBQWE7QUFBQSxFQUNiLFVBQVM7QUFBQSxFQUNULFVBQVM7QUFBQSxFQUNULGNBQWE7QUFBQSxFQUNiLFlBQVc7QUFBQSxFQUNYLE9BQU07QUFBQSxFQUNOLFVBQVM7QUFBQSxFQUNULFFBQU87QUFBQSxFQUNQLGFBQVk7QUFBQSxFQUNaLFVBQVM7QUFBQSxFQUNULGNBQWE7QUFBQSxFQUNiLFFBQU87QUFBQSxFQUNQLFVBQVM7QUFBQSxFQUNULE1BQUs7QUFBQSxFQUNMLFVBQVM7QUFBQSxFQUNULE1BQUs7QUFBQSxFQUNMLEtBQUk7QUFBQSxFQUNKLE9BQU07QUFBQSxFQUNOLFFBQU87QUFBQSxFQUNQLEtBQUk7QUFBQSxFQUNKLFVBQVM7QUFBQSxFQUNULE9BQU07QUFBQSxFQUNOLFVBQVM7QUFBQSxFQUNULE9BQU07QUFBQSxFQUNOLE9BQU07QUFBQSxFQUNOLFVBQVM7QUFBQSxFQUNULFNBQVE7QUFBQSxFQUNSLFFBQU87QUFBQSxFQUNQLFNBQVE7QUFBQSxFQUNSLE9BQU07QUFBQSxFQUNOLFlBQVc7QUFBQSxFQUNYLE9BQU07QUFBQSxFQUNOLFFBQU87QUFBQSxFQUNQLE9BQU07QUFBQSxFQUNOLFlBQVc7QUFBQSxFQUNYLGtCQUFpQjtBQUFBLEVBQ2pCLFNBQVE7QUFBQSxFQUNSLFFBQU87QUFBQSxFQUNQLE1BQUs7QUFBQSxFQUNMLFFBQU87QUFBQSxFQUNQLE9BQU07QUFBQSxF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LEdBQUUsUUFBTSxXQUFVQSxHQUFFLFNBQU8sV0FBVUEsR0FBRSxNQUFJLFdBQVVBLEdBQUUsU0FBTyxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxRQUFNLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLFFBQU0sV0FBVUEsR0FBRSxTQUFPLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLE9BQUssV0FBVUEsR0FBRSxPQUFLLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLFNBQU8sV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsZUFBYSxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxRQUFNLFdBQVVBLEdBQUUsUUFBTSxXQUFVQSxHQUFFLFNBQU8sV0FBVUEsR0FBRSxpQkFBZSxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxRQUFNLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFFBQU0sV0FBVUEsR0FBRSxpQkFBZSxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLGlCQUFlLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLGVBQWEsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFNBQU8sV0FBVUEsR0FBRSxRQUFNLFdBQVVBLEdBQUUsUUFBTSxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxlQUFhLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsdUJBQXFCLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLGVBQWEsV0FBVUEsR0FBRSxpQkFBZSxXQUFVQSxHQUFFLGlCQUFlLFdBQVVBLEdBQUUsaUJBQWUsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFFBQU0sV0FBVUEsR0FBRSxVQUFRLFdBQVVBLEdBQUUsbUJBQWlCLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLGVBQWEsV0FBVUEsR0FBRSxlQUFhLFdBQVVBLEdBQUUsaUJBQWUsV0FBVUEsR0FBRSxrQkFBZ0IsV0FBVUEsR0FBRSxvQkFBa0IsV0FBVUEsR0FBRSxrQkFBZ0IsV0FBVUEsR0FBRSxrQkFBZ0IsV0FBVUEsR0FBRSxlQUFhLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFNBQU8sV0FB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QU9BLEdBQUUsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLE9BQU9BLEdBQUUsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLE1BQU0sQ0FBQ0EsR0FBRSxDQUFDLENBQUMsS0FBRyxDQUFDQSxHQUFFLENBQUMsS0FBRztBQUFBLE1BQUksQ0FBRTtBQUFFLE1BQUFLLE1BQUdDLE9BQUlILEtBQUUsT0FBSUUsT0FBSUosS0FBRSxFQUFFO0FBQUEsSUFBSTtBQUFDLFFBQUcsQ0FBQ0EsTUFBR0U7QUFBRSxZQUFNLElBQUksTUFBTSxDQUFDO0FBQUUsV0FBT0Y7QUFBQSxFQUFDLEVBQUVELEVBQUM7QUFBQztBQUF6aUssSUFBMmlLLE1BQUksSUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUUsU0FBU0EsSUFBRTtBQUFDLE1BQUlDLE1BQUcsQ0FBQyxFQUFFLFFBQVFELEVBQUMsSUFBRSxFQUFFQSxFQUFDLElBQUVBLElBQUcsTUFBTSxFQUFFLEdBQUcsR0FBRUUsS0FBRSxFQUFDLEdBQUUsRUFBRUQsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxFQUFFQSxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUVFLEtBQUVGLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUM7QUFBRSxTQUFPLFdBQVNFLE9BQUlELEdBQUUsSUFBRSxFQUFFQyxFQUFDLElBQUUsTUFBS0Q7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0YsSUFBRTtBQUFDLE1BQUlDLEtBQUVELEdBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRUUsS0FBRSxFQUFFRCxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUUsS0FBRSxFQUFFRixHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUcsS0FBRSxFQUFFSCxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUksS0FBRUosR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxHQUFFSyxLQUFFLEVBQUMsR0FBRSxLQUFLLElBQUlKLElBQUUsR0FBRyxHQUFFLEdBQUUsS0FBSyxJQUFJQyxJQUFFLEdBQUcsR0FBRSxHQUFFLEtBQUssSUFBSUMsSUFBRSxHQUFHLEVBQUM7QUFBRSxTQUFPLFdBQVNDLE9BQUlDLEdBQUUsSUFBRSxFQUFFRCxFQUFDLElBQUdDO0FBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLFNBQVNOLElBQUU7QUFBQyxNQUFJQyxLQUFFRCxHQUFFLE1BQU0sRUFBRSxHQUFHLEdBQUVFLEtBQUUsRUFBRUQsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVFLEtBQUUsRUFBRUYsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVHLEtBQUUsRUFBRUgsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVJLEtBQUVKLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsR0FBRUssS0FBRSxFQUFFSixJQUFFQyxJQUFFQyxFQUFDO0FBQUUsU0FBTyxXQUFTQyxPQUFJQyxHQUFFLElBQUUsRUFBRUQsRUFBQyxJQUFHQztBQUFDLEdBQUUsRUFBRSxFQUFFLElBQUksSUFBRSxTQUFTTixJQUFFO0FBQUMsTUFBSUMsS0FBRUQsR0FBRSxNQUFNLEVBQUUsSUFBSSxHQUFFRSxLQUFFLEVBQUVELEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFRSxLQUFFLEVBQUVGLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFRyxLQUFFLEVBQUVILEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFSSxLQUFFLEVBQUVKLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFSyxLQUFFTCxHQUFFLENBQUMsS0FBR0EsR0FBRSxFQUFFLEdBQUVNLEtBQUUsRUFBRUwsSUFBRUMsSUFBRUMsSUFBRUMsRUFBQztBQUFFLFNBQU8sV0FBU0MsT0FBSUMsR0FBRSxJQUFFLEVBQUVELEVBQUMsSUFBR0M7QUFBQyxHQUFFO0FBQXJ0TCxJQUF3dEwsTUFBSSxJQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBRSxTQUFTUCxJQUFFO0FBQUMsTUFBSUMsS0FBRSxFQUFDLEdBQUUsRUFBRSxHQUFHLE9BQU9ELEdBQUUsQ0FBQyxDQUFDLEdBQUUsR0FBRSxFQUFFLEdBQUcsT0FBT0EsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEVBQUUsR0FBRyxPQUFPQSxHQUFFLENBQUMsQ0FBQyxFQUFDO0FBQUUsU0FBTyxFQUFFQSxJQUFFLEdBQUcsTUFBSUMsR0FBRSxJQUFFLEtBQUssSUFBSSxFQUFFLEdBQUcsT0FBT0QsR0FBRSxDQUFDLEdBQUUsSUFBRSxHQUFFLENBQUMsSUFBR0M7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0QsSUFBRTtBQUFDLFNBQU8sS0FBSyxJQUFJQSxFQUFDO0FBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLFNBQVNBLElBQUU7QUFBQyxNQUFJQyxLQUFFLEVBQUUsR0FBRyxPQUFPRCxHQUFFLENBQUMsQ0FBQyxHQUFFRSxLQUFFLEVBQUUsR0FBRyxPQUFPRixHQUFFLENBQUMsQ0FBQyxHQUFFRyxLQUFFLEVBQUUsRUFBRUgsR0FBRSxDQUFDLEdBQUVDLElBQUVDLEVBQUM7QUFBRSxTQUFPLEVBQUVGLElBQUUsR0FBRyxNQUFJRyxHQUFFLElBQUUsRUFBRUgsR0FBRSxDQUFDLElBQUdHO0FBQUMsR0FBRSxFQUFFLEVBQUUsSUFBSSxJQUFFLFNBQVNILElBQUU7QUFBQyxNQUFJQyxLQUFFLEVBQUUsR0FBRyxPQUFPRCxHQUFFLENBQUMsQ0FBQyxHQUFFRSxLQUFFLEVBQUUsR0FBRyxPQUFPRixHQUFFLENBQUMsQ0FBQyxHQUFFRyxLQUFFLEVBQUUsR0FBRyxPQUFPSCxHQUFFLENBQUMsQ0FBQyxHQUFFSSxLQUFFLEVBQUUsR0FBRyxPQUFPSixHQUFFLENBQUMsQ0FBQyxHQUFFSyxLQUFFLEVBQUVKLElBQUVDLElBQUVDLElBQUVDLEVBQUM7QUFBRSxTQUFPLEVBQUVKLElBQUUsR0FBRyxNQUFJSyxHQUFFLElBQUUsRUFBRUwsR0FBRSxDQUFDLElBQUdLO0FBQUMsR0FBRTtBQUF2cU0sSUFBMHFNLEtBQUcsU0FBU0wsSUFBRUMsSUFBRTtBQUFDLFNBQU8sV0FBU0EsT0FBSUEsS0FBRSxFQUFFRCxFQUFDLElBQUcsWUFBVSxPQUFPQSxLQUFFLEVBQUVDLEVBQUMsRUFBRUQsRUFBQyxJQUFFLEVBQUVDLEVBQUMsRUFBRUQsRUFBQztBQUFDO0FBQXp2TSxJQUEydk0sT0FBSyxJQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBRSxTQUFTQSxJQUFFO0FBQUMsU0FBTSxFQUFDLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFQSxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxFQUFDO0FBQUMsR0FBRSxFQUFFLE9BQUssU0FBU0EsSUFBRTtBQUFDLE1BQUlDLEtBQUUsR0FBRyxJQUFJRCxFQUFDO0FBQUUsU0FBT0MsR0FBRSxJQUFFLEVBQUVELElBQUUsR0FBRyxJQUFFLEVBQUUsTUFBSUEsR0FBRSxDQUFDLElBQUUsUUFBT0M7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0QsSUFBRUMsSUFBRTtBQUFDLFNBQU8sRUFBRUQsSUFBRSxHQUFHLEtBQUcsT0FBT0EsR0FBRSxHQUFFLEdBQUdBLElBQUVDLEVBQUM7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsU0FBT0QsR0FBRSxJQUFFLEVBQUVBLElBQUUsR0FBRyxJQUFFLEVBQUVBLEdBQUUsQ0FBQyxJQUFFLEdBQUUsR0FBR0EsSUFBRUMsRUFBQztBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxFQUFFRixHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDO0FBQUUsU0FBTyxPQUFPRSxHQUFFLEdBQUUsR0FB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U0FBT0YsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEVBQUVILEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsQ0FBQyxJQUFFLEdBQUcsSUFBSSxFQUFFQSxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUM7QUFBQSxFQUFDLENBQUU7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBT0YsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRUgsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxHQUFFLE1BQUksRUFBRUEsR0FBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRUEsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztBQUFBLEVBQUMsQ0FBRTtBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBT0gsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRUgsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxHQUFFSSxFQUFDLENBQUMsSUFBRSxHQUFHLElBQUksRUFBRUosR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxHQUFFSSxFQUFDO0FBQUEsRUFBQyxDQUFFO0FBQUMsR0FBRSxFQUFFLE9BQUssU0FBU0gsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFNBQU9ILEdBQUVELElBQUVFLEVBQUMsRUFBRSxJQUFLLFNBQVNGLElBQUU7QUFBQyxXQUFPRyxLQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRUgsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxFQUFDLENBQUMsR0FBRUksRUFBQyxDQUFDLElBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRUosR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLEdBQUUsRUFBQyxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxFQUFDLENBQUMsR0FBRUksRUFBQztBQUFBLEVBQUMsQ0FBRTtBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTTCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBT0gsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEdBQUcsRUFBQyxHQUFFSCxHQUFFLEdBQUUsR0FBRUEsR0FBRSxHQUFFLEdBQUVBLEdBQUUsRUFBQyxHQUFFSSxFQUFDLENBQUMsSUFBRSxHQUFHLElBQUksRUFBRUosR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxHQUFFSSxFQUFDO0FBQUEsRUFBQyxDQUFFO0FBQUMsR0FBRSxFQUFFLE9BQUssU0FBU0gsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFNBQU9ILEdBQUVELElBQUVFLEVBQUMsRUFBRSxJQUFLLFNBQVNGLElBQUU7QUFBQyxXQUFPRyxLQUFFLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUVILEVBQUMsR0FBRSxFQUFDLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEVBQUMsQ0FBQyxHQUFFSSxFQUFDLENBQUMsSUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFSixHQUFFLEdB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SyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxLQUFLLElBQUlILElBQUVDLEVBQUM7QUFBRSxTQUFPRSxHQUFFLElBQUVELEtBQUUsTUFBSSxFQUFFQyxHQUFFLENBQUMsSUFBRSxFQUFFQSxHQUFFLENBQUMsR0FBRUQsS0FBRSxFQUFFLElBQUlDLEVBQUMsSUFBRSxHQUFHLEtBQUtBLEVBQUM7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0gsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLE1BQUlDLEtBQUUsS0FBSyxJQUFJSixJQUFFQyxFQUFDO0FBQUUsU0FBTyxPQUFPRyxHQUFFLEdBQUVGLEtBQUUsRUFBRSxJQUFJRSxFQUFDLElBQUUsR0FBRyxJQUFJQSxJQUFFRCxFQUFDO0FBQUMsR0FBRSxFQUFFLE9BQUssU0FBU0gsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLE1BQUlDLEtBQUUsS0FBSyxJQUFJSixJQUFFQyxFQUFDO0FBQUUsU0FBT0MsS0FBRSxFQUFFLElBQUlFLEVBQUMsSUFBRSxHQUFHLEtBQUtBLElBQUVELEVBQUM7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0gsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLE1BQUlDLEtBQUUsS0FBSyxJQUFJSixJQUFFQyxFQUFDLEdBQUVJLEtBQUUsRUFBRUQsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQztBQUFFLFNBQU8sT0FBT0EsR0FBRSxHQUFFLE9BQU9DLEdBQUUsR0FBRUgsS0FBRSxFQUFFLElBQUlHLEVBQUMsSUFBRSxHQUFHLElBQUlELElBQUVELEVBQUM7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxLQUFLLElBQUlKLElBQUVDLEVBQUMsR0FBRUksS0FBRSxFQUFFRCxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUM7QUFBRSxTQUFPRixLQUFFLEVB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LFlBQVUsV0FBVTtBQUFDLFNBQUssTUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFFLEVBQUMsR0FBRSxLQUFLLElBQUksRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFQSxHQUFFLFVBQVUsb0JBQWtCLFdBQVU7QUFBQyxTQUFLLE1BQUksRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsR0FBRSxFQUFDLEdBQUUsS0FBSyxJQUFJLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRUEsR0FBRSxVQUFVLFlBQVUsV0FBVTtBQUFDLFNBQUssTUFBSSxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssSUFBSSxDQUFDO0FBQUEsRUFBQyxHQUFFQSxHQUFFLFVBQVUsYUFBVyxXQUFVO0FBQUMsU0FBSyxPQUFLLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxJQUFJLENBQUM7QUFBQSxFQUFDLEdBQUVBLEdBQUUsVUFBVSxtQkFBaUIsV0FBVTtBQUFDLFdBQU8sS0FBSyxVQUFVLEdBQUUsS0FBSyxXQUFXLEdBQUU7QUFBQSxFQUFJLEdBQUVBLEdBQUUsVUFBVSxtQkFBaUIsV0FBVTtBQUFDLFdBQU8sS0FBSyxVQUFVLEdBQUUsS0FBSyxXQUFXLEdBQUU7QUFBQSxFQUFJLEdBQUVBLEdBQUUsVUFBVSxrQkFBZ0IsV0FBVTtBQUFDLFdBQU8sS0FBSyxrQkFBa0IsR0FBRSxLQUFLLFVBQVUsR0FBRTtBQUFBLEVBQUksR0FBRUEsR0FBRSxVQUFVLGNBQVksU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxZQUFVQSxJQUFFO0FBQUEsRUFBSSxHQUFFQyxHQUFFLFVBQVUsT0FBSyxTQUFTRCxJQUFFO0FBQUMsV0FBTyxLQUFLLElBQUksSUFBRSxFQUFFQSxFQUFDLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxpQkFBaUI7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssSUFBSSxJQUFFLEtBQUssSUFBSSxJQUFFLEVBQUVBLElBQUUsR0FBRSxDQUFDLEdBQUU7QUFBQSxFQUFJLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssS0FBSyxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxnQkFBZ0I7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssS0FBSyxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxnQkFBZ0I7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssS0FBSyxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxnQkFBZ0I7QUFBQSxFQUFDLEdBQUVDLEdBQUUsVUFBVSxPQUFLLFNBQVNELElBQUU7QUFBQyxXQUFPLEtBQUssS0FBSyxJQUFFLEVBQUVBLElBQUUsR0FBRSxHQUFHLEdBQUUsS0FBSyxnQkFBZ0I7QUFBQSxFQUFDLEdBQUUsT0FBTyxlQUFlQyxHQUFFLFdBQVUsWUFBVyxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sS0FBSztBQUFBLEVBQVMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssSUFBSSxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxLQUFJLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssS0FBSyxHQUFFLEtBQUssUUFBUTtBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxhQUFZLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxHQUFHLElBQUksS0FBSyxHQUFHO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGNBQWEsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUcsS0FBSyxLQUFLLEdBQUc7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsYUFBWSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU0sRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxjQUFhLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUssU0FBUyxHQUFFLEVBQUMsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxhQUFZLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGNBQWEsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSyxTQUFTLEdBQUUsRUFBQyxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGNBQWEsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFNLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsZUFBYyxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFLLFVBQVUsR0FBRSxFQUFDLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsT0FBTSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxJQUFJLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxRQUFPLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLElBQUksRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLE1BQUksS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsT0FBTSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxJQUFJLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxRQUFPLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLElBQUksRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLE9BQU0sRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsSUFBSSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsUUFBTyxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxJQUFJLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxRQUFPLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEtBQUssRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLFNBQVEsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUVBLEdBQUUsUUFBTSxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsZUFBU0EsT0FBSUEsS0FBRTtBQUFJLFFBQUlDLEtBQUUsRUFBRUYsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUUsSUFBRUQsSUFBRSxHQUFFLEdBQUcsS0FBSSxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVBLEdBQUUsU0FBTyxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsZUFBU0EsT0FBSUEsS0FBRTtBQUFJLFFBQUlDLEtBQUUsRUFBRUYsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUUsSUFBRUQsSUFBRSxHQUFFLEdBQUcsTUFBSyxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVBLEdBQUUsUUFBTSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBU0QsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUU7QUFBRyxRQUFJQyxLQUFFLEVBQUVILEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVHLElBQUVGLElBQUVDLElBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUQsR0FBRSxTQUFPLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFTRCxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRTtBQUFHLFFBQUlDLEtBQUUsRUFBRUgsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUcsSUFBRUYsSUFBRUMsSUFBRSxHQUFHLE1BQUssRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFFBQU0sU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQVNELE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFO0FBQUcsUUFBSUMsS0FBRSxFQUFFSCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRyxJQUFFRixJQUFFQyxJQUFFLEdBQUcsS0FBSSxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVELEdBQUUsU0FBTyxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBU0QsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUU7QUFBRyxRQUFJQyxLQUFFLEVBQUVILEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVHLElBQUVGLElBQUVDLElBQUUsR0FBRyxNQUFLLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUQsR0FBRSxTQUFPLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFTRCxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRTtBQUFHLFFBQUlDLEtBQUUsRUFBRUgsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUcsSUFBRUYsSUFBRUMsSUFBRSxHQUFHLE1BQUssRUFBRSxJQUFJO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFVBQVEsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQVNELE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFO0FBQUcsUUFBSUMsS0FBRSxFQUFFSCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRyxJQUFFRixJQUFFQyxJQUFFLEdBQUcsT0FBTSxFQUFFLElBQUk7QUFBQSxFQUFDLEdBQUVELEdBQUUsY0FBWSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsS0FBSSxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsZUFBYSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsTUFBSyxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsY0FBWSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsS0FBSSxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsZUFBYSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsTUFBSyxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsY0FBWSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsS0FBSSxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsZUFBYSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLElBQUcsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHSixJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFLEdBQUcsTUFBSyxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVILEdBQUUsWUFBVSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRCxPQUFJQSxLQUFFLEVBQUUsV0FBVSxXQUFTQyxPQUFJQSxLQUFFLE9BQUksR0FBRyxJQUFJRixJQUFFQyxJQUFFQyxFQUFDO0FBQUEsRUFBQyxHQUFFRCxHQUFFLGFBQVcsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0QsT0FBSUEsS0FBRSxFQUFFLFdBQVUsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLEdBQUcsS0FBS0YsSUFBRUMsSUFBRUMsRUFBQztBQUFBLEVBQUMsR0FBRUQsR0FBRSxZQUFVLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsRUFBRSxXQUFVLFdBQVNDLE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFLElBQUcsR0FBRyxJQUFJSCxJQUFFQyxJQUFFQyxJQUFFQyxFQUFDO0FBQUEsRUFBQyxHQUFFRixHQUFFLGFBQVcsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0YsT0FBSUEsS0FBRSxFQUFFLFdBQVUsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHLEtBQUtILElBQUVDLElBQUVDLElBQUVDLEVBQUM7QUFBQSxFQUFDLEdBQUVGLEdBQUUsWUFBVSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLEVBQUUsV0FBVSxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUcsSUFBSUgsSUFBRUMsSUFBRUMsSUFBRUMsRUFBQztBQUFBLEVBQUMsR0FBRUYsR0FBRSxhQUFXLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsRUFBRSxXQUFVLFdBQVNDLE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFLElBQUcsR0FBRyxLQUFLSCxJQUFFQyxJQUFFQyxJQUFFQyxFQUFDO0FBQUEsRUFBQyxHQUFFRixHQUFFLFlBQVUsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0EsT0FBSUEsS0FBRSxJQUFHLEdBQUdGLElBQUVDLElBQUUsTUFBR0MsRUFBQztBQUFBLEVBQUMsR0FBRUQsR0FBRSxXQUFTLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNBLE9BQUlBLEtBQUUsSUFBRyxHQUFHRixJQUFFQyxJQUFFLE9BQUdDLEVBQUM7QUFBQSxFQUFDLEdBQUVELEdBQUUsYUFBVyxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFRyxJQUFFO0FBQUMsV0FBTyxXQUFTSixPQUFJQSxLQUFFLEVBQUUsZ0JBQWUsV0FBU0MsT0FBSUEsS0FBRSxFQUFFLFdBQVUsV0FBU0csT0FBSUEsS0FBRSxJQUFHLFNBQVNMLElBQUVDLElBQUVDLElBQUVFLElBQUU7QUFBQyxVQUFJQztBQUFFLGNBQU9BLEtBQUUsQ0FBQyxHQUFFQSxHQUFFLEVBQUUsU0FBUyxJQUFFLEdBQUcsYUFBYUosSUFBRSxHQUFFRyxJQUFFRixFQUFDLEdBQUVHLEdBQUUsRUFBRSxhQUFhLElBQUUsR0FBRyxhQUFhSixJQUFFLEdBQUVHLElBQUVGLEVBQUMsR0FBRUcsR0FBRSxFQUFFLG1CQUFtQixJQUFFLEdBQUcsYUFBYUosSUFBRSxHQUFFRyxJQUFFRixFQUFDLEdBQUVHLEdBQUUsRUFBRSxPQUFPLElBQUUsR0FBRyxhQUFhSixJQUFFLEdBQUVHLElBQUVGLEVBQUMsR0FBRUcsR0FBRSxFQUFFLFFBQVEsSUFBRSxHQUFHLGFBQWFKLElBQUUsR0FBRUcsSUFBRUYsRUFBQyxHQUFFRyxHQUFFLEVBQUUsTUFBTSxJQUFFLEdBQUcsYUFBYUosSUFBRSxHQUFFRyxJQUFFRixFQUFDLEdBQUVHLElBQUdMLEVBQUM7QUFBQSxJQUFDLEVBQUVDLElBQUVELElBQUVLLElBQUVILEVBQUM7QUFBQSxFQUFDLEdBQUVEO0FBQUMsRUFBRTs7O0FEUWgwdEIsSUFBTSxrQkFBMEM7QUFBQSxFQUMvQyxRQUFRO0FBQUEsRUFDUixtQkFBbUI7QUFBQSxFQUNuQixVQUFVO0FBQ1g7QUFFTyxJQUFNLGNBQU4sY0FBMEIsaUNBQWlCO0FBQUEsRUFLakQsWUFBWSxLQUFVLFFBQTBCO0FBQy9DLFVBQU0sS0FBSyxNQUFNO0FBQ2pCLFNBQUssU0FBUztBQUNkLFNBQUssU0FBUyxDQUFDO0FBQ2YsU0FBSyx3QkFBd0IsQ0FBQztBQUFBLEVBQy9CO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxVQUFVO0FBQ1QsVUFBTSxFQUFDLFlBQVcsSUFBSTtBQUN0QixnQkFBWSxNQUFNO0FBQ2xCLGdCQUFZLFNBQVMsTUFBTSxFQUFDLE1BQU0sdUNBQXNDLENBQUM7QUFFekUsU0FBSyx3QkFBd0I7QUFBQSxNQUM1QixlQUFlLENBQUM7QUFBQSxNQUNoQixhQUFhLENBQUM7QUFBQSxNQUNkLHNCQUFzQixDQUFDO0FBQUEsTUFDdkIsdUJBQXVCLENBQUM7QUFBQSxNQUN4Qiw2QkFBNkIsQ0FBQztBQUFBLE1BQzlCLGdDQUFnQyxDQUFDO0FBQUEsTUFDakMsd0JBQXdCLENBQUM7QUFBQSxNQUN6Qix3QkFBd0IsQ0FBQztBQUFBLElBQzFCO0FBSUEsUUFBSSxnQkFBZ0MsV0FBVyxNQUFJO0FBQUEsSUFBQyxDQUFDO0FBQ3JELFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLG1CQUFtQixFQUMzQixRQUFRLG9RQUFvUSxFQUM1USxRQUFRLENBQUFzQixVQUFRQSxNQUNmLGVBQWUsZ0NBQWdDLEVBQy9DLFNBQVMsS0FBSyxPQUFPLFNBQVMsa0JBQWtCLEVBQ2hELFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLFdBQUssT0FBTyxTQUFTLHFCQUFxQjtBQUMxQyxPQUFDLFlBQVk7QUFBQyxjQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsTUFBQyxHQUFHO0FBQ2pELG1CQUFhLGFBQWE7QUFDMUIsc0JBQWdCLFdBQVcsTUFBSSxLQUFLLE9BQU8sZ0JBQWdCLEdBQUUsR0FBSTtBQUFBLElBQ2xFLENBQUMsQ0FBQztBQUVKLFFBQUksaUJBQWlDLFdBQVcsTUFBSTtBQUFBLElBQUMsQ0FBQztBQUN0RCxRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSxtQkFBbUIsRUFDM0IsUUFBUSwrUEFBK1AsRUFDdlEsUUFBUSxDQUFBQSxVQUFRQSxNQUNmLGVBQWUsd0JBQXdCLEVBQ3ZDLFNBQVMsS0FBSyxPQUFPLFNBQVMsaUJBQWlCLEVBQy9DLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLFdBQUssT0FBTyxTQUFTLG9CQUFvQjtBQUN6QyxPQUFDLFlBQVk7QUFBQyxjQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsTUFBQyxHQUFHO0FBQ2pELG1CQUFhLGNBQWM7QUFDM0IsdUJBQWlCLFdBQVcsTUFBSSxLQUFLLE9BQU8sZ0JBQWdCLEdBQUUsR0FBSTtBQUFBLElBQ25FLENBQUMsQ0FBQztBQUVKLFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLHNCQUFzQixFQUM5QixRQUFRLDREQUE0RCxFQUNwRSxVQUFVLFlBQVUsT0FDbkIsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLEVBQzNDLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLFdBQUssT0FBTyxTQUFTLGdCQUFnQjtBQUNyQyxPQUFDLFlBQVk7QUFBQyxjQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsTUFBQyxHQUFHO0FBQUEsSUFDbEQsQ0FBQyxDQUFDO0FBR0osZ0JBQVksU0FBUyxNQUFNLEVBQUMsTUFBTSxpQkFBZ0IsQ0FBQztBQUVuRCxRQUFJO0FBQ0osUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsY0FBYyxFQUN0QixZQUFZLENBQUMsYUFBYTtBQUMxQixzQkFBZ0I7QUFDaEIsV0FBSyxlQUFlLGVBQWMsS0FBSyxPQUFPLFFBQVE7QUFDdEQsb0JBQWMsU0FBUyxDQUFDLFVBQVU7QUFDakMsYUFBSyxPQUFPLFNBQVMsZ0JBQWdCO0FBQ3JDLGFBQUssT0FBTyxTQUFTLGVBQWUsZ0JBQWdCLEtBQUssT0FBTyxTQUFTLE9BQU8sS0FBSyxPQUFPLFNBQVMsYUFBYSxDQUFDO0FBQ25ILGFBQUssUUFBUTtBQUNiLFNBQUMsWUFBWTtBQUFDLGdCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsUUFBQyxHQUFHO0FBQUEsTUFDbEQsQ0FBQztBQUFBLElBQ0YsQ0FBQyxFQUNBLGVBQWUsWUFBVTtBQUN6QixhQUFPLFdBQVcsY0FBYztBQUNoQyxhQUFPLFFBQVEsTUFBTTtBQUNyQixhQUFPLFFBQVEsTUFBTTtBQUNwQixZQUFJLEtBQUssT0FBTyxTQUFTLGlCQUFpQixpQkFBaUI7QUFDMUQsY0FBSSx1QkFBTyxzQ0FBc0M7QUFBQSxhQUM3QztBQUNKLGVBQUssT0FBTyxTQUFTLE9BQU8sS0FBSyxPQUFPLFNBQVMsYUFBYSxJQUFJLGdCQUFnQixLQUFLLE9BQU8sU0FBUyxZQUFZO0FBQ25ILGVBQUssNEJBQTRCLDhCQUE4QjtBQUMvRCxjQUFJLHVCQUFPLEdBQUcsS0FBSyxPQUFPLFNBQVMseUNBQXlDO0FBQzVFLFdBQUMsWUFBWTtBQUFDLGtCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsVUFBQyxHQUFHO0FBQUEsUUFDbEQ7QUFBQSxNQUNELENBQUM7QUFBQSxJQUNGLENBQUMsRUFDQSxlQUFlLFlBQVU7QUFDekIsYUFBTyxXQUFXLGNBQWM7QUFDaEMsYUFBTyxRQUFRLE9BQU87QUFDdEIsYUFBTyxRQUFRLE1BQU07QUFDcEIsWUFBSSxLQUFLLE9BQU8sU0FBUyxjQUFjLEtBQUssRUFBRSxXQUFXO0FBQ3hELGNBQUksdUJBQU8sZ0NBQWdDO0FBQUEsaUJBQ25DLEtBQUssT0FBTyxTQUFTLGlCQUFpQixpQkFBaUI7QUFDL0QsY0FBSSx1QkFBTyxzQ0FBc0M7QUFBQSxhQUM3QztBQUNKLGlCQUFPLEtBQUssT0FBTyxTQUFTLE9BQU8sS0FBSyxPQUFPLFNBQVMsYUFBYTtBQUNyRSxjQUFJLHVCQUFPLEdBQUcsS0FBSyxPQUFPLFNBQVMsMkNBQTJDO0FBQzlFLGVBQUssT0FBTyxTQUFTLGdCQUFnQjtBQUNyQyxlQUFLLE9BQU8sU0FBUyxlQUFlLGdCQUFnQixLQUFLLE9BQU8sU0FBUyxPQUFPLEtBQUssT0FBTyxTQUFTLGFBQWEsQ0FBQztBQUNuSCxlQUFLLGVBQWUsZUFBYyxLQUFLLE9BQU8sUUFBUTtBQUN0RCxlQUFLLFFBQVE7QUFDYixXQUFDLFlBQVk7QUFBQyxrQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFVBQUMsR0FBRztBQUFBLFFBQ2xEO0FBQUEsTUFDRCxDQUFDO0FBQUEsSUFDRixDQUFDO0FBQ0YsUUFBSTtBQUNKLFFBQUk7QUFDSixTQUFLLE9BQU8sU0FBUyxXQUFXO0FBQ2hDLFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLGVBQWUsRUFDdkIsUUFBUSwrQ0FBK0MsRUFDdkQsUUFBUSxDQUFBQSxVQUFRO0FBQUMscUJBQWVBLE1BQy9CLGVBQWUsZ0JBQWdCLEVBQy9CLFNBQVMsS0FBSyxPQUFPLFNBQVMsUUFBUSxFQUN0QyxTQUFTLENBQUMsVUFBVTtBQUNwQixhQUFLLE9BQU8sU0FBUyxXQUFXO0FBQUEsTUFDakMsQ0FBQztBQUFBLElBQ0YsQ0FBQyxFQUNBLGVBQWUsWUFBVTtBQUN6QixhQUFPLFdBQVcsWUFBWTtBQUM5QixhQUFPLFFBQVEsTUFBTTtBQUNyQixhQUFPLFFBQVEsTUFBTTtBQUNwQixZQUFJLEtBQUssT0FBTyxTQUFTLFNBQVMsS0FBSyxFQUFFLFdBQVc7QUFDbkQsY0FBSSx1QkFBTywyQkFBMkI7QUFBQSxpQkFDOUIsS0FBSyxPQUFPLFNBQVMsWUFBWSxpQkFBaUI7QUFDMUQsY0FBSSx1QkFBTyx3Q0FBeUM7QUFBQSxhQUNoRDtBQUNKLGNBQUksS0FBSyxPQUFPLFNBQVMsWUFBWSxLQUFLLE9BQU8sU0FBUyxRQUFRO0FBQ2pFLGlCQUFLLE9BQU8sU0FBUyxPQUFPLEtBQUssT0FBTyxTQUFTLFFBQVEsSUFBSSxnQkFBZ0IsS0FBSyxPQUFPLFNBQVMsWUFBWTtBQUM5RyxnQkFBSSx1QkFBTyxHQUFHLEtBQUssT0FBTyxTQUFTLHNDQUFzQztBQUFBLFVBQzFFLE9BQU87QUFDTixpQkFBSyxPQUFPLFNBQVMsT0FBTyxLQUFLLE9BQU8sU0FBUyxRQUFRLElBQUksZ0JBQWdCLEtBQUssT0FBTyxTQUFTLFlBQVk7QUFDOUcsZ0JBQUksdUJBQU8sR0FBRyxLQUFLLE9BQU8sU0FBUyxvQ0FBb0M7QUFBQSxVQUN4RTtBQUNBLGVBQUssT0FBTyxTQUFTLGdCQUFnQixLQUFLLE9BQU8sU0FBUztBQUMxRCxlQUFLLGVBQWUsZUFBYyxLQUFLLE9BQU8sUUFBUTtBQUN0RCxlQUFLLDRCQUE0Qiw4QkFBOEI7QUFDL0QsZUFBSyxPQUFPLFNBQVMsV0FBVztBQUNoQyx1QkFBYSxTQUFTLEVBQUU7QUFDeEIsMEJBQWdCLFNBQVMsS0FBSztBQUM5QixXQUFDLFlBQVk7QUFBQyxrQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFVBQUMsR0FBRztBQUFBLFFBQ2xEO0FBQUEsTUFDRCxDQUFDO0FBQUEsSUFDRixDQUFDO0FBRUYsZ0JBQVksU0FBUyxNQUFNLEVBQUMsTUFBTSx1QkFBc0IsQ0FBQztBQUN6RCxRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSw2QkFBNkIsRUFDckMsS0FBSyxDQUFDLFlBQVk7QUFBQyxXQUFLO0FBQUEsUUFDeEIsS0FBSztBQUFBLFFBQU87QUFBQSxRQUFZO0FBQUEsUUFDeEI7QUFBQSxRQUNBLENBQUMseUJBQWlELHFCQUFxQixlQUFlLENBQUMsRUFBRSxVQUFVO0FBQUEsUUFDbkcsQ0FBQyxzQkFBOEMsZUFBdUI7QUFBQywrQkFBcUIsZUFBZSxDQUFDLEVBQUUsVUFBVSxtQkFBbUI7QUFBQSxRQUFVO0FBQUEsTUFDdEo7QUFBQSxJQUFDLENBQUM7QUFDSCxRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSx1QkFBdUIsRUFDL0IsS0FBSyxDQUFDLFlBQVk7QUFBQyxXQUFLO0FBQUEsUUFDeEIsS0FBSztBQUFBLFFBQU87QUFBQSxRQUFZO0FBQUEsUUFDeEI7QUFBQSxRQUNBLENBQUMseUJBQWlELHFCQUFxQixlQUFlLENBQUMsRUFBRSxVQUFVO0FBQUEsUUFDbkcsQ0FBQyxzQkFBOEMsZUFBdUI7QUFBQywrQkFBcUIsZUFBZSxDQUFDLEVBQUUsVUFBVSxhQUFhO0FBQUEsUUFBVTtBQUFBLE1BQ2hKO0FBQUEsSUFBQyxDQUFDO0FBQ0gsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsd0JBQXdCLEVBQ2hDLFFBQVEsZ0RBQWdELEVBQ3hELFVBQVUsWUFBVSxPQUNuQixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxVQUFVLFdBQVcsRUFDekUsU0FBUyxDQUFDLFVBQVU7QUFDcEIsV0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFVBQVUsY0FBYztBQUNuRSxVQUFJLENBQUM7QUFDSiw4QkFBc0IsU0FBUyxLQUFLO0FBQ3JDLFdBQUssc0JBQXNCLFdBQVcsRUFBRSxRQUFRLGVBQWE7QUFBQyxrQkFBVSxZQUFZLENBQUMsS0FBSztBQUFBLE1BQUMsQ0FBQztBQUM1RixPQUFDLFlBQVk7QUFBQyxjQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsTUFBQyxHQUFHO0FBQ2pELFdBQUssT0FBTyxnQkFBZ0I7QUFBQSxJQUM3QixDQUFDLENBQUM7QUFDSixRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSxxQkFBcUIsRUFDN0IsUUFBUSx5REFBeUQsRUFDakUsS0FBSyxDQUFDLFlBQVk7QUFDbEIsVUFBSTtBQUNKLGNBQVEsVUFBVSxDQUFDLFdBQVc7QUFBQywyQkFBbUIsT0FDaEQsVUFBVSxHQUFFLElBQUcsQ0FBQyxFQUNoQixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxVQUFVLFNBQVMsRUFDdkUsa0JBQWtCLEVBQ2xCLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLGVBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxVQUFVLFlBQVk7QUFDakUsV0FBQyxZQUFZO0FBQUMsa0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxVQUFDLEdBQUc7QUFBQSxRQUNsRCxDQUFDO0FBQUEsTUFDRixDQUFDO0FBQ0QsY0FBUSxlQUFlLENBQUMsV0FBVztBQUFDLGVBQ2xDLFFBQVEsT0FBTyxFQUNmLFdBQVcsMkJBQTJCLEVBQ3RDLFFBQVEsTUFBTTtBQUNkLGVBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxVQUFVLFlBQVksS0FBSyxPQUFPLFNBQVMsT0FBTyxLQUFLLE9BQU8sU0FBUyxhQUFhLEVBQUUsU0FBUyxVQUFVO0FBQ3BKLDJCQUFpQixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxVQUFVLFNBQVM7QUFDeEYsV0FBQyxZQUFZO0FBQUMsa0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxVQUFDLEdBQUc7QUFBQSxRQUNsRCxDQUFDO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDRixDQUFDO0FBRUYsZ0JBQVksU0FBUyxNQUFNLEVBQUMsTUFBTSxvQkFBbUIsQ0FBQztBQUN0RCxRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSxxQkFBcUIsRUFDN0IsUUFBUSxtREFBbUQsRUFDM0QsVUFBVSxZQUFVLE9BQ25CLFNBQVMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFVBQVUsV0FBVyxFQUN6RSxTQUFTLENBQUMsVUFBVTtBQUNwQixXQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsVUFBVSxjQUFjO0FBQ25FLFdBQUssc0JBQXNCLGFBQWEsRUFBRSxRQUFRLGVBQWE7QUFBQyxrQkFBVSxZQUFZLENBQUMsS0FBSztBQUFBLE1BQUMsQ0FBQztBQUM5RixPQUFDLFlBQVk7QUFBQyxjQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsTUFBQyxHQUFHO0FBQUEsSUFDbEQsQ0FBQyxDQUFDO0FBQ0osUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsMEJBQTBCLEVBQ2xDLEtBQUssQ0FBQyxZQUFZO0FBQUMsV0FBSztBQUFBLFFBQ3hCLEtBQUs7QUFBQSxRQUFPO0FBQUEsUUFBWTtBQUFBLFFBQ3hCO0FBQUEsUUFDQSxDQUFDLHlCQUFpRCxxQkFBcUIsZUFBZSxDQUFDLEVBQUUsT0FBTztBQUFBLFFBQ2hHLENBQUMsc0JBQThDLGVBQXVCO0FBQUMsK0JBQXFCLGVBQWUsQ0FBQyxFQUFFLE9BQU8sbUJBQW1CO0FBQUEsUUFBVTtBQUFBLFFBQ2xKLE1BQU0sQ0FBQyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsVUFBVTtBQUFBLE1BQzdEO0FBQUEsSUFBQyxDQUFDO0FBQ0gsU0FBSyxzQkFBc0IsYUFBYSxFQUFFLEtBQUssS0FBSyxPQUFPLG1CQUFtQixFQUFFLFdBQVc7QUFDM0YsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsb0JBQW9CLEVBQzVCLEtBQUssQ0FBQyxZQUFZO0FBQUMsV0FBSztBQUFBLFFBQ3hCLEtBQUs7QUFBQSxRQUFPO0FBQUEsUUFBWTtBQUFBLFFBQ3hCO0FBQUEsUUFDQSxDQUFDLHlCQUFpRCxxQkFBcUIsZUFBZSxDQUFDLEVBQUUsT0FBTztBQUFBLFFBQ2hHLENBQUMsc0JBQThDLGVBQXVCO0FBQUMsK0JBQXFCLGVBQWUsQ0FBQyxFQUFFLE9BQU8sYUFBYTtBQUFBLFFBQVU7QUFBQSxRQUM1SSxNQUFNLENBQUMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFVBQVU7QUFBQSxNQUM3RDtBQUFBLElBQUMsQ0FBQztBQUNILFNBQUssc0JBQXNCLGFBQWEsRUFBRSxLQUFLLEtBQUssT0FBTyxhQUFhLEVBQUUsV0FBVztBQUNyRixRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSx3QkFBd0IsRUFDaEMsUUFBUSw4REFBOEQsRUFDdEUsVUFBVSxZQUFVO0FBQUMsVUFBSSw2QkFBNkIsT0FDckQsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxTQUFTLEVBQ3BFLFlBQVksQ0FBQyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsVUFBVSxXQUFXLEVBQzdFLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLGFBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFlBQVk7QUFDOUQsU0FBQyxZQUFZO0FBQUMsZ0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxRQUFDLEdBQUc7QUFBQSxNQUNsRCxDQUFDO0FBQ0QsV0FBSyxzQkFBc0IsYUFBYSxFQUFFLEtBQUssMEJBQTBCO0FBQUEsSUFDMUUsQ0FBQztBQUNGLFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLDhCQUE4QixFQUN0QyxRQUFRLDZGQUE2RixFQUNyRyxTQUFTLG9CQUFvQixFQUM3QixVQUFVLFlBQVU7QUFBQyxVQUFJLGtDQUFrQyxPQUMxRCxTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFVBQVUsRUFDckUsWUFBWSxDQUFDLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxVQUFVLFdBQVcsRUFDN0UsU0FBUyxDQUFDLFVBQVU7QUFDcEIsYUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sYUFBYTtBQUMvRCxTQUFDLFlBQVk7QUFBQyxnQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFFBQUMsR0FBRztBQUFBLE1BQ2xELENBQUM7QUFDRCxXQUFLLHNCQUFzQixhQUFhLEVBQUUsS0FBSywrQkFBK0I7QUFBQSxJQUMvRSxDQUFDLEVBQ0EsS0FBSyxDQUFDLFlBQVk7QUFBQyxXQUFLO0FBQUEsUUFDeEIsS0FBSztBQUFBLFFBQU87QUFBQSxRQUFZO0FBQUEsUUFDeEI7QUFBQSxRQUNBLENBQUMseUJBQWlELHFCQUFxQixlQUFlLENBQUMsRUFBRSxPQUFPO0FBQUEsUUFDaEcsQ0FBQyxzQkFBOEMsZUFBdUI7QUFBQywrQkFBcUIsZUFBZSxDQUFDLEVBQUUsT0FBTyxtQkFBbUI7QUFBQSxRQUFVO0FBQUEsUUFDbEosTUFBTSxDQUFDLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxVQUFVO0FBQUEsTUFDN0Q7QUFBQSxJQUFDLENBQUM7QUFFSCxnQkFBWSxTQUFTLE1BQU0sRUFBQyxNQUFNLG9CQUFtQixDQUFDO0FBQ3RELFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLDBCQUEwQixFQUNsQyxLQUFLLENBQUMsWUFBWTtBQUFDLFdBQUs7QUFBQSxRQUN4QixLQUFLO0FBQUEsUUFBTztBQUFBLFFBQVk7QUFBQSxRQUN4QjtBQUFBLFFBQ0EsQ0FBQyx5QkFBaUQscUJBQXFCLGVBQWUsQ0FBQyxFQUFFLE9BQU87QUFBQSxRQUNoRyxDQUFDLHNCQUE4QyxlQUF1QjtBQUFDLCtCQUFxQixlQUFlLENBQUMsRUFBRSxPQUFPLG1CQUFtQjtBQUFBLFFBQVU7QUFBQSxNQUNuSjtBQUFBLElBQUMsQ0FBQztBQUNILFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLGtCQUFrQixFQUMxQixRQUFRLHdEQUF3RCxFQUNoRSxLQUFLLENBQUMsWUFBWTtBQUNsQixVQUFJO0FBQ0osY0FBUSxVQUFVLENBQUMsV0FBVztBQUFDLDJCQUFtQixPQUNoRCxVQUFVLEdBQUUsSUFBRyxDQUFDLEVBQ2hCLFNBQVMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sUUFBUSxFQUNuRSxrQkFBa0IsRUFDbEIsU0FBUyxDQUFDLFVBQVU7QUFDcEIsZUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sV0FBVztBQUM3RCxXQUFDLFlBQVk7QUFBQyxrQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFVBQUMsR0FBRztBQUFBLFFBQ2xELENBQUM7QUFBQSxNQUNGLENBQUM7QUFDRCxjQUFRLGVBQWUsQ0FBQyxXQUFXO0FBQUMsZUFDbEMsUUFBUSxPQUFPLEVBQ2YsV0FBVywyQkFBMkIsRUFDdEMsUUFBUSxNQUFNO0FBQ2QsZUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sV0FBVyxLQUFLLE9BQU8sU0FBUyxPQUFPLEtBQUssT0FBTyxTQUFTLGFBQWEsRUFBRSxTQUFTLE9BQU87QUFDN0ksMkJBQWlCLFNBQVMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sUUFBUTtBQUNwRixXQUFDLFlBQVk7QUFBQyxrQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFVBQUMsR0FBRztBQUFBLFFBQ2xELENBQUM7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNGLENBQUM7QUFDRixRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSwyQkFBMkIsRUFDbkMsUUFBUSwyR0FBMkcsRUFDbkgsVUFBVSxZQUFVO0FBQUMsYUFDcEIsV0FBVyx3QkFBd0IsRUFDbkMsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxNQUFNLFFBQVEsRUFDekUsU0FBUyxDQUFDLFVBQVU7QUFDcEIsYUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sTUFBTSxXQUFXO0FBQ25FLFNBQUMsWUFBWTtBQUFDLGdCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsUUFBQyxHQUFHO0FBQUEsTUFDbEQsQ0FBQztBQUFBLElBQ0YsQ0FBQyxFQUNBLFVBQVUsWUFBVTtBQUFDLGFBQ3BCLFdBQVcsMEJBQTBCLEVBQ3JDLFNBQVMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sTUFBTSxVQUFVLEVBQzNFLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLGFBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLE1BQU0sYUFBYTtBQUNyRSxTQUFDLFlBQVk7QUFBQyxnQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFFBQUMsR0FBRztBQUFBLE1BQ2xELENBQUM7QUFBQSxJQUNGLENBQUMsRUFDQSxRQUFRLENBQUFBLFVBQVE7QUFBQyxNQUFBQSxNQUNoQixlQUFlLE1BQU0sRUFDckIsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxNQUFNLFFBQVEsRUFDekUsU0FBUyxDQUFDLFVBQVU7QUFDcEIsYUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sTUFBTSxXQUFXO0FBQ25FLFNBQUMsWUFBWTtBQUFDLGdCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsUUFBQyxHQUFHO0FBQUEsTUFDbEQsQ0FBQztBQUFBLElBQ0YsQ0FBQyxFQUNBLEtBQUssQ0FBQyxZQUFZO0FBQUMsV0FBSztBQUFBLFFBQ3hCLEtBQUs7QUFBQSxRQUFPO0FBQUEsUUFBWTtBQUFBLFFBQ3hCO0FBQUEsUUFDQSxDQUFDLHlCQUFpRCxxQkFBcUIsZUFBZSxDQUFDLEVBQUUsT0FBTyxNQUFNO0FBQUEsUUFDdEcsQ0FBQyxzQkFBOEMsZUFBdUI7QUFBQywrQkFBcUIsZUFBZSxDQUFDLEVBQUUsT0FBTyxNQUFNLGFBQWE7QUFBQSxRQUFVO0FBQUEsTUFDbko7QUFBQSxJQUFDLENBQUM7QUFDSCxRQUFJLDZCQUE2QyxXQUFXLE1BQUk7QUFBQSxJQUFDLENBQUM7QUFDbEUsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsMkJBQTJCLEVBQ25DLFFBQVEsMkVBQTJFLEVBQ25GLFFBQVEsQ0FBQUEsVUFBUUEsTUFDZixlQUFlLGdCQUFnQixFQUMvQixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLG1CQUFtQixFQUM5RSxTQUFTLENBQUMsVUFBVTtBQUNwQixXQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxzQkFBc0I7QUFDeEUsT0FBQyxZQUFZO0FBQUMsY0FBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLE1BQUMsR0FBRztBQUNqRCxtQkFBYSwwQkFBMEI7QUFDdkMsbUNBQTZCLFdBQVcsTUFBSSxLQUFLLE9BQU8sZ0JBQWdCLEdBQUUsR0FBSTtBQUFBLElBQy9FLENBQUMsQ0FBQztBQUVKLFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLHlCQUF5QixFQUNqQyxRQUFRLHVFQUF1RSxFQUMvRSxLQUFLLENBQUMsWUFBWTtBQUFDLFdBQUs7QUFBQSxRQUN4QixLQUFLO0FBQUEsUUFBTztBQUFBLFFBQVk7QUFBQSxRQUN4QjtBQUFBLFFBQ0EsQ0FBQyx5QkFBaUQscUJBQXFCLGVBQWUsQ0FBQyxFQUFFLE9BQU87QUFBQSxRQUNoRyxDQUFDLHNCQUE4QyxlQUF1QjtBQUFDLCtCQUFxQixlQUFlLENBQUMsRUFBRSxPQUFPLGFBQWE7QUFBQSxRQUFVO0FBQUEsTUFDN0k7QUFBQSxJQUFDLENBQUM7QUFFSCxnQkFBWSxTQUFTLE1BQU0sRUFBQyxNQUFNLGlDQUFnQyxDQUFDO0FBQ25FLFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLDhCQUE4QixFQUN0QyxRQUFRLHVMQUF1TCxFQUMvTCxZQUFZLENBQUMsYUFBYSxTQUN6QixXQUFXLGVBQWUsRUFDMUIsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxZQUFZLE9BQU8sRUFDOUUsU0FBUyxDQUFDLFVBQW1CO0FBQzdCLFdBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFlBQVksVUFBVTtBQUN4RSxXQUFLLHNCQUFzQixvQkFBb0IsRUFBRSxRQUFRLGVBQWE7QUFBQyxrQkFBVSxZQUFZLFVBQVEsTUFBTTtBQUFBLE1BQUMsQ0FBQztBQUM3RyxPQUFDLFlBQVk7QUFBQyxjQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsTUFBQyxHQUFHO0FBQUEsSUFDbEQsQ0FBQyxDQUFDO0FBQ0osUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsdUNBQXVDLEVBQy9DLEtBQUssQ0FBQyxZQUFZO0FBQUMsV0FBSztBQUFBLFFBQ3hCLEtBQUs7QUFBQSxRQUFPO0FBQUEsUUFBWTtBQUFBLFFBQ3hCO0FBQUEsUUFDQSxDQUFDLHlCQUFpRCxxQkFBcUIsZUFBZSxDQUFDLEVBQUUsT0FBTyxZQUFZO0FBQUEsUUFDNUcsQ0FBQyxzQkFBOEMsZUFBdUI7QUFBQywrQkFBcUIsZUFBZSxDQUFDLEVBQUUsT0FBTyxZQUFZLG1CQUFtQjtBQUFBLFFBQVU7QUFBQSxRQUM5SixNQUFNLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFlBQVksWUFBWTtBQUFBLE1BQ2pGO0FBQUEsSUFBQyxDQUFDO0FBQ0gsU0FBSyxzQkFBc0Isb0JBQW9CLEVBQUUsS0FBSyxLQUFLLE9BQU8sZ0NBQWdDLEVBQUUsV0FBVztBQUMvRyxRQUFJO0FBQ0osUUFBSTtBQUNKLFFBQUk7QUFDSixRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSxrQ0FBa0MsRUFDMUMsUUFBUSxrSEFBa0gsRUFDMUgsVUFBVSxZQUFVO0FBQUMsK0JBQXlCLE9BQzdDLFdBQVcsK0JBQStCLEVBQzFDLFNBQVMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sWUFBWSxRQUFRLEVBQy9FLFlBQVksS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sWUFBWSxZQUFVLE1BQU0sRUFDMUYsU0FBUyxDQUFDLFVBQVU7QUFDcEIsYUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sWUFBWSxXQUFXO0FBQ3pFLFNBQUMsWUFBWTtBQUFDLGdCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsUUFBQyxHQUFHO0FBQUEsTUFDbEQsQ0FBQztBQUNELFdBQUssc0JBQXNCLG9CQUFvQixFQUFFLEtBQUssc0JBQXNCO0FBQUEsSUFDN0UsQ0FBQyxFQUNBLFVBQVUsWUFBVTtBQUFDLGlDQUEyQixPQUMvQyxXQUFXLGlDQUFpQyxFQUM1QyxTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFlBQVksVUFBVSxFQUNqRixZQUFZLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFlBQVksWUFBVSxNQUFNLEVBQzFGLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLGFBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFlBQVksYUFBYTtBQUMzRSxTQUFDLFlBQVk7QUFBQyxnQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFFBQUMsR0FBRztBQUFBLE1BQ2xELENBQUM7QUFDRCxXQUFLLHNCQUFzQixvQkFBb0IsRUFBRSxLQUFLLHdCQUF3QjtBQUFBLElBQy9FLENBQUMsRUFDQSxRQUFRLENBQUFBLFVBQVE7QUFBQyw4QkFBd0JBLE1BQ3hDLGVBQWUsTUFBTSxFQUNyQixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFlBQVksUUFBUSxFQUMvRSxZQUFZLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFlBQVksWUFBVSxNQUFNLEVBQzFGLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLGFBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFlBQVksV0FBVztBQUN6RSxTQUFDLFlBQVk7QUFBQyxnQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFFBQUMsR0FBRztBQUFBLE1BQ2xELENBQUM7QUFDRCxXQUFLLHNCQUFzQixvQkFBb0IsRUFBRSxLQUFLLHFCQUFxQjtBQUFBLElBQzVFLENBQUMsRUFDQSxLQUFLLENBQUMsWUFBWTtBQUFDLFdBQUs7QUFBQSxRQUN4QixLQUFLO0FBQUEsUUFBTztBQUFBLFFBQVk7QUFBQSxRQUN4QjtBQUFBLFFBQ0EsQ0FBQyx5QkFBaUQscUJBQXFCLGVBQWUsQ0FBQyxFQUFFLE9BQU8sWUFBWTtBQUFBLFFBQzVHLENBQUMsc0JBQThDLGVBQXVCO0FBQUMsK0JBQXFCLGVBQWUsQ0FBQyxFQUFFLE9BQU8sWUFBWSxhQUFhO0FBQUEsUUFBVTtBQUFBLFFBQ3hKLE1BQU0sS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sWUFBWSxZQUFZO0FBQUEsTUFDakY7QUFBQSxJQUFDLENBQUM7QUFDSCxTQUFLLHNCQUFzQixvQkFBb0IsRUFBRSxLQUFLLEtBQUssT0FBTywwQkFBMEIsRUFBRSxXQUFXO0FBRXpHLGdCQUFZLFNBQVMsTUFBTSxFQUFDLE1BQU0sa0NBQWlDLENBQUM7QUFDcEUsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsK0JBQStCLEVBQ3ZDLFFBQVEsMExBQTBMLEVBQ2xNLFlBQVksQ0FBQyxhQUFhLFNBQ3pCLFdBQVcsZUFBZSxFQUMxQixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGFBQWEsT0FBTyxFQUMvRSxTQUFTLENBQUMsVUFBbUI7QUFDN0IsV0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sYUFBYSxVQUFVO0FBQ3pFLFdBQUssc0JBQXNCLHFCQUFxQixFQUFFLFFBQVEsZUFBYTtBQUFDLGtCQUFVLFlBQVksVUFBUSxNQUFNO0FBQUEsTUFBQyxDQUFDO0FBQzlHLE9BQUMsWUFBWTtBQUFDLGNBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxNQUFDLEdBQUc7QUFBQSxJQUNsRCxDQUFDLENBQUM7QUFDSixRQUFJO0FBQ0osUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEseUJBQXlCLEVBQ2pDLFFBQVEsc0RBQXNELEVBQzlELFVBQVUsWUFBVTtBQUFDLG9DQUE4QixPQUNsRCxTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGFBQWEsYUFBYSxFQUNyRixZQUFZLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGFBQWEsWUFBVSxNQUFNLEVBQzNGLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLGFBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGFBQWEsZ0JBQWdCO0FBQy9FLFNBQUMsWUFBWTtBQUFDLGdCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsUUFBQyxHQUFHO0FBQUEsTUFDbEQsQ0FBQztBQUNELFdBQUssc0JBQXNCLHFCQUFxQixFQUFFLEtBQUssMkJBQTJCO0FBQUEsSUFDbkYsQ0FBQztBQUNGLFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLG9CQUFvQixFQUM1QixRQUFRLCtDQUErQyxFQUN2RCxLQUFLLENBQUMsWUFBWTtBQUNsQixVQUFJO0FBQ0osY0FBUSxVQUFVLENBQUMsV0FBVztBQUFDLDJCQUFtQixPQUNoRCxVQUFVLElBQUcsSUFBRyxDQUFDLEVBQ2pCLFNBQVMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFNBQVMsUUFBUSxFQUNyRSxZQUFZLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGFBQWEsWUFBVSxNQUFNLEVBQzNGLGtCQUFrQixFQUNsQixTQUFTLENBQUMsVUFBVTtBQUNwQixlQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsU0FBUyxXQUFXO0FBQy9ELFdBQUMsWUFBWTtBQUFDLGtCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsVUFBQyxHQUFHO0FBQUEsUUFDbEQsQ0FBQztBQUNELGFBQUssc0JBQXNCLHFCQUFxQixFQUFFLEtBQUssZ0JBQWdCO0FBQUEsTUFDeEUsQ0FBQztBQUNELFVBQUk7QUFDSixjQUFRLGVBQWUsQ0FBQyxXQUFXO0FBQUMsc0JBQWMsT0FDaEQsUUFBUSxPQUFPLEVBQ2YsWUFBWSxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxhQUFhLFlBQVUsTUFBTSxFQUMzRixXQUFXLDJCQUEyQixFQUN0QyxRQUFRLE1BQU07QUFDZCxlQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsU0FBUyxXQUFXLEtBQUssT0FBTyxTQUFTLE9BQU8sS0FBSyxPQUFPLFNBQVMsYUFBYSxFQUFFLFNBQVMsU0FBUztBQUNqSiwyQkFBaUIsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsU0FBUyxRQUFRO0FBQ3RGLFdBQUMsWUFBWTtBQUFDLGtCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsVUFBQyxHQUFHO0FBQUEsUUFDbEQsQ0FBQztBQUNELGFBQUssc0JBQXNCLHFCQUFxQixFQUFFLEtBQUssV0FBVztBQUFBLE1BQ25FLENBQUM7QUFBQSxJQUNGLENBQUM7QUFFRixnQkFBWSxTQUFTLE1BQU0sRUFBQyxNQUFNLDBCQUF5QixDQUFDO0FBQzVELFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLDhCQUE4QixFQUN0QyxRQUFRLDREQUE0RCxFQUNwRSxTQUFTLG9CQUFvQixFQUM3QixVQUFVLFlBQVU7QUFBQyxhQUFPLE9BQzNCLFdBQVcsd0NBQXdDLEVBQ25ELFNBQVMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFdBQVcsZ0JBQWdCLEVBQy9FLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLGFBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxXQUFXLG1CQUFtQjtBQUN6RSxhQUFLLHNCQUFzQiwyQkFBMkIsRUFBRSxRQUFRLGVBQWE7QUFBQyxvQkFBVSxZQUFZLENBQUMsS0FBSztBQUFBLFFBQUMsQ0FBQztBQUM1RyxTQUFDLFlBQVk7QUFBQyxnQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFFBQUMsR0FBRztBQUFBLE1BQ2xELENBQUM7QUFBQSxJQUNGLENBQUMsRUFDQSxLQUFLLENBQUMsWUFBWTtBQUFDLFdBQUs7QUFBQSxRQUN4QixLQUFLO0FBQUEsUUFBTztBQUFBLFFBQVk7QUFBQSxRQUN4QjtBQUFBLFFBQ0EsQ0FBQyx5QkFBaUQscUJBQXFCLGVBQWUsQ0FBQyxFQUFFLFdBQVc7QUFBQSxRQUNwRyxDQUFDLHNCQUE4QyxlQUF1QjtBQUFDLCtCQUFxQixlQUFlLENBQUMsRUFBRSxXQUFXLHlCQUF5QjtBQUFBLFFBQVU7QUFBQSxRQUM1SixNQUFNLENBQUMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFdBQVc7QUFBQSxNQUM5RDtBQUFBLElBQUMsQ0FBQztBQUNILFNBQUssc0JBQXNCLDJCQUEyQixFQUFFLEtBQUssS0FBSyxPQUFPLDhCQUE4QixFQUFFLFdBQVc7QUFDcEgsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsaUNBQWlDLEVBQ3pDLFFBQVEsMkRBQTJELEVBQ25FLFNBQVMsb0JBQW9CLEVBQzdCLFVBQVUsWUFBVTtBQUFDLGFBQU8sT0FDM0IsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsV0FBVyxtQkFBbUIsRUFDbEYsU0FBUyxDQUFDLFVBQVU7QUFDcEIsYUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFdBQVcsc0JBQXNCO0FBQzVFLGFBQUssc0JBQXNCLDhCQUE4QixFQUFFLFFBQVEsZUFBYTtBQUFDLG9CQUFVLFlBQVksQ0FBQyxLQUFLO0FBQUEsUUFBQyxDQUFDO0FBQy9HLFNBQUMsWUFBWTtBQUFDLGdCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsUUFBQyxHQUFHO0FBQUEsTUFDbEQsQ0FBQztBQUFBLElBQ0YsQ0FBQyxFQUNBLEtBQUssQ0FBQyxZQUFZO0FBQUMsV0FBSztBQUFBLFFBQ3hCLEtBQUs7QUFBQSxRQUFPO0FBQUEsUUFBWTtBQUFBLFFBQ3hCO0FBQUEsUUFDQSxDQUFDLHlCQUFpRCxxQkFBcUIsZUFBZSxDQUFDLEVBQUUsV0FBVztBQUFBLFFBQ3BHLENBQUMsc0JBQThDLGVBQXVCO0FBQUMsK0JBQXFCLGVBQWUsQ0FBQyxFQUFFLFdBQVcsNEJBQTRCO0FBQUEsUUFBVTtBQUFBLFFBQy9KLE1BQU0sQ0FBQyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsV0FBVztBQUFBLE1BQzlEO0FBQUEsSUFBQyxDQUFDO0FBQ0gsU0FBSyxzQkFBc0IsOEJBQThCLEVBQUUsS0FBSyxLQUFLLE9BQU8saUNBQWlDLEVBQUUsV0FBVztBQUMxSCxRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSwwQkFBMEIsRUFDbEMsUUFBUSw2QkFBK0IsRUFDdkMsS0FBSyxDQUFDLFlBQVk7QUFBQyxXQUFLO0FBQUEsUUFDeEIsS0FBSztBQUFBLFFBQU87QUFBQSxRQUFZO0FBQUEsUUFDeEI7QUFBQSxRQUNBLENBQUMseUJBQWlELHFCQUFxQixlQUFlLENBQUMsRUFBRSxXQUFXO0FBQUEsUUFDcEcsQ0FBQyxzQkFBOEMsZUFBdUI7QUFBQywrQkFBcUIsZUFBZSxDQUFDLEVBQUUsV0FBVyxnQkFBZ0I7QUFBQSxRQUFVO0FBQUEsTUFDcEo7QUFBQSxJQUFDLENBQUM7QUFDSCxRQUFJO0FBQ0osUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsMkJBQTJCLEVBQ25DLFFBQVEsd0ZBQXdGLEVBQ2hHLFFBQVEsV0FBUztBQUFDLHlCQUFtQixNQUNwQyxlQUFlLGtCQUFrQixFQUNqQyxTQUFTLENBQUNDLFdBQVU7QUFDcEIsYUFBSyxPQUFPLFNBQVMsZUFBZUE7QUFBQSxNQUNyQyxDQUFDO0FBQUEsSUFDRixDQUFDLEVBQ0EsVUFBVSxDQUFDLFdBQVc7QUFDdEIsYUFBTyxjQUFjLEtBQUs7QUFDMUIsYUFBTyxRQUFRLE1BQU07QUFDcEIsWUFBSSxLQUFLLE9BQU8sU0FBUyxhQUFhLEtBQUssTUFBTTtBQUNoRCxjQUFJLHVCQUFPLDZCQUE2QjtBQUFBLGlCQUNoQyxDQUFDLGFBQWEsS0FBSyxLQUFLLE9BQU8sU0FBUyxZQUFZO0FBQzVELGNBQUksdUJBQU8sSUFBSSxLQUFLLE9BQU8sU0FBUywyQ0FBMkM7QUFBQSxpQkFDdkUsS0FBSyxPQUFPLFNBQVMsYUFBYSxLQUFLLEVBQUUsWUFBWSxNQUFNO0FBQ25FLGNBQUksdUJBQU8sa0RBQWtEO0FBQUEsaUJBQ3JELFdBQVcsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLEtBQUssRUFBRSxZQUFZLENBQUM7QUFDbEYsY0FBSSx1QkFBTyxzQ0FBc0M7QUFBQSxhQUM3QztBQUNKLGNBQUksS0FBSyxPQUFPLFNBQVMsZ0JBQWdCLEtBQUssT0FBTyxTQUFTLGFBQWEsUUFBUSxNQUFNLFdBQVc7QUFDbkcsZ0JBQUksdUJBQU8sOEJBQThCLEtBQUssT0FBTyxTQUFTLCtCQUErQjtBQUFBLGVBRXpGO0FBQ0osa0JBQU0sWUFBWSxnQkFBZ0I7QUFDbEMsaUJBQUssT0FBTyxTQUFTLGFBQWEsUUFBUSxNQUFNLFdBQVcsc0JBQXNCLEtBQUssT0FBTyxTQUFTLFlBQVksSUFBSTtBQUN0SCxpQkFBSyxPQUFPLFNBQVMsYUFBYSxRQUFRLEtBQUssV0FBVyxzQkFBc0IsS0FBSyxPQUFPLFNBQVMsWUFBWSxJQUFJO0FBQ3JILGlCQUFLLDRCQUE0Qiw4QkFBOEI7QUFDL0QsZ0JBQUksdUJBQU8sb0JBQW9CLEtBQUssT0FBTyxTQUFTLGdCQUFnQjtBQUNwRSxpQkFBSyxPQUFPLFNBQVMsZUFBZTtBQUNwQyw2QkFBaUIsU0FBUyxFQUFFO0FBQzVCLGFBQUMsWUFBWTtBQUFDLG9CQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsWUFBQyxHQUFHO0FBQ2pELGlCQUFLLE9BQU8sZ0JBQWdCO0FBQUEsVUFDN0I7QUFBQSxRQUNEO0FBQUEsTUFDRCxDQUFDO0FBQUEsSUFDRixDQUFDO0FBQ0YsVUFBTSxpQ0FBaUMsWUFBWSxVQUFVO0FBQzdELFNBQUssNEJBQTRCLDhCQUE4QjtBQUUvRCxnQkFBWSxTQUFTLE1BQU0sRUFBQyxNQUFNLHlCQUF3QixDQUFDO0FBQzNELFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLDhCQUE4QixFQUN0QyxRQUFRLDZLQUE2SyxFQUNyTCxVQUFVLFlBQVUsT0FDbkIsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxlQUFlLEVBQzFFLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLFdBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGtCQUFrQjtBQUNwRSxPQUFDLFlBQVk7QUFBQyxjQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsTUFBQyxHQUFHO0FBQ2pELFdBQUssT0FBTyxnQkFBZ0I7QUFBQSxJQUM3QixDQUFDLENBQUM7QUFDSixRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSwrQkFBK0IsRUFDdkMsS0FBSyxDQUFDLFlBQVk7QUFBQyxXQUFLO0FBQUEsUUFDeEIsS0FBSztBQUFBLFFBQU87QUFBQSxRQUFZO0FBQUEsUUFDeEI7QUFBQSxRQUNBLENBQUMseUJBQWlELHFCQUFxQixlQUFlLENBQUMsRUFBRSxPQUFPO0FBQUEsUUFDaEcsQ0FBQyxzQkFBOEMsZUFBdUI7QUFBQywrQkFBcUIsZUFBZSxDQUFDLEVBQUUsT0FBTyxtQkFBbUI7QUFBQSxRQUFVO0FBQUEsTUFDbko7QUFBQSxJQUFDLENBQUM7QUFDSCxRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSx5QkFBeUIsRUFDakMsS0FBSyxDQUFDLFlBQVk7QUFBQyxXQUFLO0FBQUEsUUFDeEIsS0FBSztBQUFBLFFBQU87QUFBQSxRQUFZO0FBQUEsUUFDeEI7QUFBQSxRQUNBLENBQUMseUJBQWlELHFCQUFxQixlQUFlLENBQUMsRUFBRSxPQUFPO0FBQUEsUUFDaEcsQ0FBQyxzQkFBOEMsZUFBdUI7QUFBQywrQkFBcUIsZUFBZSxDQUFDLEVBQUUsT0FBTyxhQUFhO0FBQUEsUUFBVTtBQUFBLE1BQzdJO0FBQUEsSUFBQyxDQUFDO0FBQ0gsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsZ0NBQWdDLEVBQ3hDLFFBQVEsMkNBQTJDLEVBQ25ELEtBQUssQ0FBQyxZQUFZO0FBQUMsV0FBSztBQUFBLFFBQ3hCLEtBQUs7QUFBQSxRQUFPO0FBQUEsUUFBWTtBQUFBLFFBQ3hCO0FBQUEsUUFDQSxDQUFDLHlCQUFpRCxxQkFBcUIsZUFBZSxDQUFDLEVBQUUsT0FBTztBQUFBLFFBQ2hHLENBQUMsc0JBQThDLGVBQXVCO0FBQUMsK0JBQXFCLGVBQWUsQ0FBQyxFQUFFLE9BQU8sbUJBQW1CO0FBQUEsUUFBVTtBQUFBLE1BQ25KO0FBQUEsSUFBQyxDQUFDO0FBQ0gsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEseUJBQXlCLEVBQ2pDLFFBQVEsMENBQTBDLEVBQ2xELEtBQUssQ0FBQyxZQUFZO0FBQ2xCLFVBQUk7QUFDSixjQUFRLFVBQVUsQ0FBQyxXQUFXO0FBQUMsMkJBQW1CLE9BQ2hELFVBQVUsR0FBRSxHQUFFLENBQUMsRUFDZixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFVBQVUsRUFDckUsa0JBQWtCLEVBQ2xCLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLGVBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGFBQWE7QUFDL0QsV0FBQyxZQUFZO0FBQUMsa0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxVQUFDLEdBQUc7QUFBQSxRQUNsRCxDQUFDO0FBQUEsTUFDRixDQUFDO0FBQ0QsY0FBUSxlQUFlLENBQUMsV0FBVztBQUFDLGVBQ2xDLFFBQVEsT0FBTyxFQUNmLFdBQVcsNkJBQTZCLEVBQ3hDLFFBQVEsTUFBTTtBQUNkLGVBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGFBQWEsS0FBSyxPQUFPLFNBQVMsT0FBTyxLQUFLLE9BQU8sU0FBUyxhQUFhLEVBQUUsU0FBUyxPQUFPO0FBQy9JLDJCQUFpQixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLFVBQVU7QUFDdEYsV0FBQyxZQUFZO0FBQUMsa0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxVQUFDLEdBQUc7QUFBQSxRQUNsRCxDQUFDO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDRixDQUFDO0FBQ0YsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsdUJBQXVCLEVBQy9CLFFBQVEsc0RBQXNELEVBQzlELEtBQUssQ0FBQyxZQUFZO0FBQ2xCLFVBQUk7QUFDSixjQUFRLFVBQVUsQ0FBQyxXQUFXO0FBQUMsMkJBQW1CLE9BQ2hELFVBQVUsR0FBRSxJQUFHLENBQUMsRUFDaEIsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxTQUFTLEVBQ3BFLGtCQUFrQixFQUNsQixTQUFTLENBQUMsVUFBVTtBQUNwQixlQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxZQUFZO0FBQzlELFdBQUMsWUFBWTtBQUFDLGtCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsVUFBQyxHQUFHO0FBQUEsUUFDbEQsQ0FBQztBQUFBLE1BQ0YsQ0FBQztBQUNELGNBQVEsZUFBZSxDQUFDLFdBQVc7QUFBQyxlQUNsQyxRQUFRLE9BQU8sRUFDZixXQUFXLDJCQUEyQixFQUN0QyxRQUFRLE1BQU07QUFDZCxlQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxZQUFZLEtBQUssT0FBTyxTQUFTLE9BQU8sS0FBSyxPQUFPLFNBQVMsYUFBYSxFQUFFLFNBQVMsT0FBTztBQUM5SSwyQkFBaUIsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxTQUFTO0FBQ3JGLFdBQUMsWUFBWTtBQUFDLGtCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsVUFBQyxHQUFHO0FBQUEsUUFDbEQsQ0FBQztBQUFBLE1BQ0YsQ0FBQztBQUFBLElBQ0YsQ0FBQztBQUNGLFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLDhCQUE4QixFQUN0QyxRQUFRLHVFQUF1RSxFQUMvRSxLQUFLLENBQUMsWUFBWTtBQUNsQixVQUFJO0FBQ0osY0FBUSxVQUFVLENBQUMsV0FBVztBQUFDLDJCQUFtQixPQUNoRCxVQUFVLEdBQUUsSUFBRyxDQUFDLEVBQ2hCLFNBQVMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sZUFBZSxFQUMxRSxrQkFBa0IsRUFDbEIsU0FBUyxDQUFDLFVBQVU7QUFDcEIsZUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sa0JBQWtCO0FBQ3BFLFdBQUMsWUFBWTtBQUFDLGtCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsVUFBQyxHQUFHO0FBQUEsUUFDbEQsQ0FBQztBQUFBLE1BQ0YsQ0FBQztBQUNELGNBQVEsZUFBZSxDQUFDLFdBQVc7QUFBQyxlQUNsQyxRQUFRLE9BQU8sRUFDZixXQUFXLGtDQUFrQyxFQUM3QyxRQUFRLE1BQU07QUFDZCxlQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxrQkFBa0IsS0FBSyxPQUFPLFNBQVMsT0FBTyxLQUFLLE9BQU8sU0FBUyxhQUFhLEVBQUUsU0FBUyxPQUFPO0FBQ3BKLDJCQUFpQixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGVBQWU7QUFDM0YsV0FBQyxZQUFZO0FBQUMsa0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxVQUFDLEdBQUc7QUFBQSxRQUNsRCxDQUFDO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDRixDQUFDO0FBQ0YsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsZ0NBQWdDLEVBQ3hDLFFBQVEseUVBQXlFLEVBQ2pGLEtBQUssQ0FBQyxZQUFZO0FBQ2xCLFVBQUk7QUFDSixjQUFRLFVBQVUsQ0FBQyxXQUFXO0FBQUMsMkJBQW1CLE9BQ2hELFVBQVUsR0FBRSxJQUFHLENBQUMsRUFDaEIsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxpQkFBaUIsRUFDNUUsa0JBQWtCLEVBQ2xCLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLGVBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLG9CQUFvQjtBQUN0RSxXQUFDLFlBQVk7QUFBQyxrQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFVBQUMsR0FBRztBQUFBLFFBQ2xELENBQUM7QUFBQSxNQUNGLENBQUM7QUFDRCxjQUFRLGVBQWUsQ0FBQyxXQUFXO0FBQUMsZUFDbEMsUUFBUSxPQUFPLEVBQ2YsV0FBVyxvQ0FBb0MsRUFDL0MsUUFBUSxNQUFNO0FBQ2QsZUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sb0JBQW9CLEtBQUssT0FBTyxTQUFTLE9BQU8sS0FBSyxPQUFPLFNBQVMsYUFBYSxFQUFFLFNBQVMsT0FBTztBQUN0SiwyQkFBaUIsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxpQkFBaUI7QUFDN0YsV0FBQyxZQUFZO0FBQUMsa0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxVQUFDLEdBQUc7QUFBQSxRQUNsRCxDQUFDO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDRixDQUFDO0FBQ0YsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsK0JBQStCLEVBQ3ZDLFFBQVEsb0ZBQW9GLEVBQzVGLEtBQUssQ0FBQyxZQUFZO0FBQ2xCLFVBQUk7QUFDSixjQUFRLFVBQVUsQ0FBQyxXQUFXO0FBQUMsMkJBQW1CLE9BQ2hELFVBQVUsR0FBRSxHQUFFLENBQUMsRUFDZixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGdCQUFnQixFQUMzRSxrQkFBa0IsRUFDbEIsU0FBUyxDQUFDLFVBQVU7QUFDcEIsZUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sbUJBQW1CO0FBQ3JFLFdBQUMsWUFBWTtBQUFDLGtCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsVUFBQyxHQUFHO0FBQUEsUUFDbEQsQ0FBQztBQUFBLE1BQ0YsQ0FBQztBQUNELGNBQVEsZUFBZSxDQUFDLFdBQVc7QUFBQyxlQUNsQyxRQUFRLE9BQU8sRUFDZixXQUFXLG1DQUFtQyxFQUM5QyxRQUFRLE1BQU07QUFDZCxlQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxtQkFBbUIsS0FBSyxPQUFPLFNBQVMsT0FBTyxLQUFLLE9BQU8sU0FBUyxhQUFhLEVBQUUsU0FBUyxPQUFPO0FBQ3JKLDJCQUFpQixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGdCQUFnQjtBQUM1RixXQUFDLFlBQVk7QUFBQyxrQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFVBQUMsR0FBRztBQUFBLFFBQ2xELENBQUM7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNGLENBQUM7QUFDRixRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSwwQkFBMEIsRUFDbEMsUUFBUSx3Q0FBd0MsRUFDaEQsS0FBSyxDQUFDLFlBQVk7QUFBQyxXQUFLO0FBQUEsUUFDeEIsS0FBSztBQUFBLFFBQU87QUFBQSxRQUFZO0FBQUEsUUFDeEI7QUFBQSxRQUNBLENBQUMseUJBQWlELHFCQUFxQixlQUFlLENBQUMsRUFBRSxPQUFPO0FBQUEsUUFDaEcsQ0FBQyxzQkFBOEMsZUFBdUI7QUFBQywrQkFBcUIsZUFBZSxDQUFDLEVBQUUsT0FBTyxrQkFBa0I7QUFBQSxRQUFVO0FBQUEsTUFDbEo7QUFBQSxJQUFDLENBQUM7QUFDSCxRQUFJLHdCQUFRLFdBQVcsRUFDckIsUUFBUSwrQkFBK0IsRUFDdkMsUUFBUSxnREFBZ0QsRUFDeEQsS0FBSyxDQUFDLFlBQVk7QUFDbEIsVUFBSTtBQUNKLGNBQVEsVUFBVSxDQUFDLFdBQVc7QUFBQywyQkFBbUIsT0FDaEQsVUFBVSxHQUFFLEdBQUUsQ0FBQyxFQUNmLFNBQVMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sZUFBZSxFQUMxRSxrQkFBa0IsRUFDbEIsU0FBUyxDQUFDLFVBQVU7QUFDcEIsZUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLE9BQU8sa0JBQWtCO0FBQ3BFLFdBQUMsWUFBWTtBQUFDLGtCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsVUFBQyxHQUFHO0FBQUEsUUFDbEQsQ0FBQztBQUFBLE1BQ0YsQ0FBQztBQUNELGNBQVEsZUFBZSxDQUFDLFdBQVc7QUFBQyxlQUNsQyxRQUFRLE9BQU8sRUFDZixXQUFXLDZCQUE2QixFQUN4QyxRQUFRLE1BQU07QUFDZCxlQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsT0FBTyxrQkFBa0IsS0FBSyxPQUFPLFNBQVMsT0FBTyxLQUFLLE9BQU8sU0FBUyxhQUFhLEVBQUUsU0FBUyxPQUFPO0FBQ3BKLDJCQUFpQixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGVBQWU7QUFDM0YsV0FBQyxZQUFZO0FBQUMsa0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxVQUFDLEdBQUc7QUFBQSxRQUNsRCxDQUFDO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDRixDQUFDO0FBR0YsZ0JBQVksU0FBUyxNQUFNLEVBQUMsTUFBTSxvQkFBbUIsQ0FBQztBQUd0RCxRQUFJO0FBQ0osUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEscUJBQXFCLEVBQzdCLFFBQVEsc0tBQXNLLEVBQzlLLFVBQVUsWUFBVTtBQUFDLDhCQUF3QixPQUM1QyxTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxVQUFVLGVBQWUsRUFDN0UsWUFBWSxDQUFDLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxVQUFVLFdBQVcsRUFDN0UsU0FBUyxDQUFDLFVBQVU7QUFDcEIsYUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFVBQVUsa0JBQWtCO0FBQ3ZFLFNBQUMsWUFBWTtBQUFDLGdCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsUUFBQyxHQUFHO0FBQ2pELGFBQUssT0FBTyxnQkFBZ0I7QUFBQSxNQUM3QixDQUFDO0FBQ0QsV0FBSyxzQkFBc0IsV0FBVyxFQUFFLEtBQUsscUJBQXFCO0FBQUEsSUFDbkUsQ0FBQztBQUNGLFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLGVBQWUsRUFDdkIsUUFBUSxnREFBZ0QsRUFDeEQsS0FBSyxDQUFDLFlBQVk7QUFBQyxXQUFLO0FBQUEsUUFDeEIsS0FBSztBQUFBLFFBQU87QUFBQSxRQUFZO0FBQUEsUUFDeEI7QUFBQSxRQUNBLENBQUMseUJBQWlELHFCQUFxQixlQUFlLENBQUMsRUFBRSxTQUFTO0FBQUEsUUFDbEcsQ0FBQyxzQkFBOEMsZUFBdUI7QUFBQywrQkFBcUIsZUFBZSxDQUFDLEVBQUUsU0FBUyxlQUFlO0FBQUEsUUFBVTtBQUFBLE1BQ2pKO0FBQUEsSUFBQyxDQUFDO0FBQ0gsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsc0JBQXNCLEVBQzlCLFFBQVEsb0NBQW9DLEVBQzVDLEtBQUssQ0FBQyxZQUFZO0FBQUMsV0FBSztBQUFBLFFBQ3hCLEtBQUs7QUFBQSxRQUFPO0FBQUEsUUFBWTtBQUFBLFFBQ3hCO0FBQUEsUUFDQSxDQUFDLHlCQUFpRCxxQkFBcUIsZUFBZSxDQUFDLEVBQUUsU0FBUztBQUFBLFFBQ2xHLENBQUMsc0JBQThDLGVBQXVCO0FBQUMsK0JBQXFCLGVBQWUsQ0FBQyxFQUFFLFNBQVMscUJBQXFCO0FBQUEsUUFBVTtBQUFBLE1BQ3ZKO0FBQUEsSUFBQyxDQUFDO0FBQ0gsUUFBSSx3QkFBUSxXQUFXLEVBQ3JCLFFBQVEsdUJBQXVCLEVBQy9CLFFBQVEsMEdBQTBHLEVBQ2xILFVBQVUsWUFBVSxPQUNuQixTQUFTLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxTQUFTLGtCQUFrQixFQUMvRSxTQUFTLENBQUMsVUFBVTtBQUNwQixXQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsU0FBUyxxQkFBcUI7QUFDekUsV0FBSyxzQkFBc0Isc0JBQXNCLEVBQUUsUUFBUSxlQUFhO0FBQUMsa0JBQVUsWUFBWSxDQUFDLEtBQUs7QUFBQSxNQUFDLENBQUM7QUFDdkcsT0FBQyxZQUFZO0FBQUMsY0FBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLE1BQUMsR0FBRztBQUFBLElBQ2xELENBQUMsQ0FBQyxFQUNGLEtBQUssQ0FBQyxZQUFZO0FBQ2xCLFVBQUk7QUFDSixjQUFRLFVBQVUsQ0FBQyxXQUFXO0FBQUMsMkJBQW1CLE9BQ2hELFVBQVUsR0FBRSxLQUFJLENBQUMsRUFDakIsU0FBUyxDQUFDLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxTQUFTLDZCQUE2QixNQUFNLEdBQUUsRUFBRSxDQUFDLEVBQ3RHLFlBQVksQ0FBQyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsU0FBUyxrQkFBa0IsRUFDbkYsa0JBQWtCLEVBQ2xCLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLGVBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxTQUFTLCtCQUErQixHQUFHO0FBQ3RGLFdBQUMsWUFBWTtBQUFDLGtCQUFNLEtBQUssT0FBTyxhQUFhO0FBQUEsVUFBQyxHQUFHO0FBQUEsUUFDbEQsQ0FBQztBQUNELGFBQUssc0JBQXNCLHNCQUFzQixFQUFFLEtBQUssZ0JBQWdCO0FBQUEsTUFDekUsQ0FBQztBQUNELFVBQUk7QUFDSixjQUFRLGVBQWUsQ0FBQyxXQUFXO0FBQUMsc0JBQWMsT0FDaEQsUUFBUSxPQUFPLEVBQ2YsWUFBWSxDQUFDLEtBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxTQUFTLGtCQUFrQixFQUNuRixXQUFXLDZCQUE2QixFQUN4QyxRQUFRLE1BQU07QUFDZCxlQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsU0FBUywrQkFBK0IsS0FBSyxPQUFPLFNBQVMsT0FBTyxLQUFLLE9BQU8sU0FBUyxhQUFhLEVBQUUsU0FBUyxTQUFTO0FBQ3JLLDJCQUFpQixTQUFTLENBQUMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFNBQVMsNkJBQTZCLE1BQU0sR0FBRSxFQUFFLENBQUM7QUFDdkgsV0FBQyxZQUFZO0FBQUMsa0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxVQUFDLEdBQUc7QUFBQSxRQUNsRCxDQUFDO0FBQ0QsYUFBSyxzQkFBc0Isc0JBQXNCLEVBQUUsS0FBSyxXQUFXO0FBQUEsTUFDcEUsQ0FBQztBQUFBLElBQ0YsQ0FBQztBQUNGLFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLDJCQUEyQixFQUNuQyxRQUFRLDhIQUE4SCxFQUN0SSxVQUFVLFlBQVUsT0FDbkIsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsU0FBUyxvQkFBb0IsRUFDakYsU0FBUyxDQUFDLFVBQVU7QUFDcEIsV0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFNBQVMsdUJBQXVCO0FBQzNFLFdBQUssc0JBQXNCLHNCQUFzQixFQUFFLFFBQVEsZUFBYTtBQUFDLGtCQUFVLFlBQVksQ0FBQyxLQUFLO0FBQUEsTUFBQyxDQUFDO0FBQ3ZHLE9BQUMsWUFBWTtBQUFDLGNBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxNQUFDLEdBQUc7QUFBQSxJQUNsRCxDQUFDLENBQUMsRUFDRixLQUFLLENBQUMsWUFBWTtBQUNsQixVQUFJO0FBQ0osY0FBUSxVQUFVLENBQUMsV0FBVztBQUFDLDJCQUFtQixPQUNoRCxVQUFVLEdBQUUsSUFBRyxDQUFDLEVBQ2hCLFNBQVMsS0FBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFNBQVMsbUJBQW1CLEVBQ2hGLFlBQVksQ0FBQyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsU0FBUyxvQkFBb0IsRUFDckYsa0JBQWtCLEVBQ2xCLFNBQVMsQ0FBQyxVQUFVO0FBQ3BCLGVBQUssT0FBTyxTQUFTLGFBQWEsU0FBUyxTQUFTLHNCQUFzQjtBQUMxRSxXQUFDLFlBQVk7QUFBQyxrQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFVBQUMsR0FBRztBQUFBLFFBQ2xELENBQUM7QUFDRCxhQUFLLHNCQUFzQixzQkFBc0IsRUFBRSxLQUFLLGdCQUFnQjtBQUFBLE1BQ3pFLENBQUM7QUFDRCxVQUFJO0FBQ0osY0FBUSxlQUFlLENBQUMsV0FBVztBQUFDLHNCQUFjLE9BQ2hELFFBQVEsT0FBTyxFQUNmLFlBQVksQ0FBQyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsU0FBUyxvQkFBb0IsRUFDckYsV0FBVyw2QkFBNkIsRUFDeEMsUUFBUSxNQUFNO0FBQ2QsZUFBSyxPQUFPLFNBQVMsYUFBYSxTQUFTLFNBQVMsc0JBQXNCLEtBQUssT0FBTyxTQUFTLE9BQU8sS0FBSyxPQUFPLFNBQVMsYUFBYSxFQUFFLFNBQVMsU0FBUztBQUM1SiwyQkFBaUIsU0FBUyxLQUFLLE9BQU8sU0FBUyxhQUFhLFNBQVMsU0FBUyxtQkFBbUI7QUFDakcsV0FBQyxZQUFZO0FBQUMsa0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxVQUFDLEdBQUc7QUFBQSxRQUNsRCxDQUFDO0FBQ0QsYUFBSyxzQkFBc0Isc0JBQXNCLEVBQUUsS0FBSyxXQUFXO0FBQUEsTUFDcEUsQ0FBQztBQUFBLElBQ0YsQ0FBQztBQUNGLFFBQUksd0JBQVEsV0FBVyxFQUNyQixRQUFRLDRCQUE0QixFQUNwQyxRQUFRLDJVQUEyVSxFQUNuVixTQUFTLCtCQUErQixFQUN4QyxZQUFZLGNBQVksU0FDdkIsU0FBUyxLQUFLLFVBQVUsS0FBSyxPQUFPLFNBQVMsaUJBQWlCLE1BQUksT0FBSyxLQUFHLEtBQUssVUFBVSxLQUFLLE9BQU8sU0FBUyxtQkFBa0IsTUFBSyxDQUFDLENBQUMsRUFDdkksZUFBZSxLQUFLLFVBQVUsRUFBQyxNQUFNLEVBQUMsUUFBUSxXQUFXLE1BQU0sb0JBQW9CLEtBQUssRUFBQyxFQUFDLEdBQUUsTUFBSyxDQUFDLENBQUMsRUFDbkcsU0FBUyxDQUFDLFVBQVE7QUFDbEIsVUFBSSxVQUFVLElBQUk7QUFDakIsYUFBSyxPQUFPLFNBQVMsb0JBQW9CLENBQUM7QUFDMUMsU0FBQyxZQUFZO0FBQUMsZ0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxRQUFDLEdBQUc7QUFBQSxNQUNsRCxPQUFPO0FBQ04sWUFBSTtBQUNILGVBQUssT0FBTyxTQUFTLG9CQUFvQixLQUFLLE1BQU0sS0FBSztBQUN6RCxpQkFBTyxRQUFRLEtBQUssT0FBTyxTQUFTLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxDQUFDLGNBQWMsZ0JBQWdCLE1BQWdEO0FBQzlJLGdCQUFJLFVBQVUsa0JBQWtCO0FBQy9CLGtCQUFJLGVBQWUsWUFBWSxLQUFLLEtBQUssT0FBTztBQUMvQyxvQkFBSSxnQkFBZ0IsS0FBSyxPQUFPLGNBQWMsZUFBZSxZQUFZLENBQUMsQ0FBQztBQUM1RSxtQkFBSyxPQUFPLGNBQWMsZUFBZSxZQUFZLENBQUMsSUFBSSxJQUFJLGdCQUFnQixJQUFJLEtBQUssQ0FBQywwR0FBMEcsaUJBQWlCLFlBQVksR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUMsQ0FBQztBQUFBLFlBQzdQO0FBQUEsVUFDRCxDQUFDO0FBQ0QsV0FBQyxZQUFZO0FBQUMsa0JBQU0sS0FBSyxPQUFPLGFBQWE7QUFBQSxVQUFDLEdBQUc7QUFBQSxRQUNsRCxTQUFRQyxJQUFOO0FBQ0QsY0FBSSx1QkFBTyxjQUFjO0FBQUEsUUFDMUI7QUFBQSxNQUNEO0FBQUEsSUFDRCxDQUFDLENBQUM7QUFLSixVQUFNLGNBQWMsWUFBWSxTQUFTLE9BQU8sRUFBRSxLQUFLLHVCQUF3QixDQUFDO0FBQ2hGLFVBQU0sZUFBZSxTQUFTLEtBQUssRUFBQyxNQUFNLHVHQUFzRyxDQUFDO0FBQ2pKLGdCQUFZLFlBQVksWUFBWTtBQUNwQyxVQUFNLGlCQUFpQixTQUFTLEtBQUssRUFBRSxNQUFNLDBDQUF5QyxDQUFDO0FBQ3ZGLG1CQUFlLFlBQVk7QUFDM0IsZ0JBQVksWUFBWSxjQUFjO0FBQUEsRUFDdkM7QUFBQTtBQUFBLEVBR0EsWUFBWSxRQUEwQixhQUEwQixTQUFrQixJQUFZLHdCQUFnRix5QkFBbUcsVUFBd0I7QUFDeFMsUUFBSSxRQUF5QixJQUFJLGdCQUFnQixRQUFPLGFBQVksU0FBUSx3QkFBdUIsdUJBQXVCO0FBQzFILFVBQ0UsR0FBRyxRQUFRLENBQUMsUUFBeUIsYUFBb0I7QUFDekQsVUFBSSxPQUFPLGFBQWEsZUFBZSxTQUFTO0FBQy9DLGlCQUFTLEtBQUs7QUFBQSxJQUVoQixDQUFDLEVBQ0EsR0FBRyxRQUFRLENBQUMsUUFBeUIsYUFBOEI7QUFDbkUsWUFBTSxjQUFzQixJQUFJLE9BQU8sT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUM7QUFDdEUsZUFBUyxLQUFLO0FBQ2QsZUFBUyxVQUFVLFdBQVc7QUFDOUIsZUFBUyxXQUFXLFdBQVc7QUFBQSxJQUNoQyxDQUFDLEVBQ0EsR0FBRyxVQUFVLENBQUMsYUFBOEI7QUFBQyxlQUFTLEtBQUs7QUFBQSxJQUFDLENBQUM7QUFDL0QsWUFBUSxlQUFlLENBQUMsV0FBVztBQUFDLFlBQU0sY0FBYyxPQUN0RCxRQUFRLE9BQU8sRUFDZixZQUFZLE9BQU8sYUFBYSxlQUFlLFNBQVMsQ0FBQyxFQUN6RCxXQUFXLHdCQUF3QixFQUNuQyxRQUFRLE1BQU07QUFBQyxjQUFNLFlBQVk7QUFBQSxNQUFDLENBQUM7QUFBQSxJQUNyQyxDQUFDO0FBQ0QsU0FBSyxPQUFPLEVBQUUsSUFBRTtBQUFBLEVBQ2pCO0FBQUE7QUFBQSxFQUdBLGVBQWUsVUFBNkIsVUFBOEI7QUFDekUsYUFBUyxTQUFTLE1BQU07QUFDeEIsV0FBTyxLQUFLLFNBQVMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxlQUF1QjtBQUM1RCxlQUFTLFVBQVUsWUFBWSxVQUFVO0FBQUEsSUFDMUMsQ0FBQztBQUNELGFBQVMsU0FBUyxTQUFTLGFBQWE7QUFBQSxFQUN6QztBQUFBLEVBQ0EsNEJBQTRCLGdDQUFnRDtBQUMzRSxtQ0FBK0IsTUFBTTtBQUNyQyxXQUFPLEtBQUssS0FBSyxPQUFPLFNBQVMsYUFBYSxRQUFRLE1BQU0sV0FBVyxxQkFBcUIsRUFBRSxRQUFRLENBQUMsNkJBQTZCO0FBQ25JLFVBQUksd0JBQVEsOEJBQThCLEVBQ3hDLFFBQVEsd0JBQXdCLEVBQ2hDLFFBQVEsbURBQW1ELHFDQUFxQyxFQUNoRyxLQUFLLENBQUMsWUFBWTtBQUNsQixhQUFLO0FBQUEsVUFDSixLQUFLO0FBQUEsVUFBTztBQUFBLFVBQStCO0FBQUEsVUFDM0MseUJBQXlCO0FBQUEsVUFDekIsQ0FBQyx5QkFBaUQsNEJBQTRCLHFCQUFxQixNQUFNLFdBQVcsd0JBQXNCLHFCQUFxQixlQUFlLENBQUMsRUFBRSxXQUFXLHNCQUFzQix3QkFBd0IsSUFBRSxLQUFLLE9BQU8sU0FBUyxhQUFhLFFBQVEsZUFBZSxDQUFDLEVBQUUsV0FBVyxzQkFBc0Isd0JBQXdCO0FBQUEsVUFDalcsQ0FBQyxzQkFBOEMsZUFBdUI7QUFBQyxpQ0FBcUIsZUFBZSxDQUFDLEVBQUUsV0FBVyxzQkFBc0Isd0JBQXdCLElBQUk7QUFBQSxVQUFVO0FBQUEsUUFDdEw7QUFDQSxnQkFBUSxlQUFlLENBQUMsV0FBVztBQUFDLGlCQUNsQyxRQUFRLE9BQU8sRUFDZixXQUFXLGtCQUFrQixFQUM3QixRQUFRLE1BQU07QUFDZCxtQkFBTyxLQUFLLE9BQU8sU0FBUyxhQUFhLFFBQVEsTUFBTSxXQUFXLHNCQUFzQix3QkFBd0I7QUFDaEgsbUJBQU8sS0FBSyxPQUFPLFNBQVMsYUFBYSxRQUFRLEtBQUssV0FBVyxzQkFBc0Isd0JBQXdCO0FBQy9HLGdCQUFJLHVCQUFPLHNCQUFzQiw0QkFBNEI7QUFDN0QsaUJBQUssNEJBQTRCLDhCQUE4QjtBQUMvRCxhQUFDLFlBQVk7QUFBQyxvQkFBTSxLQUFLLE9BQU8sYUFBYTtBQUFBLFlBQUMsR0FBRztBQUFBLFVBQ2xELENBQUM7QUFBQSxRQUNGLENBQUM7QUFBQSxNQUNGLENBQUM7QUFBQSxJQUNILENBQUM7QUFBQSxFQUNGO0FBQ0Q7QUFFQSxJQUFNLGtCQUFOLGNBQThCLGFBQUFDLFFBQU07QUFBQSxFQU1uQyxZQUFZLFFBQTBCLGFBQTBCLFNBQWtCLHdCQUFnRix5QkFBbUcsU0FBa0I7QUFDdFIsVUFBTSxXQUEwQjtBQUFBLE1BQy9CLElBQUksUUFBUSxVQUFVLFVBQVUsRUFBQyxLQUFLLFNBQVEsQ0FBQztBQUFBLE1BQy9DLE9BQU87QUFBQSxNQUNQLFNBQVMsVUFBVSx1QkFBdUIsT0FBTyxTQUFTLGFBQWEsT0FBTyxDQUFDO0FBQUEsTUFDL0UsVUFBVTtBQUFBLE1BQ1YsYUFBYTtBQUFBLE1BQ2IsWUFBWTtBQUFBLFFBQ1gsU0FBUztBQUFBLFFBQ1QsS0FBSztBQUFBLFFBQ0wsU0FBUztBQUFBLFFBQ1QsYUFBYTtBQUFBLFVBQ1osS0FBSztBQUFBLFVBQ0wsTUFBTTtBQUFBLFVBQ04sTUFBTTtBQUFBLFVBQ04sT0FBTztBQUFBLFVBQ1AsUUFBUTtBQUFBLFVBQ1IsTUFBTTtBQUFBLFFBQ1A7QUFBQSxNQUNEO0FBQUEsTUFDQSxNQUFNO0FBQUEsUUFDTCxhQUFhO0FBQUEsUUFDYixjQUFlLE9BQU8sWUFBWSxjQUFhLFVBQVE7QUFBQSxRQUN2RCxjQUFjO0FBQUEsUUFDZCxrQkFBa0I7QUFBQSxNQUNuQjtBQUFBLElBQ0Q7QUFDQSxRQUFJLFlBQVksa0JBQWtCO0FBQ2pDLGVBQVMsWUFBWSxZQUFZO0FBQ2xDLFVBQU0sUUFBUTtBQUNkLFNBQUssYUFBYSxDQUFDLGVBQXVCO0FBQ3pDLDhCQUF3QixPQUFPLFNBQVMsYUFBYSxTQUFRLFVBQVU7QUFDdkUsT0FBQyxZQUFZO0FBQUMsY0FBTSxPQUFPLGFBQWE7QUFBQSxNQUFDLEdBQUc7QUFBQSxJQUM3QztBQUNBLFNBQUssY0FBYyxNQUFNO0FBQ3hCLFlBQU0sY0FBc0IsdUJBQXVCLE9BQU8sU0FBUyxPQUFPLE9BQU8sU0FBUyxhQUFhLEVBQUUsT0FBTztBQUNoSCxXQUFLLFNBQVMsVUFBVSxXQUFXLENBQUM7QUFDcEMsV0FBSyxXQUFXLFdBQVc7QUFBQSxJQUM1QjtBQUFBLEVBQ0Q7QUFDRDtBQUdBLFNBQVMsa0JBQTBCO0FBQ2xDLFFBQU0sVUFBVTtBQUNoQixNQUFJLFNBQVM7QUFDYixXQUFTQyxLQUFJLEdBQUdBLEtBQUksR0FBR0E7QUFDdEIsY0FBVSxRQUFRLEtBQUssTUFBTSxLQUFLLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDakQsU0FBTyxJQUFJO0FBQ1o7QUFDTyxTQUFTLE1BQU0sYUFBeUM7QUFDOUQsU0FBTyxZQUFZLFdBQVcsSUFBSSxLQUFLLE9BQU8sZ0JBQWdCO0FBQy9EO0FBQ0EsU0FBUyxLQUFLLFlBQTRCO0FBQ3pDLFFBQU0sY0FBYyxXQUFXLEtBQUssRUFBRSxRQUFRLFdBQVUsSUFBSSxFQUFFLE1BQU0sR0FBRztBQUN2RSxRQUFNLFlBQW1FO0FBQUEsSUFDeEUsS0FBSyxDQUFDLE1BQWEsU0FBdUIsS0FBSyxJQUFJLE9BQUssTUFBSyxDQUFDO0FBQUEsSUFDOUQsS0FBSyxDQUFDLE1BQWEsU0FBdUIsS0FBSyxJQUFJLE9BQUssTUFBSyxDQUFDO0FBQUEsRUFDL0Q7QUFDQSxNQUFJLFlBQVksV0FBVztBQUMxQixRQUFJLFlBQVksQ0FBQyxLQUFLO0FBQ3JCLGFBQU8sR0FBRyxVQUFVLFlBQVksQ0FBQyxDQUFDLEVBQUUsV0FBVyxZQUFZLENBQUMsQ0FBQyxHQUFFLFdBQVcsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUFBO0FBRTNGLFVBQVEsS0FBSyxxQ0FBc0M7QUFDbkQsU0FBTztBQUNSO0FBQ0EsU0FBUyxlQUFlLGFBQXVCO0FBQzlDLE1BQUksZ0JBQWdCLE9BQU8saUJBQWlCLFNBQVMsSUFBSSxFQUFFLGlCQUFpQixXQUFXLEVBQUUsS0FBSztBQUM5RixNQUFJLE9BQU8sa0JBQWtCLFlBQVksY0FBYyxLQUFLLEVBQUUsV0FBVyxHQUFHO0FBQzNFLFdBQU8sSUFBSSxjQUFjLEtBQUssRUFBRSxVQUFVLENBQUM7QUFBQSxXQUNuQyxjQUFjLFdBQVcsS0FBSztBQUN0QyxXQUFPLElBQUksR0FBZ0IsT0FBTyxjQUFjLFFBQVEsa0JBQWlCLENBQUMsT0FBTSxZQUFVLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUM7QUFBQSxXQUM3RyxjQUFjLFdBQVcsS0FBSztBQUN0QyxXQUFPLElBQUksR0FBZ0IsT0FBTyxjQUFjLFFBQVEsa0JBQWlCLENBQUMsT0FBTSxZQUFVLEtBQUssT0FBTyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUM7QUFBQTtBQUVySCxZQUFRLEtBQUssK0NBQStDLGVBQWU7QUFDNUUsU0FBTyxJQUFJLEdBQWdCLE9BQU8sYUFBYSxFQUFFLFVBQVUsQ0FBQztBQUM3RDtBQUNPLFNBQVMsVUFBVSxhQUE2QjtBQUN0RCxTQUFPLE1BQU0sV0FBVyxJQUFFLGVBQWUsV0FBVyxJQUFFO0FBQVk7QUFDbkU7QUFFQSxTQUFTLGlCQUFpQjtBQUN6QixRQUFNLE9BQU8sU0FBUyxjQUFjLE1BQU07QUFDMUMsTUFBSSxTQUFTLE1BQUs7QUFDakIsUUFBSSxLQUFLLFVBQVUsU0FBUyxhQUFhO0FBQ3hDLGFBQU87QUFBQSxhQUNDLEtBQUssVUFBVSxTQUFTLFlBQVk7QUFDNUMsYUFBTztBQUFBLEVBQ1Q7QUFDQSxVQUFRLEtBQUsscUNBQXNDO0FBQ25ELFNBQU87QUFDUjs7O0FFMWpDQSxJQUFNLFdBQVc7QUFDakIsSUFBTSxlQUEwQztBQUFBLEVBQy9DLFNBQVM7QUFBQSxJQUNSLFVBQVU7QUFBQSxNQUNULFFBQVE7QUFBQSxNQUNSLFNBQVM7QUFBQSxJQUNWO0FBQUEsRUFDRDtBQUFBLEVBQ0Esb0JBQW9CO0FBQUEsSUFDbkIsVUFBVTtBQUFBLE1BQ1QsUUFBUTtBQUFBLE1BQ1IsU0FBUztBQUFBLElBQ1Y7QUFBQSxFQUNEO0FBQUEsRUFDQSxXQUFXO0FBQUEsSUFDVixTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtWO0FBQ0Q7QUFFTyxTQUFTLGNBQWMsVUFBOEIsS0FBZ0I7QUFDM0UsTUFBSSxlQUFlLGdCQUFnQixHQUFHO0FBQ3RDLE1BQUksV0FBVyxTQUFTLGVBQWUsUUFBUTtBQUMvQyxNQUFJLENBQUMsVUFBVTtBQUNkLGVBQVcsU0FBUyxjQUFjLE9BQU87QUFDekMsYUFBUyxLQUFLO0FBQ2QsYUFBUyxxQkFBcUIsTUFBTSxFQUFFLENBQUMsRUFBRSxZQUFZLFFBQVE7QUFBQSxFQUM5RDtBQUNBLFdBQVMsYUFBYSxrQkFBa0IsU0FBUyxhQUFhLE9BQU8sSUFBRSxtQkFBbUIsU0FBUyxhQUFhLFVBQVMsWUFBWSxJQUFFLHFCQUFxQixTQUFTLGFBQWEsVUFBUyxTQUFTLG1CQUFrQixZQUFZLEdBQUcsS0FBSyxFQUFFLFFBQVEsUUFBTyxHQUFHO0FBQzlQLDBCQUF3QixTQUFTLGFBQWEsUUFBUTtBQUN2RDtBQUVBLFNBQVMsa0JBQW1CLGNBQThDO0FBQ3pFLFNBQU8sT0FBTyxLQUFLLGFBQWEsTUFBTSxXQUFXLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxRQUFnQix5QkFBaUM7QUFDaEksV0FBTyxTQUFTO0FBQUEsb0RBQ2tDLHFCQUFxQixRQUFRLFFBQVEsR0FBRyxFQUFFLFlBQVk7QUFBQSxzREFDcEQscUJBQXFCLFFBQVEsUUFBUSxHQUFHLEVBQUUsWUFBWTtBQUFBO0FBQUE7QUFBQSxFQUczRyxHQUFFO0FBQUE7QUFBQSxLQUVFLGdCQUFnQixhQUFhLEtBQUs7QUFBQTtBQUFBO0FBQUEsS0FHbEMsZ0JBQWdCLGFBQWEsSUFBSTtBQUFBO0FBQUEsRUFFcEM7QUFDRjtBQUVBLFNBQVMsZ0JBQWlCLGtCQUFzRDtBQUMvRSxTQUFPLE9BQU8sUUFBUTtBQUFBLElBQ3JCLCtCQUErQixpQkFBaUIsVUFBVTtBQUFBLElBQzFELHlCQUF5QixpQkFBaUIsVUFBVTtBQUFBLElBQ3BELDRCQUE0QixpQkFBaUIsT0FBTztBQUFBLElBQ3BELHNCQUFzQixpQkFBaUIsT0FBTztBQUFBLElBQzlDLDZCQUE2QixpQkFBaUIsT0FBTztBQUFBLElBQ3JELDRCQUE0QixpQkFBaUIsT0FBTztBQUFBLElBQ3BELDRCQUE0QixpQkFBaUIsT0FBTyxNQUFNO0FBQUEsSUFDMUQseUNBQXlDLGlCQUFpQixPQUFPLFlBQVk7QUFBQSxJQUM3RSxtQ0FBbUMsaUJBQWlCLE9BQU8sWUFBWTtBQUFBLElBQ3ZFLDJCQUEyQixpQkFBaUIsT0FBTztBQUFBLElBQ25ELGdDQUFnQyxpQkFBaUIsV0FBVztBQUFBLElBQzVELDZCQUE2QixpQkFBaUIsV0FBVztBQUFBLElBQ3pELDRCQUE0QixpQkFBaUIsV0FBVztBQUFBLElBQ3hELGlCQUFpQixpQkFBaUIsU0FBUztBQUFBLElBQzNDLHdCQUF3QixpQkFBaUIsU0FBUztBQUFBLElBQ2xELGlCQUFpQixpQkFBaUIsT0FBTztBQUFBLElBQ3pDLHdCQUF3QixpQkFBaUIsT0FBTztBQUFBLElBQ2hELDRCQUE0QixpQkFBaUIsT0FBTztBQUFBLElBQ3BELHVCQUF1QixpQkFBaUIsT0FBTztBQUFBLElBQy9DLEdBQUcsT0FBTyxRQUFRLGlCQUFpQixXQUFXLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxRQUE4QixDQUFDLHNCQUFxQixNQUFNLE1BQThDO0FBQ3BMLGFBQU8sR0FBRyxxQkFBcUIsUUFBUSxRQUFRLEdBQUcsRUFBRSxZQUFZLG9CQUFvQixJQUFJO0FBQ3hGLGFBQU87QUFBQSxJQUNSLEdBQUUsQ0FBQyxDQUFDO0FBQUEsRUFDTCxDQUFDLEVBQUUsT0FBTyxDQUFDLFFBQWdCLENBQUMsYUFBWSxNQUFNLE1BQStCO0FBQzVFLFVBQU0sY0FBYyxNQUFNLE1BQU0sSUFBRSxPQUFPLFlBQVU7QUFDbkQsV0FBTyxTQUFTLGlCQUFpQixnQkFBZ0I7QUFBQSxFQUNsRCxHQUFFLEVBQUU7QUFDTDtBQUVBLFNBQVMsbUJBQW9CLGVBQXdDLGNBQThCO0FBaEduRztBQWlHQyxTQUFPO0FBQUE7QUFBQSxrREFFMEMsY0FBYyxPQUFPLFlBQVksV0FBUyxTQUFPO0FBQUEsb0RBQy9DLGNBQWMsT0FBTyxZQUFZLGFBQVcsV0FBUztBQUFBLGtCQUN2RixjQUFjLE9BQU8sWUFBWSxhQUFXLEtBQUcsY0FBYyxPQUFPLFlBQVksV0FBUztBQUFBO0FBQUE7QUFBQSwyQ0FHaEUsY0FBYyxPQUFPLE1BQU0sV0FBUyxTQUFPO0FBQUEsNkNBQ3pDLGNBQWMsT0FBTyxNQUFNLGFBQVcsV0FBUztBQUFBLGtCQUMxRSxjQUFjLE9BQU8sWUFBWSxhQUFXLEtBQUcsY0FBYyxPQUFPLFlBQVksV0FBUztBQUFBO0FBQUE7QUFBQSxzQkFHckYsY0FBYyxVQUFVO0FBQUEsMkJBQ25CLGNBQWMsU0FBUztBQUFBLHdDQUNWLGNBQWMsU0FBUyxxQkFBbUIsY0FBYyxTQUFTLCtCQUE2QjtBQUFBLHlCQUM3RyxjQUFjLE9BQU87QUFBQSxzQkFDeEIsY0FBYyxVQUFVLGNBQVksUUFBTTtBQUFBLHVDQUN6QixjQUFjLE9BQU87QUFBQSx5Q0FDbkIsY0FBYyxPQUFPO0FBQUEsNENBQ2xCLGNBQWMsT0FBTztBQUFBLDhDQUNuQixjQUFjLE9BQU87QUFBQSw2Q0FDdEIsY0FBYyxPQUFPO0FBQUEsNkNBQ3JCLGNBQWMsT0FBTztBQUFBLEtBQzdELENBQUMsY0FBYyxVQUFVLGtCQUFnQixLQUFHO0FBQUEsS0FDNUMsY0FBYyxPQUFPLGFBQWEsZ0JBQWMsS0FBRztBQUFBO0FBQUEsTUFFcEQsa0RBQWUsa0JBQWYsbUJBQThCLFVBQU87QUFBQTtBQUFBO0FBQUEsRUFHcEMsYUFBYSxZQUFZLEVBQUUsT0FBTyxRQUFNO0FBQUE7QUFBQSxFQUV4QyxhQUFhLFlBQVksRUFBRSxPQUFPLE9BQUs7QUFBQTtBQUFBO0FBQUEsTUFHeEM7QUFBQSxNQUNBLGtEQUFlLGtCQUFmLG1CQUE4QixTQUFNLGFBQWEsWUFBWSxFQUFFLFFBQU07QUFBQTtBQUV6RTtBQUVBLFNBQVMscUJBQXNCLGVBQXdDLG1CQUFvRSxjQUE4QjtBQUN4SyxTQUFPLE9BQU8sUUFBUSxjQUFjLEVBQUUsT0FBTyxDQUFDLFFBQWUsQ0FBQyxjQUFjLG1CQUFtQixNQUErQjtBQXpJL0g7QUEwSUUsUUFBSSx1QkFBdUIsb0JBQXFCLGdCQUFnQixxQkFBcUIsWUFBWSxrQkFBa0IsWUFBWSxHQUFJO0FBQ2xJLGdCQUFVO0FBQUEsZ0JBQ0c7QUFBQSxrQ0FDaUIsa0VBQW9CLGtCQUFwQixtQkFBb0MsY0FBcEMsWUFBaUQsaUJBQWlCLG1CQUFtQjtBQUFBLGdDQUN0RixjQUFjLFNBQVMsdUJBQXFCLGNBQWMsU0FBUyxzQkFBb0I7QUFBQTtBQUFBO0FBR3BILFdBQUksa0RBQWUsa0JBQWYsbUJBQThCLFFBQVE7QUFDekMsa0JBQVU7QUFBQSwwR0FDNEY7QUFBQTtBQUFBLFFBRW5HLGNBQWMsU0FBUyx1QkFBcUIsY0FBYyxTQUFTLHNCQUFvQixhQUFhLFlBQVksRUFBRSxPQUFPLE9BQUs7QUFBQTtBQUFBLE1BR2xJO0FBQUEsSUFDRDtBQUNBLFdBQU87QUFBQSxFQUNSLEdBQUUsRUFBRTtBQUNMO0FBRUEsU0FBUyx3QkFBeUIsZUFBOEM7QUFDL0UsTUFBSSxjQUFjLFVBQVU7QUFDM0IsYUFBUyxLQUFLLFVBQVUsSUFBSSwrQkFBK0I7QUFBQTtBQUUzRCxhQUFTLEtBQUssVUFBVSxPQUFPLCtCQUErQjtBQUUvRCxNQUFJLGNBQWMsT0FBTztBQUN4QixhQUFTLEtBQUssVUFBVSxJQUFJLDhCQUE4QjtBQUFBO0FBRTFELGFBQVMsS0FBSyxVQUFVLE9BQU8sOEJBQThCO0FBRTlELE1BQUksY0FBYyxPQUFPO0FBQ3hCLGFBQVMsS0FBSyxVQUFVLElBQUksZ0NBQWdDO0FBQUE7QUFFNUQsYUFBUyxLQUFLLFVBQVUsT0FBTyxnQ0FBZ0M7QUFFaEUsV0FBUyxLQUFLLFVBQVUsT0FBTyxxQ0FBb0MsK0NBQThDLDBDQUEwQztBQUMzSixNQUFJLGNBQWMsV0FBVyxvQkFBb0IsY0FBYyxXQUFXO0FBQ3pFLGFBQVMsS0FBSyxVQUFVLElBQUksbUNBQW1DO0FBQUEsV0FDdkQsY0FBYyxXQUFXLG9CQUFvQixDQUFDLGNBQWMsV0FBVztBQUMvRSxhQUFTLEtBQUssVUFBVSxJQUFJLDBDQUEwQztBQUFBLFdBQzlELENBQUMsY0FBYyxXQUFXLG9CQUFvQixjQUFjLFdBQVc7QUFDL0UsYUFBUyxLQUFLLFVBQVUsSUFBSSw2Q0FBNkM7QUFFMUUsV0FBUyxLQUFLLFVBQVUsT0FBTyw4QkFBNkIsbUNBQW1DO0FBQy9GLE1BQUksY0FBYyxPQUFPLFlBQVksWUFBWTtBQUNoRCxhQUFTLEtBQUssVUFBVSxJQUFJLG1DQUFtQztBQUFBLFdBQ3ZELGNBQWMsT0FBTyxZQUFZLFlBQVk7QUFDckQsYUFBUyxLQUFLLFVBQVUsSUFBSSw0QkFBNEI7QUFFekQsV0FBUyxLQUFLLFVBQVUsT0FBTyw4QkFBNkIsbUNBQW1DO0FBQy9GLE1BQUksY0FBYyxPQUFPLGFBQWEsWUFBWTtBQUNqRCxhQUFTLEtBQUssVUFBVSxJQUFJLG1DQUFtQztBQUFBLFdBQ3ZELGNBQWMsT0FBTyxhQUFhLFlBQVk7QUFDdEQsYUFBUyxLQUFLLFVBQVUsSUFBSSw0QkFBNEI7QUFDMUQ7QUFFTyxTQUFTLHlCQUErQjtBQW5NL0M7QUFvTUMsaUJBQVMsZUFBZSxRQUFRLE1BQWhDLG1CQUFtQztBQUNuQyxXQUFTLEtBQUssVUFBVTtBQUFBLElBQ3ZCO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0Q7QUFDRDtBQUVBLFNBQVMsZ0JBQWdCLEtBQWtCO0FBRTFDLFNBQU8sSUFBSSxNQUFNLFVBQVUsVUFBVTtBQUN0Qzs7O0FDcE5BLElBQUFDLG1CQUEyRTtBQUMzRSxrQkFBMEY7QUFDMUYsbUJBQXlLO0FBQ3pLLHNCQUFnRTtBQUVoRSx1QkFBZ0Q7OztBQ21DaEQsZUFBc0IscUJBQXFCLGFBQTRCLFlBQW9CLFFBQXdHO0FBRWxNLFFBQU0sVUFBOEIsT0FBTyxJQUFJLFFBQVE7QUFDdkQsUUFBTSxjQUF1Qix5QkFBeUI7QUFDdEQsTUFBSSxhQUFtQyxDQUFDO0FBQ3hDLE1BQUksdUJBQW1ELENBQUM7QUFDeEQsV0FBUyxzQkFBc0JDLGNBQWtDO0FBOUNsRTtBQStDUSxRQUFJQSxhQUFZLFdBQVc7QUFDdkI7QUFDSixRQUFJLHVCQUF1QixlQUFlQSxZQUFXO0FBQzNELFFBQUksQ0FBQztBQUNLO0FBQ0osUUFBSSxpQkFBZ0IsdUNBQWtDLEtBQUssb0JBQW9CLE1BQTNELG1CQUErRDtBQUN6RixRQUFJLENBQUM7QUFDSztBQUNWLFFBQUkscUJBQXFCQSxhQUFZLFFBQVEsb0JBQW9CO0FBQ2pFLFFBQUksc0JBQXNCQSxhQUFZLE1BQU0scUJBQW1CLENBQUMsRUFBRSxVQUFVLENBQUMsU0FBTyxLQUFLLFFBQVEsYUFBdUIsTUFBSSxFQUFFO0FBQzlILFFBQUksQ0FBQyxlQUFlLENBQUMscUNBQXFDLEtBQUssb0JBQW9CO0FBQ3pFLGlCQUFXLEtBQUtBLGFBQVksTUFBTSxHQUFFLHFCQUFtQixJQUFFLG1CQUFtQixDQUFDO0FBQUE7QUFFN0UsNEJBQXNCQSxhQUFZLE1BQU0scUJBQW1CLEdBQUUscUJBQW1CLElBQUUsbUJBQW1CLENBQUM7QUFFaEgsMEJBQXNCQSxhQUFZLE1BQU0scUJBQW1CLElBQUUsc0JBQW9CLENBQUMsQ0FBQztBQUFBLEVBQ3BGO0FBQ0Esd0JBQXNCLFdBQVc7QUFDakMsV0FBUyxrQkFBa0IsWUFBWTtBQUN0QyxRQUFJLGdCQUFnQixpQkFBaUIsY0FBYztBQUNuRCxRQUFJLENBQUM7QUFDSjtBQUNELFFBQUksc0JBQXNCLHlCQUF5QixlQUFjLE9BQU8sU0FBUyxZQUFZO0FBRTdGLFFBQUksV0FBVyxvQkFBb0IsVUFBUyxPQUFPLFNBQVMsa0JBQWtCO0FBQzdFO0FBRUQsMEJBQXNCLE1BQU0sdUJBQXVCLHFCQUFvQixTQUFRLGdCQUFlLFVBQVU7QUFDeEcseUJBQXFCLEtBQUssbUJBQW1CO0FBQUEsRUFDOUM7QUFDQSxTQUFPLEVBQUMsc0JBQTRDLFFBQVEsV0FBVyxDQUFDLElBQUUsQ0FBQyxZQUFZLGFBQVksV0FBVyxDQUFDLENBQUMsSUFBRSxLQUFJO0FBQ3ZIO0FBQ08sU0FBUyxnQkFBZ0JDLFdBQTJFO0FBRTFHLE1BQUksUUFBUSwyQkFBMkIsS0FBS0EsU0FBUTtBQUVwRCxNQUFJLEVBQUMsK0JBQVEsT0FBTSxHQUFFLCtCQUFRLFFBQU0sK0JBQVE7QUFDMUMsV0FBTyxFQUFDLFlBQVksTUFBTSxNQUFNLEdBQUU7QUFBQSxXQUMxQiwrQkFBUTtBQUNoQixXQUFPLEVBQUMsWUFBWSxNQUFNLE1BQU0sTUFBTSxDQUFDLEVBQUUsVUFBVSxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUM7QUFBQTtBQUVuRSxXQUFPLEVBQUMsWUFBWSwwQkFBMEIsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFDO0FBQ3pFO0FBRU8sU0FBUyx5QkFBeUIsZUFBdUIsT0FBNkM7QUFDNUcsTUFBSSxzQkFBMkM7QUFBQSxJQUM5QyxVQUFVO0FBQUEsSUFDVixPQUFPO0FBQUEsSUFDUCxNQUFNO0FBQUEsTUFDTCxTQUFTO0FBQUEsTUFDVCxhQUFhO0FBQUEsSUFDZDtBQUFBLElBQ0EsYUFBYTtBQUFBLE1BQ1osZUFBZTtBQUFBLE1BQ2YsZ0JBQWdCO0FBQUEsTUFDaEIsUUFBUTtBQUFBLElBQ1Q7QUFBQSxJQUNBLFlBQVk7QUFBQSxNQUNYLGVBQWU7QUFBQSxNQUNmLGdCQUFnQjtBQUFBLE1BQ2hCLFlBQVk7QUFBQSxJQUNiO0FBQUEsSUFDQSxZQUFZO0FBQUEsTUFDWCxTQUFTO0FBQUEsUUFDUixhQUFhLENBQUM7QUFBQSxRQUNkLFdBQVcsQ0FBQztBQUFBLFFBQ1osb0JBQW9CLENBQUM7QUFBQSxNQUN0QjtBQUFBLE1BQ0EsYUFBYSxDQUFDO0FBQUEsSUFDZjtBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1Q7QUFDQSxNQUFJLGNBQWMsV0FBVyxLQUFLLEdBQUc7QUFDcEMsb0JBQWdCLGNBQWMsUUFBUSxtQkFBa0IsRUFBRTtBQUFBLEVBQzNELFdBQVcsY0FBYyxXQUFXLEtBQUssR0FBRztBQUMzQyxvQkFBZ0IsY0FBYyxRQUFRLG1CQUFrQixFQUFFO0FBQUEsRUFDM0QsT0FBTztBQUNOLFdBQU87QUFBQSxFQUNSO0FBQ0EsTUFBSSxnQkFBZ0IsY0FBYyxRQUFRLEdBQUc7QUFDN0Msc0JBQW9CLFdBQVcsY0FBYyxNQUFNLEdBQUUsa0JBQWtCLEtBQUcsZ0JBQWMsY0FBYyxNQUFNLEVBQUUsWUFBWTtBQUMxSCxNQUFJLGtCQUFrQjtBQUNyQixXQUFPO0FBQ1IsUUFBTSxtQkFBbUIsY0FBYyxNQUFNLGdCQUFjLENBQUMsRUFBRSxNQUFNLGdDQUFnQztBQUNwRyxNQUFJLENBQUM7QUFDSixXQUFPO0FBQ1IsbUJBQWlCLFFBQVEsQ0FBQyxvQkFBb0IsOEJBQThCLGlCQUFnQixxQkFBb0IsS0FBSyxDQUFDO0FBQ3RILFNBQU87QUFDUjtBQUNBLGVBQXNCLHVCQUF1QixxQkFBMEMsU0FBNkIsZ0JBQStCLFlBQWtEO0FBeElyTTtBQXlJQyxNQUFJLG9CQUFvQixhQUFhLFdBQVc7QUFDL0MsUUFBSSwyQkFBMkIsU0FBUztBQUN2QyxVQUFJLG9CQUFvQixNQUFNLFFBQVEsdUJBQXVCLEVBQUUsS0FBSyxlQUFlLE1BQU0sR0FBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLEdBQUUsVUFBVTtBQUNwSCxVQUFJLENBQUMsb0JBQW9CLFlBQVksa0JBQWtCLENBQUMsb0JBQW9CLFlBQVksZUFBZTtBQUN0RyxZQUFJLE9BQU8sa0JBQWtCLFVBQVU7QUFDdEMsOEJBQW9CLFlBQVksU0FBUyxrQkFBa0IsUUFBUTtBQUNwRSw0QkFBb0IsWUFBWSxnQkFBZ0Isa0JBQWtCO0FBQUEsTUFDbkU7QUFDQSwwQkFBb0IsV0FBVyxRQUFRLGNBQWMsQ0FBQyxHQUFHLElBQUksSUFBSSxvQkFBb0IsV0FBVyxRQUFRLFlBQVksT0FBTyxNQUFNLEtBQUssUUFBUSx1QkFBdUIsRUFBRSxzQkFBc0Isa0JBQWtCLE9BQU0sa0JBQWtCLFNBQVMsR0FBRSxDQUFDLENBQUMsS0FBSUMsRUFBQyxNQUFzQixHQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3RSLFVBQUksb0JBQW9CLFVBQVU7QUFDakMsNEJBQW9CLFFBQVEsa0JBQWtCLFNBQVMsTUFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sR0FBRyxFQUFFLElBQUk7QUFDekYsMEJBQW9CLFdBQVcsa0JBQWtCO0FBQUEsSUFDbEQ7QUFBQSxFQUNELFdBQVcsb0JBQW9CLGFBQWEsV0FBVztBQUN0RCxRQUFJLGtCQUFrQixTQUFTO0FBQzlCLFlBQU0sdUJBQXNCLDBCQUFlLENBQUMsRUFBRSxNQUFNLGdDQUFnQyxNQUF4RCxtQkFBMkQsV0FBM0QsbUJBQW1FO0FBQy9GLFVBQUksT0FBTyx3QkFBd0I7QUFDbEMsNEJBQW9CLFdBQVc7QUFBQSxJQUNqQztBQUFBLEVBQ0Q7QUFDQSxTQUFPO0FBQ1I7QUFDQSxTQUFTLDBCQUEwQixlQUE2QztBQUMvRSxNQUFJLHVCQUE2QztBQUFBLElBQ2hELFVBQVU7QUFBQSxJQUNWLE9BQU87QUFBQSxJQUNQLE1BQU07QUFBQSxFQUNQO0FBQ0EsTUFBSSxnQkFBZ0IsY0FBYyxRQUFRLEdBQUc7QUFDN0MsdUJBQXFCLFdBQVcsY0FBYyxNQUFNLEdBQUUsa0JBQWtCLEtBQUcsZ0JBQWMsY0FBYyxNQUFNLEVBQUUsWUFBWTtBQUMzSCxNQUFJLGtCQUFrQjtBQUNyQixXQUFPO0FBQ1IsUUFBTSxtQkFBbUIsY0FBYyxNQUFNLGdCQUFjLENBQUMsRUFBRSxNQUFNLGdDQUFnQztBQUNwRyxNQUFJLENBQUM7QUFDSixXQUFPO0FBQ1IsbUJBQWlCLFFBQVEsQ0FBQyxvQkFBb0IsK0JBQStCLGlCQUFnQixvQkFBb0IsQ0FBQztBQUNsSCxTQUFPO0FBQ1I7QUFFQSxTQUFTLDhCQUE4QixpQkFBeUIscUJBQTBDLE9BQThCO0FBQ3ZJLE1BQUksZ0JBQWdCLFdBQVcsUUFBUSxHQUFHO0FBQ3pDLFFBQUksYUFBYSxvQkFBb0IsS0FBSyxnQkFBZ0IsTUFBTSxTQUFTLE1BQU0sQ0FBQztBQUNoRixRQUFJO0FBQ0gsMEJBQW9CLFFBQVEsV0FBVyxDQUFDLEVBQUUsS0FBSztBQUFBLEVBQ2pELFdBQVcsZ0JBQWdCLFdBQVcsT0FBTyxHQUFHO0FBQy9DLFFBQUksdUJBQXVCLG9CQUFvQixLQUFLLGdCQUFnQixNQUFNLFFBQVEsTUFBTSxDQUFDO0FBQ3pGLFFBQUksc0JBQXNCO0FBQ3pCLDBCQUFvQixPQUFPO0FBQUEsUUFDMUIsU0FBUztBQUFBLFFBQ1QsYUFBYSxxQkFBcUIsQ0FBQyxFQUFFLEtBQUs7QUFBQSxNQUMzQztBQUFBLElBQ0Q7QUFBQSxFQUNELFdBQVcsb0JBQW9CLFFBQVE7QUFDdEMsd0JBQW9CLE9BQU87QUFBQSxNQUMxQixTQUFTO0FBQUEsTUFDVCxhQUFhO0FBQUEsSUFDZDtBQUFBLEVBQ0QsV0FBVyxvQkFBb0IsVUFBVTtBQUN4Qyx3QkFBb0IsU0FBUztBQUFBLEVBQzlCLFdBQVcsZ0JBQWdCLFdBQVcsS0FBSyxHQUFHO0FBQzdDLHNCQUFrQixnQkFBZ0IsTUFBTSxNQUFNLE1BQU07QUFDcEQsUUFBSSxRQUFRLEtBQUssZUFBZSxHQUFHO0FBQ2xDLDBCQUFvQixjQUFjO0FBQUEsUUFDakMsZUFBZTtBQUFBLFFBQ2YsZ0JBQWdCO0FBQUEsUUFDaEIsUUFBUSxTQUFTLGVBQWUsSUFBRTtBQUFBLE1BQ25DO0FBQUEsSUFDRCxXQUFXLGdCQUFnQixZQUFZLE1BQU0sUUFBUTtBQUNwRCwwQkFBb0IsY0FBYztBQUFBLFFBQ2pDLGVBQWU7QUFBQSxRQUNmLGdCQUFnQjtBQUFBLFFBQ2hCLFFBQVE7QUFBQSxNQUNUO0FBQUEsSUFDRCxXQUFXLGdCQUFnQixZQUFZLE1BQU0sU0FBUztBQUNyRCwwQkFBb0IsY0FBYztBQUFBLFFBQ2pDLGVBQWU7QUFBQSxRQUNmLGdCQUFnQjtBQUFBLFFBQ2hCLFFBQVE7QUFBQSxNQUNUO0FBQUEsSUFDRDtBQUFBLEVBQ0QsV0FBVyxvQkFBb0IsUUFBUTtBQUN0Qyx3QkFBb0IsYUFBYTtBQUFBLE1BQ2hDLGVBQWU7QUFBQSxNQUNmLGdCQUFnQjtBQUFBLE1BQ2hCLFlBQVk7QUFBQSxJQUNiO0FBQUEsRUFDRCxXQUFXLG9CQUFvQixVQUFVO0FBQ3hDLHdCQUFvQixhQUFhO0FBQUEsTUFDaEMsZUFBZTtBQUFBLE1BQ2YsZ0JBQWdCO0FBQUEsTUFDaEIsWUFBWTtBQUFBLElBQ2I7QUFBQSxFQUNELFdBQVcsZ0JBQWdCLFdBQVcsU0FBUyxHQUFHO0FBQ2pELHNCQUFrQixnQkFBZ0IsTUFBTSxVQUFVLE1BQU07QUFDeEQsUUFBSSxnQkFBZ0IsWUFBWSxNQUFNLFlBQVk7QUFDakQsMEJBQW9CLGFBQWE7QUFBQSxRQUNoQyxlQUFlO0FBQUEsUUFDZixnQkFBZ0I7QUFBQSxRQUNoQixZQUFZO0FBQUEsTUFDYjtBQUFBLElBQ0QsV0FBVyxnQkFBZ0IsWUFBWSxNQUFNLFFBQVE7QUFDcEQsMEJBQW9CLGFBQWE7QUFBQSxRQUNoQyxlQUFlO0FBQUEsUUFDZixnQkFBZ0I7QUFBQSxRQUNoQixZQUFZO0FBQUEsTUFDYjtBQUFBLElBQ0QsV0FBVyxnQkFBZ0IsWUFBWSxNQUFNLFNBQVM7QUFDckQsMEJBQW9CLGFBQWE7QUFBQSxRQUNoQyxlQUFlO0FBQUEsUUFDZixnQkFBZ0I7QUFBQSxRQUNoQixZQUFZO0FBQUEsTUFDYjtBQUFBLElBQ0Q7QUFBQSxFQUNELE9BQU87QUFDTixRQUFJLGlCQUFpQixlQUFlLEtBQUssZUFBZTtBQUN4RCxRQUFJLGdCQUFnQjtBQUNuQixVQUFJLGFBQWEsc0JBQXNCLGVBQWUsQ0FBQyxDQUFDO0FBQ3hELFVBQUksZUFBZSxDQUFDLE1BQU07QUFDekIsNEJBQW9CLFdBQVcsVUFBVTtBQUFBLGVBRXJDLGVBQWUsQ0FBQyxLQUFLLE1BQU0sUUFBUSxNQUFNLFdBQVc7QUFDdkQsNEJBQW9CLFdBQVcsWUFBWSxlQUFlLENBQUMsQ0FBQyxJQUFJO0FBQUEsSUFDbkU7QUFBQSxFQUNEO0FBQ0Q7QUFDQSxTQUFTLHNCQUFzQix3QkFBNEM7QUFDMUUsUUFBTSxpQkFBaUIsdUJBQXVCLE1BQU0sR0FBRztBQUN2RCxNQUFJLGNBQTJCLG9CQUFJLElBQUk7QUFDdkMsTUFBSSxZQUF5QixvQkFBSSxJQUFJO0FBQ3JDLE1BQUkscUJBQWtDLG9CQUFJLElBQUk7QUFDOUMsaUJBQWUsUUFBUSxtQkFBaUI7QUFDdkMsUUFBSSxVQUFVLEtBQUssYUFBYSxHQUFHO0FBQ2xDLFlBQU0sQ0FBQyxPQUFNLEdBQUcsSUFBSSxjQUFjLE1BQU0sR0FBRyxFQUFFLElBQUksU0FBTyxTQUFTLEdBQUcsQ0FBQztBQUNyRSxVQUFJLFNBQVMsT0FBTyxTQUFTO0FBQzVCLGNBQU0sS0FBSyxFQUFDLFFBQU8sTUFBSSxRQUFNLEVBQUMsR0FBRyxDQUFDQSxJQUFFLFFBQVEsTUFBTSxLQUFLLEVBQUUsUUFBUSxnQkFBYyxZQUFZLElBQUksVUFBVSxDQUFDO0FBQUEsSUFDNUcsV0FBVyxhQUFhLEtBQUssYUFBYSxHQUFHO0FBQzVDLFVBQUk7QUFDSCwyQkFBbUIsSUFBSSxJQUFJLE9BQU8sY0FBYyxRQUFRLGNBQWEsSUFBSSxDQUFDLENBQUM7QUFBQSxNQUM1RSxTQUFRQyxJQUFOO0FBQUEsTUFBUTtBQUFBLElBQ1gsV0FBVyxPQUFPLEtBQUssYUFBYSxHQUFHO0FBQ3RDLGdCQUFVLElBQUksY0FBYyxVQUFVLEdBQUUsY0FBYyxTQUFPLENBQUMsQ0FBQztBQUFBLElBQ2hFLFdBQVcsT0FBTyxLQUFLLGFBQWEsR0FBRztBQUN0QyxnQkFBVSxJQUFJLGNBQWMsVUFBVSxHQUFFLGNBQWMsU0FBTyxDQUFDLENBQUM7QUFBQSxJQUNoRSxXQUFXLEtBQUssS0FBSyxhQUFhLEdBQUc7QUFDcEMsZ0JBQVUsSUFBSSxhQUFhO0FBQUEsSUFDNUIsV0FBVyxNQUFNLEtBQUssYUFBYSxHQUFHO0FBQ3JDLGtCQUFZLElBQUksU0FBUyxhQUFhLENBQUM7QUFBQSxJQUN4QztBQUFBLEVBQ0QsQ0FBQztBQUNELFNBQU87QUFBQSxJQUNOLGFBQWEsQ0FBQyxHQUFHLFdBQVc7QUFBQSxJQUM1QixXQUFXLENBQUMsR0FBRyxTQUFTO0FBQUEsSUFDeEIsb0JBQW9CLENBQUMsR0FBRyxrQkFBa0I7QUFBQSxFQUMzQztBQUNEO0FBQ08sU0FBUyxXQUFXLFVBQWtCLHlCQUEwQztBQUN0RixTQUFPLDRCQUE0Qix1QkFBdUIsRUFBRSxLQUFLLDJCQUF5QjtBQUN6RixRQUFJLHNCQUFzQixLQUFLLFFBQVE7QUFDdEMsYUFBTztBQUFBLEVBQ1QsQ0FBQztBQUNGO0FBQ0EsU0FBUyw0QkFBNEIseUJBQWdEO0FBQ3BGLFNBQU8sd0JBQXdCLE1BQU0sR0FBRyxFQUFFLElBQUksbUJBQWlCLElBQUksT0FBTyxJQUFJLGNBQWMsS0FBSyxFQUFFLFFBQVEsT0FBTSxJQUFJLE1BQUssR0FBRyxDQUFDO0FBQy9IO0FBQ0EsU0FBUywrQkFBK0IsaUJBQXlCLHNCQUFrRDtBQUNsSCxNQUFJLGdCQUFnQixXQUFXLFFBQVEsR0FBRztBQUN6QyxRQUFJLGFBQWEsb0JBQW9CLEtBQUssZ0JBQWdCLE1BQU0sU0FBUyxNQUFNLENBQUM7QUFDaEYsUUFBSTtBQUNILDJCQUFxQixRQUFRLFdBQVcsQ0FBQyxFQUFFLEtBQUs7QUFBQSxFQUNsRCxXQUFXLG9CQUFvQixVQUFXLGdCQUFnQixXQUFXLE9BQU8sS0FBSyxnQkFBZ0IsWUFBWSxNQUFNLGFBQWM7QUFDaEkseUJBQXFCLE9BQU87QUFBQSxFQUM3QjtBQUNEO0FBRU8sU0FBUyxpQkFBaUIsZ0JBQW1EO0FBQ25GLE1BQUksdUJBQXVCLGVBQWUsY0FBYztBQUN4RCxNQUFJLHlCQUF5Qix5QkFBeUIsZUFBZSxDQUFDLEtBQUssY0FBYyxLQUFLLG9CQUFvQjtBQUNqSCwyQkFBdUIsbUJBQW1CLG9CQUFvQjtBQUMvRCxTQUFPO0FBQ1I7QUFDQSxTQUFTLGVBQWUsZ0JBQW1EO0FBQzFFLFNBQU8sZUFBZSxLQUFLLENBQUMsU0FBZSxRQUFRLGdCQUFnQixJQUFJLENBQUMsQ0FBQztBQUMxRTtBQUNPLFNBQVMsZ0JBQWdCLGVBQStCO0FBQzlELE1BQUksWUFBWSw2QkFBNkIsS0FBSyxhQUFhO0FBQy9ELE1BQUksQ0FBQztBQUNKLFdBQU87QUFDUixNQUFJLGNBQWMsUUFBUSxVQUFVLENBQUMsR0FBRSxVQUFVLENBQUMsRUFBRSxTQUFPLFVBQVUsQ0FBQyxFQUFFLFNBQU8sQ0FBQyxNQUFJO0FBQ25GLFdBQU8sVUFBVSxDQUFDO0FBQ25CLFNBQU87QUFDUjtBQUNBLFNBQVMsbUJBQW1CLGVBQStCO0FBQzFELFNBQU8sa0JBQWtCLGFBQWEsRUFBRSxRQUFRLHlCQUF3QixJQUFJO0FBQzdFO0FBQ08sU0FBUyxrQkFBa0IsZUFBK0I7QUFDaEUsU0FBTyxjQUFjLEtBQUs7QUFDM0I7QUFFQSxlQUFzQixvQkFBb0IsWUFBb0IsUUFBOEQ7QUFDM0gsUUFBTSxPQUFPLE9BQU8sSUFBSSxNQUFNLHNCQUFzQixVQUFVO0FBQzlELE1BQUksQ0FBQyxNQUFNO0FBQ1YsWUFBUSxNQUFNLG1CQUFtQixZQUFZO0FBQzdDO0FBQUEsRUFDRDtBQUNBLFFBQU0sY0FBYyxNQUFNLE9BQU8sSUFBSSxNQUFNLFdBQW1CLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVTtBQUNwRixZQUFRLE1BQU0sdUJBQXVCLE1BQU0sU0FBUztBQUNwRCxXQUFPO0FBQUEsRUFDUixDQUFDO0FBQ0QsTUFBSSxDQUFDO0FBQ0o7QUFDRCxTQUFPLFlBQVksTUFBTSxLQUFLO0FBQy9CO0FBRU8sU0FBUyxZQUFZLFFBQW1CLFFBQTZCO0FBQzNFLFNBQU8sT0FBTyxXQUFXLE9BQU8sVUFBVSxPQUFPLE1BQU0sQ0FBQyxPQUFPLE9BQU8sU0FBUyxFQUFFLENBQUM7QUFDbkY7OztBQzdWTyxTQUFTLGFBQWEscUJBQTBDLGVBQXdDLGVBQW1EO0FBQ2pLLFFBQU0sa0JBQWtCLFVBQVUsRUFBQyxLQUFLLCtCQUFnQyxvQkFBb0IsS0FBSyxXQUFXLG9CQUFvQixVQUFVLEtBQUksY0FBWSxLQUFJLENBQUM7QUFDL0osTUFBSSxvQkFBb0IsYUFBYSxJQUFHO0FBQ3ZDLFVBQU0sVUFBVSxnQkFBZ0Isb0JBQW9CLFVBQVMsYUFBYTtBQUMxRSxRQUFJLFlBQVk7QUFDZixzQkFBZ0IsWUFBWSxtQkFBbUIsU0FBUSxVQUFVLENBQUMsQ0FBQztBQUNwRSxvQkFBZ0IsWUFBWSxVQUFVLEVBQUMsS0FBSyxtQ0FBbUMsb0JBQW9CLFlBQVksTUFBTSxlQUFlLG9CQUFvQixRQUFRLEVBQUMsQ0FBQyxDQUFDO0FBQUEsRUFDcEs7QUFFQSxNQUFJLGFBQWE7QUFDakIsTUFBSSxvQkFBb0IsVUFBVTtBQUNqQyxpQkFBYSxvQkFBb0I7QUFBQSxXQUN6QixvQkFBb0IsS0FBSztBQUNqQyxRQUFJLG9CQUFvQixLQUFLLGdCQUFjO0FBQzFDLG1CQUFhLG9CQUFvQixLQUFLO0FBQUE7QUFFdEMsbUJBQWEsY0FBYyxPQUFPLHdCQUFzQixLQUFHLGNBQWMsT0FBTyxzQkFBb0I7QUFDdEcsa0JBQWdCLFlBQVksVUFBVSxFQUFDLEtBQUssMkJBQTJCLE1BQU0sV0FBVSxDQUFDLENBQUM7QUFFekYsU0FBTztBQUNSO0FBQ08sU0FBUyxtQkFBbUIsc0JBQTRDLGVBQXNDLG1CQUFrQyxDQUFDLDJCQUEyQixHQUFnQjtBQUNsTSxRQUFNLGtCQUFrQixXQUFXLEVBQUMsS0FBSyxpQkFBaUIsS0FBSyxHQUFHLEVBQUMsQ0FBQztBQUNwRSxNQUFJLHFCQUFxQixNQUFNO0FBQzlCLFVBQU0sVUFBVSxnQkFBZ0IscUJBQXFCLFVBQVMsYUFBYTtBQUMzRSxRQUFJLFlBQVk7QUFDZixzQkFBZ0IsWUFBWSxtQkFBbUIsU0FBUSxXQUFXLEdBQUUseUJBQXlCLENBQUM7QUFBQSxFQUNoRztBQUNBLE1BQUkscUJBQXFCO0FBQ3hCLG9CQUFnQixZQUFZLFdBQVcsRUFBQyxLQUFLLDRCQUE0QixNQUFNLHFCQUFxQixNQUFLLENBQUMsQ0FBQztBQUM1RyxTQUFPO0FBQ1I7QUFDQSxTQUFTLG1CQUFtQixTQUFpQixjQUEyQixXQUFtQixvQkFBaUM7QUFDM0gsUUFBTSxNQUFNLFNBQVMsY0FBYyxLQUFLO0FBQ3hDLE1BQUksVUFBVSxJQUFJLFFBQVE7QUFDMUIsTUFBSSxNQUFNO0FBQ1YsZUFBYSxZQUFZLEdBQUc7QUFDNUIsU0FBTztBQUNSO0FBRU8sU0FBUyxnQkFBZ0IsVUFBa0IsZUFBc0M7QUFDdkYsYUFBVyxlQUFlLFFBQVE7QUFDbEMsTUFBSSxZQUFZO0FBQ2YsV0FBTyxjQUFjLFFBQVE7QUFDOUIsU0FBTztBQUNSO0FBQ0EsU0FBUyxlQUFlLFVBQWtCO0FBQ3pDLE1BQUksWUFBWTtBQUNmLFdBQU8sZUFBZSxRQUFRO0FBQUEsV0FDdEIsYUFBYTtBQUNyQixXQUFPLFNBQVMsT0FBTyxDQUFDLEVBQUUsWUFBWSxJQUFJLFNBQVMsTUFBTSxDQUFDO0FBQzNELFNBQU87QUFDUjtBQUVPLFNBQVMsYUFBYSxxQkFBMEMsWUFBb0IsTUFBNkI7QUFDdkgsTUFBSSxZQUEyQixDQUFDO0FBQ2hDLE1BQUksb0JBQW9CLFdBQVcsUUFBUSxZQUFZLFNBQVMsYUFBVyxvQkFBb0IsWUFBWSxNQUFNLEtBQUssb0JBQW9CLFdBQVcsUUFBUSxVQUFVLEtBQUssQ0FBQUMsVUFBUSxLQUFLLFFBQVFBLEtBQUksSUFBSSxFQUFFLEtBQUssb0JBQW9CLFdBQVcsUUFBUSxtQkFBbUIsS0FBSyxZQUFVLE9BQU8sS0FBSyxJQUFJLENBQUM7QUFDelMsY0FBVSxLQUFLLDhCQUE4QjtBQUM5QyxTQUFPLFFBQVEsb0JBQW9CLFdBQVcsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLHNCQUFxQixnQkFBZ0IsTUFBMkI7QUFDcEksUUFBSSxpQkFBaUIsWUFBWSxTQUFTLGFBQVcsb0JBQW9CLFlBQVksTUFBTSxLQUFLLGlCQUFpQixVQUFVLEtBQUssQ0FBQUEsVUFBUSxLQUFLLFFBQVFBLEtBQUksSUFBSSxFQUFFLEtBQUssaUJBQWlCLG1CQUFtQixLQUFLLFlBQVUsT0FBTyxLQUFLLElBQUksQ0FBQztBQUN2TyxnQkFBVSxLQUFLLGdDQUFnQyxxQkFBcUIsUUFBUSxRQUFRLEdBQUcsRUFBRSxZQUFZLEdBQUc7QUFBQSxFQUMxRyxDQUFDO0FBQ0QsTUFBSSxVQUFVLFdBQVc7QUFDeEIsZ0JBQVksQ0FBQyxrQkFBa0I7QUFDaEMsU0FBTztBQUNSOzs7QUZ4RE8sU0FBUyxvQ0FBb0MsVUFBOEIsZUFBc0M7QUFDdkgsUUFBTSwrQkFBK0Isd0JBQVcsT0FBZTtBQUFBLElBQzlELE9BQU8sT0FBNEI7QUFDbEMsYUFBTyxhQUFhLE9BQU0sTUFBTSxNQUFNLGtDQUFpQixFQUFFLHFCQUFxQjtBQUFBLElBQy9FO0FBQUEsSUFDQSxPQUFPLE9BQWUsYUFBa0M7QUFDdkQsYUFBTyxhQUFhLFlBQVksT0FBTSxLQUFLO0FBQUEsSUFDNUM7QUFBQSxFQUNELENBQUM7QUFDRCxRQUFNLGlCQUFpQix1QkFBVztBQUFBLElBQ2pDLE1BQU0sZUFBZTtBQUFBLE1BV3BCLFlBQVksTUFBa0I7QUFDN0IsYUFBSyxXQUFXO0FBQ2hCLGFBQUssa0JBQWtCO0FBQUEsVUFDdEIsb0JBQW9CLFNBQVM7QUFBQSxVQUM3QixtQkFBbUIsU0FBUztBQUFBLFVBQzVCLHFCQUFxQjtBQUFBLFVBQ3JCLHVCQUF1QixDQUFDO0FBQUEsUUFDekI7QUFDQSxhQUFLLGNBQWMsdUJBQVc7QUFDOUIsYUFBSyxpQkFBaUIsSUFBSTtBQUMxQixhQUFLLG1CQUFtQixJQUFJLGlCQUFpQixDQUFDLGNBQWM7QUFBQyxvQkFBVSxRQUFRLENBQUMsYUFBNkI7QUFDM0csZ0JBQUksU0FBUyxTQUFTLGdCQUFnQixTQUFTLGtCQUFrQixZQUMvRCxTQUFTLE9BQXVCLFVBQVUsU0FBUyx5QkFBeUIsS0FDNUUsU0FBUyxPQUF1QixVQUFVLFNBQVMsd0NBQXdDLEtBQzNGLFNBQVMsT0FBdUIsVUFBVSxTQUFTLHVCQUF1QixJQUN6RTtBQUNGLG1CQUFLLFlBQVksSUFBSTtBQUFBLFlBQ3RCO0FBQUEsVUFDRCxDQUFDO0FBQUEsUUFDRixDQUFDO0FBQ0QsYUFBSyxpQkFBaUIsUUFBUSxLQUFLLFlBQWE7QUFBQSxVQUMvQyxZQUFZO0FBQUEsVUFDWixXQUFXO0FBQUEsVUFDWCxTQUFTO0FBQUEsVUFDVCxpQkFBaUIsQ0FBQyxPQUFPO0FBQUE7QUFBQSxRQUMxQixDQUFDO0FBQUEsTUFDRjtBQUFBLE1BRUEsWUFBWSxNQUFrQjtBQUM3QixhQUFLLGlCQUFpQixJQUFJO0FBQzFCLGFBQUssZUFBZTtBQUFBLE1BQ3JCO0FBQUEsTUFFQSxPQUFPLFFBQW9CO0FBQzFCLFlBQUksT0FBTyxjQUNWLE9BQU8sbUJBQ1AsT0FBTyxNQUFNLE1BQU0sdUNBQXNCLE1BQU0sT0FBTyxXQUFXLE1BQU0sdUNBQXNCLEtBQzdGLEtBQUssU0FBUyx1QkFBdUIsS0FBSyxnQkFBZ0Isc0JBQzFELEtBQUssU0FBUyxzQkFBc0IsS0FBSyxnQkFBZ0IscUJBQ3pELEtBQUssU0FBUyxhQUFhLFNBQVMsT0FBTyx3QkFBd0IsS0FBSyxnQkFBZ0IsdUJBQ3hGLENBQUMsWUFBWSxPQUFPLEtBQUssS0FBSyxTQUFTLGFBQWEsUUFBUSxNQUFNLFdBQVcscUJBQXFCLEdBQUUsS0FBSyxnQkFBZ0IscUJBQXFCLEdBQzdJO0FBQ0QsZUFBSyxrQkFBa0IsZ0JBQWdCO0FBQUEsWUFDdEMsb0JBQW9CLEtBQUssU0FBUztBQUFBLFlBQ2xDLG1CQUFtQixLQUFLLFNBQVM7QUFBQSxZQUNqQyxxQkFBcUIsS0FBSyxTQUFTLGFBQWEsU0FBUyxPQUFPO0FBQUEsWUFDaEUsdUJBQXVCLE9BQU8sS0FBSyxLQUFLLFNBQVMsYUFBYSxRQUFRLE1BQU0sV0FBVyxxQkFBcUI7QUFBQSxVQUM3RyxDQUFDO0FBQ0QsZUFBSyxpQkFBaUIsT0FBTyxJQUFJO0FBQUEsUUFDbEM7QUFBQSxNQUNEO0FBQUEsTUFFQSxpQkFBaUIsTUFBa0I7QUFyRnRDO0FBc0ZJLFlBQUksR0FBQyxrQ0FBTSxrQkFBTixtQkFBcUIsV0FBVSxrQkFBa0IsS0FBSyxLQUFLLEdBQUc7QUFDbEUsZUFBSyxjQUFjLHVCQUFXO0FBQzlCO0FBQUEsUUFDRDtBQUNBLGNBQU0sVUFBVSxJQUFJLDZCQUE0QjtBQUNoRCxjQUFNLGFBQWEsMkJBQTJCLElBQUk7QUFDbEQsbUJBQVcsYUFBYSxZQUFZO0FBQ25DLGNBQUk7QUFDSixjQUFJLG9CQUE2QjtBQUNqQyxjQUFJLGFBQXFCO0FBQ3pCLGNBQUksYUFBcUI7QUFDekIsY0FBSSxtQkFBdUM7QUFDM0MsMENBQVcsS0FBSyxLQUFLLEVBQUUsUUFBUTtBQUFBLFlBQUMsTUFBTSxVQUFVO0FBQUEsWUFBTSxJQUFJLFVBQVU7QUFBQSxZQUNuRSxPQUFPLENBQUMsZUFBYTtBQUNwQixvQkFBTSxPQUFPLEtBQUssTUFBTSxJQUFJLE9BQU8sV0FBVyxJQUFJO0FBQ2xELG9CQUFNLFdBQVcsS0FBSyxNQUFNLFNBQVMsS0FBSyxNQUFLLEtBQUssRUFBRTtBQUN0RCxvQkFBTSxZQUFZLFdBQVcsS0FBSyxLQUFLLFNBQVMseUJBQXlCO0FBQ3pFLG9CQUFNLFVBQVUsV0FBVyxLQUFLLEtBQUssU0FBUyx1QkFBdUI7QUFDckUsa0JBQUksV0FBVztBQUNkLHNDQUFzQix5QkFBeUIsa0JBQWtCLFFBQVEsR0FBRSxLQUFLLFNBQVMsWUFBWTtBQUNyRyxvQ0FBb0IsV0FBVyxvQkFBb0IsVUFBUyxDQUFDLEtBQUssU0FBUyxvQkFBbUIsS0FBSyxTQUFTLGlCQUFpQixFQUFFLEtBQUssR0FBRyxDQUFDLEtBQUssb0JBQW9CO0FBQ2pLLDZCQUFhO0FBQ2Isb0JBQUksa0JBQWtCLEtBQUssU0FBUztBQUNwQyxvQkFBSSxpQkFBaUIsZ0JBQWdCLFFBQVE7QUFDN0MsdUJBQU8sbUJBQW1CLGdCQUFnQixLQUFLLE1BQU0sSUFBSSxLQUFLLGVBQWUsRUFBRSxJQUFJLEdBQUc7QUFDckYscUNBQW1CO0FBQUEsZ0JBQ3BCO0FBQ0EsNkJBQWEsa0JBQWtCLEtBQUssU0FBUyxJQUFJLG9CQUFvQixZQUFZO0FBQ2pGLG9CQUFJLFdBQVcsU0FBUyxFQUFFLFNBQVM7QUFDbEMscUNBQW1CLFdBQVcsU0FBUyxFQUFFLFNBQVMsS0FBSyxNQUFNLE1BQU0sNEJBQTRCO0FBQUE7QUFFL0YscUNBQW1CO0FBQUEsY0FDckI7QUFDQSxrQkFBSTtBQUNIO0FBQ0Qsa0JBQUksV0FBVyxLQUFLLEtBQUssU0FBUyxtQkFBbUIsR0FBRztBQUN2RCx3QkFBUSxJQUFJLFdBQVcsTUFBSyxXQUFXLE1BQUssdUJBQVcsS0FBSyxFQUFDLFlBQVksRUFBQyxPQUFPLCtCQUErQixtQkFBaUIsbUJBQWlCLE9BQUssc0RBQXNELFFBQVEsS0FBSyxTQUFTLGlCQUFpQixLQUFLLFlBQVUsSUFBSSxPQUFPLE1BQU0sRUFBRSxLQUFLLG9CQUFvQixRQUFRLENBQUMsS0FBRyxhQUFXLFVBQVEscUJBQW1CLGFBQWEscUJBQW9CLFlBQVcsS0FBSyxJQUFJLEVBQUUsS0FBSyxHQUFHLE1BQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxLQUFLLFNBQVMsZ0JBQWdCLEVBQUUsS0FBSyxZQUFVLElBQUksT0FBTyxNQUFNLEVBQUUsS0FBSyxvQkFBb0IsUUFBUSxDQUFDLElBQUUsS0FBRyxhQUFhLG9CQUFvQixZQUFXLEVBQUMsQ0FBQyxDQUFDO0FBQzFrQix3QkFBUSxJQUFJLFdBQVcsTUFBSyxXQUFXLE1BQUssdUJBQVcsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMvRCx3QkFBUSxJQUFJLFdBQVcsTUFBSyxXQUFXLE1BQUssdUJBQVcsT0FBTyxFQUFDLFFBQVEsSUFBSSxpQkFBaUIsWUFBVyxxQkFBb0IsWUFBVyxhQUFXLE9BQU8sRUFBQyxDQUFDLENBQUM7QUFDM0o7QUFBQSxjQUNEO0FBQUEsWUFDRDtBQUFBLFVBQ0QsQ0FBQztBQUFBLFFBQ0Y7QUFDQSxhQUFLLGNBQWMsUUFBUSxPQUFPO0FBQUEsTUFDbkM7QUFBQSxNQUVBLFVBQVU7QUFDVCxhQUFLLGlCQUFpQixXQUFXO0FBQUEsTUFDbEM7QUFBQSxJQUNEO0FBQUEsSUFDQTtBQUFBLE1BQ0MsYUFBYSxDQUFDLFVBQVUsTUFBTTtBQUFBLE1BQzlCLFNBQVMsQ0FBQyxXQUFXLHVCQUFXLGFBQWEsR0FBRyxDQUFDLFNBQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLEtBQUssdUJBQVcsSUFBSTtBQUFBLElBQy9HO0FBQUEsRUFDRDtBQUNBLFFBQU0sa0JBQWtCLHdCQUFXLE9BQXNCO0FBQUEsSUFDeEQsT0FBTyxPQUFtQztBQUN6QyxhQUFPLHVCQUFXO0FBQUEsSUFDbkI7QUFBQSxJQUNBLE9BQU8sT0FBc0IsYUFBeUM7QUFDckUsVUFBSSxrQkFBa0IsWUFBWSxLQUFLO0FBQ3RDLGVBQU8sdUJBQVc7QUFDbkIsWUFBTSxVQUFVLElBQUksNkJBQTRCO0FBQ2hELFVBQUk7QUFDSixVQUFJLFlBQXFCO0FBQ3pCLFVBQUksaUJBQXlCO0FBQzdCLGVBQVNDLEtBQUksR0FBR0EsS0FBSSxZQUFZLE1BQU0sSUFBSSxPQUFPQSxNQUFLO0FBQ3JELGNBQU0sT0FBTyxZQUFZLE1BQU0sSUFBSSxLQUFLQSxFQUFDO0FBQ3pDLGNBQU0sV0FBVyxLQUFLLEtBQUssU0FBUztBQUNwQyxZQUFJLG1CQUFtQixnQkFBZ0IsUUFBUTtBQUMvQyxZQUFJLGtCQUFrQjtBQUNyQixjQUFJLFdBQVc7QUFDZCx3QkFBWTtBQUNaLDZCQUFpQjtBQUNqQixrQ0FBc0IseUJBQXlCLGtCQUFrQixRQUFRLEdBQUUsU0FBUyxZQUFZO0FBQ2hHLGdCQUFJLENBQUMsV0FBVyxvQkFBb0IsVUFBUyxDQUFDLFNBQVMsb0JBQW1CLFNBQVMsaUJBQWlCLEVBQUUsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLG9CQUFvQjtBQUN4SSxrQkFBSSxDQUFDLFNBQVMsaUJBQWlCLEtBQUssWUFBVSxJQUFJLE9BQU8sTUFBTSxFQUFFLEtBQUssb0JBQW9CLFFBQVEsQ0FBQztBQUNsRyx3QkFBUSxJQUFJLEtBQUssTUFBSyxLQUFLLE1BQUssdUJBQVcsT0FBTyxFQUFDLFFBQVEsSUFBSSxhQUFhLHFCQUFvQixTQUFTLGFBQWEsVUFBUyxhQUFhLEdBQUcsT0FBTyxNQUFNLE1BQU0sR0FBRSxDQUFDLENBQUM7QUFBQTtBQUV0SztBQUFBLFVBQ0gsT0FBTztBQUNOLGdCQUFJLHFCQUFxQjtBQUN4QiwwQkFBWTtBQUFBLFVBQ2Q7QUFBQSxRQUNEO0FBQUEsTUFDRDtBQUNBLGFBQU8sUUFBUSxPQUFPO0FBQUEsSUFDdkI7QUFBQSxJQUNBLFFBQVEsT0FBNkM7QUFDcEQsYUFBTyx1QkFBVyxZQUFZLEtBQUssS0FBSztBQUFBLElBQ3pDO0FBQUEsRUFDRCxDQUFDO0FBQ0QsUUFBTSxvQkFBb0Isd0JBQVcsT0FBc0I7QUFBQSxJQUMxRCxPQUFPLE9BQW1DO0FBQ3pDLFVBQUksa0JBQWtCLEtBQUs7QUFDMUIsZUFBTyx1QkFBVztBQUNuQixZQUFNLFVBQVUsSUFBSSw2QkFBNEI7QUFDaEQsVUFBSTtBQUNKLFVBQUksZ0JBQTZCO0FBQ2pDLFVBQUksY0FBMkI7QUFDL0IsVUFBSSxZQUFxQjtBQUN6QixVQUFJLGlCQUF5QjtBQUM3QixlQUFTQSxLQUFJLEdBQUdBLEtBQUksTUFBTSxJQUFJLE9BQU9BLE1BQUs7QUFDekMsY0FBTSxPQUFPLE1BQU0sSUFBSSxLQUFLQSxFQUFDO0FBQzdCLGNBQU0sV0FBVyxLQUFLLEtBQUssU0FBUztBQUNwQyxZQUFJLG1CQUFtQixnQkFBZ0IsUUFBUTtBQUMvQyxZQUFJLGtCQUFrQjtBQUNyQixjQUFJLFdBQVc7QUFDZCx3QkFBWTtBQUNaLDZCQUFpQjtBQUNqQixrQ0FBc0IseUJBQXlCLGtCQUFrQixRQUFRLEdBQUUsU0FBUyxZQUFZO0FBQ2hHLGdCQUFJLENBQUMsV0FBVyxvQkFBb0IsVUFBUyxDQUFDLFNBQVMsb0JBQW1CLFNBQVMsaUJBQWlCLEVBQUUsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLG9CQUFvQixVQUFVLG9CQUFvQixLQUFLO0FBQzNLLGtCQUFJLENBQUMsU0FBUyxpQkFBaUIsS0FBSyxZQUFVLElBQUksT0FBTyxNQUFNLEVBQUUsS0FBSyxvQkFBb0IsUUFBUSxDQUFDO0FBQ2xHLGdDQUFnQjtBQUFBO0FBRWhCO0FBQUEsVUFDSCxPQUFPO0FBQ04sZ0JBQUkscUJBQXFCLGdCQUFnQjtBQUN4QywwQkFBWTtBQUNaLGtCQUFJO0FBQ0gsOEJBQWM7QUFBQSxZQUNoQjtBQUFBLFVBQ0Q7QUFBQSxRQUNEO0FBQ0EsWUFBSSxpQkFBaUIsYUFBYTtBQUNqQyxrQkFBUSxJQUFJLGNBQWMsTUFBSyxZQUFZLElBQUcsdUJBQVcsUUFBUSxFQUFDLFFBQVEsU0FBUyxHQUFHLHVCQUFXLFFBQVEsRUFBQyxPQUFPLEtBQUksQ0FBQyxFQUFFLE1BQU0sY0FBYyxNQUFLLFlBQVksRUFBRSxDQUFDLEdBQUcsT0FBTyxNQUFNLFdBQVcsS0FBSSxDQUFDLENBQUM7QUFDak0sMEJBQWdCO0FBQ2hCLHdCQUFjO0FBQUEsUUFDZjtBQUFBLE1BQ0Q7QUFDQSxhQUFPLFFBQVEsT0FBTztBQUFBLElBQ3ZCO0FBQUEsSUFDQSxPQUFPLE9BQXNCLGFBQXlDO0FBQ3JFLGNBQVEsTUFBTSxJQUFJLFlBQVksT0FBTztBQUNyQyxpQkFBVyxVQUFVLFlBQVksU0FBUztBQUN6QyxZQUFJLE9BQU8sR0FBRyxRQUFRO0FBQ3JCLGtCQUFRLE1BQU0sT0FBTyxFQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssR0FBRyxNQUFNLEtBQUksQ0FBQztBQUFBLGlCQUM5QyxPQUFPLEdBQUcsVUFBVTtBQUM1QixrQkFBUSxNQUFNLE9BQU8sRUFBQyxZQUFZLE9BQU8sTUFBTSxZQUFZLFVBQVUsT0FBTyxNQUFNLFVBQVUsUUFBUSxPQUFPLE1BQU0sT0FBTSxDQUFDO0FBQUEsTUFDMUg7QUFDQSxhQUFPO0FBQUEsSUFDUjtBQUFBLElBQ0EsUUFBUSxPQUE2QztBQUNwRCxhQUFPLHVCQUFXLFlBQVksS0FBSyxLQUFLO0FBQUEsSUFDekM7QUFBQSxFQUNELENBQUM7QUFDRCxRQUFNLHlCQUF5Qix3QkFBVyxPQUFzQjtBQUFBLElBQy9ELE9BQU8sT0FBbUM7QUFDekMsYUFBTyx1QkFBVztBQUFBLElBQ25CO0FBQUEsSUFDQSxPQUFPLE9BQXNCLGFBQXlDO0FBQ3JFLGNBQVEsTUFBTSxJQUFJLFlBQVksT0FBTztBQUNyQyxZQUFNLHVCQUF1QixZQUFZLFdBQVcsNkJBQTZCO0FBQ2pGLFVBQUksc0JBQXNCO0FBQ3pCLFlBQUkscUJBQXFCO0FBQ3hCLGtCQUFRLE1BQU0sT0FBTyxFQUFDLEtBQUssQ0FBQyxxQkFBcUIsZUFBZSxHQUFHLE1BQU0sS0FBSSxDQUFDO0FBQUE7QUFFOUUsa0JBQVEsTUFBTSxPQUFPLEVBQUMsWUFBWSxxQkFBcUIsZ0JBQWdCLE1BQU0sVUFBVSxxQkFBcUIsZ0JBQWdCLElBQUksUUFBUSxDQUFDLE1BQWMsSUFBWUMsV0FBb0IsRUFBRSxTQUFTLHFCQUFxQixnQkFBZ0IsUUFBUSxPQUFPLHFCQUFxQixnQkFBZ0IsSUFBRyxDQUFDO0FBQUEsTUFDalM7QUFDQSxhQUFPO0FBQUEsSUFDUjtBQUFBLEVBQ0QsQ0FBQztBQUNELFFBQU0sc0JBQXNCLHVCQUFXO0FBQUEsSUFDdEMsTUFBTSxxQkFBcUI7QUFBQTtBQUFBLE1BTTFCLFlBQVksTUFBa0I7QUFDN0IsYUFBSyxjQUFjLHVCQUFXO0FBQzlCLGFBQUssV0FBVztBQUNoQixhQUFLLGtCQUFrQixTQUFTLGFBQWEsU0FBUyxPQUFPO0FBQzdELGFBQUssaUJBQWlCLElBQUk7QUFBQSxNQUUzQjtBQUFBLE1BRUEsT0FBTyxRQUFvQjtBQUMxQixZQUFJLE9BQU8sY0FBYyxPQUFPLG1CQUFtQixPQUFPLGdCQUFnQixPQUFPLE1BQU0sTUFBTSx1Q0FBc0IsTUFBSSxPQUFPLFdBQVcsTUFBTSx1Q0FBc0IsS0FBSyxLQUFLLFNBQVMsYUFBYSxTQUFTLE9BQU8sb0JBQW9CLEtBQUssaUJBQWlCO0FBQzlQLGNBQUksS0FBSyxTQUFTLGFBQWEsU0FBUyxPQUFPLG9CQUFvQixLQUFLO0FBQ3ZFLG9CQUFRLElBQUksS0FBSyxlQUFlO0FBQ2pDLGVBQUssa0JBQWtCLEtBQUssU0FBUyxhQUFhLFNBQVMsT0FBTztBQUNsRSxjQUFJLE9BQU87QUFDVixpQkFBSyxjQUFjLEtBQUssWUFBWSxJQUFJLE9BQU8sT0FBTztBQUN2RCxlQUFLLGlCQUFpQixPQUFPLElBQUk7QUFBQSxRQXlCbEM7QUFBQSxNQUNEO0FBQUEsTUFFQSxpQkFBaUIsTUFBd0I7QUEzUzVDO0FBNFNJLFlBQUksR0FBQyxrQ0FBTSxrQkFBTixtQkFBcUIsV0FBVSxrQkFBa0IsS0FBSyxLQUFLLEdBQUc7QUFDbEUsZUFBSyxjQUFjLHVCQUFXO0FBQzlCO0FBQUEsUUFFRDtBQUVBLG1CQUFXLEVBQUMsTUFBSyxHQUFFLEtBQUssS0FBSyxlQUFlO0FBQzVCLDBDQUFXLEtBQUssS0FBSyxFQUFFLFFBQVE7QUFBQSxZQUFDO0FBQUEsWUFBWTtBQUFBLFlBQzFELE9BQU8sQ0FBQyxlQUFhO0FBcFQzQixrQkFBQUM7QUFxVDRCLG9CQUFNLGFBQWEsSUFBSSxLQUFJQSxNQUFBLFdBQVcsS0FBSyxLQUFLLEtBQWEsa0NBQWtCLE1BQXBELGdCQUFBQSxJQUF1RCxNQUFNLElBQUk7QUFDakgsa0JBQUksRUFBRSxXQUFXLElBQUksYUFBYSxLQUFLLENBQUMsV0FBVyxJQUFJLFlBQVk7QUFDbEU7QUFDRCxrQkFBSSxrQkFBa0IsV0FBVyxLQUFLO0FBQ3RDLGtCQUFJLENBQUM7QUFDSjtBQUNELGtCQUFJLGdCQUFnQixnQkFBZ0IsS0FBRyxnQkFBZ0I7QUFDdkQsa0JBQUksaUJBQWlCLEtBQUssTUFBTSxJQUFJLFlBQVksV0FBVyxNQUFNLFdBQVcsRUFBRTtBQUM5RSxrQkFBSSxFQUFDLFlBQVcsTUFBQUMsTUFBSSxJQUFJLGdCQUFnQixjQUFjO0FBQ3RELGtCQUFJLGtCQUFrQixlQUFlLFlBQVlBLEtBQUk7QUFDckQsa0JBQUksQ0FBQyxZQUFZO0FBQ2hCLG9CQUFJQSxPQUFNO0FBQ1Qsc0JBQUksS0FBSyxNQUFNLFVBQVUsT0FBTyxLQUFLLENBQUMsVUFBd0IsTUFBTSxNQUFNLFdBQVcsT0FBSyxpQkFBaUIsTUFBTSxRQUFRLFdBQVcsS0FBRyxhQUFhO0FBQ25KLHlCQUFLLGNBQWMsS0FBSyxZQUFZLE9BQU8sRUFBQyxZQUFZLFdBQVcsTUFBTSxVQUFVLFdBQVcsTUFBTSxRQUFRLENBQUNDLE9BQWNDLEtBQVksVUFBb0IsTUFBSyxDQUFDO0FBQUE7QUFFaksseUJBQUssY0FBYyxLQUFLLFlBQVksT0FBTyxFQUFDLEtBQUssQ0FBQyxFQUFDLE1BQU0sV0FBVyxNQUFNLElBQUksV0FBVyxPQUFPLGlCQUFpQixPQUFPLHVCQUFXLFFBQVEsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUM7QUFBQSxnQkFDbko7QUFBQSxjQUNELE9BQU87QUFDTixvQkFBSSxLQUFLLE1BQU0sVUFBVSxPQUFPLEtBQUssQ0FBQyxVQUF3QixNQUFNLE1BQU0sV0FBVyxPQUFLLGlCQUFpQixNQUFNLFFBQVEsV0FBVyxLQUFHLGFBQWEsR0FBRztBQUN0Six1QkFBSyxZQUFZLFFBQVEsV0FBVyxNQUFNLFdBQVcsTUFBTSxDQUFDRCxPQUFjQyxLQUFZLG9CQUE4QjtBQUNuSCx5QkFBSyxjQUFjLEtBQUssWUFBWSxPQUFPLEVBQUMsWUFBWUQsT0FBTSxVQUFVQyxLQUFJLFFBQVEsQ0FBQ0QsT0FBY0MsS0FBWSxVQUFvQixNQUFLLENBQUM7QUFBQSxrQkFDMUksQ0FBQztBQUNELHVCQUFLLGNBQWMsS0FBSyxZQUFZLE9BQU8sRUFBQyxLQUFLLENBQUMsRUFBQyxNQUFNLFdBQVcsTUFBTSxJQUFJLFdBQVcsT0FBTyxpQkFBaUIsT0FBTyx1QkFBVyxLQUFLLEVBQUMsT0FBTyxnQ0FBK0IsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDO0FBQUEsZ0JBQ3JMLE9BQU87QUFDTixzQkFBSSxZQUFZO0FBQ2hCLHVCQUFLLFlBQVksUUFBUSxXQUFXLE1BQU0sV0FBVyxNQUFNLENBQUNELE9BQWNDLEtBQVksb0JBQThCO0FBOVU3SCx3QkFBQUg7QUErVVUsd0JBQUksR0FBQ0EsTUFBQSxnQkFBZ0IsU0FBaEIsZ0JBQUFBLElBQXNCO0FBQzFCLGtDQUFZO0FBQUEsa0JBQ2QsQ0FBQztBQUNELHNCQUFJLENBQUMsV0FBVztBQUNmLHlCQUFLLGNBQWMsS0FBSyxZQUFZLE9BQU8sRUFBQyxLQUFLLENBQUMsRUFBQyxNQUFNLFdBQVcsTUFBTSxJQUFJLFdBQVcsT0FBTyxpQkFBaUIsT0FBTyx1QkFBVyxRQUFRLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDO0FBQ2pKLHlCQUFJLHlDQUFZLFdBQVUseUNBQVksU0FBUSxnQkFBZ0IsV0FBVyxVQUFTLGFBQWE7QUFDOUYsMkJBQUssY0FBYyxLQUFLLFlBQVksT0FBTyxFQUFDLEtBQUssQ0FBQyxFQUFDLE1BQU0sV0FBVyxNQUFNLElBQUksV0FBVyxNQUFNLE9BQU8sdUJBQVcsUUFBUSxFQUFDLFFBQVEsSUFBSSxhQUFhLFlBQVcsYUFBYSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQztBQUFBLGtCQUNuTDtBQUFBLGdCQUNEO0FBQ0EscUJBQUssY0FBYyxLQUFLLFlBQVksT0FBTyxFQUFDLFlBQVksV0FBVyxPQUFPLGtCQUFnQixHQUFHLFVBQVUsV0FBVyxJQUFJLFFBQVEsQ0FBQ0UsT0FBY0MsS0FBWSxvQkFBOEIsTUFBSyxDQUFDO0FBQzdMLG9CQUFJLENBQUMsU0FBUyxhQUFhLFNBQVMsT0FBTztBQUMxQztBQUNELHFCQUFLLGNBQWMsS0FBSyxZQUFZLE9BQU8sRUFBQyxLQUFLLGNBQWMsRUFBQyxPQUFPLFdBQVcsT0FBTyxpQkFBaUIsTUFBTUYsT0FBTSxVQUFVLFdBQVcsU0FBUSxDQUFDLEVBQUMsQ0FBQztBQUFBLGNBRXZKO0FBQUEsWUFDaUI7QUFBQSxVQUNKLENBQUM7QUFBQSxRQUNMO0FBQUM7QUFBQSxNQUVkO0FBQUEsSUFDRDtBQUFBLElBQ0E7QUFBQSxNQUNDLGFBQWEsQ0FBQyxVQUFVLE1BQU07QUFBQSxJQUMvQjtBQUFBLEVBQ0Q7QUFDQSxXQUFTLHVDQUF1QztBQUMvQyxXQUFPLHlCQUFZLGtCQUFrQixHQUFHLENBQUMsZ0JBQWdCO0FBelczRDtBQTBXRyxVQUFJLG9CQUE0QyxDQUFDO0FBQ2pELFVBQUkscUJBQW9CLHVCQUFZLFdBQVcsTUFBTSxtQkFBa0IsS0FBSyxNQUFwRCxtQkFBdUQsSUFBSSxZQUFZLGFBQXZFLFlBQW1GLHVCQUFXO0FBQ3RILFVBQUksa0NBQWlDLHVCQUFZLFdBQVcsTUFBTSx3QkFBdUIsS0FBSyxNQUF6RCxtQkFBNEQsSUFBSSxZQUFZLGFBQTVFLFlBQXdGLHVCQUFXO0FBQ3hJLGtCQUFZLGFBQWEsT0FBTyxRQUFRLENBQUMsVUFBd0I7QUFDaEUsMEJBQWtCLFFBQVEsTUFBTSxNQUFNLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixlQUFlLG9CQUFvQjtBQUN0RyxjQUFJLHFCQUFxQixNQUFNLFFBQVEsTUFBTSxRQUFRO0FBQ3BELDhCQUFrQixLQUFLLEVBQUMsU0FBUyxXQUFXLEdBQUcsRUFBQyxRQUFRLENBQUMsTUFBSyxPQUFRLE1BQU0scUJBQXFCLFFBQVEsZUFBZ0IsWUFBWSxtQkFBbUIsVUFBVSxjQUFhLENBQUMsR0FBRyxhQUFhLDhCQUE4QixHQUFHLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxtQkFBbUIsSUFBSSxlQUFlLE9BQU8sZ0JBQWUsR0FBRyxZQUFZLEtBQUksQ0FBQyxFQUFDLENBQUM7QUFBQSxRQUM5VSxDQUFDO0FBQ0QsaUJBQVMsT0FBTywrQkFBK0IsS0FBSyxHQUFHLEtBQUssVUFBVSxNQUFNLEtBQUssS0FBSyxHQUFHO0FBQ3hGLGNBQUksRUFBRSxLQUFLLFFBQVEsTUFBTSxRQUFRLE1BQU0sUUFBUSxLQUFLO0FBQ25ELDhCQUFrQixLQUFLLEVBQUMsU0FBUyxTQUFTLEdBQUcsdUJBQVcsUUFBUSxFQUFDLE9BQU8sS0FBSSxDQUFDLEVBQUUsTUFBTSxLQUFLLE1BQUssS0FBSyxFQUFFLENBQUMsR0FBRyxhQUFhLDhCQUE4QixHQUFHLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxLQUFLLElBQUksT0FBTyxLQUFLLE1BQUssR0FBRyxZQUFZLE1BQUssQ0FBQyxFQUFDLENBQUM7QUFBQSxRQUNuUDtBQUFBLE1BQ0QsQ0FBQztBQUNELFVBQUksa0JBQWtCLFdBQVc7QUFDaEMsZUFBTyxDQUFDLGFBQVksR0FBRyxpQkFBaUI7QUFDekMsYUFBTztBQUFBLElBQ1IsQ0FBQztBQUFBLEVBQ0Y7QUFHQSxXQUFTLG1DQUFtQztBQUMzQyxXQUFPLHlCQUFZLGtCQUFrQixHQUFHLENBQUMsZ0JBQWdCO0FBL1gzRDtBQWdZRyxVQUFJLG9CQUE0QyxDQUFDO0FBQ2pELFVBQUkscUJBQW9CLGlCQUFZLFdBQVcsTUFBTSxtQkFBa0IsS0FBSyxNQUFwRCxZQUF5RCx1QkFBVztBQUM1RixVQUFJLGtDQUFpQyxpQkFBWSxXQUFXLE1BQU0sd0JBQXVCLEtBQUssTUFBekQsWUFBOEQsdUJBQVc7QUFDOUcsa0JBQVksUUFBUSxZQUFZLENBQUMsT0FBTSxLQUFJLE9BQU0sS0FBSSxhQUFXO0FBQy9ELFlBQUksVUFBVSxPQUFPLFNBQVMsU0FBUyxNQUFNLElBQUk7QUFDaEQsa0JBQVEsSUFBSSxPQUFNLEtBQUksT0FBTSxLQUFJLFFBQVE7QUFDeEMsNEJBQWtCLFFBQVEsUUFBTSxLQUFLLE1BQUksS0FBSyxDQUFDLG1CQUFtQixlQUFlLG9CQUFvQjtBQUNwRyxvQkFBUSxJQUFJLE9BQU0sS0FBSSxtQkFBa0IsYUFBYTtBQUNyRCxnQkFBSyxTQUFTLHFCQUFxQixxQkFBcUIsT0FBUyxTQUFTLGlCQUFpQixpQkFBaUI7QUFDM0csZ0NBQWtCLEtBQUssRUFBQyxTQUFTLFdBQVcsR0FBRyxFQUFDLFFBQVEsQ0FBQyxNQUFLLE9BQVEsTUFBTSxxQkFBcUIsUUFBUSxlQUFnQixZQUFZLG1CQUFtQixVQUFVLGNBQWEsQ0FBQyxHQUFHLGFBQWEsOEJBQThCLEdBQUcsRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixJQUFJLGVBQWUsT0FBTyxnQkFBZSxHQUFHLFlBQVksS0FBSSxDQUFDLEVBQUMsQ0FBQztBQUFBLFVBQzlVLENBQUM7QUFBQSxRQUNGO0FBQUEsTUFDRCxDQUFDO0FBQ0QsVUFBSSxrQkFBa0IsV0FBVztBQUNoQyxnQkFBUSxJQUFJLE9BQU0saUJBQWlCO0FBQ3BDLFVBQUksa0JBQWtCLFdBQVc7QUFDaEMsZUFBTyxDQUFDLGFBQVksR0FBRyxpQkFBaUI7QUFDekMsYUFBTztBQUFBLElBQ1IsQ0FBQztBQUFBLEVBQ0Y7QUFFQSxRQUFNLHlCQUF5Qix1QkFBVztBQUFBLElBTXpDLFlBQVksWUFBb0IscUJBQTBDLFlBQW9CRyxRQUFnQjtBQUM3RyxZQUFNO0FBQ04sV0FBSyxhQUFhO0FBQ2xCLFdBQUssc0JBQXNCO0FBQzNCLFdBQUssYUFBYTtBQUNsQixXQUFLLFFBQVFBO0FBQUEsSUFDZDtBQUFBLElBRUEsR0FBRyxPQUFrQztBQUNwQyxhQUFPLEtBQUssZUFBZSxNQUFNLGNBQWMsS0FBSyxvQkFBb0IsWUFBWSxrQkFBa0IsTUFBTSxvQkFBb0IsWUFBWSxpQkFBaUIsS0FBSyxvQkFBb0IsWUFBWSxtQkFBbUIsTUFBTSxvQkFBb0IsWUFBWSxrQkFBa0IsS0FBSyxvQkFBb0IsWUFBWSxXQUFXLE1BQU0sb0JBQW9CLFlBQVksVUFBVSxLQUFLLGVBQWUsTUFBTSxjQUFjLEtBQUssVUFBVSxNQUFNO0FBQUEsSUFDM2E7QUFBQSxJQUVBLE1BQU0sTUFBK0I7QUFDcEMsVUFBSSxvQkFBb0I7QUFDeEIsVUFBSSxDQUFDLEtBQUssb0JBQW9CLFlBQVksaUJBQWlCLEtBQUssb0JBQW9CLFlBQVk7QUFDL0YsNEJBQW9CO0FBQUEsZUFDWixLQUFLLG9CQUFvQixZQUFZLGlCQUFpQixDQUFDLEtBQUssb0JBQW9CLFlBQVk7QUFDcEcsNEJBQW9CO0FBQ3JCLGFBQU8sV0FBVyxFQUFDLE1BQU0sRUFBQyxPQUFPLEtBQUssV0FBVyxTQUFTLEVBQUUsVUFBVSxLQUFLLGFBQWEsS0FBSyxvQkFBb0IsWUFBWSxRQUFRLFNBQVMsRUFBRSxTQUFPLDRDQUEwQyxHQUFFLEdBQUcsS0FBSywwQkFBMEIscUJBQXFCLE1BQU0sS0FBSyxRQUFNLE1BQUksS0FBSyxhQUFhLEtBQUssb0JBQW9CLFlBQVksUUFBUSxTQUFTLEVBQUMsQ0FBQztBQUFBLElBQzFWO0FBQUEsRUFDRDtBQUNBLFFBQU0scUJBQXFCLHVCQUFXO0FBQUEsSUFPckMsWUFBWSxxQkFBMEMsZUFBd0NDLGdCQUFzQztBQUNuSSxZQUFNO0FBQ04sV0FBSyxzQkFBc0I7QUFDM0IsV0FBSyxnQkFBZ0I7QUFDckIsV0FBSyxnQkFBZ0JBO0FBQ3JCLFdBQUssbUJBQW1CLElBQUksaUJBQWlCLENBQUMsY0FBYztBQUMzRCxrQkFBVSxRQUFRLGNBQVk7QUFDN0IsY0FBSyxTQUFTLE9BQXVCLGFBQWEsY0FBYztBQUMvRCw0QkFBZ0IsS0FBSyxNQUFNLFNBQVMsTUFBc0I7QUFBQSxRQUM1RCxDQUFDO0FBQUEsTUFDRixDQUFDO0FBQUEsSUFDRjtBQUFBLElBRUEsR0FBRyxPQUE4QjtBQUNoQyxhQUNDLEtBQUssb0JBQW9CLFlBQVksTUFBTSxvQkFBb0IsWUFDL0QsS0FBSyxvQkFBb0IsU0FBUyxNQUFNLG9CQUFvQixTQUM1RCxLQUFLLG9CQUFvQixLQUFLLFdBQVcsTUFBTSxvQkFBb0IsS0FBSyxXQUN4RSxLQUFLLG9CQUFvQixLQUFLLGVBQWUsTUFBTSxvQkFBb0IsS0FBSyxlQUM1RSxLQUFLLGNBQWMsT0FBTyx1QkFBdUIsTUFBTSxjQUFjLE9BQU8sdUJBQzVFLGdCQUFnQixLQUFLLG9CQUFvQixVQUFTLEtBQUssYUFBYSxLQUFLLGdCQUFnQixNQUFNLG9CQUFvQixVQUFTLE1BQU0sYUFBYTtBQUFBLElBRWpKO0FBQUEsSUFFQSxNQUFNLE1BQStCO0FBQ3BDLFdBQUssT0FBTztBQUNaLFlBQU0sa0JBQWtCLGFBQWEsS0FBSyxxQkFBcUIsS0FBSyxlQUFlLEtBQUssYUFBYTtBQUNyRyxVQUFJLEtBQUssb0JBQW9CLGFBQVc7QUFDdkMsd0JBQWdCLFVBQVUsSUFBSSxZQUFZLEtBQUssb0JBQW9CLFVBQVU7QUFDOUUsc0JBQWdCLGlCQUFpQixhQUFZLGVBQWU7QUFFNUQsV0FBSyxpQkFBaUIsUUFBUSxpQkFBZ0I7QUFBQSxRQUM3QyxZQUFZO0FBQUEsTUFDYixDQUFDO0FBQ0QsYUFBTztBQUFBLElBQ1I7QUFBQSxJQUVBLFFBQVEsS0FBa0I7QUFDekIsVUFBSSxnQkFBZ0IsY0FBYztBQUNsQyxVQUFJLG9CQUFvQixhQUFZLGVBQWU7QUFDbkQsV0FBSyxpQkFBaUIsV0FBVztBQUFBLElBQ2xDO0FBQUEsSUFFQSxjQUFjO0FBQ2IsYUFBTztBQUFBLElBQ1I7QUFBQSxFQUNEO0FBQ0EsUUFBTSxxQkFBcUIsdUJBQVc7QUFBQSxJQUlyQyxZQUFhLHNCQUE0Q0EsZ0JBQXNDO0FBQzlGLFlBQU07QUFDTixXQUFLLHVCQUF1QjtBQUM1QixXQUFLLGdCQUFnQkE7QUFBQSxJQUN0QjtBQUFBLElBRUEsR0FBRyxPQUE4QjtBQUNoQyxhQUNDLEtBQUsscUJBQXFCLFlBQVksTUFBTSxxQkFBcUIsWUFDakUsS0FBSyxxQkFBcUIsU0FBUyxNQUFNLHFCQUFxQixTQUM5RCxLQUFLLHFCQUFxQixRQUFRLE1BQU0scUJBQXFCLFFBQzdELGdCQUFnQixLQUFLLHFCQUFxQixVQUFTLEtBQUssYUFBYSxLQUFLLGdCQUFnQixNQUFNLHFCQUFxQixVQUFTLE1BQU0sYUFBYTtBQUFBLElBRW5KO0FBQUEsSUFFQSxNQUFNLE1BQStCO0FBQ3BDLGFBQU8sbUJBQW1CLEtBQUssc0JBQXFCLEtBQUssZUFBYyxDQUFDLDZCQUE0QixnQkFBZ0IsQ0FBQztBQUFBLElBQ3RIO0FBQUEsRUFDRDtBQUVBLFdBQVMsZ0JBQWdCLE1BQWtCLFFBQXFCO0FBOWZqRTtBQStmRSxVQUFNQyxZQUFXLEtBQUssU0FBUyxNQUFNO0FBQ3JDLFFBQUksU0FBUztBQUNiLGVBQUssTUFBTSxNQUFNLG1CQUFrQixLQUFLLE1BQXhDLG1CQUEyQyxRQUFRQSxXQUFTQSxXQUFTLE1BQUk7QUFDeEUsZUFBUztBQUFBLElBQ1Y7QUFFQSxRQUFJLGdCQUE2QjtBQUNqQyxRQUFJLGNBQTJCO0FBQy9CLFFBQUksWUFBcUI7QUFDekIsUUFBSSxpQkFBeUI7QUFDN0IsYUFBU1IsS0FBSSxHQUFHQSxLQUFJLEtBQUssTUFBTSxJQUFJLE9BQU9BLE1BQUs7QUFDOUMsWUFBTSxPQUFPLEtBQUssTUFBTSxJQUFJLEtBQUtBLEVBQUM7QUFDbEMsWUFBTSxXQUFXLEtBQUssS0FBSyxTQUFTO0FBQ3BDLFVBQUksbUJBQW1CLGdCQUFnQixRQUFRO0FBQy9DLFVBQUksa0JBQWtCO0FBQ3JCLFlBQUksV0FBVztBQUNkLHNCQUFZO0FBQ1osMkJBQWlCO0FBQ2pCLGNBQUlRLGNBQWEsS0FBSztBQUNyQiw0QkFBZ0I7QUFBQSxRQUNsQixPQUFPO0FBQ04sY0FBSSxxQkFBcUIsZ0JBQWdCO0FBQ3hDLHdCQUFZO0FBQ1osZ0JBQUk7QUFDSCw0QkFBYztBQUFBLFVBQ2hCO0FBQUEsUUFDRDtBQUFBLE1BQ0Q7QUFDQSxVQUFJLGlCQUFpQixhQUFhO0FBQ2pDLFlBQUk7QUFDSCxlQUFLLFNBQVMsRUFBQyxTQUFTLFdBQVcsR0FBRyxFQUFDLFFBQVEsQ0FBQyxNQUFLLE9BQVEsTUFBTyxjQUF1QixRQUFRLFFBQVMsWUFBcUIsSUFBSyxZQUFZLFlBQVksTUFBTSxVQUFVLFlBQVksR0FBRSxDQUFDLEVBQUMsQ0FBQztBQUFBO0FBRS9MLGVBQUssU0FBUyxFQUFDLFNBQVMsU0FBUyxHQUFHLHVCQUFXLFFBQVEsRUFBQyxPQUFPLEtBQUksQ0FBQyxFQUFFLE1BQU0sY0FBYyxNQUFLLFlBQVksRUFBRSxDQUFDLEVBQUMsQ0FBQztBQUNqSCxhQUFLLGVBQWU7QUFDcEIsd0JBQWdCO0FBQ2hCLHNCQUFjO0FBQUEsTUFDZjtBQUFBLElBQ0Q7QUFBQSxFQUNEO0FBQ0EsV0FBUyxnQkFBZ0IsT0FBeUI7QUFDakQsU0FBSyxhQUFhLGdCQUFlLE1BQU07QUFBQSxFQUN4QztBQUVBLFFBQU0sV0FBK0MseUJBQVksT0FBTztBQUN4RSxRQUFNLGFBQStHLHlCQUFZLE9BQU87QUFDeEksUUFBTSxnQ0FBZ0Msd0JBQVcsT0FBa0U7QUFFbkgsU0FBTyxDQUFDLDhCQUE2QixnQkFBZSxpQkFBZ0IsbUJBQWtCLHdCQUF1QixxQkFBb0IscUNBQXFDLENBQUM7QUFDeEs7QUFFQSxTQUFTLGFBQWEsT0FBb0IsZUFBK0I7QUFDeEUsTUFBSSxhQUFhLE1BQU0sS0FBSyxNQUFNLE1BQU0sa0NBQWlCLEVBQUUsV0FBVyxpQkFBaUIsd0JBQXdCLENBQUMsRUFBRSxPQUFPLENBQUMsUUFBc0IscUJBQWlEO0FBQ2hNLFFBQUksY0FBYyxpQkFBaUI7QUFDbkMsUUFBSSxDQUFDO0FBQ0osYUFBTztBQUNSLFFBQUksb0JBQW9CLFlBQVksY0FBYyxvQ0FBb0M7QUFDdEYsUUFBSSxDQUFDLHFCQUFxQixrQkFBa0IsVUFBVSxVQUFVO0FBQy9ELGFBQU87QUFDUixRQUFJLGlCQUFpQixPQUFPLGlCQUFpQixtQkFBbUIsSUFBSTtBQUNwRSxXQUFPLE1BQU0sa0JBQWtCLHNCQUFzQixFQUFFLFFBQVEsV0FBVyxlQUFlLFdBQVcsSUFBSSxXQUFXLGVBQWUsWUFBWSxLQUFLLGtCQUFrQixVQUFVLE1BQU07QUFDckwsV0FBTztBQUFBLEVBQ1IsR0FBRSxDQUFDLENBQUM7QUFDSixNQUFJLFdBQVcsV0FBVztBQUN6QixXQUFPO0FBQ1IsU0FBTyxXQUFXLE9BQU8sQ0FBQyxRQUFPLFVBQVEsU0FBTyxPQUFNLENBQUMsSUFBSSxXQUFXO0FBQ3ZFO0FBRUEsU0FBUywyQkFBMkIsTUFBd0M7QUFDM0UsUUFBTSxhQUFhLHNCQUFzQixJQUFJO0FBQzdDLFFBQU0seUJBQStDLENBQUM7QUFDdEQsV0FBU1IsS0FBSSxHQUFHQSxLQUFJLFdBQVcsUUFBUUE7QUFDdEMsUUFBSUEsT0FBTSxLQUFLLFdBQVdBLEVBQUMsRUFBRSxTQUFTLFdBQVdBLEtBQUksQ0FBQyxFQUFFO0FBQ3ZELDZCQUF1QixLQUFLLFdBQVdBLEVBQUMsQ0FBQztBQUMzQyxTQUFPO0FBQ1I7QUFDQSxTQUFTLHNCQUFzQixNQUF3QztBQUN0RSxTQUFPLGVBQWUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxjQUFjO0FBQ2pELFdBQU8sS0FBSyxjQUFjLEtBQUssQ0FBQyxpQkFBaUIsVUFBVSxPQUFPLGFBQWEsTUFBTSxVQUFVLEtBQUssYUFBYSxJQUFJO0FBQUEsRUFDdEgsQ0FBQztBQUNGO0FBQ0EsU0FBUyxlQUFlLE1BQXdDO0FBQy9ELFFBQU0sYUFBbUMsQ0FBQztBQUMxQyxrQ0FBVyxLQUFLLEtBQUssRUFBRSxRQUFRO0FBQUEsSUFDOUIsT0FBTyxDQUFDLGVBQWU7QUFDdEIsVUFBSSxXQUFXLEtBQUssS0FBSyxTQUFTLHlCQUF5QixLQUFLLFdBQVcsS0FBSyxTQUFTLDRDQUE0QyxXQUFXLEtBQUssS0FBSyxTQUFTLHVCQUF1QjtBQUN6TCxtQkFBVyxLQUFLLFVBQVU7QUFBQSxJQUM1QjtBQUFBLEVBQ0QsQ0FBQztBQUNELFNBQU87QUFDUjtBQVlBLFNBQVMsY0FBZSxFQUFDLE9BQU0sTUFBQVMsT0FBSyxTQUFRLEdBQThFO0FBcG1CMUg7QUFzbUJDLE1BQUksa0JBQTRDLENBQUM7QUFFakQsUUFBTSxPQUFPLE9BQU8sV0FBVyxRQUFRLE9BQU8sV0FBVyxXQUFTLFlBQU8sV0FBVyxlQUFlLFFBQVEsTUFBekMsbUJBQTRDLElBQUk7QUFDbEgsTUFBSSxRQUFRLE9BQU8sV0FBVyxXQUFXLElBQUk7QUFDN0MsTUFBSSw2QkFBTSxPQUFPO0FBQ2hCLFFBQUksU0FBUyxJQUFJLE9BQU8sV0FBVyxhQUFhQSxLQUFJO0FBQ3BELFdBQU8sQ0FBQyxPQUFPLElBQUksR0FBRztBQUNyQixVQUFJLFFBQVEsS0FBSyxNQUFNLFFBQU8sS0FBSztBQUNuQyxVQUFJO0FBQ0gsd0JBQWdCLEtBQUssRUFBQyxNQUFNLFFBQU0sT0FBTyxPQUFPLElBQUksUUFBTSxPQUFPLEtBQUssT0FBTyx1QkFBVyxLQUFLLEVBQUMsT0FBTyxNQUFNLFFBQU8sQ0FBQyxFQUFDLENBQUM7QUFDdEgsYUFBTyxRQUFRLE9BQU87QUFBQSxJQUN2QjtBQUFBLEVBQ0Q7QUFDQSxTQUFPO0FBQ1I7QUFFQSxTQUFTLGtCQUFrQixPQUE2QjtBQXRuQnhEO0FBdW5CQyxNQUFJLENBQUMsTUFBTSxNQUFNLHVDQUFzQjtBQUN0QyxXQUFPO0FBQ1IsUUFBTSxZQUFXLGlCQUFNLE1BQU0sZ0NBQWUsTUFBM0IsbUJBQThCLFNBQTlCLG1CQUFvQztBQUNyRCxNQUFJLE9BQU8sYUFBYTtBQUN2QixhQUFPLGdCQUFLLElBQUksY0FBYyxTQUFTLFFBQVEsTUFBeEMsbUJBQTJDLGdCQUEzQyxtQkFBeUQsMkJBQTBCO0FBQzNGLFNBQU87QUFDUjs7O0FHN25CQSxJQUFBQyxtQkFBNkg7OztBQ090SCxTQUFTLEtBQUssT0FBTztBQUMxQixNQUFJLE9BQU87QUFDVCxVQUFNO0FBQUEsRUFDUjtBQUNGOzs7QUNVQSxJQUFBQyxvQkFBcUI7QUFDckIsb0JBQW1COzs7QUN0QkosU0FBUixjQUErQixPQUFPO0FBQzVDLE1BQUksT0FBTyxVQUFVLFlBQVksVUFBVSxNQUFNO0FBQ2hELFdBQU87QUFBQSxFQUNSO0FBRUEsUUFBTSxZQUFZLE9BQU8sZUFBZSxLQUFLO0FBQzdDLFVBQVEsY0FBYyxRQUFRLGNBQWMsT0FBTyxhQUFhLE9BQU8sZUFBZSxTQUFTLE1BQU0sU0FBUyxFQUFFLE9BQU8sZUFBZSxVQUFVLEVBQUUsT0FBTyxZQUFZO0FBQ3RLOzs7QUNVTyxTQUFTLFNBQVM7QUFFdkIsUUFBTSxNQUFNLENBQUM7QUFFYixRQUFNLFdBQVcsRUFBQyxLQUFLLElBQUc7QUFFMUIsU0FBTztBQUdQLFdBQVMsT0FBTyxRQUFRO0FBQ3RCLFFBQUksa0JBQWtCO0FBRXRCLFVBQU0sV0FBVyxPQUFPLElBQUk7QUFFNUIsUUFBSSxPQUFPLGFBQWEsWUFBWTtBQUNsQyxZQUFNLElBQUksVUFBVSw2Q0FBNkMsUUFBUTtBQUFBLElBQzNFO0FBRUEsU0FBSyxNQUFNLEdBQUcsTUFBTTtBQVFwQixhQUFTLEtBQUssVUFBVSxRQUFRO0FBQzlCLFlBQU0sS0FBSyxJQUFJLEVBQUUsZUFBZTtBQUNoQyxVQUFJQyxTQUFRO0FBRVosVUFBSSxPQUFPO0FBQ1QsaUJBQVMsS0FBSztBQUNkO0FBQUEsTUFDRjtBQUdBLGFBQU8sRUFBRUEsU0FBUSxPQUFPLFFBQVE7QUFDOUIsWUFBSSxPQUFPQSxNQUFLLE1BQU0sUUFBUSxPQUFPQSxNQUFLLE1BQU0sUUFBVztBQUN6RCxpQkFBT0EsTUFBSyxJQUFJLE9BQU9BLE1BQUs7QUFBQSxRQUM5QjtBQUFBLE1BQ0Y7QUFHQSxlQUFTO0FBR1QsVUFBSSxJQUFJO0FBQ04sYUFBSyxJQUFJLElBQUksRUFBRSxHQUFHLE1BQU07QUFBQSxNQUMxQixPQUFPO0FBQ0wsaUJBQVMsTUFBTSxHQUFHLE1BQU07QUFBQSxNQUMxQjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBR0EsV0FBUyxJQUFJLFlBQVk7QUFDdkIsUUFBSSxPQUFPLGVBQWUsWUFBWTtBQUNwQyxZQUFNLElBQUk7QUFBQSxRQUNSLGlEQUFpRDtBQUFBLE1BQ25EO0FBQUEsSUFDRjtBQUVBLFFBQUksS0FBSyxVQUFVO0FBQ25CLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFVTyxTQUFTLEtBQUssWUFBWSxVQUFVO0FBRXpDLE1BQUk7QUFFSixTQUFPO0FBUVAsV0FBUyxXQUFXLFlBQVk7QUFDOUIsVUFBTSxvQkFBb0IsV0FBVyxTQUFTLFdBQVc7QUFFekQsUUFBSTtBQUVKLFFBQUksbUJBQW1CO0FBQ3JCLGlCQUFXLEtBQUssSUFBSTtBQUFBLElBQ3RCO0FBRUEsUUFBSTtBQUNGLGVBQVMsV0FBVyxNQUFNLE1BQU0sVUFBVTtBQUFBLElBQzVDLFNBQVMsT0FBUDtBQUNBLFlBQU07QUFBQTtBQUFBLFFBQWtDO0FBQUE7QUFNeEMsVUFBSSxxQkFBcUIsUUFBUTtBQUMvQixjQUFNO0FBQUEsTUFDUjtBQUVBLGFBQU8sS0FBSyxTQUFTO0FBQUEsSUFDdkI7QUFFQSxRQUFJLENBQUMsbUJBQW1CO0FBQ3RCLFVBQUksa0JBQWtCLFNBQVM7QUFDN0IsZUFBTyxLQUFLLE1BQU0sSUFBSTtBQUFBLE1BQ3hCLFdBQVcsa0JBQWtCLE9BQU87QUFDbEMsYUFBSyxNQUFNO0FBQUEsTUFDYixPQUFPO0FBQ0wsYUFBSyxNQUFNO0FBQUEsTUFDYjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBTUEsV0FBUyxLQUFLLFVBQVUsUUFBUTtBQUM5QixRQUFJLENBQUMsUUFBUTtBQUNYLGVBQVM7QUFDVCxlQUFTLE9BQU8sR0FBRyxNQUFNO0FBQUEsSUFDM0I7QUFBQSxFQUNGO0FBT0EsV0FBUyxLQUFLLE9BQU87QUFDbkIsU0FBSyxNQUFNLEtBQUs7QUFBQSxFQUNsQjtBQUNGOzs7QUMxRUEsdUJBQXVCOzs7QUNqRGhCLFNBQVMsa0JBQWtCLE9BQU87QUFFdkMsTUFBSSxDQUFDLFNBQVMsT0FBTyxVQUFVLFVBQVU7QUFDdkMsV0FBTztBQUFBLEVBQ1Q7QUFHQSxNQUFJLGNBQWMsU0FBUyxVQUFVLE9BQU87QUFDMUMsV0FBTyxTQUFTLE1BQU0sUUFBUTtBQUFBLEVBQ2hDO0FBR0EsTUFBSSxXQUFXLFNBQVMsU0FBUyxPQUFPO0FBQ3RDLFdBQU8sU0FBUyxLQUFLO0FBQUEsRUFDdkI7QUFHQSxNQUFJLFVBQVUsU0FBUyxZQUFZLE9BQU87QUFDeEMsV0FBTyxNQUFNLEtBQUs7QUFBQSxFQUNwQjtBQUdBLFNBQU87QUFDVDtBQU1BLFNBQVMsTUFBTUMsUUFBTztBQUNwQixTQUFPLE1BQU1BLFVBQVNBLE9BQU0sSUFBSSxJQUFJLE1BQU0sTUFBTUEsVUFBU0EsT0FBTSxNQUFNO0FBQ3ZFO0FBTUEsU0FBUyxTQUFTLEtBQUs7QUFDckIsU0FBTyxNQUFNLE9BQU8sSUFBSSxLQUFLLElBQUksTUFBTSxNQUFNLE9BQU8sSUFBSSxHQUFHO0FBQzdEO0FBTUEsU0FBUyxNQUFNLE9BQU87QUFDcEIsU0FBTyxTQUFTLE9BQU8sVUFBVSxXQUFXLFFBQVE7QUFDdEQ7OztBQ3ZFTyxJQUFNLGVBQU4sY0FBMkIsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBbUJ0QyxZQUFZLFFBQVEsT0FBTyxRQUFRO0FBRWpDLFVBQU0sUUFBUSxDQUFDLE1BQU0sSUFBSTtBQUV6QixRQUFJQyxZQUFXO0FBQUE7QUFBQSxNQUViLE9BQU8sRUFBQyxNQUFNLE1BQU0sUUFBUSxLQUFJO0FBQUE7QUFBQSxNQUVoQyxLQUFLLEVBQUMsTUFBTSxNQUFNLFFBQVEsS0FBSTtBQUFBLElBQ2hDO0FBRUEsVUFBTTtBQUVOLFFBQUksT0FBTyxVQUFVLFVBQVU7QUFDN0IsZUFBUztBQUNULGNBQVE7QUFBQSxJQUNWO0FBRUEsUUFBSSxPQUFPLFdBQVcsVUFBVTtBQUM5QixZQUFNQyxTQUFRLE9BQU8sUUFBUSxHQUFHO0FBRWhDLFVBQUlBLFdBQVUsSUFBSTtBQUNoQixjQUFNLENBQUMsSUFBSTtBQUFBLE1BQ2IsT0FBTztBQUNMLGNBQU0sQ0FBQyxJQUFJLE9BQU8sTUFBTSxHQUFHQSxNQUFLO0FBQ2hDLGNBQU0sQ0FBQyxJQUFJLE9BQU8sTUFBTUEsU0FBUSxDQUFDO0FBQUEsTUFDbkM7QUFBQSxJQUNGO0FBRUEsUUFBSSxPQUFPO0FBRVQsVUFBSSxVQUFVLFNBQVMsY0FBYyxPQUFPO0FBQzFDLFlBQUksTUFBTSxVQUFVO0FBR2xCLFVBQUFELFlBQVcsTUFBTTtBQUFBLFFBQ25CO0FBQUEsTUFDRixXQUVTLFdBQVcsU0FBUyxTQUFTLE9BQU87QUFHM0MsUUFBQUEsWUFBVztBQUFBLE1BQ2IsV0FFUyxVQUFVLFNBQVMsWUFBWSxPQUFPO0FBRTdDLFFBQUFBLFVBQVMsUUFBUTtBQUFBLE1BQ25CO0FBQUEsSUFDRjtBQVNBLFNBQUssT0FBTyxrQkFBa0IsS0FBSyxLQUFLO0FBT3hDLFNBQUssVUFBVSxPQUFPLFdBQVcsV0FBVyxPQUFPLFVBQVU7QUFVN0QsU0FBSyxRQUFRO0FBRWIsUUFBSSxPQUFPLFdBQVcsWUFBWSxPQUFPLE9BQU87QUFDOUMsV0FBSyxRQUFRLE9BQU87QUFBQSxJQUN0QjtBQVNBLFNBQUssU0FBUyxLQUFLO0FBWW5CLFNBQUs7QUFPTCxTQUFLLE9BQU9BLFVBQVMsTUFBTTtBQU8zQixTQUFLLFNBQVNBLFVBQVMsTUFBTTtBQU83QixTQUFLLFdBQVdBO0FBT2hCLFNBQUssU0FBUyxNQUFNLENBQUM7QUFPckIsU0FBSyxTQUFTLE1BQU0sQ0FBQztBQU9yQixTQUFLO0FBWUwsU0FBSztBQU9MLFNBQUs7QUFVTCxTQUFLO0FBT0wsU0FBSztBQUFBLEVBRVA7QUFDRjtBQUVBLGFBQWEsVUFBVSxPQUFPO0FBQzlCLGFBQWEsVUFBVSxPQUFPO0FBQzlCLGFBQWEsVUFBVSxTQUFTO0FBQ2hDLGFBQWEsVUFBVSxVQUFVO0FBQ2pDLGFBQWEsVUFBVSxRQUFRO0FBQy9CLGFBQWEsVUFBVSxRQUFRO0FBQy9CLGFBQWEsVUFBVSxTQUFTO0FBQ2hDLGFBQWEsVUFBVSxPQUFPO0FBQzlCLGFBQWEsVUFBVSxTQUFTO0FBQ2hDLGFBQWEsVUFBVSxTQUFTO0FBQ2hDLGFBQWEsVUFBVSxXQUFXOzs7QUM3SzNCLElBQU0sT0FBTyxFQUFDLFVBQVUsU0FBUyxTQUFTLE1BQU0sS0FBSyxJQUFHO0FBYy9ELFNBQVMsU0FBU0UsT0FBTSxLQUFLO0FBQzNCLE1BQUksUUFBUSxVQUFhLE9BQU8sUUFBUSxVQUFVO0FBQ2hELFVBQU0sSUFBSSxVQUFVLGlDQUFpQztBQUFBLEVBQ3ZEO0FBRUEsYUFBV0EsS0FBSTtBQUNmLE1BQUksUUFBUTtBQUNaLE1BQUksTUFBTTtBQUNWLE1BQUlDLFNBQVFELE1BQUs7QUFFakIsTUFBSTtBQUVKLE1BQUksUUFBUSxVQUFhLElBQUksV0FBVyxLQUFLLElBQUksU0FBU0EsTUFBSyxRQUFRO0FBQ3JFLFdBQU9DLFVBQVM7QUFDZCxVQUFJRCxNQUFLLFdBQVdDLE1BQUssTUFBTSxJQUFjO0FBRzNDLFlBQUksY0FBYztBQUNoQixrQkFBUUEsU0FBUTtBQUNoQjtBQUFBLFFBQ0Y7QUFBQSxNQUNGLFdBQVcsTUFBTSxHQUFHO0FBR2xCLHVCQUFlO0FBQ2YsY0FBTUEsU0FBUTtBQUFBLE1BQ2hCO0FBQUEsSUFDRjtBQUVBLFdBQU8sTUFBTSxJQUFJLEtBQUtELE1BQUssTUFBTSxPQUFPLEdBQUc7QUFBQSxFQUM3QztBQUVBLE1BQUksUUFBUUEsT0FBTTtBQUNoQixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksbUJBQW1CO0FBQ3ZCLE1BQUksV0FBVyxJQUFJLFNBQVM7QUFFNUIsU0FBT0MsVUFBUztBQUNkLFFBQUlELE1BQUssV0FBV0MsTUFBSyxNQUFNLElBQWM7QUFHM0MsVUFBSSxjQUFjO0FBQ2hCLGdCQUFRQSxTQUFRO0FBQ2hCO0FBQUEsTUFDRjtBQUFBLElBQ0YsT0FBTztBQUNMLFVBQUksbUJBQW1CLEdBQUc7QUFHeEIsdUJBQWU7QUFDZiwyQkFBbUJBLFNBQVE7QUFBQSxNQUM3QjtBQUVBLFVBQUksV0FBVyxJQUFJO0FBRWpCLFlBQUlELE1BQUssV0FBV0MsTUFBSyxNQUFNLElBQUksV0FBVyxVQUFVLEdBQUc7QUFDekQsY0FBSSxXQUFXLEdBQUc7QUFHaEIsa0JBQU1BO0FBQUEsVUFDUjtBQUFBLFFBQ0YsT0FBTztBQUdMLHFCQUFXO0FBQ1gsZ0JBQU07QUFBQSxRQUNSO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBRUEsTUFBSSxVQUFVLEtBQUs7QUFDakIsVUFBTTtBQUFBLEVBQ1IsV0FBVyxNQUFNLEdBQUc7QUFDbEIsVUFBTUQsTUFBSztBQUFBLEVBQ2I7QUFFQSxTQUFPQSxNQUFLLE1BQU0sT0FBTyxHQUFHO0FBQzlCO0FBVUEsU0FBUyxRQUFRQSxPQUFNO0FBQ3JCLGFBQVdBLEtBQUk7QUFFZixNQUFJQSxNQUFLLFdBQVcsR0FBRztBQUNyQixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksTUFBTTtBQUNWLE1BQUlDLFNBQVFELE1BQUs7QUFFakIsTUFBSTtBQUdKLFNBQU8sRUFBRUMsUUFBTztBQUNkLFFBQUlELE1BQUssV0FBV0MsTUFBSyxNQUFNLElBQWM7QUFDM0MsVUFBSSxnQkFBZ0I7QUFDbEIsY0FBTUE7QUFDTjtBQUFBLE1BQ0Y7QUFBQSxJQUNGLFdBQVcsQ0FBQyxnQkFBZ0I7QUFFMUIsdUJBQWlCO0FBQUEsSUFDbkI7QUFBQSxFQUNGO0FBRUEsU0FBTyxNQUFNLElBQ1RELE1BQUssV0FBVyxDQUFDLE1BQU0sS0FDckIsTUFDQSxNQUNGLFFBQVEsS0FBS0EsTUFBSyxXQUFXLENBQUMsTUFBTSxLQUNwQyxPQUNBQSxNQUFLLE1BQU0sR0FBRyxHQUFHO0FBQ3ZCO0FBVUEsU0FBUyxRQUFRQSxPQUFNO0FBQ3JCLGFBQVdBLEtBQUk7QUFFZixNQUFJQyxTQUFRRCxNQUFLO0FBRWpCLE1BQUksTUFBTTtBQUNWLE1BQUksWUFBWTtBQUNoQixNQUFJLFdBQVc7QUFHZixNQUFJLGNBQWM7QUFFbEIsTUFBSTtBQUVKLFNBQU9DLFVBQVM7QUFDZCxVQUFNLE9BQU9ELE1BQUssV0FBV0MsTUFBSztBQUVsQyxRQUFJLFNBQVMsSUFBYztBQUd6QixVQUFJLGdCQUFnQjtBQUNsQixvQkFBWUEsU0FBUTtBQUNwQjtBQUFBLE1BQ0Y7QUFFQTtBQUFBLElBQ0Y7QUFFQSxRQUFJLE1BQU0sR0FBRztBQUdYLHVCQUFpQjtBQUNqQixZQUFNQSxTQUFRO0FBQUEsSUFDaEI7QUFFQSxRQUFJLFNBQVMsSUFBYztBQUV6QixVQUFJLFdBQVcsR0FBRztBQUNoQixtQkFBV0E7QUFBQSxNQUNiLFdBQVcsZ0JBQWdCLEdBQUc7QUFDNUIsc0JBQWM7QUFBQSxNQUNoQjtBQUFBLElBQ0YsV0FBVyxXQUFXLElBQUk7QUFHeEIsb0JBQWM7QUFBQSxJQUNoQjtBQUFBLEVBQ0Y7QUFFQSxNQUNFLFdBQVcsS0FDWCxNQUFNO0FBQUEsRUFFTixnQkFBZ0I7QUFBQSxFQUVmLGdCQUFnQixLQUFLLGFBQWEsTUFBTSxLQUFLLGFBQWEsWUFBWSxHQUN2RTtBQUNBLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBT0QsTUFBSyxNQUFNLFVBQVUsR0FBRztBQUNqQztBQVVBLFNBQVMsUUFBUSxVQUFVO0FBQ3pCLE1BQUlDLFNBQVE7QUFFWixNQUFJO0FBRUosU0FBTyxFQUFFQSxTQUFRLFNBQVMsUUFBUTtBQUNoQyxlQUFXLFNBQVNBLE1BQUssQ0FBQztBQUUxQixRQUFJLFNBQVNBLE1BQUssR0FBRztBQUNuQixlQUNFLFdBQVcsU0FBWSxTQUFTQSxNQUFLLElBQUksU0FBUyxNQUFNLFNBQVNBLE1BQUs7QUFBQSxJQUMxRTtBQUFBLEVBQ0Y7QUFFQSxTQUFPLFdBQVcsU0FBWSxNQUFNLFVBQVUsTUFBTTtBQUN0RDtBQVlBLFNBQVMsVUFBVUQsT0FBTTtBQUN2QixhQUFXQSxLQUFJO0FBRWYsUUFBTSxXQUFXQSxNQUFLLFdBQVcsQ0FBQyxNQUFNO0FBR3hDLE1BQUksUUFBUSxnQkFBZ0JBLE9BQU0sQ0FBQyxRQUFRO0FBRTNDLE1BQUksTUFBTSxXQUFXLEtBQUssQ0FBQyxVQUFVO0FBQ25DLFlBQVE7QUFBQSxFQUNWO0FBRUEsTUFBSSxNQUFNLFNBQVMsS0FBS0EsTUFBSyxXQUFXQSxNQUFLLFNBQVMsQ0FBQyxNQUFNLElBQVk7QUFDdkUsYUFBUztBQUFBLEVBQ1g7QUFFQSxTQUFPLFdBQVcsTUFBTSxRQUFRO0FBQ2xDO0FBWUEsU0FBUyxnQkFBZ0JBLE9BQU0sZ0JBQWdCO0FBQzdDLE1BQUksU0FBUztBQUNiLE1BQUksb0JBQW9CO0FBQ3hCLE1BQUksWUFBWTtBQUNoQixNQUFJLE9BQU87QUFDWCxNQUFJQyxTQUFRO0FBRVosTUFBSTtBQUVKLE1BQUk7QUFFSixTQUFPLEVBQUVBLFVBQVNELE1BQUssUUFBUTtBQUM3QixRQUFJQyxTQUFRRCxNQUFLLFFBQVE7QUFDdkIsYUFBT0EsTUFBSyxXQUFXQyxNQUFLO0FBQUEsSUFDOUIsV0FBVyxTQUFTLElBQWM7QUFDaEM7QUFBQSxJQUNGLE9BQU87QUFDTCxhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUksU0FBUyxJQUFjO0FBQ3pCLFVBQUksY0FBY0EsU0FBUSxLQUFLLFNBQVMsR0FBRztBQUFBLE1BRTNDLFdBQVcsY0FBY0EsU0FBUSxLQUFLLFNBQVMsR0FBRztBQUNoRCxZQUNFLE9BQU8sU0FBUyxLQUNoQixzQkFBc0IsS0FDdEIsT0FBTyxXQUFXLE9BQU8sU0FBUyxDQUFDLE1BQU0sTUFDekMsT0FBTyxXQUFXLE9BQU8sU0FBUyxDQUFDLE1BQU0sSUFDekM7QUFDQSxjQUFJLE9BQU8sU0FBUyxHQUFHO0FBQ3JCLDZCQUFpQixPQUFPLFlBQVksR0FBRztBQUV2QyxnQkFBSSxtQkFBbUIsT0FBTyxTQUFTLEdBQUc7QUFDeEMsa0JBQUksaUJBQWlCLEdBQUc7QUFDdEIseUJBQVM7QUFDVCxvQ0FBb0I7QUFBQSxjQUN0QixPQUFPO0FBQ0wseUJBQVMsT0FBTyxNQUFNLEdBQUcsY0FBYztBQUN2QyxvQ0FBb0IsT0FBTyxTQUFTLElBQUksT0FBTyxZQUFZLEdBQUc7QUFBQSxjQUNoRTtBQUVBLDBCQUFZQTtBQUNaLHFCQUFPO0FBQ1A7QUFBQSxZQUNGO0FBQUEsVUFDRixXQUFXLE9BQU8sU0FBUyxHQUFHO0FBQzVCLHFCQUFTO0FBQ1QsZ0NBQW9CO0FBQ3BCLHdCQUFZQTtBQUNaLG1CQUFPO0FBQ1A7QUFBQSxVQUNGO0FBQUEsUUFDRjtBQUVBLFlBQUksZ0JBQWdCO0FBQ2xCLG1CQUFTLE9BQU8sU0FBUyxJQUFJLFNBQVMsUUFBUTtBQUM5Qyw4QkFBb0I7QUFBQSxRQUN0QjtBQUFBLE1BQ0YsT0FBTztBQUNMLFlBQUksT0FBTyxTQUFTLEdBQUc7QUFDckIsb0JBQVUsTUFBTUQsTUFBSyxNQUFNLFlBQVksR0FBR0MsTUFBSztBQUFBLFFBQ2pELE9BQU87QUFDTCxtQkFBU0QsTUFBSyxNQUFNLFlBQVksR0FBR0MsTUFBSztBQUFBLFFBQzFDO0FBRUEsNEJBQW9CQSxTQUFRLFlBQVk7QUFBQSxNQUMxQztBQUVBLGtCQUFZQTtBQUNaLGFBQU87QUFBQSxJQUNULFdBQVcsU0FBUyxNQUFnQixPQUFPLElBQUk7QUFDN0M7QUFBQSxJQUNGLE9BQU87QUFDTCxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFVQSxTQUFTLFdBQVdELE9BQU07QUFDeEIsTUFBSSxPQUFPQSxVQUFTLFVBQVU7QUFDNUIsVUFBTSxJQUFJO0FBQUEsTUFDUixxQ0FBcUMsS0FBSyxVQUFVQSxLQUFJO0FBQUEsSUFDMUQ7QUFBQSxFQUNGO0FBQ0Y7OztBQ2hhTyxJQUFNLE9BQU8sRUFBQyxJQUFHO0FBRXhCLFNBQVMsTUFBTTtBQUNiLFNBQU87QUFDVDs7O0FDb0JPLFNBQVMsTUFBTSxlQUFlO0FBQ25DLFNBQ0Usa0JBQWtCLFFBQ2xCLE9BQU8sa0JBQWtCO0FBQUEsRUFFekIsY0FBYztBQUFBLEVBRWQsY0FBYztBQUVsQjs7O0FDeEJPLFNBQVMsVUFBVUUsT0FBTTtBQUM5QixNQUFJLE9BQU9BLFVBQVMsVUFBVTtBQUM1QixJQUFBQSxRQUFPLElBQUksSUFBSUEsS0FBSTtBQUFBLEVBQ3JCLFdBQVcsQ0FBQyxNQUFNQSxLQUFJLEdBQUc7QUFFdkIsVUFBTSxRQUFRLElBQUk7QUFBQSxNQUNoQixpRkFDRUEsUUFDQTtBQUFBLElBQ0o7QUFDQSxVQUFNLE9BQU87QUFDYixVQUFNO0FBQUEsRUFDUjtBQUVBLE1BQUlBLE1BQUssYUFBYSxTQUFTO0FBRTdCLFVBQU0sUUFBUSxJQUFJLFVBQVUsZ0NBQWdDO0FBQzVELFVBQU0sT0FBTztBQUNiLFVBQU07QUFBQSxFQUNSO0FBRUEsU0FBTyxvQkFBb0JBLEtBQUk7QUFDakM7QUFVQSxTQUFTLG9CQUFvQixLQUFLO0FBQ2hDLE1BQUksSUFBSSxhQUFhLElBQUk7QUFFdkIsVUFBTSxRQUFRLElBQUk7QUFBQSxNQUNoQjtBQUFBLElBQ0Y7QUFDQSxVQUFNLE9BQU87QUFDYixVQUFNO0FBQUEsRUFDUjtBQUVBLFFBQU0sV0FBVyxJQUFJO0FBQ3JCLE1BQUlDLFNBQVE7QUFFWixTQUFPLEVBQUVBLFNBQVEsU0FBUyxRQUFRO0FBQ2hDLFFBQ0UsU0FBUyxXQUFXQSxNQUFLLE1BQU0sTUFDL0IsU0FBUyxXQUFXQSxTQUFRLENBQUMsTUFBTSxJQUNuQztBQUNBLFlBQU0sUUFBUSxTQUFTLFdBQVdBLFNBQVEsQ0FBQztBQUMzQyxVQUFJLFVBQVUsTUFBZ0IsVUFBVSxLQUFlO0FBRXJELGNBQU0sUUFBUSxJQUFJO0FBQUEsVUFDaEI7QUFBQSxRQUNGO0FBQ0EsY0FBTSxPQUFPO0FBQ2IsY0FBTTtBQUFBLE1BQ1I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUVBLFNBQU8sbUJBQW1CLFFBQVE7QUFDcEM7OztBTnVCQSxJQUFNLFFBQVEsQ0FBQyxXQUFXLFFBQVEsWUFBWSxRQUFRLFdBQVcsU0FBUztBQUVuRSxJQUFNLFFBQU4sTUFBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUF1QmpCLFlBQVksT0FBTztBQUVqQixRQUFJO0FBRUosUUFBSSxDQUFDLE9BQU87QUFDVixnQkFBVSxDQUFDO0FBQUEsSUFDYixXQUFXLE9BQU8sVUFBVSxZQUFZLE9BQU8sS0FBSyxHQUFHO0FBQ3JELGdCQUFVLEVBQUMsTUFBSztBQUFBLElBQ2xCLFdBQVcsTUFBTSxLQUFLLEdBQUc7QUFDdkIsZ0JBQVUsRUFBQyxNQUFNLE1BQUs7QUFBQSxJQUN4QixPQUFPO0FBQ0wsZ0JBQVU7QUFBQSxJQUNaO0FBVUEsU0FBSyxPQUFPLENBQUM7QUFPYixTQUFLLFdBQVcsQ0FBQztBQVNqQixTQUFLLFVBQVUsQ0FBQztBQU9oQixTQUFLLE1BQU0sS0FBSyxJQUFJO0FBUXBCLFNBQUs7QUFZTCxTQUFLO0FBVUwsU0FBSztBQVVMLFNBQUs7QUFJTCxRQUFJQyxTQUFRO0FBRVosV0FBTyxFQUFFQSxTQUFRLE1BQU0sUUFBUTtBQUM3QixZQUFNQyxRQUFPLE1BQU1ELE1BQUs7QUFJeEIsVUFDRUMsU0FBUSxXQUNSLFFBQVFBLEtBQUksTUFBTSxVQUNsQixRQUFRQSxLQUFJLE1BQU0sTUFDbEI7QUFFQSxhQUFLQSxLQUFJLElBQUlBLFVBQVMsWUFBWSxDQUFDLEdBQUcsUUFBUUEsS0FBSSxDQUFDLElBQUksUUFBUUEsS0FBSTtBQUFBLE1BQ3JFO0FBQUEsSUFDRjtBQUdBLFFBQUk7QUFHSixTQUFLLFFBQVEsU0FBUztBQUVwQixVQUFJLENBQUMsTUFBTSxTQUFTLElBQUksR0FBRztBQUV6QixhQUFLLElBQUksSUFBSSxRQUFRLElBQUk7QUFBQSxNQUMzQjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBSSxPQUFPO0FBQ1QsV0FBTyxLQUFLLFFBQVEsS0FBSyxRQUFRLFNBQVMsQ0FBQztBQUFBLEVBQzdDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFXQSxJQUFJLEtBQUtDLE9BQU07QUFDYixRQUFJLE1BQU1BLEtBQUksR0FBRztBQUNmLE1BQUFBLFFBQU8sVUFBVUEsS0FBSTtBQUFBLElBQ3ZCO0FBRUEsbUJBQWVBLE9BQU0sTUFBTTtBQUUzQixRQUFJLEtBQUssU0FBU0EsT0FBTTtBQUN0QixXQUFLLFFBQVEsS0FBS0EsS0FBSTtBQUFBLElBQ3hCO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsSUFBSSxVQUFVO0FBQ1osV0FBTyxPQUFPLEtBQUssU0FBUyxXQUFXLEtBQUssUUFBUSxLQUFLLElBQUksSUFBSTtBQUFBLEVBQ25FO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBSSxRQUFRQyxVQUFTO0FBQ25CLElBQUFDLFlBQVcsS0FBSyxVQUFVLFNBQVM7QUFDbkMsU0FBSyxPQUFPLEtBQUssS0FBS0QsWUFBVyxJQUFJLEtBQUssUUFBUTtBQUFBLEVBQ3BEO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxJQUFJLFdBQVc7QUFDYixXQUFPLE9BQU8sS0FBSyxTQUFTLFdBQVcsS0FBSyxTQUFTLEtBQUssSUFBSSxJQUFJO0FBQUEsRUFDcEU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU0EsSUFBSSxTQUFTRSxXQUFVO0FBQ3JCLG1CQUFlQSxXQUFVLFVBQVU7QUFDbkMsZUFBV0EsV0FBVSxVQUFVO0FBQy9CLFNBQUssT0FBTyxLQUFLLEtBQUssS0FBSyxXQUFXLElBQUlBLFNBQVE7QUFBQSxFQUNwRDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsSUFBSSxVQUFVO0FBQ1osV0FBTyxPQUFPLEtBQUssU0FBUyxXQUFXLEtBQUssUUFBUSxLQUFLLElBQUksSUFBSTtBQUFBLEVBQ25FO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLElBQUksUUFBUUMsVUFBUztBQUNuQixlQUFXQSxVQUFTLFNBQVM7QUFDN0IsSUFBQUYsWUFBVyxLQUFLLFNBQVMsU0FBUztBQUVsQyxRQUFJRSxVQUFTO0FBQ1gsVUFBSUEsU0FBUSxXQUFXLENBQUMsTUFBTSxJQUFjO0FBQzFDLGNBQU0sSUFBSSxNQUFNLCtCQUErQjtBQUFBLE1BQ2pEO0FBRUEsVUFBSUEsU0FBUSxTQUFTLEtBQUssQ0FBQyxHQUFHO0FBQzVCLGNBQU0sSUFBSSxNQUFNLHdDQUF3QztBQUFBLE1BQzFEO0FBQUEsSUFDRjtBQUVBLFNBQUssT0FBTyxLQUFLLEtBQUssS0FBSyxTQUFTLEtBQUssUUFBUUEsWUFBVyxHQUFHO0FBQUEsRUFDakU7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBLElBQUksT0FBTztBQUNULFdBQU8sT0FBTyxLQUFLLFNBQVMsV0FDeEIsS0FBSyxTQUFTLEtBQUssTUFBTSxLQUFLLE9BQU8sSUFDckM7QUFBQSxFQUNOO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNBLElBQUksS0FBSyxNQUFNO0FBQ2IsbUJBQWUsTUFBTSxNQUFNO0FBQzNCLGVBQVcsTUFBTSxNQUFNO0FBQ3ZCLFNBQUssT0FBTyxLQUFLLEtBQUssS0FBSyxXQUFXLElBQUksUUFBUSxLQUFLLFdBQVcsR0FBRztBQUFBLEVBQ3ZFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFXQSxTQUFTLFVBQVU7QUFDakIsWUFBUSxLQUFLLFNBQVMsSUFBSSxTQUFTLFlBQVksTUFBUztBQUFBLEVBQzFEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWtCQSxRQUFRLFFBQVEsT0FBTyxRQUFRO0FBQzdCLFVBQU0sVUFBVSxJQUFJLGFBQWEsUUFBUSxPQUFPLE1BQU07QUFFdEQsUUFBSSxLQUFLLE1BQU07QUFDYixjQUFRLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUTtBQUN6QyxjQUFRLE9BQU8sS0FBSztBQUFBLElBQ3RCO0FBRUEsWUFBUSxRQUFRO0FBRWhCLFNBQUssU0FBUyxLQUFLLE9BQU87QUFFMUIsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBa0JBLEtBQUssUUFBUSxPQUFPLFFBQVE7QUFDMUIsVUFBTSxVQUFVLEtBQUssUUFBUSxRQUFRLE9BQU8sTUFBTTtBQUVsRCxZQUFRLFFBQVE7QUFFaEIsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFzQkEsS0FBSyxRQUFRLE9BQU8sUUFBUTtBQUMxQixVQUFNLFVBQVUsS0FBSyxRQUFRLFFBQVEsT0FBTyxNQUFNO0FBRWxELFlBQVEsUUFBUTtBQUVoQixVQUFNO0FBQUEsRUFDUjtBQUNGO0FBWUEsU0FBUyxXQUFXLE1BQU0sTUFBTTtBQUM5QixNQUFJLFFBQVEsS0FBSyxTQUFTLEtBQUssR0FBRyxHQUFHO0FBQ25DLFVBQU0sSUFBSTtBQUFBLE1BQ1IsTUFBTSxPQUFPLHlDQUF5QyxLQUFLLE1BQU07QUFBQSxJQUNuRTtBQUFBLEVBQ0Y7QUFDRjtBQVlBLFNBQVMsZUFBZSxNQUFNLE1BQU07QUFDbEMsTUFBSSxDQUFDLE1BQU07QUFDVCxVQUFNLElBQUksTUFBTSxNQUFNLE9BQU8sbUJBQW1CO0FBQUEsRUFDbEQ7QUFDRjtBQVlBLFNBQVNGLFlBQVdGLE9BQU0sTUFBTTtBQUM5QixNQUFJLENBQUNBLE9BQU07QUFDVCxVQUFNLElBQUksTUFBTSxjQUFjLE9BQU8saUNBQWlDO0FBQUEsRUFDeEU7QUFDRjtBQVVBLFNBQVMsT0FBTyxPQUFPO0FBQ3JCLGFBQU8saUJBQUFLLFNBQVcsS0FBSztBQUN6Qjs7O0FIM2VPLElBQU0sVUFBVSxLQUFLLEVBQUUsT0FBTztBQUVyQyxJQUFNLE1BQU0sQ0FBQyxFQUFFO0FBTWYsU0FBUyxPQUFPO0FBQ2QsUUFBTSxlQUFlLE9BQU87QUFFNUIsUUFBTSxZQUFZLENBQUM7QUFFbkIsTUFBSSxZQUFZLENBQUM7QUFFakIsTUFBSTtBQUNKLE1BQUksY0FBYztBQUlsQixZQUFVLE9BQU87QUFDakIsWUFBVSxTQUFTO0FBQ25CLFlBQVUsV0FBVztBQUdyQixZQUFVLFNBQVM7QUFHbkIsWUFBVSxZQUFZO0FBRXRCLFlBQVUsTUFBTTtBQUdoQixZQUFVLFFBQVFDO0FBQ2xCLFlBQVUsWUFBWTtBQUV0QixZQUFVLE1BQU07QUFDaEIsWUFBVSxVQUFVO0FBRXBCLFlBQVUsVUFBVTtBQUNwQixZQUFVLGNBQWM7QUFHeEIsU0FBTztBQUlQLFdBQVMsWUFBWTtBQUNuQixVQUFNLGNBQWMsS0FBSztBQUN6QixRQUFJQyxTQUFRO0FBRVosV0FBTyxFQUFFQSxTQUFRLFVBQVUsUUFBUTtBQUNqQyxrQkFBWSxJQUFJLEdBQUcsVUFBVUEsTUFBSyxDQUFDO0FBQUEsSUFDckM7QUFFQSxnQkFBWSxTQUFLLGNBQUFDLFNBQU8sTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBRTVDLFdBQU87QUFBQSxFQUNUO0FBT0EsV0FBUyxLQUFLLEtBQUssT0FBTztBQUN4QixRQUFJLE9BQU8sUUFBUSxVQUFVO0FBRTNCLFVBQUksVUFBVSxXQUFXLEdBQUc7QUFDMUIsdUJBQWUsUUFBUSxNQUFNO0FBQzdCLGtCQUFVLEdBQUcsSUFBSTtBQUNqQixlQUFPO0FBQUEsTUFDVDtBQUdBLGFBQVEsSUFBSSxLQUFLLFdBQVcsR0FBRyxLQUFLLFVBQVUsR0FBRyxLQUFNO0FBQUEsSUFDekQ7QUFHQSxRQUFJLEtBQUs7QUFDUCxxQkFBZSxRQUFRLE1BQU07QUFDN0Isa0JBQVk7QUFDWixhQUFPO0FBQUEsSUFDVDtBQUdBLFdBQU87QUFBQSxFQUNUO0FBR0EsV0FBUyxTQUFTO0FBQ2hCLFFBQUksUUFBUTtBQUNWLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxFQUFFLGNBQWMsVUFBVSxRQUFRO0FBQ3ZDLFlBQU0sQ0FBQyxVQUFVLEdBQUcsT0FBTyxJQUFJLFVBQVUsV0FBVztBQUVwRCxVQUFJLFFBQVEsQ0FBQyxNQUFNLE9BQU87QUFDeEI7QUFBQSxNQUNGO0FBRUEsVUFBSSxRQUFRLENBQUMsTUFBTSxNQUFNO0FBQ3ZCLGdCQUFRLENBQUMsSUFBSTtBQUFBLE1BQ2Y7QUFHQSxZQUFNLGNBQWMsU0FBUyxLQUFLLFdBQVcsR0FBRyxPQUFPO0FBRXZELFVBQUksT0FBTyxnQkFBZ0IsWUFBWTtBQUNyQyxxQkFBYSxJQUFJLFdBQVc7QUFBQSxNQUM5QjtBQUFBLElBQ0Y7QUFFQSxhQUFTO0FBQ1Qsa0JBQWMsT0FBTztBQUVyQixXQUFPO0FBQUEsRUFDVDtBQU9BLFdBQVMsSUFBSSxVQUFVLFNBQVM7QUFFOUIsUUFBSTtBQUVKLG1CQUFlLE9BQU8sTUFBTTtBQUU1QixRQUFJLFVBQVUsUUFBUSxVQUFVLFFBQVc7QUFBQSxJQUUzQyxXQUFXLE9BQU8sVUFBVSxZQUFZO0FBQ3RDLGdCQUFVLE9BQU8sR0FBRyxPQUFPO0FBQUEsSUFDN0IsV0FBVyxPQUFPLFVBQVUsVUFBVTtBQUNwQyxVQUFJLE1BQU0sUUFBUSxLQUFLLEdBQUc7QUFDeEIsZ0JBQVEsS0FBSztBQUFBLE1BQ2YsT0FBTztBQUNMLGtCQUFVLEtBQUs7QUFBQSxNQUNqQjtBQUFBLElBQ0YsT0FBTztBQUNMLFlBQU0sSUFBSSxVQUFVLGlDQUFpQyxRQUFRLEdBQUc7QUFBQSxJQUNsRTtBQUVBLFFBQUksVUFBVTtBQUNaLGdCQUFVLFdBQVcsT0FBTyxPQUFPLFVBQVUsWUFBWSxDQUFDLEdBQUcsUUFBUTtBQUFBLElBQ3ZFO0FBRUEsV0FBTztBQU1QLGFBQVMsSUFBSUMsUUFBTztBQUNsQixVQUFJLE9BQU9BLFdBQVUsWUFBWTtBQUMvQixrQkFBVUEsTUFBSztBQUFBLE1BQ2pCLFdBQVcsT0FBT0EsV0FBVSxVQUFVO0FBQ3BDLFlBQUksTUFBTSxRQUFRQSxNQUFLLEdBQUc7QUFDeEIsZ0JBQU0sQ0FBQyxRQUFRLEdBQUdDLFFBQU8sSUFBSUQ7QUFDN0Isb0JBQVUsUUFBUSxHQUFHQyxRQUFPO0FBQUEsUUFDOUIsT0FBTztBQUNMLG9CQUFVRCxNQUFLO0FBQUEsUUFDakI7QUFBQSxNQUNGLE9BQU87QUFDTCxjQUFNLElBQUksVUFBVSxpQ0FBaUNBLFNBQVEsR0FBRztBQUFBLE1BQ2xFO0FBQUEsSUFDRjtBQU1BLGFBQVMsVUFBVSxRQUFRO0FBQ3pCLGNBQVEsT0FBTyxPQUFPO0FBRXRCLFVBQUksT0FBTyxVQUFVO0FBQ25CLG1CQUFXLE9BQU8sT0FBTyxZQUFZLENBQUMsR0FBRyxPQUFPLFFBQVE7QUFBQSxNQUMxRDtBQUFBLElBQ0Y7QUFNQSxhQUFTLFFBQVEsU0FBUztBQUN4QixVQUFJRixTQUFRO0FBRVosVUFBSSxZQUFZLFFBQVEsWUFBWSxRQUFXO0FBQUEsTUFFL0MsV0FBVyxNQUFNLFFBQVEsT0FBTyxHQUFHO0FBQ2pDLGVBQU8sRUFBRUEsU0FBUSxRQUFRLFFBQVE7QUFDL0IsZ0JBQU0sUUFBUSxRQUFRQSxNQUFLO0FBQzNCLGNBQUksS0FBSztBQUFBLFFBQ1g7QUFBQSxNQUNGLE9BQU87QUFDTCxjQUFNLElBQUksVUFBVSxzQ0FBc0MsVUFBVSxHQUFHO0FBQUEsTUFDekU7QUFBQSxJQUNGO0FBT0EsYUFBUyxVQUFVLFFBQVFFLFFBQU87QUFDaEMsVUFBSUYsU0FBUTtBQUVaLFVBQUk7QUFFSixhQUFPLEVBQUVBLFNBQVEsVUFBVSxRQUFRO0FBQ2pDLFlBQUksVUFBVUEsTUFBSyxFQUFFLENBQUMsTUFBTSxRQUFRO0FBQ2xDLGtCQUFRLFVBQVVBLE1BQUs7QUFDdkI7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUVBLFVBQUksT0FBTztBQUNULFlBQUksY0FBVyxNQUFNLENBQUMsQ0FBQyxLQUFLLGNBQVdFLE1BQUssR0FBRztBQUM3QyxVQUFBQSxhQUFRLGNBQUFELFNBQU8sTUFBTSxNQUFNLENBQUMsR0FBR0MsTUFBSztBQUFBLFFBQ3RDO0FBRUEsY0FBTSxDQUFDLElBQUlBO0FBQUEsTUFDYixPQUFPO0FBRUwsa0JBQVUsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQUEsTUFDL0I7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUdBLFdBQVNILE9BQU0sS0FBSztBQUNsQixjQUFVLE9BQU87QUFDakIsVUFBTSxPQUFPLE1BQU0sR0FBRztBQUN0QixVQUFNLFNBQVMsVUFBVTtBQUN6QixpQkFBYSxTQUFTLE1BQU07QUFFNUIsUUFBSSxRQUFRLFFBQVEsT0FBTyxHQUFHO0FBRTVCLGFBQU8sSUFBSSxPQUFPLE9BQU8sSUFBSSxHQUFHLElBQUksRUFBRSxNQUFNO0FBQUEsSUFDOUM7QUFHQSxXQUFPLE9BQU8sT0FBTyxJQUFJLEdBQUcsSUFBSTtBQUFBLEVBQ2xDO0FBR0EsV0FBUyxVQUFVSyxPQUFNLEtBQUs7QUFDNUIsY0FBVSxPQUFPO0FBQ2pCLFVBQU0sT0FBTyxNQUFNLEdBQUc7QUFDdEIsVUFBTSxXQUFXLFVBQVU7QUFDM0IsbUJBQWUsYUFBYSxRQUFRO0FBQ3BDLGVBQVdBLEtBQUk7QUFFZixRQUFJLFFBQVEsVUFBVSxTQUFTLEdBQUc7QUFFaEMsYUFBTyxJQUFJLFNBQVNBLE9BQU0sSUFBSSxFQUFFLFFBQVE7QUFBQSxJQUMxQztBQUdBLFdBQU8sU0FBU0EsT0FBTSxJQUFJO0FBQUEsRUFDNUI7QUFRQSxXQUFTLElBQUlBLE9BQU0sS0FBSyxVQUFVO0FBQ2hDLGVBQVdBLEtBQUk7QUFDZixjQUFVLE9BQU87QUFFakIsUUFBSSxDQUFDLFlBQVksT0FBTyxRQUFRLFlBQVk7QUFDMUMsaUJBQVc7QUFDWCxZQUFNO0FBQUEsSUFDUjtBQUVBLFFBQUksQ0FBQyxVQUFVO0FBQ2IsYUFBTyxJQUFJLFFBQVEsUUFBUTtBQUFBLElBQzdCO0FBRUEsYUFBUyxNQUFNLFFBQVE7QUFPdkIsYUFBUyxTQUFTLFNBQVMsUUFBUTtBQUVqQyxtQkFBYSxJQUFJQSxPQUFNLE1BQU0sR0FBRyxHQUFHLElBQUk7QUFRdkMsZUFBUyxLQUFLLE9BQU8sTUFBTSxNQUFNO0FBQy9CLGVBQU8sUUFBUUE7QUFDZixZQUFJLE9BQU87QUFDVCxpQkFBTyxLQUFLO0FBQUEsUUFDZCxXQUFXLFNBQVM7QUFDbEIsa0JBQVEsSUFBSTtBQUFBLFFBQ2QsT0FBTztBQUVMLG1CQUFTLE1BQU0sTUFBTSxJQUFJO0FBQUEsUUFDM0I7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFHQSxXQUFTLFFBQVFBLE9BQU0sTUFBTTtBQUUzQixRQUFJO0FBRUosUUFBSTtBQUVKLGNBQVUsSUFBSUEsT0FBTSxNQUFNLElBQUk7QUFFOUIsZUFBVyxXQUFXLE9BQU8sUUFBUTtBQUdyQyxXQUFPO0FBT1AsYUFBUyxLQUFLLE9BQU8sTUFBTTtBQUN6QixXQUFLLEtBQUs7QUFDVixlQUFTO0FBQ1QsaUJBQVc7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQU9BLFdBQVMsUUFBUSxLQUFLLFVBQVU7QUFDOUIsY0FBVSxPQUFPO0FBQ2pCLGlCQUFhLFdBQVcsVUFBVSxNQUFNO0FBQ3hDLG1CQUFlLFdBQVcsVUFBVSxRQUFRO0FBRTVDLFFBQUksQ0FBQyxVQUFVO0FBQ2IsYUFBTyxJQUFJLFFBQVEsUUFBUTtBQUFBLElBQzdCO0FBRUEsYUFBUyxNQUFNLFFBQVE7QUFPdkIsYUFBUyxTQUFTLFNBQVMsUUFBUTtBQUNqQyxZQUFNLE9BQU8sTUFBTSxHQUFHO0FBRXRCLGdCQUFVLElBQUksVUFBVSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxNQUFNQyxVQUFTO0FBQ2hFLFlBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQ0EsT0FBTTtBQUMzQixlQUFLLEtBQUs7QUFBQSxRQUNaLE9BQU87QUFFTCxnQkFBTSxTQUFTLFVBQVUsVUFBVSxNQUFNQSxLQUFJO0FBRTdDLGNBQUksV0FBVyxVQUFhLFdBQVcsTUFBTTtBQUFBLFVBRTdDLFdBQVcscUJBQXFCLE1BQU0sR0FBRztBQUN2QyxZQUFBQSxNQUFLLFFBQVE7QUFBQSxVQUNmLE9BQU87QUFDTCxZQUFBQSxNQUFLLFNBQVM7QUFBQSxVQUNoQjtBQUVBLGVBQUssT0FBT0EsS0FBSTtBQUFBLFFBQ2xCO0FBQUEsTUFDRixDQUFDO0FBT0QsZUFBUyxLQUFLLE9BQU9BLE9BQU07QUFDekIsWUFBSSxTQUFTLENBQUNBLE9BQU07QUFDbEIsaUJBQU8sS0FBSztBQUFBLFFBQ2QsV0FBVyxTQUFTO0FBQ2xCLGtCQUFRQSxLQUFJO0FBQUEsUUFDZCxPQUFPO0FBRUwsbUJBQVMsTUFBTUEsS0FBSTtBQUFBLFFBQ3JCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBR0EsV0FBUyxZQUFZLEtBQUs7QUFFeEIsUUFBSTtBQUVKLGNBQVUsT0FBTztBQUNqQixpQkFBYSxlQUFlLFVBQVUsTUFBTTtBQUM1QyxtQkFBZSxlQUFlLFVBQVUsUUFBUTtBQUVoRCxVQUFNLE9BQU8sTUFBTSxHQUFHO0FBRXRCLGNBQVUsUUFBUSxNQUFNLElBQUk7QUFFNUIsZUFBVyxlQUFlLFdBQVcsUUFBUTtBQUU3QyxXQUFPO0FBTVAsYUFBUyxLQUFLLE9BQU87QUFDbkIsaUJBQVc7QUFDWCxXQUFLLEtBQUs7QUFBQSxJQUNaO0FBQUEsRUFDRjtBQUNGO0FBU0EsU0FBUyxRQUFRLE9BQU8sTUFBTTtBQUM1QixTQUNFLE9BQU8sVUFBVTtBQUFBO0FBQUEsRUFHakIsTUFBTTtBQUFBO0FBQUE7QUFBQTtBQUFBLEdBS0wsS0FBSyxNQUFNLFNBQVMsS0FBSyxRQUFRLE1BQU07QUFFNUM7QUFRQSxTQUFTLEtBQUssT0FBTztBQUVuQixNQUFJO0FBRUosT0FBSyxPQUFPLE9BQU87QUFDakIsUUFBSSxJQUFJLEtBQUssT0FBTyxHQUFHLEdBQUc7QUFDeEIsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsU0FBTztBQUNUO0FBU0EsU0FBUyxhQUFhLE1BQU0sT0FBTztBQUNqQyxNQUFJLE9BQU8sVUFBVSxZQUFZO0FBQy9CLFVBQU0sSUFBSSxVQUFVLGFBQWEsT0FBTyxvQkFBb0I7QUFBQSxFQUM5RDtBQUNGO0FBU0EsU0FBUyxlQUFlLE1BQU0sT0FBTztBQUNuQyxNQUFJLE9BQU8sVUFBVSxZQUFZO0FBQy9CLFVBQU0sSUFBSSxVQUFVLGFBQWEsT0FBTyxzQkFBc0I7QUFBQSxFQUNoRTtBQUNGO0FBU0EsU0FBUyxlQUFlLE1BQU0sUUFBUTtBQUNwQyxNQUFJLFFBQVE7QUFDVixVQUFNLElBQUk7QUFBQSxNQUNSLGtCQUNFLE9BQ0E7QUFBQSxJQUNKO0FBQUEsRUFDRjtBQUNGO0FBUUEsU0FBUyxXQUFXRCxPQUFNO0FBR3hCLE1BQUksQ0FBQyxjQUFXQSxLQUFJLEtBQUssT0FBT0EsTUFBSyxTQUFTLFVBQVU7QUFDdEQsVUFBTSxJQUFJLFVBQVUseUJBQXlCQSxRQUFPLEdBQUc7QUFBQSxFQUV6RDtBQUNGO0FBVUEsU0FBUyxXQUFXLE1BQU0sV0FBVyxVQUFVO0FBQzdDLE1BQUksQ0FBQyxVQUFVO0FBQ2IsVUFBTSxJQUFJO0FBQUEsTUFDUixNQUFNLE9BQU8sNEJBQTRCLFlBQVk7QUFBQSxJQUN2RDtBQUFBLEVBQ0Y7QUFDRjtBQU1BLFNBQVMsTUFBTSxPQUFPO0FBQ3BCLFNBQU8sZ0JBQWdCLEtBQUssSUFBSSxRQUFRLElBQUksTUFBTSxLQUFLO0FBQ3pEO0FBTUEsU0FBUyxnQkFBZ0IsT0FBTztBQUM5QixTQUFPO0FBQUEsSUFDTCxTQUNFLE9BQU8sVUFBVSxZQUNqQixhQUFhLFNBQ2IsY0FBYztBQUFBLEVBQ2xCO0FBQ0Y7QUFNQSxTQUFTLHFCQUFxQixPQUFPO0FBQ25DLFNBQU8sT0FBTyxVQUFVLGdCQUFZLGtCQUFBRSxTQUFTLEtBQUs7QUFDcEQ7OztBVTFrQkEsSUFBTSxlQUFlLENBQUM7QUFlZixTQUFTLFNBQVMsT0FBTyxTQUFTO0FBQ3ZDLFFBQU0sV0FBVyxXQUFXO0FBQzVCLFFBQU0sa0JBQ0osT0FBTyxTQUFTLG9CQUFvQixZQUNoQyxTQUFTLGtCQUNUO0FBQ04sUUFBTSxjQUNKLE9BQU8sU0FBUyxnQkFBZ0IsWUFBWSxTQUFTLGNBQWM7QUFFckUsU0FBTyxJQUFJLE9BQU8saUJBQWlCLFdBQVc7QUFDaEQ7QUFjQSxTQUFTLElBQUksT0FBTyxpQkFBaUIsYUFBYTtBQUNoRCxNQUFJLEtBQUssS0FBSyxHQUFHO0FBQ2YsUUFBSSxXQUFXLE9BQU87QUFDcEIsYUFBTyxNQUFNLFNBQVMsVUFBVSxDQUFDLGNBQWMsS0FBSyxNQUFNO0FBQUEsSUFDNUQ7QUFFQSxRQUFJLG1CQUFtQixTQUFTLFNBQVMsTUFBTSxLQUFLO0FBQ2xELGFBQU8sTUFBTTtBQUFBLElBQ2Y7QUFFQSxRQUFJLGNBQWMsT0FBTztBQUN2QixhQUFPLElBQUksTUFBTSxVQUFVLGlCQUFpQixXQUFXO0FBQUEsSUFDekQ7QUFBQSxFQUNGO0FBRUEsTUFBSSxNQUFNLFFBQVEsS0FBSyxHQUFHO0FBQ3hCLFdBQU8sSUFBSSxPQUFPLGlCQUFpQixXQUFXO0FBQUEsRUFDaEQ7QUFFQSxTQUFPO0FBQ1Q7QUFjQSxTQUFTLElBQUksUUFBUSxpQkFBaUIsYUFBYTtBQUVqRCxRQUFNLFNBQVMsQ0FBQztBQUNoQixNQUFJQyxTQUFRO0FBRVosU0FBTyxFQUFFQSxTQUFRLE9BQU8sUUFBUTtBQUM5QixXQUFPQSxNQUFLLElBQUksSUFBSSxPQUFPQSxNQUFLLEdBQUcsaUJBQWlCLFdBQVc7QUFBQSxFQUNqRTtBQUVBLFNBQU8sT0FBTyxLQUFLLEVBQUU7QUFDdkI7QUFVQSxTQUFTLEtBQUssT0FBTztBQUNuQixTQUFPLFFBQVEsU0FBUyxPQUFPLFVBQVUsUUFBUTtBQUNuRDs7O0FDckZPLFNBQVMsT0FBT0MsT0FBTSxPQUFPLFFBQVEsT0FBTztBQUNqRCxRQUFNLE1BQU1BLE1BQUs7QUFDakIsTUFBSSxhQUFhO0FBRWpCLE1BQUk7QUFHSixNQUFJLFFBQVEsR0FBRztBQUNiLFlBQVEsQ0FBQyxRQUFRLE1BQU0sSUFBSSxNQUFNO0FBQUEsRUFDbkMsT0FBTztBQUNMLFlBQVEsUUFBUSxNQUFNLE1BQU07QUFBQSxFQUM5QjtBQUNBLFdBQVMsU0FBUyxJQUFJLFNBQVM7QUFHL0IsTUFBSSxNQUFNLFNBQVMsS0FBTztBQUN4QixpQkFBYSxNQUFNLEtBQUssS0FBSztBQUM3QixlQUFXLFFBQVEsT0FBTyxNQUFNO0FBRWhDLElBQUFBLE1BQUssT0FBTyxHQUFHLFVBQVU7QUFBQSxFQUMzQixPQUFPO0FBRUwsUUFBSTtBQUFRLE1BQUFBLE1BQUssT0FBTyxPQUFPLE1BQU07QUFHckMsV0FBTyxhQUFhLE1BQU0sUUFBUTtBQUNoQyxtQkFBYSxNQUFNLE1BQU0sWUFBWSxhQUFhLEdBQUs7QUFDdkQsaUJBQVcsUUFBUSxPQUFPLENBQUM7QUFFM0IsTUFBQUEsTUFBSyxPQUFPLEdBQUcsVUFBVTtBQUN6QixvQkFBYztBQUNkLGVBQVM7QUFBQSxJQUNYO0FBQUEsRUFDRjtBQUNGO0FBa0JPLFNBQVMsS0FBS0EsT0FBTSxPQUFPO0FBQ2hDLE1BQUlBLE1BQUssU0FBUyxHQUFHO0FBQ25CLFdBQU9BLE9BQU1BLE1BQUssUUFBUSxHQUFHLEtBQUs7QUFDbEMsV0FBT0E7QUFBQSxFQUNUO0FBQ0EsU0FBTztBQUNUOzs7QUN2RUEsSUFBTSxpQkFBaUIsQ0FBQyxFQUFFO0FBVW5CLFNBQVMsa0JBQWtCLFlBQVk7QUFFNUMsUUFBTUMsT0FBTSxDQUFDO0FBQ2IsTUFBSUMsU0FBUTtBQUVaLFNBQU8sRUFBRUEsU0FBUSxXQUFXLFFBQVE7QUFDbEMsb0JBQWdCRCxNQUFLLFdBQVdDLE1BQUssQ0FBQztBQUFBLEVBQ3hDO0FBRUEsU0FBT0Q7QUFDVDtBQVdBLFNBQVMsZ0JBQWdCQSxNQUFLRSxZQUFXO0FBRXZDLE1BQUk7QUFFSixPQUFLLFFBQVFBLFlBQVc7QUFDdEIsVUFBTSxRQUFRLGVBQWUsS0FBS0YsTUFBSyxJQUFJLElBQUlBLEtBQUksSUFBSSxJQUFJO0FBRTNELFVBQU0sT0FBTyxVQUFVQSxLQUFJLElBQUksSUFBSSxDQUFDO0FBRXBDLFVBQU0sUUFBUUUsV0FBVSxJQUFJO0FBRTVCLFFBQUk7QUFFSixRQUFJLE9BQU87QUFDVCxXQUFLLFFBQVEsT0FBTztBQUNsQixZQUFJLENBQUMsZUFBZSxLQUFLLE1BQU0sSUFBSTtBQUFHLGVBQUssSUFBSSxJQUFJLENBQUM7QUFDcEQsY0FBTSxRQUFRLE1BQU0sSUFBSTtBQUN4QjtBQUFBO0FBQUEsVUFFRSxLQUFLLElBQUk7QUFBQSxVQUNULE1BQU0sUUFBUSxLQUFLLElBQUksUUFBUSxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUM7QUFBQSxRQUNwRDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGO0FBVUEsU0FBUyxXQUFXLFVBQVVDLE9BQU07QUFDbEMsTUFBSUYsU0FBUTtBQUVaLFFBQU0sU0FBUyxDQUFDO0FBRWhCLFNBQU8sRUFBRUEsU0FBUUUsTUFBSyxRQUFRO0FBRTVCO0FBQUMsS0FBQ0EsTUFBS0YsTUFBSyxFQUFFLFFBQVEsVUFBVSxXQUFXLFFBQVEsS0FBS0UsTUFBS0YsTUFBSyxDQUFDO0FBQUEsRUFDckU7QUFFQSxTQUFPLFVBQVUsR0FBRyxHQUFHLE1BQU07QUFDL0I7OztBQzVFTyxJQUFNLDBCQUNYOzs7QUNZSyxJQUFNLGFBQWEsV0FBVyxVQUFVO0FBY3hDLElBQU0sb0JBQW9CLFdBQVcsWUFBWTtBQXVCakQsSUFBTSxhQUFhLFdBQVcscUJBQXFCO0FBYW5ELFNBQVMsYUFBYSxNQUFNO0FBQ2pDO0FBQUE7QUFBQTtBQUFBLElBR0UsU0FBUyxTQUFTLE9BQU8sTUFBTSxTQUFTO0FBQUE7QUFFNUM7QUFhTyxJQUFNLGFBQWEsV0FBVyxJQUFJO0FBb0JsQyxJQUFNLGdCQUFnQixXQUFXLFlBQVk7QUFlN0MsSUFBTSxtQkFBbUIsV0FBVyxnQkFBZ0I7QUFpQnBELFNBQVMsbUJBQW1CLE1BQU07QUFDdkMsU0FBTyxTQUFTLFFBQVEsT0FBTztBQUNqQztBQVdPLFNBQVMsMEJBQTBCLE1BQU07QUFDOUMsU0FBTyxTQUFTLFNBQVMsT0FBTyxLQUFLLFNBQVM7QUFDaEQ7QUFpQk8sU0FBUyxjQUFjLE1BQU07QUFDbEMsU0FBTyxTQUFTLE1BQU0sU0FBUyxNQUFNLFNBQVM7QUFDaEQ7QUF1Qk8sSUFBTSxxQkFBcUIsV0FBVyx1QkFBdUI7QUFzQjdELElBQU0sb0JBQW9CLFdBQVcsSUFBSTtBQVFoRCxTQUFTLFdBQVcsT0FBTztBQUN6QixTQUFPO0FBVVAsV0FBUyxNQUFNLE1BQU07QUFDbkIsV0FBTyxTQUFTLFFBQVEsTUFBTSxLQUFLLE9BQU8sYUFBYSxJQUFJLENBQUM7QUFBQSxFQUM5RDtBQUNGOzs7QUMzTU8sU0FBUyxhQUFhLFNBQVNHLEtBQUksTUFBTSxLQUFLO0FBQ25ELFFBQU0sUUFBUSxNQUFNLE1BQU0sSUFBSSxPQUFPO0FBQ3JDLE1BQUksT0FBTztBQUNYLFNBQU87QUFHUCxXQUFTLE1BQU0sTUFBTTtBQUNuQixRQUFJLGNBQWMsSUFBSSxHQUFHO0FBQ3ZCLGNBQVEsTUFBTSxJQUFJO0FBQ2xCLGFBQU8sT0FBTyxJQUFJO0FBQUEsSUFDcEI7QUFDQSxXQUFPQSxJQUFHLElBQUk7QUFBQSxFQUNoQjtBQUdBLFdBQVMsT0FBTyxNQUFNO0FBQ3BCLFFBQUksY0FBYyxJQUFJLEtBQUssU0FBUyxPQUFPO0FBQ3pDLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsWUFBUSxLQUFLLElBQUk7QUFDakIsV0FBT0EsSUFBRyxJQUFJO0FBQUEsRUFDaEI7QUFDRjs7O0FDdERPLElBQU0sVUFBVTtBQUFBLEVBQ3JCLFVBQVU7QUFDWjtBQU1BLFNBQVMsa0JBQWtCLFNBQVM7QUFDbEMsUUFBTSxlQUFlLFFBQVE7QUFBQSxJQUMzQixLQUFLLE9BQU8sV0FBVztBQUFBLElBQ3ZCO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxNQUFJQztBQUNKLFNBQU87QUFHUCxXQUFTLDJCQUEyQixNQUFNO0FBQ3hDLFFBQUksU0FBUyxNQUFNO0FBQ2pCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCO0FBQUEsSUFDRjtBQUNBLFlBQVEsTUFBTSxZQUFZO0FBQzFCLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFlBQVEsS0FBSyxZQUFZO0FBQ3pCLFdBQU8sYUFBYSxTQUFTLGNBQWMsWUFBWTtBQUFBLEVBQ3pEO0FBR0EsV0FBUyxpQkFBaUIsTUFBTTtBQUM5QixZQUFRLE1BQU0sV0FBVztBQUN6QixXQUFPLFVBQVUsSUFBSTtBQUFBLEVBQ3ZCO0FBR0EsV0FBUyxVQUFVLE1BQU07QUFDdkIsVUFBTSxRQUFRLFFBQVEsTUFBTSxhQUFhO0FBQUEsTUFDdkMsYUFBYTtBQUFBLE1BQ2IsVUFBQUE7QUFBQSxJQUNGLENBQUM7QUFDRCxRQUFJQSxXQUFVO0FBQ1osTUFBQUEsVUFBUyxPQUFPO0FBQUEsSUFDbEI7QUFDQSxJQUFBQSxZQUFXO0FBQ1gsV0FBTyxLQUFLLElBQUk7QUFBQSxFQUNsQjtBQUdBLFdBQVMsS0FBSyxNQUFNO0FBQ2xCLFFBQUksU0FBUyxNQUFNO0FBQ2pCLGNBQVEsS0FBSyxXQUFXO0FBQ3hCLGNBQVEsS0FBSyxXQUFXO0FBQ3hCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCO0FBQUEsSUFDRjtBQUNBLFFBQUksbUJBQW1CLElBQUksR0FBRztBQUM1QixjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssV0FBVztBQUN4QixhQUFPO0FBQUEsSUFDVDtBQUdBLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBQ0Y7OztBQzFETyxJQUFNQyxZQUFXO0FBQUEsRUFDdEIsVUFBVTtBQUNaO0FBR0EsSUFBTSxxQkFBcUI7QUFBQSxFQUN6QixVQUFVO0FBQ1o7QUFNQSxTQUFTLG1CQUFtQixTQUFTO0FBQ25DLFFBQU1DLFFBQU87QUFFYixRQUFNLFFBQVEsQ0FBQztBQUNmLE1BQUksWUFBWTtBQUVoQixNQUFJO0FBRUosTUFBSTtBQUVKLE1BQUk7QUFDSixTQUFPO0FBR1AsV0FBUyxNQUFNLE1BQU07QUFXbkIsUUFBSSxZQUFZLE1BQU0sUUFBUTtBQUM1QixZQUFNLE9BQU8sTUFBTSxTQUFTO0FBQzVCLE1BQUFBLE1BQUssaUJBQWlCLEtBQUssQ0FBQztBQUM1QixhQUFPLFFBQVE7QUFBQSxRQUNiLEtBQUssQ0FBQyxFQUFFO0FBQUEsUUFDUjtBQUFBLFFBQ0E7QUFBQSxNQUNGLEVBQUUsSUFBSTtBQUFBLElBQ1I7QUFHQSxXQUFPLG1CQUFtQixJQUFJO0FBQUEsRUFDaEM7QUFHQSxXQUFTLGlCQUFpQixNQUFNO0FBQzlCO0FBS0EsUUFBSUEsTUFBSyxlQUFlLFlBQVk7QUFDbEMsTUFBQUEsTUFBSyxlQUFlLGFBQWE7QUFDakMsVUFBSSxXQUFXO0FBQ2Isa0JBQVU7QUFBQSxNQUNaO0FBSUEsWUFBTSxtQkFBbUJBLE1BQUssT0FBTztBQUNyQyxVQUFJLGtCQUFrQjtBQUV0QixVQUFJQztBQUdKLGFBQU8sbUJBQW1CO0FBQ3hCLFlBQ0VELE1BQUssT0FBTyxlQUFlLEVBQUUsQ0FBQyxNQUFNLFVBQ3BDQSxNQUFLLE9BQU8sZUFBZSxFQUFFLENBQUMsRUFBRSxTQUFTLGFBQ3pDO0FBQ0EsVUFBQUMsU0FBUUQsTUFBSyxPQUFPLGVBQWUsRUFBRSxDQUFDLEVBQUU7QUFDeEM7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUNBLHFCQUFlLFNBQVM7QUFHeEIsVUFBSUUsU0FBUTtBQUNaLGFBQU9BLFNBQVFGLE1BQUssT0FBTyxRQUFRO0FBQ2pDLFFBQUFBLE1BQUssT0FBT0UsTUFBSyxFQUFFLENBQUMsRUFBRSxNQUFNLE9BQU8sT0FBTyxDQUFDLEdBQUdELE1BQUs7QUFDbkQsUUFBQUM7QUFBQSxNQUNGO0FBR0E7QUFBQSxRQUNFRixNQUFLO0FBQUEsUUFDTCxrQkFBa0I7QUFBQSxRQUNsQjtBQUFBLFFBQ0FBLE1BQUssT0FBTyxNQUFNLGdCQUFnQjtBQUFBLE1BQ3BDO0FBR0EsTUFBQUEsTUFBSyxPQUFPLFNBQVNFO0FBQ3JCLGFBQU8sbUJBQW1CLElBQUk7QUFBQSxJQUNoQztBQUNBLFdBQU8sTUFBTSxJQUFJO0FBQUEsRUFDbkI7QUFHQSxXQUFTLG1CQUFtQixNQUFNO0FBTWhDLFFBQUksY0FBYyxNQUFNLFFBQVE7QUFJOUIsVUFBSSxDQUFDLFdBQVc7QUFDZCxlQUFPLGtCQUFrQixJQUFJO0FBQUEsTUFDL0I7QUFLQSxVQUFJLFVBQVUsb0JBQW9CLFVBQVUsaUJBQWlCLFVBQVU7QUFDckUsZUFBTyxVQUFVLElBQUk7QUFBQSxNQUN2QjtBQU9BLE1BQUFGLE1BQUssWUFBWTtBQUFBLFFBQ2YsVUFBVSxvQkFBb0IsQ0FBQyxVQUFVO0FBQUEsTUFDM0M7QUFBQSxJQUNGO0FBR0EsSUFBQUEsTUFBSyxpQkFBaUIsQ0FBQztBQUN2QixXQUFPLFFBQVE7QUFBQSxNQUNiO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLEVBQUUsSUFBSTtBQUFBLEVBQ1I7QUFHQSxXQUFTLHFCQUFxQixNQUFNO0FBQ2xDLFFBQUk7QUFBVyxnQkFBVTtBQUN6QixtQkFBZSxTQUFTO0FBQ3hCLFdBQU8sa0JBQWtCLElBQUk7QUFBQSxFQUMvQjtBQUdBLFdBQVMsc0JBQXNCLE1BQU07QUFDbkMsSUFBQUEsTUFBSyxPQUFPLEtBQUtBLE1BQUssSUFBSSxFQUFFLElBQUksSUFBSSxjQUFjLE1BQU07QUFDeEQsc0JBQWtCQSxNQUFLLElBQUksRUFBRTtBQUM3QixXQUFPLFVBQVUsSUFBSTtBQUFBLEVBQ3ZCO0FBR0EsV0FBUyxrQkFBa0IsTUFBTTtBQUUvQixJQUFBQSxNQUFLLGlCQUFpQixDQUFDO0FBQ3ZCLFdBQU8sUUFBUTtBQUFBLE1BQ2I7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsRUFBRSxJQUFJO0FBQUEsRUFDUjtBQUdBLFdBQVMsa0JBQWtCLE1BQU07QUFDL0I7QUFDQSxVQUFNLEtBQUssQ0FBQ0EsTUFBSyxrQkFBa0JBLE1BQUssY0FBYyxDQUFDO0FBRXZELFdBQU8sa0JBQWtCLElBQUk7QUFBQSxFQUMvQjtBQUdBLFdBQVMsVUFBVSxNQUFNO0FBQ3ZCLFFBQUksU0FBUyxNQUFNO0FBQ2pCLFVBQUk7QUFBVyxrQkFBVTtBQUN6QixxQkFBZSxDQUFDO0FBQ2hCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCO0FBQUEsSUFDRjtBQUNBLGdCQUFZLGFBQWFBLE1BQUssT0FBTyxLQUFLQSxNQUFLLElBQUksQ0FBQztBQUNwRCxZQUFRLE1BQU0sYUFBYTtBQUFBLE1BQ3pCLGFBQWE7QUFBQSxNQUNiLFVBQVU7QUFBQSxNQUNWLFlBQVk7QUFBQSxJQUNkLENBQUM7QUFDRCxXQUFPLGFBQWEsSUFBSTtBQUFBLEVBQzFCO0FBR0EsV0FBUyxhQUFhLE1BQU07QUFDMUIsUUFBSSxTQUFTLE1BQU07QUFDakIsbUJBQWEsUUFBUSxLQUFLLFdBQVcsR0FBRyxJQUFJO0FBQzVDLHFCQUFlLENBQUM7QUFDaEIsY0FBUSxRQUFRLElBQUk7QUFDcEI7QUFBQSxJQUNGO0FBQ0EsUUFBSSxtQkFBbUIsSUFBSSxHQUFHO0FBQzVCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLG1CQUFhLFFBQVEsS0FBSyxXQUFXLENBQUM7QUFFdEMsa0JBQVk7QUFDWixNQUFBQSxNQUFLLFlBQVk7QUFDakIsYUFBTztBQUFBLElBQ1Q7QUFDQSxZQUFRLFFBQVEsSUFBSTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQU9BLFdBQVMsYUFBYSxPQUFPLEtBQUs7QUFDaEMsVUFBTSxTQUFTQSxNQUFLLFlBQVksS0FBSztBQUNyQyxRQUFJO0FBQUssYUFBTyxLQUFLLElBQUk7QUFDekIsVUFBTSxXQUFXO0FBQ2pCLFFBQUk7QUFBWSxpQkFBVyxPQUFPO0FBQ2xDLGlCQUFhO0FBQ2IsY0FBVSxXQUFXLE1BQU0sS0FBSztBQUNoQyxjQUFVLE1BQU0sTUFBTTtBQW1DdEIsUUFBSUEsTUFBSyxPQUFPLEtBQUssTUFBTSxNQUFNLElBQUksR0FBRztBQUN0QyxVQUFJRSxTQUFRLFVBQVUsT0FBTztBQUM3QixhQUFPQSxVQUFTO0FBQ2Q7QUFBQTtBQUFBLFVBRUUsVUFBVSxPQUFPQSxNQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sU0FBUztBQUFBLFdBRXpDLENBQUMsVUFBVSxPQUFPQSxNQUFLLEVBQUUsQ0FBQyxFQUFFO0FBQUEsVUFFM0IsVUFBVSxPQUFPQSxNQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksU0FBUztBQUFBLFVBQzFDO0FBR0E7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUlBLFlBQU0sbUJBQW1CRixNQUFLLE9BQU87QUFDckMsVUFBSSxrQkFBa0I7QUFFdEIsVUFBSTtBQUVKLFVBQUlDO0FBR0osYUFBTyxtQkFBbUI7QUFDeEIsWUFDRUQsTUFBSyxPQUFPLGVBQWUsRUFBRSxDQUFDLE1BQU0sVUFDcENBLE1BQUssT0FBTyxlQUFlLEVBQUUsQ0FBQyxFQUFFLFNBQVMsYUFDekM7QUFDQSxjQUFJLE1BQU07QUFDUixZQUFBQyxTQUFRRCxNQUFLLE9BQU8sZUFBZSxFQUFFLENBQUMsRUFBRTtBQUN4QztBQUFBLFVBQ0Y7QUFDQSxpQkFBTztBQUFBLFFBQ1Q7QUFBQSxNQUNGO0FBQ0EscUJBQWUsU0FBUztBQUd4QixNQUFBRSxTQUFRO0FBQ1IsYUFBT0EsU0FBUUYsTUFBSyxPQUFPLFFBQVE7QUFDakMsUUFBQUEsTUFBSyxPQUFPRSxNQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sT0FBTyxPQUFPLENBQUMsR0FBR0QsTUFBSztBQUNuRCxRQUFBQztBQUFBLE1BQ0Y7QUFHQTtBQUFBLFFBQ0VGLE1BQUs7QUFBQSxRQUNMLGtCQUFrQjtBQUFBLFFBQ2xCO0FBQUEsUUFDQUEsTUFBSyxPQUFPLE1BQU0sZ0JBQWdCO0FBQUEsTUFDcEM7QUFHQSxNQUFBQSxNQUFLLE9BQU8sU0FBU0U7QUFBQSxJQUN2QjtBQUFBLEVBQ0Y7QUFNQSxXQUFTLGVBQWUsTUFBTTtBQUM1QixRQUFJQSxTQUFRLE1BQU07QUFHbEIsV0FBT0EsV0FBVSxNQUFNO0FBQ3JCLFlBQU0sUUFBUSxNQUFNQSxNQUFLO0FBQ3pCLE1BQUFGLE1BQUssaUJBQWlCLE1BQU0sQ0FBQztBQUM3QixZQUFNLENBQUMsRUFBRSxLQUFLLEtBQUtBLE9BQU0sT0FBTztBQUFBLElBQ2xDO0FBQ0EsVUFBTSxTQUFTO0FBQUEsRUFDakI7QUFDQSxXQUFTLFlBQVk7QUFDbkIsY0FBVSxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ3RCLGlCQUFhO0FBQ2IsZ0JBQVk7QUFDWixJQUFBQSxNQUFLLGVBQWUsYUFBYTtBQUFBLEVBQ25DO0FBQ0Y7QUFNQSxTQUFTLGtCQUFrQixTQUFTRyxLQUFJLEtBQUs7QUFHM0MsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLFFBQVEsUUFBUSxLQUFLLE9BQU8sV0FBVyxVQUFVQSxLQUFJLEdBQUc7QUFBQSxJQUN4RDtBQUFBLElBQ0EsS0FBSyxPQUFPLFdBQVcsUUFBUSxLQUFLLFNBQVMsY0FBYyxJQUFJLFNBQVk7QUFBQSxFQUM3RTtBQUNGOzs7QUN0V08sU0FBUyxrQkFBa0IsTUFBTTtBQUN0QyxNQUNFLFNBQVMsUUFDVCwwQkFBMEIsSUFBSSxLQUM5QixrQkFBa0IsSUFBSSxHQUN0QjtBQUNBLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSSxtQkFBbUIsSUFBSSxHQUFHO0FBQzVCLFdBQU87QUFBQSxFQUNUO0FBQ0Y7OztBQ2hCTyxTQUFTLFdBQVdDLGFBQVksUUFBUSxTQUFTO0FBRXRELFFBQU0sU0FBUyxDQUFDO0FBQ2hCLE1BQUlDLFNBQVE7QUFFWixTQUFPLEVBQUVBLFNBQVFELFlBQVcsUUFBUTtBQUNsQyxVQUFNLFVBQVVBLFlBQVdDLE1BQUssRUFBRTtBQUVsQyxRQUFJLFdBQVcsQ0FBQyxPQUFPLFNBQVMsT0FBTyxHQUFHO0FBQ3hDLGVBQVMsUUFBUSxRQUFRLE9BQU87QUFDaEMsYUFBTyxLQUFLLE9BQU87QUFBQSxJQUNyQjtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7OztBQ2pCTyxJQUFNLFlBQVk7QUFBQSxFQUN2QixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixZQUFZO0FBQ2Q7QUFPQSxTQUFTLG9CQUFvQixRQUFRLFNBQVM7QUFDNUMsTUFBSUMsU0FBUTtBQUVaLE1BQUk7QUFFSixNQUFJO0FBRUosTUFBSUM7QUFFSixNQUFJO0FBRUosTUFBSTtBQUVKLE1BQUk7QUFFSixNQUFJO0FBRUosTUFBSTtBQU1KLFNBQU8sRUFBRUQsU0FBUSxPQUFPLFFBQVE7QUFFOUIsUUFDRSxPQUFPQSxNQUFLLEVBQUUsQ0FBQyxNQUFNLFdBQ3JCLE9BQU9BLE1BQUssRUFBRSxDQUFDLEVBQUUsU0FBUyx1QkFDMUIsT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxRQUNqQjtBQUNBLGFBQU9BO0FBR1AsYUFBTyxRQUFRO0FBRWIsWUFDRSxPQUFPLElBQUksRUFBRSxDQUFDLE1BQU0sVUFDcEIsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsdUJBQ3pCLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRTtBQUFBLFFBRWhCLFFBQVEsZUFBZSxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsTUFDbEQsUUFBUSxlQUFlLE9BQU9BLE1BQUssRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsR0FDdkQ7QUFLQSxlQUNHLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLE9BQU9BLE1BQUssRUFBRSxDQUFDLEVBQUUsV0FDM0MsT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxJQUFJLFNBQVMsT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxNQUFNLFVBQVUsS0FDaEUsR0FDRyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxTQUNuQixPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxTQUN0QixPQUFPQSxNQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksU0FDckIsT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxNQUFNLFVBQ3pCLElBRUY7QUFDQTtBQUFBLFVBQ0Y7QUFHQSxnQkFDRSxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxTQUFTLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLFNBQVMsS0FDNUQsT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxJQUFJLFNBQVMsT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxNQUFNLFNBQVMsSUFDMUQsSUFDQTtBQUNOLGdCQUFNLFFBQVEsT0FBTyxPQUFPLENBQUMsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRztBQUNuRCxnQkFBTSxNQUFNLE9BQU8sT0FBTyxDQUFDLEdBQUcsT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxLQUFLO0FBQ3BELG9CQUFVLE9BQU8sQ0FBQyxHQUFHO0FBQ3JCLG9CQUFVLEtBQUssR0FBRztBQUNsQiw0QkFBa0I7QUFBQSxZQUNoQixNQUFNLE1BQU0sSUFBSSxtQkFBbUI7QUFBQSxZQUNuQztBQUFBLFlBQ0EsS0FBSyxPQUFPLE9BQU8sQ0FBQyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHO0FBQUEsVUFDNUM7QUFDQSw0QkFBa0I7QUFBQSxZQUNoQixNQUFNLE1BQU0sSUFBSSxtQkFBbUI7QUFBQSxZQUNuQyxPQUFPLE9BQU8sT0FBTyxDQUFDLEdBQUcsT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxLQUFLO0FBQUEsWUFDL0M7QUFBQSxVQUNGO0FBQ0EsVUFBQUMsUUFBTztBQUFBLFlBQ0wsTUFBTSxNQUFNLElBQUksZUFBZTtBQUFBLFlBQy9CLE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRztBQUFBLFlBQzVDLEtBQUssT0FBTyxPQUFPLENBQUMsR0FBRyxPQUFPRCxNQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUs7QUFBQSxVQUMvQztBQUNBLGtCQUFRO0FBQUEsWUFDTixNQUFNLE1BQU0sSUFBSSxXQUFXO0FBQUEsWUFDM0IsT0FBTyxPQUFPLE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixLQUFLO0FBQUEsWUFDOUMsS0FBSyxPQUFPLE9BQU8sQ0FBQyxHQUFHLGdCQUFnQixHQUFHO0FBQUEsVUFDNUM7QUFDQSxpQkFBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sT0FBTyxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsS0FBSztBQUM3RCxpQkFBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxRQUFRLE9BQU8sT0FBTyxDQUFDLEdBQUcsZ0JBQWdCLEdBQUc7QUFDOUQsdUJBQWEsQ0FBQztBQUdkLGNBQUksT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksU0FBUyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxRQUFRO0FBQzdELHlCQUFhLEtBQUssWUFBWTtBQUFBLGNBQzVCLENBQUMsU0FBUyxPQUFPLElBQUksRUFBRSxDQUFDLEdBQUcsT0FBTztBQUFBLGNBQ2xDLENBQUMsUUFBUSxPQUFPLElBQUksRUFBRSxDQUFDLEdBQUcsT0FBTztBQUFBLFlBQ25DLENBQUM7QUFBQSxVQUNIO0FBR0EsdUJBQWEsS0FBSyxZQUFZO0FBQUEsWUFDNUIsQ0FBQyxTQUFTLE9BQU8sT0FBTztBQUFBLFlBQ3hCLENBQUMsU0FBUyxpQkFBaUIsT0FBTztBQUFBLFlBQ2xDLENBQUMsUUFBUSxpQkFBaUIsT0FBTztBQUFBLFlBQ2pDLENBQUMsU0FBU0MsT0FBTSxPQUFPO0FBQUEsVUFDekIsQ0FBQztBQUtELHVCQUFhO0FBQUEsWUFDWDtBQUFBLFlBQ0E7QUFBQSxjQUNFLFFBQVEsT0FBTyxXQUFXLFdBQVc7QUFBQSxjQUNyQyxPQUFPLE1BQU0sT0FBTyxHQUFHRCxNQUFLO0FBQUEsY0FDNUI7QUFBQSxZQUNGO0FBQUEsVUFDRjtBQUdBLHVCQUFhLEtBQUssWUFBWTtBQUFBLFlBQzVCLENBQUMsUUFBUUMsT0FBTSxPQUFPO0FBQUEsWUFDdEIsQ0FBQyxTQUFTLGlCQUFpQixPQUFPO0FBQUEsWUFDbEMsQ0FBQyxRQUFRLGlCQUFpQixPQUFPO0FBQUEsWUFDakMsQ0FBQyxRQUFRLE9BQU8sT0FBTztBQUFBLFVBQ3pCLENBQUM7QUFHRCxjQUFJLE9BQU9ELE1BQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxTQUFTLE9BQU9BLE1BQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxRQUFRO0FBQy9ELHFCQUFTO0FBQ1QseUJBQWEsS0FBSyxZQUFZO0FBQUEsY0FDNUIsQ0FBQyxTQUFTLE9BQU9BLE1BQUssRUFBRSxDQUFDLEdBQUcsT0FBTztBQUFBLGNBQ25DLENBQUMsUUFBUSxPQUFPQSxNQUFLLEVBQUUsQ0FBQyxHQUFHLE9BQU87QUFBQSxZQUNwQyxDQUFDO0FBQUEsVUFDSCxPQUFPO0FBQ0wscUJBQVM7QUFBQSxVQUNYO0FBQ0EsaUJBQU8sUUFBUSxPQUFPLEdBQUdBLFNBQVEsT0FBTyxHQUFHLFVBQVU7QUFDckQsVUFBQUEsU0FBUSxPQUFPLFdBQVcsU0FBUyxTQUFTO0FBQzVDO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUdBLEVBQUFBLFNBQVE7QUFDUixTQUFPLEVBQUVBLFNBQVEsT0FBTyxRQUFRO0FBQzlCLFFBQUksT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxTQUFTLHFCQUFxQjtBQUNqRCxhQUFPQSxNQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU87QUFBQSxJQUMxQjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFNQSxTQUFTLGtCQUFrQixTQUFTRSxLQUFJO0FBQ3RDLFFBQU1DLG9CQUFtQixLQUFLLE9BQU8sV0FBVyxpQkFBaUI7QUFDakUsUUFBTUMsWUFBVyxLQUFLO0FBQ3RCLFFBQU0sU0FBUyxrQkFBa0JBLFNBQVE7QUFHekMsTUFBSTtBQUNKLFNBQU87QUFZUCxXQUFTLE1BQU0sTUFBTTtBQUNuQixhQUFTO0FBQ1QsWUFBUSxNQUFNLG1CQUFtQjtBQUNqQyxXQUFPLE9BQU8sSUFBSTtBQUFBLEVBQ3BCO0FBWUEsV0FBUyxPQUFPLE1BQU07QUFDcEIsUUFBSSxTQUFTLFFBQVE7QUFDbkIsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxVQUFNLFFBQVEsUUFBUSxLQUFLLG1CQUFtQjtBQUc5QyxVQUFNLFFBQVEsa0JBQWtCLElBQUk7QUFJcEMsVUFBTSxPQUNKLENBQUMsU0FBVSxVQUFVLEtBQUssVUFBV0Qsa0JBQWlCLFNBQVMsSUFBSTtBQUNyRSxVQUFNLFFBQ0osQ0FBQyxVQUFXLFdBQVcsS0FBSyxTQUFVQSxrQkFBaUIsU0FBU0MsU0FBUTtBQUMxRSxVQUFNLFFBQVEsUUFBUSxXQUFXLEtBQUssT0FBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNO0FBQ3ZFLFVBQU0sU0FBUyxRQUFRLFdBQVcsS0FBSyxRQUFRLFVBQVUsU0FBUyxDQUFDLEtBQUs7QUFDeEUsV0FBT0YsSUFBRyxJQUFJO0FBQUEsRUFDaEI7QUFDRjtBQVlBLFNBQVMsVUFBVUcsUUFBTyxRQUFRO0FBQ2hDLEVBQUFBLE9BQU0sVUFBVTtBQUNoQixFQUFBQSxPQUFNLFVBQVU7QUFDaEIsRUFBQUEsT0FBTSxnQkFBZ0I7QUFDeEI7OztBQ3ZQTyxJQUFNLFdBQVc7QUFBQSxFQUN0QixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQ1o7QUFNQSxTQUFTLGlCQUFpQixTQUFTQyxLQUFJLEtBQUs7QUFDMUMsTUFBSSxPQUFPO0FBQ1gsU0FBTztBQWNQLFdBQVMsTUFBTSxNQUFNO0FBQ25CLFlBQVEsTUFBTSxVQUFVO0FBQ3hCLFlBQVEsTUFBTSxnQkFBZ0I7QUFDOUIsWUFBUSxRQUFRLElBQUk7QUFDcEIsWUFBUSxLQUFLLGdCQUFnQjtBQUM3QixZQUFRLE1BQU0sa0JBQWtCO0FBQ2hDLFdBQU87QUFBQSxFQUNUO0FBY0EsV0FBUyxLQUFLLE1BQU07QUFDbEIsUUFBSSxXQUFXLElBQUksR0FBRztBQUNwQixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sV0FBVyxJQUFJO0FBQUEsRUFDeEI7QUFjQSxXQUFTLG1CQUFtQixNQUFNO0FBRWhDLFFBQUksU0FBUyxNQUFNLFNBQVMsTUFBTSxTQUFTLE1BQU0sa0JBQWtCLElBQUksR0FBRztBQUV4RSxhQUFPO0FBQ1AsYUFBTyx5QkFBeUIsSUFBSTtBQUFBLElBQ3RDO0FBQ0EsV0FBTyxXQUFXLElBQUk7QUFBQSxFQUN4QjtBQWNBLFdBQVMseUJBQXlCLE1BQU07QUFDdEMsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQ1AsYUFBTztBQUFBLElBQ1Q7QUFHQSxTQUNHLFNBQVMsTUFBTSxTQUFTLE1BQU0sU0FBUyxNQUFNLGtCQUFrQixJQUFJLE1BQ3BFLFNBQVMsSUFDVDtBQUNBLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTztBQUNQLFdBQU8sV0FBVyxJQUFJO0FBQUEsRUFDeEI7QUFZQSxXQUFTLFVBQVUsTUFBTTtBQUN2QixRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsS0FBSyxrQkFBa0I7QUFDL0IsY0FBUSxNQUFNLGdCQUFnQjtBQUM5QixjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssZ0JBQWdCO0FBQzdCLGNBQVEsS0FBSyxVQUFVO0FBQ3ZCLGFBQU9BO0FBQUEsSUFDVDtBQUdBLFFBQUksU0FBUyxRQUFRLFNBQVMsTUFBTSxTQUFTLE1BQU0sYUFBYSxJQUFJLEdBQUc7QUFDckUsYUFBTyxJQUFJLElBQUk7QUFBQSxJQUNqQjtBQUNBLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBWUEsV0FBUyxXQUFXLE1BQU07QUFDeEIsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksV0FBVyxJQUFJLEdBQUc7QUFDcEIsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBWUEsV0FBUyxpQkFBaUIsTUFBTTtBQUM5QixXQUFPLGtCQUFrQixJQUFJLElBQUksV0FBVyxJQUFJLElBQUksSUFBSSxJQUFJO0FBQUEsRUFDOUQ7QUFZQSxXQUFTLFdBQVcsTUFBTTtBQUN4QixRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFDUCxhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksU0FBUyxJQUFJO0FBRWYsY0FBUSxLQUFLLGtCQUFrQixFQUFFLE9BQU87QUFDeEMsY0FBUSxNQUFNLGdCQUFnQjtBQUM5QixjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssZ0JBQWdCO0FBQzdCLGNBQVEsS0FBSyxVQUFVO0FBQ3ZCLGFBQU9BO0FBQUEsSUFDVDtBQUNBLFdBQU8sV0FBVyxJQUFJO0FBQUEsRUFDeEI7QUFjQSxXQUFTLFdBQVcsTUFBTTtBQUV4QixTQUFLLFNBQVMsTUFBTSxrQkFBa0IsSUFBSSxNQUFNLFNBQVMsSUFBSTtBQUMzRCxZQUFNLE9BQU8sU0FBUyxLQUFLLGFBQWE7QUFDeEMsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBQ0Y7OztBQ2hPTyxJQUFNLFlBQVk7QUFBQSxFQUN2QixVQUFVO0FBQUEsRUFDVixTQUFTO0FBQ1g7QUFNQSxTQUFTLGtCQUFrQixTQUFTQyxLQUFJLEtBQUs7QUFDM0MsU0FBTztBQWdCUCxXQUFTLE1BQU0sTUFBTTtBQUNuQixXQUFPLGNBQWMsSUFBSSxJQUNyQixhQUFhLFNBQVMsT0FBTyxZQUFZLEVBQUUsSUFBSSxJQUMvQyxNQUFNLElBQUk7QUFBQSxFQUNoQjtBQWdCQSxXQUFTLE1BQU0sTUFBTTtBQUNuQixXQUFPLFNBQVMsUUFBUSxtQkFBbUIsSUFBSSxJQUFJQSxJQUFHLElBQUksSUFBSSxJQUFJLElBQUk7QUFBQSxFQUN4RTtBQUNGOzs7QUNoRE8sSUFBTSxhQUFhO0FBQUEsRUFDeEIsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsY0FBYztBQUFBLElBQ1osVUFBVTtBQUFBLEVBQ1o7QUFBQSxFQUNBO0FBQ0Y7QUFNQSxTQUFTLHdCQUF3QixTQUFTQyxLQUFJLEtBQUs7QUFDakQsUUFBTUMsUUFBTztBQUNiLFNBQU87QUFZUCxXQUFTLE1BQU0sTUFBTTtBQUNuQixRQUFJLFNBQVMsSUFBSTtBQUNmLFlBQU0sUUFBUUEsTUFBSztBQUNuQixVQUFJLENBQUMsTUFBTSxNQUFNO0FBQ2YsZ0JBQVEsTUFBTSxjQUFjO0FBQUEsVUFDMUIsWUFBWTtBQUFBLFFBQ2QsQ0FBQztBQUNELGNBQU0sT0FBTztBQUFBLE1BQ2Y7QUFDQSxjQUFRLE1BQU0sa0JBQWtCO0FBQ2hDLGNBQVEsTUFBTSxrQkFBa0I7QUFDaEMsY0FBUSxRQUFRLElBQUk7QUFDcEIsY0FBUSxLQUFLLGtCQUFrQjtBQUMvQixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFZQSxXQUFTLE1BQU0sTUFBTTtBQUNuQixRQUFJLGNBQWMsSUFBSSxHQUFHO0FBQ3ZCLGNBQVEsTUFBTSw0QkFBNEI7QUFDMUMsY0FBUSxRQUFRLElBQUk7QUFDcEIsY0FBUSxLQUFLLDRCQUE0QjtBQUN6QyxjQUFRLEtBQUssa0JBQWtCO0FBQy9CLGFBQU9EO0FBQUEsSUFDVDtBQUNBLFlBQVEsS0FBSyxrQkFBa0I7QUFDL0IsV0FBT0EsSUFBRyxJQUFJO0FBQUEsRUFDaEI7QUFDRjtBQWNBLFNBQVMsK0JBQStCLFNBQVNBLEtBQUksS0FBSztBQUN4RCxRQUFNQyxRQUFPO0FBQ2IsU0FBTztBQWVQLFdBQVMsVUFBVSxNQUFNO0FBQ3ZCLFFBQUksY0FBYyxJQUFJLEdBQUc7QUFHdkIsYUFBTztBQUFBLFFBQ0w7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0FBLE1BQUssT0FBTyxXQUFXLFFBQVEsS0FBSyxTQUFTLGNBQWMsSUFDdkQsU0FDQTtBQUFBLE1BQ04sRUFBRSxJQUFJO0FBQUEsSUFDUjtBQUNBLFdBQU8sV0FBVyxJQUFJO0FBQUEsRUFDeEI7QUFlQSxXQUFTLFdBQVcsTUFBTTtBQUN4QixXQUFPLFFBQVEsUUFBUSxZQUFZRCxLQUFJLEdBQUcsRUFBRSxJQUFJO0FBQUEsRUFDbEQ7QUFDRjtBQUdBLFNBQVMsS0FBSyxTQUFTO0FBQ3JCLFVBQVEsS0FBSyxZQUFZO0FBQzNCOzs7QUN4SU8sSUFBTSxrQkFBa0I7QUFBQSxFQUM3QixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQ1o7QUFNQSxTQUFTLHdCQUF3QixTQUFTRSxLQUFJLEtBQUs7QUFDakQsU0FBTztBQVlQLFdBQVMsTUFBTSxNQUFNO0FBQ25CLFlBQVEsTUFBTSxpQkFBaUI7QUFDL0IsWUFBUSxNQUFNLGNBQWM7QUFDNUIsWUFBUSxRQUFRLElBQUk7QUFDcEIsWUFBUSxLQUFLLGNBQWM7QUFDM0IsV0FBTztBQUFBLEVBQ1Q7QUFZQSxXQUFTLE9BQU8sTUFBTTtBQUVwQixRQUFJLGlCQUFpQixJQUFJLEdBQUc7QUFDMUIsY0FBUSxNQUFNLHNCQUFzQjtBQUNwQyxjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssc0JBQXNCO0FBQ25DLGNBQVEsS0FBSyxpQkFBaUI7QUFDOUIsYUFBT0E7QUFBQSxJQUNUO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQUNGOzs7QUN4REEsSUFBTSxVQUFVLFNBQVMsY0FBYyxHQUFHO0FBTW5DLFNBQVMsOEJBQThCLE9BQU87QUFDbkQsUUFBTUMsc0JBQXFCLE1BQU0sUUFBUTtBQUN6QyxVQUFRLFlBQVlBO0FBQ3BCLFFBQU0sT0FBTyxRQUFRO0FBVXJCLE1BQUksS0FBSyxXQUFXLEtBQUssU0FBUyxDQUFDLE1BQU0sTUFBZ0IsVUFBVSxRQUFRO0FBQ3pFLFdBQU87QUFBQSxFQUNUO0FBTUEsU0FBTyxTQUFTQSxzQkFBcUIsUUFBUTtBQUMvQzs7O0FDakJPLElBQU0scUJBQXFCO0FBQUEsRUFDaEMsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUNaO0FBTUEsU0FBUywyQkFBMkIsU0FBU0MsS0FBSSxLQUFLO0FBQ3BELFFBQU1DLFFBQU87QUFDYixNQUFJLE9BQU87QUFFWCxNQUFJO0FBRUosTUFBSTtBQUNKLFNBQU87QUFnQlAsV0FBUyxNQUFNLE1BQU07QUFDbkIsWUFBUSxNQUFNLG9CQUFvQjtBQUNsQyxZQUFRLE1BQU0sMEJBQTBCO0FBQ3hDLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFlBQVEsS0FBSywwQkFBMEI7QUFDdkMsV0FBTztBQUFBLEVBQ1Q7QUFpQkEsV0FBUyxLQUFLLE1BQU07QUFDbEIsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLE1BQU0saUNBQWlDO0FBQy9DLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGNBQVEsS0FBSyxpQ0FBaUM7QUFDOUMsYUFBTztBQUFBLElBQ1Q7QUFDQSxZQUFRLE1BQU0seUJBQXlCO0FBQ3ZDLFVBQU07QUFDTixXQUFPO0FBQ1AsV0FBTyxNQUFNLElBQUk7QUFBQSxFQUNuQjtBQWNBLFdBQVMsUUFBUSxNQUFNO0FBQ3JCLFFBQUksU0FBUyxNQUFNLFNBQVMsS0FBSztBQUMvQixjQUFRLE1BQU0scUNBQXFDO0FBQ25ELGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGNBQVEsS0FBSyxxQ0FBcUM7QUFDbEQsY0FBUSxNQUFNLHlCQUF5QjtBQUN2QyxZQUFNO0FBQ04sYUFBTztBQUNQLGFBQU87QUFBQSxJQUNUO0FBQ0EsWUFBUSxNQUFNLHlCQUF5QjtBQUN2QyxVQUFNO0FBQ04sV0FBTztBQUNQLFdBQU8sTUFBTSxJQUFJO0FBQUEsRUFDbkI7QUFtQkEsV0FBUyxNQUFNLE1BQU07QUFDbkIsUUFBSSxTQUFTLE1BQU0sTUFBTTtBQUN2QixZQUFNLFFBQVEsUUFBUSxLQUFLLHlCQUF5QjtBQUNwRCxVQUNFLFNBQVMscUJBQ1QsQ0FBQyw4QkFBOEJBLE1BQUssZUFBZSxLQUFLLENBQUMsR0FDekQ7QUFDQSxlQUFPLElBQUksSUFBSTtBQUFBLE1BQ2pCO0FBSUEsY0FBUSxNQUFNLDBCQUEwQjtBQUN4QyxjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssMEJBQTBCO0FBQ3ZDLGNBQVEsS0FBSyxvQkFBb0I7QUFDakMsYUFBT0Q7QUFBQSxJQUNUO0FBQ0EsUUFBSSxLQUFLLElBQUksS0FBSyxTQUFTLEtBQUs7QUFDOUIsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBQ0Y7OztBQzdJQSxJQUFNLHNCQUFzQjtBQUFBLEVBQzFCLFVBQVU7QUFBQSxFQUNWLFNBQVM7QUFDWDtBQUdPLElBQU0sYUFBYTtBQUFBLEVBQ3hCLE1BQU07QUFBQSxFQUNOLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFDWjtBQU1BLFNBQVMsbUJBQW1CLFNBQVNFLEtBQUksS0FBSztBQUM1QyxRQUFNQyxRQUFPO0FBRWIsUUFBTSxhQUFhO0FBQUEsSUFDakIsVUFBVTtBQUFBLElBQ1YsU0FBUztBQUFBLEVBQ1g7QUFDQSxNQUFJLGdCQUFnQjtBQUNwQixNQUFJLFdBQVc7QUFFZixNQUFJO0FBQ0osU0FBTztBQWNQLFdBQVMsTUFBTSxNQUFNO0FBRW5CLFdBQU8sbUJBQW1CLElBQUk7QUFBQSxFQUNoQztBQWNBLFdBQVMsbUJBQW1CLE1BQU07QUFDaEMsVUFBTSxPQUFPQSxNQUFLLE9BQU9BLE1BQUssT0FBTyxTQUFTLENBQUM7QUFDL0Msb0JBQ0UsUUFBUSxLQUFLLENBQUMsRUFBRSxTQUFTLGVBQ3JCLEtBQUssQ0FBQyxFQUFFLGVBQWUsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLFNBQ3RDO0FBQ04sYUFBUztBQUNULFlBQVEsTUFBTSxZQUFZO0FBQzFCLFlBQVEsTUFBTSxpQkFBaUI7QUFDL0IsWUFBUSxNQUFNLHlCQUF5QjtBQUN2QyxXQUFPLGFBQWEsSUFBSTtBQUFBLEVBQzFCO0FBY0EsV0FBUyxhQUFhLE1BQU07QUFDMUIsUUFBSSxTQUFTLFFBQVE7QUFDbkI7QUFDQSxjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksV0FBVyxHQUFHO0FBQ2hCLGFBQU8sSUFBSSxJQUFJO0FBQUEsSUFDakI7QUFDQSxZQUFRLEtBQUsseUJBQXlCO0FBQ3RDLFdBQU8sY0FBYyxJQUFJLElBQ3JCLGFBQWEsU0FBUyxZQUFZLFlBQVksRUFBRSxJQUFJLElBQ3BELFdBQVcsSUFBSTtBQUFBLEVBQ3JCO0FBY0EsV0FBUyxXQUFXLE1BQU07QUFDeEIsUUFBSSxTQUFTLFFBQVEsbUJBQW1CLElBQUksR0FBRztBQUM3QyxjQUFRLEtBQUssaUJBQWlCO0FBQzlCLGFBQU9BLE1BQUssWUFDUkQsSUFBRyxJQUFJLElBQ1AsUUFBUSxNQUFNLHFCQUFxQixnQkFBZ0IsS0FBSyxFQUFFLElBQUk7QUFBQSxJQUNwRTtBQUNBLFlBQVEsTUFBTSxxQkFBcUI7QUFDbkMsWUFBUSxNQUFNLGVBQWU7QUFBQSxNQUMzQixhQUFhO0FBQUEsSUFDZixDQUFDO0FBQ0QsV0FBTyxLQUFLLElBQUk7QUFBQSxFQUNsQjtBQWNBLFdBQVMsS0FBSyxNQUFNO0FBQ2xCLFFBQUksU0FBUyxRQUFRLG1CQUFtQixJQUFJLEdBQUc7QUFDN0MsY0FBUSxLQUFLLGFBQWE7QUFDMUIsY0FBUSxLQUFLLHFCQUFxQjtBQUNsQyxhQUFPLFdBQVcsSUFBSTtBQUFBLElBQ3hCO0FBQ0EsUUFBSSxjQUFjLElBQUksR0FBRztBQUN2QixjQUFRLEtBQUssYUFBYTtBQUMxQixjQUFRLEtBQUsscUJBQXFCO0FBQ2xDLGFBQU8sYUFBYSxTQUFTLFlBQVksWUFBWSxFQUFFLElBQUk7QUFBQSxJQUM3RDtBQUNBLFFBQUksU0FBUyxNQUFNLFNBQVMsUUFBUTtBQUNsQyxhQUFPLElBQUksSUFBSTtBQUFBLElBQ2pCO0FBQ0EsWUFBUSxRQUFRLElBQUk7QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFjQSxXQUFTLFdBQVcsTUFBTTtBQUN4QixRQUFJLFNBQVMsUUFBUSxtQkFBbUIsSUFBSSxHQUFHO0FBQzdDLGFBQU8sV0FBVyxJQUFJO0FBQUEsSUFDeEI7QUFDQSxZQUFRLE1BQU0scUJBQXFCO0FBQ25DLFlBQVEsTUFBTSxlQUFlO0FBQUEsTUFDM0IsYUFBYTtBQUFBLElBQ2YsQ0FBQztBQUNELFdBQU8sS0FBSyxJQUFJO0FBQUEsRUFDbEI7QUFjQSxXQUFTLEtBQUssTUFBTTtBQUNsQixRQUFJLFNBQVMsUUFBUSxtQkFBbUIsSUFBSSxHQUFHO0FBQzdDLGNBQVEsS0FBSyxhQUFhO0FBQzFCLGNBQVEsS0FBSyxxQkFBcUI7QUFDbEMsYUFBTyxXQUFXLElBQUk7QUFBQSxJQUN4QjtBQUNBLFFBQUksU0FBUyxNQUFNLFNBQVMsUUFBUTtBQUNsQyxhQUFPLElBQUksSUFBSTtBQUFBLElBQ2pCO0FBQ0EsWUFBUSxRQUFRLElBQUk7QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFlQSxXQUFTLGVBQWUsTUFBTTtBQUM1QixXQUFPLFFBQVEsUUFBUSxZQUFZLE9BQU8sYUFBYSxFQUFFLElBQUk7QUFBQSxFQUMvRDtBQWNBLFdBQVMsY0FBYyxNQUFNO0FBQzNCLFlBQVEsTUFBTSxZQUFZO0FBQzFCLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFlBQVEsS0FBSyxZQUFZO0FBQ3pCLFdBQU87QUFBQSxFQUNUO0FBY0EsV0FBUyxhQUFhLE1BQU07QUFDMUIsV0FBTyxnQkFBZ0IsS0FBSyxjQUFjLElBQUksSUFDMUM7QUFBQSxNQUNFO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBLGdCQUFnQjtBQUFBLElBQ2xCLEVBQUUsSUFBSSxJQUNOLG1CQUFtQixJQUFJO0FBQUEsRUFDN0I7QUFjQSxXQUFTLG1CQUFtQixNQUFNO0FBQ2hDLFFBQUksU0FBUyxRQUFRLG1CQUFtQixJQUFJLEdBQUc7QUFDN0MsYUFBTyxRQUFRLE1BQU0scUJBQXFCLGdCQUFnQixLQUFLLEVBQUUsSUFBSTtBQUFBLElBQ3ZFO0FBQ0EsWUFBUSxNQUFNLGVBQWU7QUFDN0IsV0FBTyxhQUFhLElBQUk7QUFBQSxFQUMxQjtBQWNBLFdBQVMsYUFBYSxNQUFNO0FBQzFCLFFBQUksU0FBUyxRQUFRLG1CQUFtQixJQUFJLEdBQUc7QUFDN0MsY0FBUSxLQUFLLGVBQWU7QUFDNUIsYUFBTyxtQkFBbUIsSUFBSTtBQUFBLElBQ2hDO0FBQ0EsWUFBUSxRQUFRLElBQUk7QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFjQSxXQUFTLE1BQU0sTUFBTTtBQUNuQixZQUFRLEtBQUssWUFBWTtBQUN6QixXQUFPQSxJQUFHLElBQUk7QUFBQSxFQUNoQjtBQU1BLFdBQVMsbUJBQW1CRSxVQUFTRixLQUFJRyxNQUFLO0FBQzVDLFFBQUksT0FBTztBQUNYLFdBQU87QUFPUCxhQUFTLFlBQVksTUFBTTtBQUN6QixNQUFBRCxTQUFRLE1BQU0sWUFBWTtBQUMxQixNQUFBQSxTQUFRLFFBQVEsSUFBSTtBQUNwQixNQUFBQSxTQUFRLEtBQUssWUFBWTtBQUN6QixhQUFPRTtBQUFBLElBQ1Q7QUFjQSxhQUFTQSxPQUFNLE1BQU07QUFJbkIsTUFBQUYsU0FBUSxNQUFNLGlCQUFpQjtBQUMvQixhQUFPLGNBQWMsSUFBSSxJQUNyQjtBQUFBLFFBQ0VBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBRCxNQUFLLE9BQU8sV0FBVyxRQUFRLEtBQUssU0FBUyxjQUFjLElBQ3ZELFNBQ0E7QUFBQSxNQUNOLEVBQUUsSUFBSSxJQUNOLG9CQUFvQixJQUFJO0FBQUEsSUFDOUI7QUFjQSxhQUFTLG9CQUFvQixNQUFNO0FBQ2pDLFVBQUksU0FBUyxRQUFRO0FBQ25CLFFBQUFDLFNBQVEsTUFBTSx5QkFBeUI7QUFDdkMsZUFBTyxjQUFjLElBQUk7QUFBQSxNQUMzQjtBQUNBLGFBQU9DLEtBQUksSUFBSTtBQUFBLElBQ2pCO0FBY0EsYUFBUyxjQUFjLE1BQU07QUFDM0IsVUFBSSxTQUFTLFFBQVE7QUFDbkI7QUFDQSxRQUFBRCxTQUFRLFFBQVEsSUFBSTtBQUNwQixlQUFPO0FBQUEsTUFDVDtBQUNBLFVBQUksUUFBUSxVQUFVO0FBQ3BCLFFBQUFBLFNBQVEsS0FBSyx5QkFBeUI7QUFDdEMsZUFBTyxjQUFjLElBQUksSUFDckIsYUFBYUEsVUFBUyxvQkFBb0IsWUFBWSxFQUFFLElBQUksSUFDNUQsbUJBQW1CLElBQUk7QUFBQSxNQUM3QjtBQUNBLGFBQU9DLEtBQUksSUFBSTtBQUFBLElBQ2pCO0FBY0EsYUFBUyxtQkFBbUIsTUFBTTtBQUNoQyxVQUFJLFNBQVMsUUFBUSxtQkFBbUIsSUFBSSxHQUFHO0FBQzdDLFFBQUFELFNBQVEsS0FBSyxpQkFBaUI7QUFDOUIsZUFBT0YsSUFBRyxJQUFJO0FBQUEsTUFDaEI7QUFDQSxhQUFPRyxLQUFJLElBQUk7QUFBQSxJQUNqQjtBQUFBLEVBQ0Y7QUFDRjtBQU1BLFNBQVMsNEJBQTRCLFNBQVNILEtBQUksS0FBSztBQUNyRCxRQUFNQyxRQUFPO0FBQ2IsU0FBTztBQU9QLFdBQVMsTUFBTSxNQUFNO0FBQ25CLFFBQUksU0FBUyxNQUFNO0FBQ2pCLGFBQU8sSUFBSSxJQUFJO0FBQUEsSUFDakI7QUFDQSxZQUFRLE1BQU0sWUFBWTtBQUMxQixZQUFRLFFBQVEsSUFBSTtBQUNwQixZQUFRLEtBQUssWUFBWTtBQUN6QixXQUFPO0FBQUEsRUFDVDtBQU9BLFdBQVMsVUFBVSxNQUFNO0FBQ3ZCLFdBQU9BLE1BQUssT0FBTyxLQUFLQSxNQUFLLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUlELElBQUcsSUFBSTtBQUFBLEVBQ2hFO0FBQ0Y7OztBQ3JkTyxJQUFNLGVBQWU7QUFBQSxFQUMxQixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQ1o7QUFHQSxJQUFNLGVBQWU7QUFBQSxFQUNuQixVQUFVO0FBQUEsRUFDVixTQUFTO0FBQ1g7QUFNQSxTQUFTLHFCQUFxQixTQUFTSyxLQUFJLEtBQUs7QUFDOUMsUUFBTUMsUUFBTztBQUNiLFNBQU87QUFnQlAsV0FBUyxNQUFNLE1BQU07QUFHbkIsWUFBUSxNQUFNLGNBQWM7QUFHNUIsV0FBTyxhQUFhLFNBQVMsYUFBYSxjQUFjLElBQUksQ0FBQyxFQUFFLElBQUk7QUFBQSxFQUNyRTtBQVlBLFdBQVMsWUFBWSxNQUFNO0FBQ3pCLFVBQU0sT0FBT0EsTUFBSyxPQUFPQSxNQUFLLE9BQU8sU0FBUyxDQUFDO0FBQy9DLFdBQU8sUUFDTCxLQUFLLENBQUMsRUFBRSxTQUFTLGdCQUNqQixLQUFLLENBQUMsRUFBRSxlQUFlLEtBQUssQ0FBQyxHQUFHLElBQUksRUFBRSxVQUFVLElBQzlDLFFBQVEsSUFBSSxJQUNaLElBQUksSUFBSTtBQUFBLEVBQ2Q7QUFZQSxXQUFTLFFBQVEsTUFBTTtBQUNyQixRQUFJLFNBQVMsTUFBTTtBQUNqQixhQUFPLE1BQU0sSUFBSTtBQUFBLElBQ25CO0FBQ0EsUUFBSSxtQkFBbUIsSUFBSSxHQUFHO0FBQzVCLGFBQU8sUUFBUSxRQUFRLGNBQWMsU0FBUyxLQUFLLEVBQUUsSUFBSTtBQUFBLElBQzNEO0FBQ0EsWUFBUSxNQUFNLGVBQWU7QUFDN0IsV0FBTyxPQUFPLElBQUk7QUFBQSxFQUNwQjtBQVlBLFdBQVMsT0FBTyxNQUFNO0FBQ3BCLFFBQUksU0FBUyxRQUFRLG1CQUFtQixJQUFJLEdBQUc7QUFDN0MsY0FBUSxLQUFLLGVBQWU7QUFDNUIsYUFBTyxRQUFRLElBQUk7QUFBQSxJQUNyQjtBQUNBLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBR0EsV0FBUyxNQUFNLE1BQU07QUFDbkIsWUFBUSxLQUFLLGNBQWM7QUFJM0IsV0FBT0QsSUFBRyxJQUFJO0FBQUEsRUFDaEI7QUFDRjtBQU1BLFNBQVMscUJBQXFCLFNBQVNBLEtBQUksS0FBSztBQUM5QyxRQUFNQyxRQUFPO0FBQ2IsU0FBT0M7QUFhUCxXQUFTQSxjQUFhLE1BQU07QUFHMUIsUUFBSUQsTUFBSyxPQUFPLEtBQUtBLE1BQUssSUFBSSxFQUFFLElBQUksR0FBRztBQUNyQyxhQUFPLElBQUksSUFBSTtBQUFBLElBQ2pCO0FBQ0EsUUFBSSxtQkFBbUIsSUFBSSxHQUFHO0FBQzVCLGNBQVEsTUFBTSxZQUFZO0FBQzFCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGNBQVEsS0FBSyxZQUFZO0FBQ3pCLGFBQU9DO0FBQUEsSUFDVDtBQVFBLFdBQU8sYUFBYSxTQUFTLGFBQWEsY0FBYyxJQUFJLENBQUMsRUFBRSxJQUFJO0FBQUEsRUFDckU7QUFZQSxXQUFTLFlBQVksTUFBTTtBQUN6QixVQUFNLE9BQU9ELE1BQUssT0FBT0EsTUFBSyxPQUFPLFNBQVMsQ0FBQztBQUMvQyxXQUFPLFFBQ0wsS0FBSyxDQUFDLEVBQUUsU0FBUyxnQkFDakIsS0FBSyxDQUFDLEVBQUUsZUFBZSxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsVUFBVSxJQUM5Q0QsSUFBRyxJQUFJLElBQ1AsbUJBQW1CLElBQUksSUFDdkJFLGNBQWEsSUFBSSxJQUNqQixJQUFJLElBQUk7QUFBQSxFQUNkO0FBQ0Y7OztBQzFLTyxJQUFNLFdBQVc7QUFBQSxFQUN0QixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixTQUFTO0FBQUEsRUFDVDtBQUNGO0FBSUEsU0FBUyxnQkFBZ0IsUUFBUTtBQUMvQixNQUFJLGdCQUFnQixPQUFPLFNBQVM7QUFDcEMsTUFBSSxpQkFBaUI7QUFFckIsTUFBSUM7QUFFSixNQUFJO0FBR0osT0FDRyxPQUFPLGNBQWMsRUFBRSxDQUFDLEVBQUUsU0FBUyxnQkFDbEMsT0FBTyxjQUFjLEVBQUUsQ0FBQyxFQUFFLFNBQVMsYUFDcEMsT0FBTyxhQUFhLEVBQUUsQ0FBQyxFQUFFLFNBQVMsZ0JBQ2pDLE9BQU8sYUFBYSxFQUFFLENBQUMsRUFBRSxTQUFTLFVBQ3BDO0FBQ0EsSUFBQUEsU0FBUTtBQUdSLFdBQU8sRUFBRUEsU0FBUSxlQUFlO0FBQzlCLFVBQUksT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxTQUFTLGdCQUFnQjtBQUU1QyxlQUFPLGNBQWMsRUFBRSxDQUFDLEVBQUUsT0FBTztBQUNqQyxlQUFPLGFBQWEsRUFBRSxDQUFDLEVBQUUsT0FBTztBQUNoQywwQkFBa0I7QUFDbEIseUJBQWlCO0FBQ2pCO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBR0EsRUFBQUEsU0FBUSxpQkFBaUI7QUFDekI7QUFDQSxTQUFPLEVBQUVBLFVBQVMsZUFBZTtBQUMvQixRQUFJLFVBQVUsUUFBVztBQUN2QixVQUFJQSxXQUFVLGlCQUFpQixPQUFPQSxNQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsY0FBYztBQUNyRSxnQkFBUUE7QUFBQSxNQUNWO0FBQUEsSUFDRixXQUNFQSxXQUFVLGlCQUNWLE9BQU9BLE1BQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxjQUMxQjtBQUNBLGFBQU8sS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPO0FBQ3hCLFVBQUlBLFdBQVUsUUFBUSxHQUFHO0FBQ3ZCLGVBQU8sS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLE9BQU9BLFNBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUM1QyxlQUFPLE9BQU8sUUFBUSxHQUFHQSxTQUFRLFFBQVEsQ0FBQztBQUMxQyx5QkFBaUJBLFNBQVEsUUFBUTtBQUNqQyxRQUFBQSxTQUFRLFFBQVE7QUFBQSxNQUNsQjtBQUNBLGNBQVE7QUFBQSxJQUNWO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDtBQU1BLFNBQVMsU0FBUyxNQUFNO0FBRXRCLFNBQ0UsU0FBUyxNQUNULEtBQUssT0FBTyxLQUFLLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVM7QUFFcEQ7QUFNQSxTQUFTLGlCQUFpQixTQUFTQyxLQUFJLEtBQUs7QUFDMUMsUUFBTUMsUUFBTztBQUNiLE1BQUksV0FBVztBQUVmLE1BQUk7QUFFSixNQUFJO0FBQ0osU0FBTztBQWNQLFdBQVMsTUFBTSxNQUFNO0FBQ25CLFlBQVEsTUFBTSxVQUFVO0FBQ3hCLFlBQVEsTUFBTSxrQkFBa0I7QUFDaEMsV0FBTyxhQUFhLElBQUk7QUFBQSxFQUMxQjtBQVlBLFdBQVMsYUFBYSxNQUFNO0FBQzFCLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEI7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUNBLFlBQVEsS0FBSyxrQkFBa0I7QUFDL0IsV0FBTyxRQUFRLElBQUk7QUFBQSxFQUNyQjtBQVlBLFdBQVMsUUFBUSxNQUFNO0FBRXJCLFFBQUksU0FBUyxNQUFNO0FBQ2pCLGFBQU8sSUFBSSxJQUFJO0FBQUEsSUFDakI7QUFLQSxRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsTUFBTSxPQUFPO0FBQ3JCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGNBQVEsS0FBSyxPQUFPO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBR0EsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsTUFBTSxrQkFBa0I7QUFDeEMsYUFBTztBQUNQLGFBQU8sY0FBYyxJQUFJO0FBQUEsSUFDM0I7QUFDQSxRQUFJLG1CQUFtQixJQUFJLEdBQUc7QUFDNUIsY0FBUSxNQUFNLFlBQVk7QUFDMUIsY0FBUSxRQUFRLElBQUk7QUFDcEIsY0FBUSxLQUFLLFlBQVk7QUFDekIsYUFBTztBQUFBLElBQ1Q7QUFHQSxZQUFRLE1BQU0sY0FBYztBQUM1QixXQUFPLEtBQUssSUFBSTtBQUFBLEVBQ2xCO0FBWUEsV0FBUyxLQUFLLE1BQU07QUFDbEIsUUFDRSxTQUFTLFFBQ1QsU0FBUyxNQUNULFNBQVMsTUFDVCxtQkFBbUIsSUFBSSxHQUN2QjtBQUNBLGNBQVEsS0FBSyxjQUFjO0FBQzNCLGFBQU8sUUFBUSxJQUFJO0FBQUEsSUFDckI7QUFDQSxZQUFRLFFBQVEsSUFBSTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQVlBLFdBQVMsY0FBYyxNQUFNO0FBRTNCLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEI7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUdBLFFBQUksU0FBUyxVQUFVO0FBQ3JCLGNBQVEsS0FBSyxrQkFBa0I7QUFDL0IsY0FBUSxLQUFLLFVBQVU7QUFDdkIsYUFBT0QsSUFBRyxJQUFJO0FBQUEsSUFDaEI7QUFHQSxVQUFNLE9BQU87QUFDYixXQUFPLEtBQUssSUFBSTtBQUFBLEVBQ2xCO0FBQ0Y7OztBQzdOTyxTQUFTLFlBQVksUUFBUTtBQUVsQyxRQUFNLFFBQVEsQ0FBQztBQUNmLE1BQUlFLFNBQVE7QUFFWixNQUFJO0FBRUosTUFBSTtBQUVKLE1BQUk7QUFFSixNQUFJO0FBRUosTUFBSTtBQUVKLE1BQUk7QUFFSixNQUFJO0FBQ0osU0FBTyxFQUFFQSxTQUFRLE9BQU8sUUFBUTtBQUM5QixXQUFPQSxVQUFTLE9BQU87QUFDckIsTUFBQUEsU0FBUSxNQUFNQSxNQUFLO0FBQUEsSUFDckI7QUFDQSxZQUFRLE9BQU9BLE1BQUs7QUFJcEIsUUFDRUEsVUFDQSxNQUFNLENBQUMsRUFBRSxTQUFTLGVBQ2xCLE9BQU9BLFNBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLGtCQUM5QjtBQUNBLGtCQUFZLE1BQU0sQ0FBQyxFQUFFLFdBQVc7QUFDaEMsbUJBQWE7QUFDYixVQUNFLGFBQWEsVUFBVSxVQUN2QixVQUFVLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxtQkFDbEM7QUFDQSxzQkFBYztBQUFBLE1BQ2hCO0FBQ0EsVUFDRSxhQUFhLFVBQVUsVUFDdkIsVUFBVSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsV0FDbEM7QUFDQSxlQUFPLEVBQUUsYUFBYSxVQUFVLFFBQVE7QUFDdEMsY0FBSSxVQUFVLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxXQUFXO0FBQy9DO0FBQUEsVUFDRjtBQUNBLGNBQUksVUFBVSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsYUFBYTtBQUNqRCxzQkFBVSxVQUFVLEVBQUUsQ0FBQyxFQUFFLDhCQUE4QjtBQUN2RDtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFHQSxRQUFJLE1BQU0sQ0FBQyxNQUFNLFNBQVM7QUFDeEIsVUFBSSxNQUFNLENBQUMsRUFBRSxhQUFhO0FBQ3hCLGVBQU8sT0FBTyxPQUFPLFdBQVcsUUFBUUEsTUFBSyxDQUFDO0FBQzlDLFFBQUFBLFNBQVEsTUFBTUEsTUFBSztBQUNuQixlQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0YsV0FFUyxNQUFNLENBQUMsRUFBRSxZQUFZO0FBQzVCLG1CQUFhQTtBQUNiLGtCQUFZO0FBQ1osYUFBTyxjQUFjO0FBQ25CLHFCQUFhLE9BQU8sVUFBVTtBQUM5QixZQUNFLFdBQVcsQ0FBQyxFQUFFLFNBQVMsZ0JBQ3ZCLFdBQVcsQ0FBQyxFQUFFLFNBQVMsbUJBQ3ZCO0FBQ0EsY0FBSSxXQUFXLENBQUMsTUFBTSxTQUFTO0FBQzdCLGdCQUFJLFdBQVc7QUFDYixxQkFBTyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU87QUFBQSxZQUM5QjtBQUNBLHVCQUFXLENBQUMsRUFBRSxPQUFPO0FBQ3JCLHdCQUFZO0FBQUEsVUFDZDtBQUFBLFFBQ0YsT0FBTztBQUNMO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFDQSxVQUFJLFdBQVc7QUFFYixjQUFNLENBQUMsRUFBRSxNQUFNLE9BQU8sT0FBTyxDQUFDLEdBQUcsT0FBTyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUs7QUFHM0QscUJBQWEsT0FBTyxNQUFNLFdBQVdBLE1BQUs7QUFDMUMsbUJBQVcsUUFBUSxLQUFLO0FBQ3hCLGVBQU8sUUFBUSxXQUFXQSxTQUFRLFlBQVksR0FBRyxVQUFVO0FBQUEsTUFDN0Q7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLFNBQU8sQ0FBQztBQUNWO0FBU0EsU0FBUyxXQUFXLFFBQVEsWUFBWTtBQUN0QyxRQUFNLFFBQVEsT0FBTyxVQUFVLEVBQUUsQ0FBQztBQUNsQyxRQUFNLFVBQVUsT0FBTyxVQUFVLEVBQUUsQ0FBQztBQUNwQyxNQUFJLGdCQUFnQixhQUFhO0FBRWpDLFFBQU0saUJBQWlCLENBQUM7QUFDeEIsUUFBTSxZQUNKLE1BQU0sY0FBYyxRQUFRLE9BQU8sTUFBTSxXQUFXLEVBQUUsTUFBTSxLQUFLO0FBQ25FLFFBQU0sY0FBYyxVQUFVO0FBRTlCLFFBQU0sUUFBUSxDQUFDO0FBRWYsUUFBTSxPQUFPLENBQUM7QUFFZCxNQUFJO0FBRUosTUFBSUM7QUFDSixNQUFJRCxTQUFRO0FBRVosTUFBSSxVQUFVO0FBQ2QsTUFBSSxTQUFTO0FBQ2IsTUFBSSxRQUFRO0FBQ1osUUFBTSxTQUFTLENBQUMsS0FBSztBQUlyQixTQUFPLFNBQVM7QUFFZCxXQUFPLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQyxNQUFNLFNBQVM7QUFBQSxJQUUvQztBQUNBLG1CQUFlLEtBQUssYUFBYTtBQUNqQyxRQUFJLENBQUMsUUFBUSxZQUFZO0FBQ3ZCLGVBQVMsUUFBUSxZQUFZLE9BQU87QUFDcEMsVUFBSSxDQUFDLFFBQVEsTUFBTTtBQUNqQixlQUFPLEtBQUssSUFBSTtBQUFBLE1BQ2xCO0FBQ0EsVUFBSUMsV0FBVTtBQUNaLGtCQUFVLFdBQVcsUUFBUSxLQUFLO0FBQUEsTUFDcEM7QUFDQSxVQUFJLFFBQVEsNkJBQTZCO0FBQ3ZDLGtCQUFVLHFDQUFxQztBQUFBLE1BQ2pEO0FBQ0EsZ0JBQVUsTUFBTSxNQUFNO0FBQ3RCLFVBQUksUUFBUSw2QkFBNkI7QUFDdkMsa0JBQVUscUNBQXFDO0FBQUEsTUFDakQ7QUFBQSxJQUNGO0FBR0EsSUFBQUEsWUFBVztBQUNYLGNBQVUsUUFBUTtBQUFBLEVBQ3BCO0FBSUEsWUFBVTtBQUNWLFNBQU8sRUFBRUQsU0FBUSxZQUFZLFFBQVE7QUFDbkM7QUFBQTtBQUFBLE1BRUUsWUFBWUEsTUFBSyxFQUFFLENBQUMsTUFBTSxVQUMxQixZQUFZQSxTQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sV0FDOUIsWUFBWUEsTUFBSyxFQUFFLENBQUMsRUFBRSxTQUFTLFlBQVlBLFNBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUN6RCxZQUFZQSxNQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sU0FBUyxZQUFZQSxNQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFBQSxNQUMvRDtBQUNBLGNBQVFBLFNBQVE7QUFDaEIsYUFBTyxLQUFLLEtBQUs7QUFFakIsY0FBUSxhQUFhO0FBQ3JCLGNBQVEsV0FBVztBQUNuQixnQkFBVSxRQUFRO0FBQUEsSUFDcEI7QUFBQSxFQUNGO0FBR0EsWUFBVSxTQUFTLENBQUM7QUFLcEIsTUFBSSxTQUFTO0FBRVgsWUFBUSxhQUFhO0FBQ3JCLFlBQVEsV0FBVztBQUFBLEVBQ3JCLE9BQU87QUFDTCxXQUFPLElBQUk7QUFBQSxFQUNiO0FBSUEsRUFBQUEsU0FBUSxPQUFPO0FBQ2YsU0FBT0EsVUFBUztBQUNkLFVBQU0sUUFBUSxZQUFZLE1BQU0sT0FBT0EsTUFBSyxHQUFHLE9BQU9BLFNBQVEsQ0FBQyxDQUFDO0FBQ2hFLFVBQU1FLFNBQVEsZUFBZSxJQUFJO0FBQ2pDLFVBQU0sUUFBUSxDQUFDQSxRQUFPQSxTQUFRLE1BQU0sU0FBUyxDQUFDLENBQUM7QUFDL0MsV0FBTyxRQUFRQSxRQUFPLEdBQUcsS0FBSztBQUFBLEVBQ2hDO0FBQ0EsRUFBQUYsU0FBUTtBQUNSLFNBQU8sRUFBRUEsU0FBUSxNQUFNLFFBQVE7QUFDN0IsU0FBSyxTQUFTLE1BQU1BLE1BQUssRUFBRSxDQUFDLENBQUMsSUFBSSxTQUFTLE1BQU1BLE1BQUssRUFBRSxDQUFDO0FBQ3hELGNBQVUsTUFBTUEsTUFBSyxFQUFFLENBQUMsSUFBSSxNQUFNQSxNQUFLLEVBQUUsQ0FBQyxJQUFJO0FBQUEsRUFDaEQ7QUFDQSxTQUFPO0FBQ1Q7OztBQy9NTyxJQUFNRyxXQUFVO0FBQUEsRUFDckIsVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUNYO0FBR0EsSUFBTSx3QkFBd0I7QUFBQSxFQUM1QixVQUFVO0FBQUEsRUFDVixTQUFTO0FBQ1g7QUFRQSxTQUFTLGVBQWUsUUFBUTtBQUM5QixjQUFZLE1BQU07QUFDbEIsU0FBTztBQUNUO0FBTUEsU0FBUyxnQkFBZ0IsU0FBU0MsS0FBSTtBQUVwQyxNQUFJQztBQUNKLFNBQU87QUFZUCxXQUFTLFdBQVcsTUFBTTtBQUN4QixZQUFRLE1BQU0sU0FBUztBQUN2QixJQUFBQSxZQUFXLFFBQVEsTUFBTSxnQkFBZ0I7QUFBQSxNQUN2QyxhQUFhO0FBQUEsSUFDZixDQUFDO0FBQ0QsV0FBTyxZQUFZLElBQUk7QUFBQSxFQUN6QjtBQVlBLFdBQVMsWUFBWSxNQUFNO0FBQ3pCLFFBQUksU0FBUyxNQUFNO0FBQ2pCLGFBQU8sV0FBVyxJQUFJO0FBQUEsSUFDeEI7QUFJQSxRQUFJLG1CQUFtQixJQUFJLEdBQUc7QUFDNUIsYUFBTyxRQUFRO0FBQUEsUUFDYjtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsTUFDRixFQUFFLElBQUk7QUFBQSxJQUNSO0FBR0EsWUFBUSxRQUFRLElBQUk7QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFPQSxXQUFTLFdBQVcsTUFBTTtBQUN4QixZQUFRLEtBQUssY0FBYztBQUMzQixZQUFRLEtBQUssU0FBUztBQUN0QixXQUFPRCxJQUFHLElBQUk7QUFBQSxFQUNoQjtBQU9BLFdBQVMsZ0JBQWdCLE1BQU07QUFDN0IsWUFBUSxRQUFRLElBQUk7QUFDcEIsWUFBUSxLQUFLLGNBQWM7QUFDM0IsSUFBQUMsVUFBUyxPQUFPLFFBQVEsTUFBTSxnQkFBZ0I7QUFBQSxNQUM1QyxhQUFhO0FBQUEsTUFDYixVQUFBQTtBQUFBLElBQ0YsQ0FBQztBQUNELElBQUFBLFlBQVdBLFVBQVM7QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQU1BLFNBQVMscUJBQXFCLFNBQVNELEtBQUksS0FBSztBQUM5QyxRQUFNRSxRQUFPO0FBQ2IsU0FBTztBQU9QLFdBQVMsZUFBZSxNQUFNO0FBQzVCLFlBQVEsS0FBSyxjQUFjO0FBQzNCLFlBQVEsTUFBTSxZQUFZO0FBQzFCLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFlBQVEsS0FBSyxZQUFZO0FBQ3pCLFdBQU8sYUFBYSxTQUFTLFVBQVUsWUFBWTtBQUFBLEVBQ3JEO0FBT0EsV0FBUyxTQUFTLE1BQU07QUFDdEIsUUFBSSxTQUFTLFFBQVEsbUJBQW1CLElBQUksR0FBRztBQUM3QyxhQUFPLElBQUksSUFBSTtBQUFBLElBQ2pCO0FBSUEsVUFBTSxPQUFPQSxNQUFLLE9BQU9BLE1BQUssT0FBTyxTQUFTLENBQUM7QUFDL0MsUUFDRSxDQUFDQSxNQUFLLE9BQU8sV0FBVyxRQUFRLEtBQUssU0FBUyxjQUFjLEtBQzVELFFBQ0EsS0FBSyxDQUFDLEVBQUUsU0FBUyxnQkFDakIsS0FBSyxDQUFDLEVBQUUsZUFBZSxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsVUFBVSxHQUNoRDtBQUNBLGFBQU9GLElBQUcsSUFBSTtBQUFBLElBQ2hCO0FBQ0EsV0FBTyxRQUFRLFVBQVVFLE1BQUssT0FBTyxXQUFXLE1BQU0sS0FBS0YsR0FBRSxFQUFFLElBQUk7QUFBQSxFQUNyRTtBQUNGOzs7QUN2SE8sU0FBUyxtQkFDZCxTQUNBRyxLQUNBLEtBQ0EsTUFDQSxhQUNBLG1CQUNBLFNBQ0EsWUFDQSxLQUNBO0FBQ0EsUUFBTSxRQUFRLE9BQU8sT0FBTztBQUM1QixNQUFJLFVBQVU7QUFDZCxTQUFPO0FBY1AsV0FBUyxNQUFNLE1BQU07QUFDbkIsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLE1BQU0sSUFBSTtBQUNsQixjQUFRLE1BQU0sV0FBVztBQUN6QixjQUFRLE1BQU0saUJBQWlCO0FBQy9CLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGNBQVEsS0FBSyxpQkFBaUI7QUFDOUIsYUFBTztBQUFBLElBQ1Q7QUFHQSxRQUFJLFNBQVMsUUFBUSxTQUFTLE1BQU0sU0FBUyxNQUFNLGFBQWEsSUFBSSxHQUFHO0FBQ3JFLGFBQU8sSUFBSSxJQUFJO0FBQUEsSUFDakI7QUFDQSxZQUFRLE1BQU0sSUFBSTtBQUNsQixZQUFRLE1BQU0sT0FBTztBQUNyQixZQUFRLE1BQU0sVUFBVTtBQUN4QixZQUFRLE1BQU0sZUFBZTtBQUFBLE1BQzNCLGFBQWE7QUFBQSxJQUNmLENBQUM7QUFDRCxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBWUEsV0FBUyxlQUFlLE1BQU07QUFDNUIsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLE1BQU0saUJBQWlCO0FBQy9CLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGNBQVEsS0FBSyxpQkFBaUI7QUFDOUIsY0FBUSxLQUFLLFdBQVc7QUFDeEIsY0FBUSxLQUFLLElBQUk7QUFDakIsYUFBT0E7QUFBQSxJQUNUO0FBQ0EsWUFBUSxNQUFNLFVBQVU7QUFDeEIsWUFBUSxNQUFNLGVBQWU7QUFBQSxNQUMzQixhQUFhO0FBQUEsSUFDZixDQUFDO0FBQ0QsV0FBTyxTQUFTLElBQUk7QUFBQSxFQUN0QjtBQVlBLFdBQVMsU0FBUyxNQUFNO0FBQ3RCLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxLQUFLLGFBQWE7QUFDMUIsY0FBUSxLQUFLLFVBQVU7QUFDdkIsYUFBTyxlQUFlLElBQUk7QUFBQSxJQUM1QjtBQUNBLFFBQUksU0FBUyxRQUFRLFNBQVMsTUFBTSxtQkFBbUIsSUFBSSxHQUFHO0FBQzVELGFBQU8sSUFBSSxJQUFJO0FBQUEsSUFDakI7QUFDQSxZQUFRLFFBQVEsSUFBSTtBQUNwQixXQUFPLFNBQVMsS0FBSyxpQkFBaUI7QUFBQSxFQUN4QztBQVlBLFdBQVMsZUFBZSxNQUFNO0FBQzVCLFFBQUksU0FBUyxNQUFNLFNBQVMsTUFBTSxTQUFTLElBQUk7QUFDN0MsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLFNBQVMsSUFBSTtBQUFBLEVBQ3RCO0FBWUEsV0FBUyxJQUFJLE1BQU07QUFDakIsUUFDRSxDQUFDLFlBQ0EsU0FBUyxRQUFRLFNBQVMsTUFBTSwwQkFBMEIsSUFBSSxJQUMvRDtBQUNBLGNBQVEsS0FBSyxhQUFhO0FBQzFCLGNBQVEsS0FBSyxVQUFVO0FBQ3ZCLGNBQVEsS0FBSyxPQUFPO0FBQ3BCLGNBQVEsS0FBSyxJQUFJO0FBQ2pCLGFBQU9BLElBQUcsSUFBSTtBQUFBLElBQ2hCO0FBQ0EsUUFBSSxVQUFVLFNBQVMsU0FBUyxJQUFJO0FBQ2xDLGNBQVEsUUFBUSxJQUFJO0FBQ3BCO0FBQ0EsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsUUFBUSxJQUFJO0FBQ3BCO0FBQ0EsYUFBTztBQUFBLElBQ1Q7QUFLQSxRQUFJLFNBQVMsUUFBUSxTQUFTLE1BQU0sU0FBUyxNQUFNLGFBQWEsSUFBSSxHQUFHO0FBQ3JFLGFBQU8sSUFBSSxJQUFJO0FBQUEsSUFDakI7QUFDQSxZQUFRLFFBQVEsSUFBSTtBQUNwQixXQUFPLFNBQVMsS0FBSyxZQUFZO0FBQUEsRUFDbkM7QUFZQSxXQUFTLFVBQVUsTUFBTTtBQUN2QixRQUFJLFNBQVMsTUFBTSxTQUFTLE1BQU0sU0FBUyxJQUFJO0FBQzdDLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQUNGOzs7QUN6TE8sU0FBUyxhQUFhLFNBQVNDLEtBQUksS0FBSyxNQUFNLFlBQVksWUFBWTtBQUMzRSxRQUFNQyxRQUFPO0FBQ2IsTUFBSSxPQUFPO0FBRVgsTUFBSTtBQUNKLFNBQU87QUFZUCxXQUFTLE1BQU0sTUFBTTtBQUNuQixZQUFRLE1BQU0sSUFBSTtBQUNsQixZQUFRLE1BQU0sVUFBVTtBQUN4QixZQUFRLFFBQVEsSUFBSTtBQUNwQixZQUFRLEtBQUssVUFBVTtBQUN2QixZQUFRLE1BQU0sVUFBVTtBQUN4QixXQUFPO0FBQUEsRUFDVDtBQVlBLFdBQVMsUUFBUSxNQUFNO0FBQ3JCLFFBQ0UsT0FBTyxPQUNQLFNBQVMsUUFDVCxTQUFTLE1BQ1IsU0FBUyxNQUFNLENBQUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBTWhCLFNBQVMsTUFDUixDQUFDLFFBQ0QsNEJBQTRCQSxNQUFLLE9BQU8sWUFDMUM7QUFDQSxhQUFPLElBQUksSUFBSTtBQUFBLElBQ2pCO0FBQ0EsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLEtBQUssVUFBVTtBQUN2QixjQUFRLE1BQU0sVUFBVTtBQUN4QixjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssVUFBVTtBQUN2QixjQUFRLEtBQUssSUFBSTtBQUNqQixhQUFPRDtBQUFBLElBQ1Q7QUFHQSxRQUFJLG1CQUFtQixJQUFJLEdBQUc7QUFDNUIsY0FBUSxNQUFNLFlBQVk7QUFDMUIsY0FBUSxRQUFRLElBQUk7QUFDcEIsY0FBUSxLQUFLLFlBQVk7QUFDekIsYUFBTztBQUFBLElBQ1Q7QUFDQSxZQUFRLE1BQU0sZUFBZTtBQUFBLE1BQzNCLGFBQWE7QUFBQSxJQUNmLENBQUM7QUFDRCxXQUFPLFlBQVksSUFBSTtBQUFBLEVBQ3pCO0FBWUEsV0FBUyxZQUFZLE1BQU07QUFDekIsUUFDRSxTQUFTLFFBQ1QsU0FBUyxNQUNULFNBQVMsTUFDVCxtQkFBbUIsSUFBSSxLQUN2QixTQUFTLEtBQ1Q7QUFDQSxjQUFRLEtBQUssYUFBYTtBQUMxQixhQUFPLFFBQVEsSUFBSTtBQUFBLElBQ3JCO0FBQ0EsWUFBUSxRQUFRLElBQUk7QUFDcEIsUUFBSSxDQUFDO0FBQU0sYUFBTyxDQUFDLGNBQWMsSUFBSTtBQUNyQyxXQUFPLFNBQVMsS0FBSyxjQUFjO0FBQUEsRUFDckM7QUFZQSxXQUFTLFlBQVksTUFBTTtBQUN6QixRQUFJLFNBQVMsTUFBTSxTQUFTLE1BQU0sU0FBUyxJQUFJO0FBQzdDLGNBQVEsUUFBUSxJQUFJO0FBQ3BCO0FBQ0EsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLFlBQVksSUFBSTtBQUFBLEVBQ3pCO0FBQ0Y7OztBQ3RITyxTQUFTLGFBQWEsU0FBU0UsS0FBSSxLQUFLLE1BQU0sWUFBWSxZQUFZO0FBRTNFLE1BQUk7QUFDSixTQUFPO0FBWVAsV0FBUyxNQUFNLE1BQU07QUFDbkIsUUFBSSxTQUFTLE1BQU0sU0FBUyxNQUFNLFNBQVMsSUFBSTtBQUM3QyxjQUFRLE1BQU0sSUFBSTtBQUNsQixjQUFRLE1BQU0sVUFBVTtBQUN4QixjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssVUFBVTtBQUN2QixlQUFTLFNBQVMsS0FBSyxLQUFLO0FBQzVCLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQWNBLFdBQVMsTUFBTSxNQUFNO0FBQ25CLFFBQUksU0FBUyxRQUFRO0FBQ25CLGNBQVEsTUFBTSxVQUFVO0FBQ3hCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGNBQVEsS0FBSyxVQUFVO0FBQ3ZCLGNBQVEsS0FBSyxJQUFJO0FBQ2pCLGFBQU9BO0FBQUEsSUFDVDtBQUNBLFlBQVEsTUFBTSxVQUFVO0FBQ3hCLFdBQU8sUUFBUSxJQUFJO0FBQUEsRUFDckI7QUFZQSxXQUFTLFFBQVEsTUFBTTtBQUNyQixRQUFJLFNBQVMsUUFBUTtBQUNuQixjQUFRLEtBQUssVUFBVTtBQUN2QixhQUFPLE1BQU0sTUFBTTtBQUFBLElBQ3JCO0FBQ0EsUUFBSSxTQUFTLE1BQU07QUFDakIsYUFBTyxJQUFJLElBQUk7QUFBQSxJQUNqQjtBQUdBLFFBQUksbUJBQW1CLElBQUksR0FBRztBQUU1QixjQUFRLE1BQU0sWUFBWTtBQUMxQixjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssWUFBWTtBQUN6QixhQUFPLGFBQWEsU0FBUyxTQUFTLFlBQVk7QUFBQSxJQUNwRDtBQUNBLFlBQVEsTUFBTSxlQUFlO0FBQUEsTUFDM0IsYUFBYTtBQUFBLElBQ2YsQ0FBQztBQUNELFdBQU8sT0FBTyxJQUFJO0FBQUEsRUFDcEI7QUFPQSxXQUFTLE9BQU8sTUFBTTtBQUNwQixRQUFJLFNBQVMsVUFBVSxTQUFTLFFBQVEsbUJBQW1CLElBQUksR0FBRztBQUNoRSxjQUFRLEtBQUssYUFBYTtBQUMxQixhQUFPLFFBQVEsSUFBSTtBQUFBLElBQ3JCO0FBQ0EsWUFBUSxRQUFRLElBQUk7QUFDcEIsV0FBTyxTQUFTLEtBQUssU0FBUztBQUFBLEVBQ2hDO0FBWUEsV0FBUyxPQUFPLE1BQU07QUFDcEIsUUFBSSxTQUFTLFVBQVUsU0FBUyxJQUFJO0FBQ2xDLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxPQUFPLElBQUk7QUFBQSxFQUNwQjtBQUNGOzs7QUNsSU8sU0FBUyxrQkFBa0IsU0FBU0MsS0FBSTtBQUU3QyxNQUFJO0FBQ0osU0FBTztBQUdQLFdBQVMsTUFBTSxNQUFNO0FBQ25CLFFBQUksbUJBQW1CLElBQUksR0FBRztBQUM1QixjQUFRLE1BQU0sWUFBWTtBQUMxQixjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssWUFBWTtBQUN6QixhQUFPO0FBQ1AsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLGNBQWMsSUFBSSxHQUFHO0FBQ3ZCLGFBQU87QUFBQSxRQUNMO0FBQUEsUUFDQTtBQUFBLFFBQ0EsT0FBTyxlQUFlO0FBQUEsTUFDeEIsRUFBRSxJQUFJO0FBQUEsSUFDUjtBQUNBLFdBQU9BLElBQUcsSUFBSTtBQUFBLEVBQ2hCO0FBQ0Y7OztBQzdCTyxTQUFTLG9CQUFvQixPQUFPO0FBQ3pDLFNBQ0UsTUFFRyxRQUFRLGVBQWUsR0FBRyxFQUUxQixRQUFRLFVBQVUsRUFBRSxFQU9wQixZQUFZLEVBQ1osWUFBWTtBQUVuQjs7O0FDaEJPLElBQU0sYUFBYTtBQUFBLEVBQ3hCLE1BQU07QUFBQSxFQUNOLFVBQVU7QUFDWjtBQUdBLElBQU0sY0FBYztBQUFBLEVBQ2xCLFVBQVU7QUFBQSxFQUNWLFNBQVM7QUFDWDtBQU1BLFNBQVMsbUJBQW1CLFNBQVNDLEtBQUksS0FBSztBQUM1QyxRQUFNQyxRQUFPO0FBRWIsTUFBSTtBQUNKLFNBQU87QUFZUCxXQUFTLE1BQU0sTUFBTTtBQUluQixZQUFRLE1BQU0sWUFBWTtBQUMxQixXQUFPLE9BQU8sSUFBSTtBQUFBLEVBQ3BCO0FBWUEsV0FBUyxPQUFPLE1BQU07QUFHcEIsV0FBTyxhQUFhO0FBQUEsTUFDbEJBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQTtBQUFBLE1BRUE7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLEVBQUUsSUFBSTtBQUFBLEVBQ1I7QUFZQSxXQUFTLFdBQVcsTUFBTTtBQUN4QixpQkFBYTtBQUFBLE1BQ1hBLE1BQUssZUFBZUEsTUFBSyxPQUFPQSxNQUFLLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHLEVBQUU7QUFBQSxJQUN6RTtBQUNBLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxNQUFNLGtCQUFrQjtBQUNoQyxjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssa0JBQWtCO0FBQy9CLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQVlBLFdBQVMsWUFBWSxNQUFNO0FBRXpCLFdBQU8sMEJBQTBCLElBQUksSUFDakMsa0JBQWtCLFNBQVMsaUJBQWlCLEVBQUUsSUFBSSxJQUNsRCxrQkFBa0IsSUFBSTtBQUFBLEVBQzVCO0FBWUEsV0FBUyxrQkFBa0IsTUFBTTtBQUMvQixXQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0E7QUFBQTtBQUFBLE1BRUE7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsRUFBRSxJQUFJO0FBQUEsRUFDUjtBQVlBLFdBQVMsaUJBQWlCLE1BQU07QUFDOUIsV0FBTyxRQUFRLFFBQVEsYUFBYSxPQUFPLEtBQUssRUFBRSxJQUFJO0FBQUEsRUFDeEQ7QUFjQSxXQUFTLE1BQU0sTUFBTTtBQUNuQixXQUFPLGNBQWMsSUFBSSxJQUNyQixhQUFhLFNBQVMsaUJBQWlCLFlBQVksRUFBRSxJQUFJLElBQ3pELGdCQUFnQixJQUFJO0FBQUEsRUFDMUI7QUFjQSxXQUFTLGdCQUFnQixNQUFNO0FBQzdCLFFBQUksU0FBUyxRQUFRLG1CQUFtQixJQUFJLEdBQUc7QUFDN0MsY0FBUSxLQUFLLFlBQVk7QUFLekIsTUFBQUEsTUFBSyxPQUFPLFFBQVEsS0FBSyxVQUFVO0FBS25DLGFBQU9ELElBQUcsSUFBSTtBQUFBLElBQ2hCO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQUNGO0FBTUEsU0FBUyxvQkFBb0IsU0FBU0EsS0FBSSxLQUFLO0FBQzdDLFNBQU9FO0FBY1AsV0FBU0EsYUFBWSxNQUFNO0FBQ3pCLFdBQU8sMEJBQTBCLElBQUksSUFDakMsa0JBQWtCLFNBQVMsWUFBWSxFQUFFLElBQUksSUFDN0MsSUFBSSxJQUFJO0FBQUEsRUFDZDtBQWFBLFdBQVMsYUFBYSxNQUFNO0FBQzFCLFdBQU87QUFBQSxNQUNMO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGLEVBQUUsSUFBSTtBQUFBLEVBQ1I7QUFZQSxXQUFTLFdBQVcsTUFBTTtBQUN4QixXQUFPLGNBQWMsSUFBSSxJQUNyQixhQUFhLFNBQVMsOEJBQThCLFlBQVksRUFBRSxJQUFJLElBQ3RFLDZCQUE2QixJQUFJO0FBQUEsRUFDdkM7QUFZQSxXQUFTLDZCQUE2QixNQUFNO0FBQzFDLFdBQU8sU0FBUyxRQUFRLG1CQUFtQixJQUFJLElBQUlGLElBQUcsSUFBSSxJQUFJLElBQUksSUFBSTtBQUFBLEVBQ3hFO0FBQ0Y7OztBQ3BSTyxJQUFNLGtCQUFrQjtBQUFBLEVBQzdCLE1BQU07QUFBQSxFQUNOLFVBQVU7QUFDWjtBQU1BLFNBQVMsd0JBQXdCLFNBQVNHLEtBQUksS0FBSztBQUNqRCxTQUFPO0FBYVAsV0FBUyxNQUFNLE1BQU07QUFDbkIsWUFBUSxNQUFNLGlCQUFpQjtBQUMvQixZQUFRLFFBQVEsSUFBSTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQWFBLFdBQVMsTUFBTSxNQUFNO0FBQ25CLFFBQUksbUJBQW1CLElBQUksR0FBRztBQUM1QixjQUFRLEtBQUssaUJBQWlCO0FBQzlCLGFBQU9BLElBQUcsSUFBSTtBQUFBLElBQ2hCO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQUNGOzs7QUN2Q08sSUFBTSxhQUFhO0FBQUEsRUFDeEIsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUNYO0FBR0EsU0FBUyxrQkFBa0IsUUFBUSxTQUFTO0FBQzFDLE1BQUksYUFBYSxPQUFPLFNBQVM7QUFDakMsTUFBSSxlQUFlO0FBRW5CLE1BQUlDO0FBRUosTUFBSUM7QUFHSixNQUFJLE9BQU8sWUFBWSxFQUFFLENBQUMsRUFBRSxTQUFTLGNBQWM7QUFDakQsb0JBQWdCO0FBQUEsRUFDbEI7QUFHQSxNQUNFLGFBQWEsSUFBSSxnQkFDakIsT0FBTyxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsY0FDL0I7QUFDQSxrQkFBYztBQUFBLEVBQ2hCO0FBQ0EsTUFDRSxPQUFPLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyx5QkFDOUIsaUJBQWlCLGFBQWEsS0FDNUIsYUFBYSxJQUFJLGdCQUNoQixPQUFPLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLGVBQ3ZDO0FBQ0Esa0JBQWMsZUFBZSxNQUFNLGFBQWEsSUFBSTtBQUFBLEVBQ3REO0FBQ0EsTUFBSSxhQUFhLGNBQWM7QUFDN0IsSUFBQUQsV0FBVTtBQUFBLE1BQ1IsTUFBTTtBQUFBLE1BQ04sT0FBTyxPQUFPLFlBQVksRUFBRSxDQUFDLEVBQUU7QUFBQSxNQUMvQixLQUFLLE9BQU8sVUFBVSxFQUFFLENBQUMsRUFBRTtBQUFBLElBQzdCO0FBQ0EsSUFBQUMsUUFBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sT0FBTyxPQUFPLFlBQVksRUFBRSxDQUFDLEVBQUU7QUFBQSxNQUMvQixLQUFLLE9BQU8sVUFBVSxFQUFFLENBQUMsRUFBRTtBQUFBLE1BQzNCLGFBQWE7QUFBQSxJQUNmO0FBQ0EsV0FBTyxRQUFRLGNBQWMsYUFBYSxlQUFlLEdBQUc7QUFBQSxNQUMxRCxDQUFDLFNBQVNELFVBQVMsT0FBTztBQUFBLE1BQzFCLENBQUMsU0FBU0MsT0FBTSxPQUFPO0FBQUEsTUFDdkIsQ0FBQyxRQUFRQSxPQUFNLE9BQU87QUFBQSxNQUN0QixDQUFDLFFBQVFELFVBQVMsT0FBTztBQUFBLElBQzNCLENBQUM7QUFBQSxFQUNIO0FBQ0EsU0FBTztBQUNUO0FBTUEsU0FBUyxtQkFBbUIsU0FBU0UsS0FBSSxLQUFLO0FBQzVDLE1BQUksT0FBTztBQUNYLFNBQU87QUFZUCxXQUFTLE1BQU0sTUFBTTtBQUVuQixZQUFRLE1BQU0sWUFBWTtBQUMxQixXQUFPLE9BQU8sSUFBSTtBQUFBLEVBQ3BCO0FBWUEsV0FBUyxPQUFPLE1BQU07QUFDcEIsWUFBUSxNQUFNLG9CQUFvQjtBQUNsQyxXQUFPLGFBQWEsSUFBSTtBQUFBLEVBQzFCO0FBWUEsV0FBUyxhQUFhLE1BQU07QUFDMUIsUUFBSSxTQUFTLE1BQU0sU0FBUyxHQUFHO0FBQzdCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBR0EsUUFBSSxTQUFTLFFBQVEsMEJBQTBCLElBQUksR0FBRztBQUNwRCxjQUFRLEtBQUssb0JBQW9CO0FBQ2pDLGFBQU8sUUFBUSxJQUFJO0FBQUEsSUFDckI7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBWUEsV0FBUyxRQUFRLE1BQU07QUFDckIsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLE1BQU0sb0JBQW9CO0FBQ2xDLGFBQU8sZ0JBQWdCLElBQUk7QUFBQSxJQUM3QjtBQUNBLFFBQUksU0FBUyxRQUFRLG1CQUFtQixJQUFJLEdBQUc7QUFDN0MsY0FBUSxLQUFLLFlBQVk7QUFJekIsYUFBT0EsSUFBRyxJQUFJO0FBQUEsSUFDaEI7QUFDQSxRQUFJLGNBQWMsSUFBSSxHQUFHO0FBQ3ZCLGFBQU8sYUFBYSxTQUFTLFNBQVMsWUFBWSxFQUFFLElBQUk7QUFBQSxJQUMxRDtBQUlBLFlBQVEsTUFBTSxnQkFBZ0I7QUFDOUIsV0FBTyxLQUFLLElBQUk7QUFBQSxFQUNsQjtBQWNBLFdBQVMsZ0JBQWdCLE1BQU07QUFDN0IsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFlBQVEsS0FBSyxvQkFBb0I7QUFDakMsV0FBTyxRQUFRLElBQUk7QUFBQSxFQUNyQjtBQVlBLFdBQVMsS0FBSyxNQUFNO0FBQ2xCLFFBQUksU0FBUyxRQUFRLFNBQVMsTUFBTSwwQkFBMEIsSUFBSSxHQUFHO0FBQ25FLGNBQVEsS0FBSyxnQkFBZ0I7QUFDN0IsYUFBTyxRQUFRLElBQUk7QUFBQSxJQUNyQjtBQUNBLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBQ0Y7OztBQ2pNTyxJQUFNLGlCQUFpQjtBQUFBLEVBQzVCO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGO0FBY08sSUFBTSxlQUFlLENBQUMsT0FBTyxVQUFVLFNBQVMsVUFBVTs7O0FDeEUxRCxJQUFNLFdBQVc7QUFBQSxFQUN0QixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxVQUFVO0FBQ1o7QUFHQSxJQUFNLGtCQUFrQjtBQUFBLEVBQ3RCLFVBQVU7QUFBQSxFQUNWLFNBQVM7QUFDWDtBQUNBLElBQU0sMkJBQTJCO0FBQUEsRUFDL0IsVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUNYO0FBR0EsU0FBUyxrQkFBa0IsUUFBUTtBQUNqQyxNQUFJQyxTQUFRLE9BQU87QUFDbkIsU0FBT0EsVUFBUztBQUNkLFFBQUksT0FBT0EsTUFBSyxFQUFFLENBQUMsTUFBTSxXQUFXLE9BQU9BLE1BQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxZQUFZO0FBQ3hFO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxNQUFJQSxTQUFRLEtBQUssT0FBT0EsU0FBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsY0FBYztBQUUzRCxXQUFPQSxNQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsT0FBT0EsU0FBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBRTlDLFdBQU9BLFNBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLE9BQU9BLFNBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUVsRCxXQUFPLE9BQU9BLFNBQVEsR0FBRyxDQUFDO0FBQUEsRUFDNUI7QUFDQSxTQUFPO0FBQ1Q7QUFNQSxTQUFTLGlCQUFpQixTQUFTQyxLQUFJLEtBQUs7QUFDMUMsUUFBTUMsUUFBTztBQUViLE1BQUk7QUFFSixNQUFJO0FBRUosTUFBSUM7QUFFSixNQUFJSDtBQUVKLE1BQUk7QUFDSixTQUFPO0FBWVAsV0FBUyxNQUFNLE1BQU07QUFFbkIsV0FBTyxPQUFPLElBQUk7QUFBQSxFQUNwQjtBQVlBLFdBQVMsT0FBTyxNQUFNO0FBQ3BCLFlBQVEsTUFBTSxVQUFVO0FBQ3hCLFlBQVEsTUFBTSxjQUFjO0FBQzVCLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBZ0JBLFdBQVMsS0FBSyxNQUFNO0FBQ2xCLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLG1CQUFhO0FBQ2IsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGVBQVM7QUFNVCxhQUFPRSxNQUFLLFlBQVlELE1BQUs7QUFBQSxJQUMvQjtBQUdBLFFBQUksV0FBVyxJQUFJLEdBQUc7QUFDcEIsY0FBUSxRQUFRLElBQUk7QUFFcEIsTUFBQUUsVUFBUyxPQUFPLGFBQWEsSUFBSTtBQUNqQyxhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFnQkEsV0FBUyxnQkFBZ0IsTUFBTTtBQUM3QixRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGVBQVM7QUFDVCxhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEIsZUFBUztBQUNULE1BQUFILFNBQVE7QUFDUixhQUFPO0FBQUEsSUFDVDtBQUdBLFFBQUksV0FBVyxJQUFJLEdBQUc7QUFDcEIsY0FBUSxRQUFRLElBQUk7QUFDcEIsZUFBUztBQUdULGFBQU9FLE1BQUssWUFBWUQsTUFBSztBQUFBLElBQy9CO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQVlBLFdBQVMsa0JBQWtCLE1BQU07QUFDL0IsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUdwQixhQUFPQyxNQUFLLFlBQVlELE1BQUs7QUFBQSxJQUMvQjtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFZQSxXQUFTLGdCQUFnQixNQUFNO0FBQzdCLFVBQU0sUUFBUTtBQUNkLFFBQUksU0FBUyxNQUFNLFdBQVdELFFBQU8sR0FBRztBQUN0QyxjQUFRLFFBQVEsSUFBSTtBQUNwQixVQUFJQSxXQUFVLE1BQU0sUUFBUTtBQUcxQixlQUFPRSxNQUFLLFlBQVlELE1BQUs7QUFBQSxNQUMvQjtBQUNBLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQVlBLFdBQVMsY0FBYyxNQUFNO0FBQzNCLFFBQUksV0FBVyxJQUFJLEdBQUc7QUFDcEIsY0FBUSxRQUFRLElBQUk7QUFFcEIsTUFBQUUsVUFBUyxPQUFPLGFBQWEsSUFBSTtBQUNqQyxhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFjQSxXQUFTLFFBQVEsTUFBTTtBQUNyQixRQUNFLFNBQVMsUUFDVCxTQUFTLE1BQ1QsU0FBUyxNQUNULDBCQUEwQixJQUFJLEdBQzlCO0FBQ0EsWUFBTSxRQUFRLFNBQVM7QUFDdkIsWUFBTSxPQUFPQSxRQUFPLFlBQVk7QUFDaEMsVUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLGFBQWEsU0FBUyxJQUFJLEdBQUc7QUFDeEQsaUJBQVM7QUFHVCxlQUFPRCxNQUFLLFlBQVlELElBQUcsSUFBSSxJQUFJLGFBQWEsSUFBSTtBQUFBLE1BQ3REO0FBQ0EsVUFBSSxlQUFlLFNBQVNFLFFBQU8sWUFBWSxDQUFDLEdBQUc7QUFDakQsaUJBQVM7QUFDVCxZQUFJLE9BQU87QUFDVCxrQkFBUSxRQUFRLElBQUk7QUFDcEIsaUJBQU87QUFBQSxRQUNUO0FBSUEsZUFBT0QsTUFBSyxZQUFZRCxJQUFHLElBQUksSUFBSSxhQUFhLElBQUk7QUFBQSxNQUN0RDtBQUNBLGVBQVM7QUFFVCxhQUFPQyxNQUFLLGFBQWEsQ0FBQ0EsTUFBSyxPQUFPLEtBQUtBLE1BQUssSUFBSSxFQUFFLElBQUksSUFDdEQsSUFBSSxJQUFJLElBQ1IsYUFDQSx3QkFBd0IsSUFBSSxJQUM1Qiw0QkFBNEIsSUFBSTtBQUFBLElBQ3RDO0FBR0EsUUFBSSxTQUFTLE1BQU0sa0JBQWtCLElBQUksR0FBRztBQUMxQyxjQUFRLFFBQVEsSUFBSTtBQUNwQixNQUFBQyxXQUFVLE9BQU8sYUFBYSxJQUFJO0FBQ2xDLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQVlBLFdBQVMsaUJBQWlCLE1BQU07QUFDOUIsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUdwQixhQUFPRCxNQUFLLFlBQVlELE1BQUs7QUFBQSxJQUMvQjtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFZQSxXQUFTLHdCQUF3QixNQUFNO0FBQ3JDLFFBQUksY0FBYyxJQUFJLEdBQUc7QUFDdkIsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLFlBQVksSUFBSTtBQUFBLEVBQ3pCO0FBeUJBLFdBQVMsNEJBQTRCLE1BQU07QUFDekMsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUdBLFFBQUksU0FBUyxNQUFNLFNBQVMsTUFBTSxXQUFXLElBQUksR0FBRztBQUNsRCxjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksY0FBYyxJQUFJLEdBQUc7QUFDdkIsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLFlBQVksSUFBSTtBQUFBLEVBQ3pCO0FBZ0JBLFdBQVMsc0JBQXNCLE1BQU07QUFFbkMsUUFDRSxTQUFTLE1BQ1QsU0FBUyxNQUNULFNBQVMsTUFDVCxTQUFTLE1BQ1Qsa0JBQWtCLElBQUksR0FDdEI7QUFDQSxjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sMkJBQTJCLElBQUk7QUFBQSxFQUN4QztBQWVBLFdBQVMsMkJBQTJCLE1BQU07QUFDeEMsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksY0FBYyxJQUFJLEdBQUc7QUFDdkIsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLDRCQUE0QixJQUFJO0FBQUEsRUFDekM7QUFlQSxXQUFTLDZCQUE2QixNQUFNO0FBQzFDLFFBQ0UsU0FBUyxRQUNULFNBQVMsTUFDVCxTQUFTLE1BQ1QsU0FBUyxNQUNULFNBQVMsSUFDVDtBQUNBLGFBQU8sSUFBSSxJQUFJO0FBQUEsSUFDakI7QUFDQSxRQUFJLFNBQVMsTUFBTSxTQUFTLElBQUk7QUFDOUIsY0FBUSxRQUFRLElBQUk7QUFDcEIsZ0JBQVU7QUFDVixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksY0FBYyxJQUFJLEdBQUc7QUFDdkIsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLCtCQUErQixJQUFJO0FBQUEsRUFDNUM7QUFjQSxXQUFTLDZCQUE2QixNQUFNO0FBQzFDLFFBQUksU0FBUyxTQUFTO0FBQ3BCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGdCQUFVO0FBQ1YsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLFNBQVMsUUFBUSxtQkFBbUIsSUFBSSxHQUFHO0FBQzdDLGFBQU8sSUFBSSxJQUFJO0FBQUEsSUFDakI7QUFDQSxZQUFRLFFBQVEsSUFBSTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQVlBLFdBQVMsK0JBQStCLE1BQU07QUFDNUMsUUFDRSxTQUFTLFFBQ1QsU0FBUyxNQUNULFNBQVMsTUFDVCxTQUFTLE1BQ1QsU0FBUyxNQUNULFNBQVMsTUFDVCxTQUFTLE1BQ1QsU0FBUyxNQUNULDBCQUEwQixJQUFJLEdBQzlCO0FBQ0EsYUFBTywyQkFBMkIsSUFBSTtBQUFBLElBQ3hDO0FBQ0EsWUFBUSxRQUFRLElBQUk7QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFhQSxXQUFTLGtDQUFrQyxNQUFNO0FBQy9DLFFBQUksU0FBUyxNQUFNLFNBQVMsTUFBTSxjQUFjLElBQUksR0FBRztBQUNyRCxhQUFPLDRCQUE0QixJQUFJO0FBQUEsSUFDekM7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBWUEsV0FBUyxZQUFZLE1BQU07QUFDekIsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFZQSxXQUFTLGNBQWMsTUFBTTtBQUMzQixRQUFJLFNBQVMsUUFBUSxtQkFBbUIsSUFBSSxHQUFHO0FBRzdDLGFBQU8sYUFBYSxJQUFJO0FBQUEsSUFDMUI7QUFDQSxRQUFJLGNBQWMsSUFBSSxHQUFHO0FBQ3ZCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQVlBLFdBQVMsYUFBYSxNQUFNO0FBQzFCLFFBQUksU0FBUyxNQUFNLFdBQVcsR0FBRztBQUMvQixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksU0FBUyxNQUFNLFdBQVcsR0FBRztBQUMvQixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksU0FBUyxNQUFNLFdBQVcsR0FBRztBQUMvQixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksU0FBUyxNQUFNLFdBQVcsR0FBRztBQUMvQixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksU0FBUyxNQUFNLFdBQVcsR0FBRztBQUMvQixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksbUJBQW1CLElBQUksTUFBTSxXQUFXLEtBQUssV0FBVyxJQUFJO0FBQzlELGNBQVEsS0FBSyxjQUFjO0FBQzNCLGFBQU8sUUFBUTtBQUFBLFFBQ2I7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0YsRUFBRSxJQUFJO0FBQUEsSUFDUjtBQUNBLFFBQUksU0FBUyxRQUFRLG1CQUFtQixJQUFJLEdBQUc7QUFDN0MsY0FBUSxLQUFLLGNBQWM7QUFDM0IsYUFBTyxrQkFBa0IsSUFBSTtBQUFBLElBQy9CO0FBQ0EsWUFBUSxRQUFRLElBQUk7QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFhQSxXQUFTLGtCQUFrQixNQUFNO0FBQy9CLFdBQU8sUUFBUTtBQUFBLE1BQ2I7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLElBQ0YsRUFBRSxJQUFJO0FBQUEsRUFDUjtBQWFBLFdBQVMseUJBQXlCLE1BQU07QUFDdEMsWUFBUSxNQUFNLFlBQVk7QUFDMUIsWUFBUSxRQUFRLElBQUk7QUFDcEIsWUFBUSxLQUFLLFlBQVk7QUFDekIsV0FBTztBQUFBLEVBQ1Q7QUFhQSxXQUFTLG1CQUFtQixNQUFNO0FBQ2hDLFFBQUksU0FBUyxRQUFRLG1CQUFtQixJQUFJLEdBQUc7QUFDN0MsYUFBTyxrQkFBa0IsSUFBSTtBQUFBLElBQy9CO0FBQ0EsWUFBUSxNQUFNLGNBQWM7QUFDNUIsV0FBTyxhQUFhLElBQUk7QUFBQSxFQUMxQjtBQVlBLFdBQVMsMEJBQTBCLE1BQU07QUFDdkMsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sYUFBYSxJQUFJO0FBQUEsRUFDMUI7QUFZQSxXQUFTLHVCQUF1QixNQUFNO0FBQ3BDLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEIsTUFBQUUsVUFBUztBQUNULGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxhQUFhLElBQUk7QUFBQSxFQUMxQjtBQVlBLFdBQVMsc0JBQXNCLE1BQU07QUFDbkMsUUFBSSxTQUFTLElBQUk7QUFDZixZQUFNLE9BQU9BLFFBQU8sWUFBWTtBQUNoQyxVQUFJLGFBQWEsU0FBUyxJQUFJLEdBQUc7QUFDL0IsZ0JBQVEsUUFBUSxJQUFJO0FBQ3BCLGVBQU87QUFBQSxNQUNUO0FBQ0EsYUFBTyxhQUFhLElBQUk7QUFBQSxJQUMxQjtBQUNBLFFBQUksV0FBVyxJQUFJLEtBQUtBLFFBQU8sU0FBUyxHQUFHO0FBQ3pDLGNBQVEsUUFBUSxJQUFJO0FBRXBCLE1BQUFBLFdBQVUsT0FBTyxhQUFhLElBQUk7QUFDbEMsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLGFBQWEsSUFBSTtBQUFBLEVBQzFCO0FBWUEsV0FBUyx3QkFBd0IsTUFBTTtBQUNyQyxRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxhQUFhLElBQUk7QUFBQSxFQUMxQjtBQW9CQSxXQUFTLDhCQUE4QixNQUFNO0FBQzNDLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFHQSxRQUFJLFNBQVMsTUFBTSxXQUFXLEdBQUc7QUFDL0IsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLGFBQWEsSUFBSTtBQUFBLEVBQzFCO0FBWUEsV0FBUyxrQkFBa0IsTUFBTTtBQUMvQixRQUFJLFNBQVMsUUFBUSxtQkFBbUIsSUFBSSxHQUFHO0FBQzdDLGNBQVEsS0FBSyxjQUFjO0FBQzNCLGFBQU8sa0JBQWtCLElBQUk7QUFBQSxJQUMvQjtBQUNBLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBWUEsV0FBUyxrQkFBa0IsTUFBTTtBQUMvQixZQUFRLEtBQUssVUFBVTtBQUt2QixXQUFPRixJQUFHLElBQUk7QUFBQSxFQUNoQjtBQUNGO0FBTUEsU0FBUyxpQ0FBaUMsU0FBU0EsS0FBSSxLQUFLO0FBQzFELFFBQU1DLFFBQU87QUFDYixTQUFPO0FBYVAsV0FBUyxNQUFNLE1BQU07QUFDbkIsUUFBSSxtQkFBbUIsSUFBSSxHQUFHO0FBQzVCLGNBQVEsTUFBTSxZQUFZO0FBQzFCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGNBQVEsS0FBSyxZQUFZO0FBQ3pCLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQWFBLFdBQVMsTUFBTSxNQUFNO0FBQ25CLFdBQU9BLE1BQUssT0FBTyxLQUFLQSxNQUFLLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLElBQUlELElBQUcsSUFBSTtBQUFBLEVBQ2hFO0FBQ0Y7QUFNQSxTQUFTLHdCQUF3QixTQUFTQSxLQUFJLEtBQUs7QUFDakQsU0FBTztBQWFQLFdBQVMsTUFBTSxNQUFNO0FBQ25CLFlBQVEsTUFBTSxZQUFZO0FBQzFCLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFlBQVEsS0FBSyxZQUFZO0FBQ3pCLFdBQU8sUUFBUSxRQUFRLFdBQVdBLEtBQUksR0FBRztBQUFBLEVBQzNDO0FBQ0Y7OztBQ2w0Qk8sSUFBTSxXQUFXO0FBQUEsRUFDdEIsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUNaO0FBTUEsU0FBUyxpQkFBaUIsU0FBU0csS0FBSSxLQUFLO0FBQzFDLFFBQU1DLFFBQU87QUFFYixNQUFJO0FBRUosTUFBSUM7QUFFSixNQUFJO0FBQ0osU0FBTztBQVlQLFdBQVMsTUFBTSxNQUFNO0FBQ25CLFlBQVEsTUFBTSxVQUFVO0FBQ3hCLFlBQVEsTUFBTSxjQUFjO0FBQzVCLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBZ0JBLFdBQVMsS0FBSyxNQUFNO0FBQ2xCLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUdBLFFBQUksV0FBVyxJQUFJLEdBQUc7QUFDcEIsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBZ0JBLFdBQVMsZ0JBQWdCLE1BQU07QUFDN0IsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEIsTUFBQUEsU0FBUTtBQUNSLGFBQU87QUFBQSxJQUNUO0FBQ0EsUUFBSSxXQUFXLElBQUksR0FBRztBQUNwQixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFZQSxXQUFTLGtCQUFrQixNQUFNO0FBQy9CLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBWUEsV0FBUyxRQUFRLE1BQU07QUFDckIsUUFBSSxTQUFTLE1BQU07QUFDakIsYUFBTyxJQUFJLElBQUk7QUFBQSxJQUNqQjtBQUNBLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLG1CQUFtQixJQUFJLEdBQUc7QUFDNUIsb0JBQWM7QUFDZCxhQUFPLGlCQUFpQixJQUFJO0FBQUEsSUFDOUI7QUFDQSxZQUFRLFFBQVEsSUFBSTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQVlBLFdBQVMsYUFBYSxNQUFNO0FBQzFCLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLFFBQVEsSUFBSTtBQUFBLEVBQ3JCO0FBWUEsV0FBUyxXQUFXLE1BQU07QUFDeEIsV0FBTyxTQUFTLEtBQ1osSUFBSSxJQUFJLElBQ1IsU0FBUyxLQUNULGFBQWEsSUFBSSxJQUNqQixRQUFRLElBQUk7QUFBQSxFQUNsQjtBQVlBLFdBQVMsZ0JBQWdCLE1BQU07QUFDN0IsVUFBTSxRQUFRO0FBQ2QsUUFBSSxTQUFTLE1BQU0sV0FBV0EsUUFBTyxHQUFHO0FBQ3RDLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU9BLFdBQVUsTUFBTSxTQUFTLFFBQVE7QUFBQSxJQUMxQztBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFZQSxXQUFTLE1BQU0sTUFBTTtBQUNuQixRQUFJLFNBQVMsTUFBTTtBQUNqQixhQUFPLElBQUksSUFBSTtBQUFBLElBQ2pCO0FBQ0EsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksbUJBQW1CLElBQUksR0FBRztBQUM1QixvQkFBYztBQUNkLGFBQU8saUJBQWlCLElBQUk7QUFBQSxJQUM5QjtBQUNBLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBWUEsV0FBUyxXQUFXLE1BQU07QUFDeEIsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sTUFBTSxJQUFJO0FBQUEsRUFDbkI7QUFZQSxXQUFTLFNBQVMsTUFBTTtBQUN0QixRQUFJLFNBQVMsSUFBSTtBQUNmLGFBQU8sSUFBSSxJQUFJO0FBQUEsSUFDakI7QUFDQSxRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxNQUFNLElBQUk7QUFBQSxFQUNuQjtBQVlBLFdBQVMsWUFBWSxNQUFNO0FBQ3pCLFFBQUksU0FBUyxRQUFRLFNBQVMsSUFBSTtBQUNoQyxhQUFPLElBQUksSUFBSTtBQUFBLElBQ2pCO0FBQ0EsUUFBSSxtQkFBbUIsSUFBSSxHQUFHO0FBQzVCLG9CQUFjO0FBQ2QsYUFBTyxpQkFBaUIsSUFBSTtBQUFBLElBQzlCO0FBQ0EsWUFBUSxRQUFRLElBQUk7QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFZQSxXQUFTLFlBQVksTUFBTTtBQUN6QixRQUFJLFNBQVMsTUFBTTtBQUNqQixhQUFPLElBQUksSUFBSTtBQUFBLElBQ2pCO0FBQ0EsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksbUJBQW1CLElBQUksR0FBRztBQUM1QixvQkFBYztBQUNkLGFBQU8saUJBQWlCLElBQUk7QUFBQSxJQUM5QjtBQUNBLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFdBQU87QUFBQSxFQUNUO0FBWUEsV0FBUyxpQkFBaUIsTUFBTTtBQUM5QixXQUFPLFNBQVMsS0FBSyxJQUFJLElBQUksSUFBSSxZQUFZLElBQUk7QUFBQSxFQUNuRDtBQVlBLFdBQVMsY0FBYyxNQUFNO0FBRTNCLFFBQUksV0FBVyxJQUFJLEdBQUc7QUFDcEIsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBWUEsV0FBUyxTQUFTLE1BQU07QUFFdEIsUUFBSSxTQUFTLE1BQU0sa0JBQWtCLElBQUksR0FBRztBQUMxQyxjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sZ0JBQWdCLElBQUk7QUFBQSxFQUM3QjtBQVlBLFdBQVMsZ0JBQWdCLE1BQU07QUFDN0IsUUFBSSxtQkFBbUIsSUFBSSxHQUFHO0FBQzVCLG9CQUFjO0FBQ2QsYUFBTyxpQkFBaUIsSUFBSTtBQUFBLElBQzlCO0FBQ0EsUUFBSSxjQUFjLElBQUksR0FBRztBQUN2QixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFZQSxXQUFTLFFBQVEsTUFBTTtBQUVyQixRQUFJLFNBQVMsTUFBTSxrQkFBa0IsSUFBSSxHQUFHO0FBQzFDLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsUUFBSSxTQUFTLE1BQU0sU0FBUyxNQUFNLDBCQUEwQixJQUFJLEdBQUc7QUFDakUsYUFBTyxlQUFlLElBQUk7QUFBQSxJQUM1QjtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFZQSxXQUFTLGVBQWUsTUFBTTtBQUM1QixRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBR0EsUUFBSSxTQUFTLE1BQU0sU0FBUyxNQUFNLFdBQVcsSUFBSSxHQUFHO0FBQ2xELGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsUUFBSSxtQkFBbUIsSUFBSSxHQUFHO0FBQzVCLG9CQUFjO0FBQ2QsYUFBTyxpQkFBaUIsSUFBSTtBQUFBLElBQzlCO0FBQ0EsUUFBSSxjQUFjLElBQUksR0FBRztBQUN2QixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFZQSxXQUFTLHFCQUFxQixNQUFNO0FBRWxDLFFBQ0UsU0FBUyxNQUNULFNBQVMsTUFDVCxTQUFTLE1BQ1QsU0FBUyxNQUNULGtCQUFrQixJQUFJLEdBQ3RCO0FBQ0EsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxXQUFPLDBCQUEwQixJQUFJO0FBQUEsRUFDdkM7QUFhQSxXQUFTLDBCQUEwQixNQUFNO0FBQ3ZDLFFBQUksU0FBUyxJQUFJO0FBQ2YsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLG1CQUFtQixJQUFJLEdBQUc7QUFDNUIsb0JBQWM7QUFDZCxhQUFPLGlCQUFpQixJQUFJO0FBQUEsSUFDOUI7QUFDQSxRQUFJLGNBQWMsSUFBSSxHQUFHO0FBQ3ZCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxlQUFlLElBQUk7QUFBQSxFQUM1QjtBQWFBLFdBQVMsNEJBQTRCLE1BQU07QUFDekMsUUFDRSxTQUFTLFFBQ1QsU0FBUyxNQUNULFNBQVMsTUFDVCxTQUFTLE1BQ1QsU0FBUyxJQUNUO0FBQ0EsYUFBTyxJQUFJLElBQUk7QUFBQSxJQUNqQjtBQUNBLFFBQUksU0FBUyxNQUFNLFNBQVMsSUFBSTtBQUM5QixjQUFRLFFBQVEsSUFBSTtBQUNwQixlQUFTO0FBQ1QsYUFBTztBQUFBLElBQ1Q7QUFDQSxRQUFJLG1CQUFtQixJQUFJLEdBQUc7QUFDNUIsb0JBQWM7QUFDZCxhQUFPLGlCQUFpQixJQUFJO0FBQUEsSUFDOUI7QUFDQSxRQUFJLGNBQWMsSUFBSSxHQUFHO0FBQ3ZCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsWUFBUSxRQUFRLElBQUk7QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFZQSxXQUFTLDRCQUE0QixNQUFNO0FBQ3pDLFFBQUksU0FBUyxRQUFRO0FBQ25CLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGVBQVM7QUFDVCxhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksU0FBUyxNQUFNO0FBQ2pCLGFBQU8sSUFBSSxJQUFJO0FBQUEsSUFDakI7QUFDQSxRQUFJLG1CQUFtQixJQUFJLEdBQUc7QUFDNUIsb0JBQWM7QUFDZCxhQUFPLGlCQUFpQixJQUFJO0FBQUEsSUFDOUI7QUFDQSxZQUFRLFFBQVEsSUFBSTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQVlBLFdBQVMsOEJBQThCLE1BQU07QUFDM0MsUUFDRSxTQUFTLFFBQ1QsU0FBUyxNQUNULFNBQVMsTUFDVCxTQUFTLE1BQ1QsU0FBUyxNQUNULFNBQVMsSUFDVDtBQUNBLGFBQU8sSUFBSSxJQUFJO0FBQUEsSUFDakI7QUFDQSxRQUFJLFNBQVMsTUFBTSxTQUFTLE1BQU0sMEJBQTBCLElBQUksR0FBRztBQUNqRSxhQUFPLGVBQWUsSUFBSTtBQUFBLElBQzVCO0FBQ0EsWUFBUSxRQUFRLElBQUk7QUFDcEIsV0FBTztBQUFBLEVBQ1Q7QUFhQSxXQUFTLGlDQUFpQyxNQUFNO0FBQzlDLFFBQUksU0FBUyxNQUFNLFNBQVMsTUFBTSwwQkFBMEIsSUFBSSxHQUFHO0FBQ2pFLGFBQU8sZUFBZSxJQUFJO0FBQUEsSUFDNUI7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBWUEsV0FBUyxJQUFJLE1BQU07QUFDakIsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssY0FBYztBQUMzQixjQUFRLEtBQUssVUFBVTtBQUN2QixhQUFPRjtBQUFBLElBQ1Q7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBZ0JBLFdBQVMsaUJBQWlCLE1BQU07QUFDOUIsWUFBUSxLQUFLLGNBQWM7QUFDM0IsWUFBUSxNQUFNLFlBQVk7QUFDMUIsWUFBUSxRQUFRLElBQUk7QUFDcEIsWUFBUSxLQUFLLFlBQVk7QUFDekIsV0FBTztBQUFBLEVBQ1Q7QUFnQkEsV0FBUyxnQkFBZ0IsTUFBTTtBQUc3QixXQUFPLGNBQWMsSUFBSSxJQUNyQjtBQUFBLE1BQ0U7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0FDLE1BQUssT0FBTyxXQUFXLFFBQVEsS0FBSyxTQUFTLGNBQWMsSUFDdkQsU0FDQTtBQUFBLElBQ04sRUFBRSxJQUFJLElBQ04sc0JBQXNCLElBQUk7QUFBQSxFQUNoQztBQWdCQSxXQUFTLHNCQUFzQixNQUFNO0FBQ25DLFlBQVEsTUFBTSxjQUFjO0FBQzVCLFdBQU8sWUFBWSxJQUFJO0FBQUEsRUFDekI7QUFDRjs7O0FDcnJCTyxJQUFNLFdBQVc7QUFBQSxFQUN0QixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQ2Q7QUFHQSxJQUFNLG9CQUFvQjtBQUFBLEVBQ3hCLFVBQVU7QUFDWjtBQUVBLElBQU0seUJBQXlCO0FBQUEsRUFDN0IsVUFBVTtBQUNaO0FBRUEsSUFBTSw4QkFBOEI7QUFBQSxFQUNsQyxVQUFVO0FBQ1o7QUFHQSxTQUFTLG1CQUFtQixRQUFRO0FBQ2xDLE1BQUlFLFNBQVE7QUFDWixTQUFPLEVBQUVBLFNBQVEsT0FBTyxRQUFRO0FBQzlCLFVBQU0sUUFBUSxPQUFPQSxNQUFLLEVBQUUsQ0FBQztBQUM3QixRQUNFLE1BQU0sU0FBUyxnQkFDZixNQUFNLFNBQVMsZUFDZixNQUFNLFNBQVMsWUFDZjtBQUVBLGFBQU8sT0FBT0EsU0FBUSxHQUFHLE1BQU0sU0FBUyxlQUFlLElBQUksQ0FBQztBQUM1RCxZQUFNLE9BQU87QUFDYixNQUFBQTtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUNUO0FBR0EsU0FBUyxrQkFBa0IsUUFBUSxTQUFTO0FBQzFDLE1BQUlBLFNBQVEsT0FBTztBQUNuQixNQUFJLFNBQVM7QUFFYixNQUFJO0FBRUosTUFBSTtBQUVKLE1BQUk7QUFFSixNQUFJO0FBR0osU0FBT0EsVUFBUztBQUNkLFlBQVEsT0FBT0EsTUFBSyxFQUFFLENBQUM7QUFDdkIsUUFBSSxNQUFNO0FBRVIsVUFDRSxNQUFNLFNBQVMsVUFDZCxNQUFNLFNBQVMsZUFBZSxNQUFNLFdBQ3JDO0FBQ0E7QUFBQSxNQUNGO0FBSUEsVUFBSSxPQUFPQSxNQUFLLEVBQUUsQ0FBQyxNQUFNLFdBQVcsTUFBTSxTQUFTLGFBQWE7QUFDOUQsY0FBTSxZQUFZO0FBQUEsTUFDcEI7QUFBQSxJQUNGLFdBQVcsT0FBTztBQUNoQixVQUNFLE9BQU9BLE1BQUssRUFBRSxDQUFDLE1BQU0sWUFDcEIsTUFBTSxTQUFTLGdCQUFnQixNQUFNLFNBQVMsZ0JBQy9DLENBQUMsTUFBTSxXQUNQO0FBQ0EsZUFBT0E7QUFDUCxZQUFJLE1BQU0sU0FBUyxhQUFhO0FBQzlCLG1CQUFTO0FBQ1Q7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0YsV0FBVyxNQUFNLFNBQVMsWUFBWTtBQUNwQyxjQUFRQTtBQUFBLElBQ1Y7QUFBQSxFQUNGO0FBQ0EsUUFBTSxRQUFRO0FBQUEsSUFDWixNQUFNLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxTQUFTLGNBQWMsU0FBUztBQUFBLElBQ3RELE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSztBQUFBLElBQzlDLEtBQUssT0FBTyxPQUFPLENBQUMsR0FBRyxPQUFPLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUN6RDtBQUNBLFFBQU0sUUFBUTtBQUFBLElBQ1osTUFBTTtBQUFBLElBQ04sT0FBTyxPQUFPLE9BQU8sQ0FBQyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLO0FBQUEsSUFDOUMsS0FBSyxPQUFPLE9BQU8sQ0FBQyxHQUFHLE9BQU8sS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHO0FBQUEsRUFDN0M7QUFDQSxRQUFNQyxRQUFPO0FBQUEsSUFDWCxNQUFNO0FBQUEsSUFDTixPQUFPLE9BQU8sT0FBTyxDQUFDLEdBQUcsT0FBTyxPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHO0FBQUEsSUFDekQsS0FBSyxPQUFPLE9BQU8sQ0FBQyxHQUFHLE9BQU8sUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUs7QUFBQSxFQUNuRDtBQUNBLFVBQVE7QUFBQSxJQUNOLENBQUMsU0FBUyxPQUFPLE9BQU87QUFBQSxJQUN4QixDQUFDLFNBQVMsT0FBTyxPQUFPO0FBQUEsRUFDMUI7QUFHQSxVQUFRLEtBQUssT0FBTyxPQUFPLE1BQU0sT0FBTyxHQUFHLE9BQU8sU0FBUyxDQUFDLENBQUM7QUFHN0QsVUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDLFNBQVNBLE9BQU0sT0FBTyxDQUFDLENBQUM7QUFLOUMsVUFBUTtBQUFBLElBQ047QUFBQSxJQUNBO0FBQUEsTUFDRSxRQUFRLE9BQU8sV0FBVyxXQUFXO0FBQUEsTUFDckMsT0FBTyxNQUFNLE9BQU8sU0FBUyxHQUFHLFFBQVEsQ0FBQztBQUFBLE1BQ3pDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFHQSxVQUFRLEtBQUssT0FBTztBQUFBLElBQ2xCLENBQUMsUUFBUUEsT0FBTSxPQUFPO0FBQUEsSUFDdEIsT0FBTyxRQUFRLENBQUM7QUFBQSxJQUNoQixPQUFPLFFBQVEsQ0FBQztBQUFBLElBQ2hCLENBQUMsUUFBUSxPQUFPLE9BQU87QUFBQSxFQUN6QixDQUFDO0FBR0QsVUFBUSxLQUFLLE9BQU8sT0FBTyxNQUFNLFFBQVEsQ0FBQyxDQUFDO0FBRzNDLFVBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxRQUFRLE9BQU8sT0FBTyxDQUFDLENBQUM7QUFDOUMsU0FBTyxRQUFRLE1BQU0sT0FBTyxRQUFRLEtBQUs7QUFDekMsU0FBTztBQUNUO0FBTUEsU0FBUyxpQkFBaUIsU0FBU0MsS0FBSSxLQUFLO0FBQzFDLFFBQU1DLFFBQU87QUFDYixNQUFJSCxTQUFRRyxNQUFLLE9BQU87QUFFeEIsTUFBSTtBQUVKLE1BQUk7QUFHSixTQUFPSCxVQUFTO0FBQ2QsU0FDR0csTUFBSyxPQUFPSCxNQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsZ0JBQzlCRyxNQUFLLE9BQU9ILE1BQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxnQkFDakMsQ0FBQ0csTUFBSyxPQUFPSCxNQUFLLEVBQUUsQ0FBQyxFQUFFLFdBQ3ZCO0FBQ0EsbUJBQWFHLE1BQUssT0FBT0gsTUFBSyxFQUFFLENBQUM7QUFDakM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFpQlAsV0FBUyxNQUFNLE1BQU07QUFFbkIsUUFBSSxDQUFDLFlBQVk7QUFDZixhQUFPLElBQUksSUFBSTtBQUFBLElBQ2pCO0FBV0EsUUFBSSxXQUFXLFdBQVc7QUFDeEIsYUFBTyxZQUFZLElBQUk7QUFBQSxJQUN6QjtBQUNBLGNBQVVHLE1BQUssT0FBTyxRQUFRO0FBQUEsTUFDNUI7QUFBQSxRQUNFQSxNQUFLLGVBQWU7QUFBQSxVQUNsQixPQUFPLFdBQVc7QUFBQSxVQUNsQixLQUFLQSxNQUFLLElBQUk7QUFBQSxRQUNoQixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0Y7QUFDQSxZQUFRLE1BQU0sVUFBVTtBQUN4QixZQUFRLE1BQU0sYUFBYTtBQUMzQixZQUFRLFFBQVEsSUFBSTtBQUNwQixZQUFRLEtBQUssYUFBYTtBQUMxQixZQUFRLEtBQUssVUFBVTtBQUN2QixXQUFPO0FBQUEsRUFDVDtBQWtCQSxXQUFTLE1BQU0sTUFBTTtBQUtuQixRQUFJLFNBQVMsSUFBSTtBQUNmLGFBQU8sUUFBUTtBQUFBLFFBQ2I7QUFBQSxRQUNBO0FBQUEsUUFDQSxVQUFVLGFBQWE7QUFBQSxNQUN6QixFQUFFLElBQUk7QUFBQSxJQUNSO0FBR0EsUUFBSSxTQUFTLElBQUk7QUFDZixhQUFPLFFBQVE7QUFBQSxRQUNiO0FBQUEsUUFDQTtBQUFBLFFBQ0EsVUFBVSxtQkFBbUI7QUFBQSxNQUMvQixFQUFFLElBQUk7QUFBQSxJQUNSO0FBR0EsV0FBTyxVQUFVLFdBQVcsSUFBSSxJQUFJLFlBQVksSUFBSTtBQUFBLEVBQ3REO0FBZ0JBLFdBQVMsaUJBQWlCLE1BQU07QUFDOUIsV0FBTyxRQUFRO0FBQUEsTUFDYjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixFQUFFLElBQUk7QUFBQSxFQUNSO0FBa0JBLFdBQVMsV0FBVyxNQUFNO0FBRXhCLFdBQU9ELElBQUcsSUFBSTtBQUFBLEVBQ2hCO0FBa0JBLFdBQVMsWUFBWSxNQUFNO0FBQ3pCLGVBQVcsWUFBWTtBQUN2QixXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBQ0Y7QUFNQSxTQUFTLGlCQUFpQixTQUFTQSxLQUFJLEtBQUs7QUFDMUMsU0FBTztBQVlQLFdBQVMsY0FBYyxNQUFNO0FBQzNCLFlBQVEsTUFBTSxVQUFVO0FBQ3hCLFlBQVEsTUFBTSxnQkFBZ0I7QUFDOUIsWUFBUSxRQUFRLElBQUk7QUFDcEIsWUFBUSxLQUFLLGdCQUFnQjtBQUM3QixXQUFPO0FBQUEsRUFDVDtBQVlBLFdBQVMsZUFBZSxNQUFNO0FBQzVCLFdBQU8sMEJBQTBCLElBQUksSUFDakMsa0JBQWtCLFNBQVMsWUFBWSxFQUFFLElBQUksSUFDN0MsYUFBYSxJQUFJO0FBQUEsRUFDdkI7QUFZQSxXQUFTLGFBQWEsTUFBTTtBQUMxQixRQUFJLFNBQVMsSUFBSTtBQUNmLGFBQU8sWUFBWSxJQUFJO0FBQUEsSUFDekI7QUFDQSxXQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixFQUFFLElBQUk7QUFBQSxFQUNSO0FBWUEsV0FBUyx5QkFBeUIsTUFBTTtBQUN0QyxXQUFPLDBCQUEwQixJQUFJLElBQ2pDLGtCQUFrQixTQUFTLGVBQWUsRUFBRSxJQUFJLElBQ2hELFlBQVksSUFBSTtBQUFBLEVBQ3RCO0FBWUEsV0FBUywyQkFBMkIsTUFBTTtBQUN4QyxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBWUEsV0FBUyxnQkFBZ0IsTUFBTTtBQUM3QixRQUFJLFNBQVMsTUFBTSxTQUFTLE1BQU0sU0FBUyxJQUFJO0FBQzdDLGFBQU87QUFBQSxRQUNMO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNGLEVBQUUsSUFBSTtBQUFBLElBQ1I7QUFDQSxXQUFPLFlBQVksSUFBSTtBQUFBLEVBQ3pCO0FBWUEsV0FBUyxtQkFBbUIsTUFBTTtBQUNoQyxXQUFPLDBCQUEwQixJQUFJLElBQ2pDLGtCQUFrQixTQUFTLFdBQVcsRUFBRSxJQUFJLElBQzVDLFlBQVksSUFBSTtBQUFBLEVBQ3RCO0FBWUEsV0FBUyxZQUFZLE1BQU07QUFDekIsUUFBSSxTQUFTLElBQUk7QUFDZixjQUFRLE1BQU0sZ0JBQWdCO0FBQzlCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGNBQVEsS0FBSyxnQkFBZ0I7QUFDN0IsY0FBUSxLQUFLLFVBQVU7QUFDdkIsYUFBT0E7QUFBQSxJQUNUO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQUNGO0FBTUEsU0FBUyxzQkFBc0IsU0FBU0EsS0FBSSxLQUFLO0FBQy9DLFFBQU1DLFFBQU87QUFDYixTQUFPO0FBWVAsV0FBUyxjQUFjLE1BQU07QUFDM0IsV0FBTyxhQUFhO0FBQUEsTUFDbEJBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixFQUFFLElBQUk7QUFBQSxFQUNSO0FBWUEsV0FBUyxtQkFBbUIsTUFBTTtBQUNoQyxXQUFPQSxNQUFLLE9BQU8sUUFBUTtBQUFBLE1BQ3pCO0FBQUEsUUFDRUEsTUFBSyxlQUFlQSxNQUFLLE9BQU9BLE1BQUssT0FBTyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsRUFBRTtBQUFBLE1BQ3pFO0FBQUEsSUFDRixJQUNJRCxJQUFHLElBQUksSUFDUCxJQUFJLElBQUk7QUFBQSxFQUNkO0FBWUEsV0FBUyxxQkFBcUIsTUFBTTtBQUNsQyxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBQ0Y7QUFNQSxTQUFTLDJCQUEyQixTQUFTQSxLQUFJLEtBQUs7QUFDcEQsU0FBTztBQWNQLFdBQVMsd0JBQXdCLE1BQU07QUFHckMsWUFBUSxNQUFNLFdBQVc7QUFDekIsWUFBUSxNQUFNLGlCQUFpQjtBQUMvQixZQUFRLFFBQVEsSUFBSTtBQUNwQixZQUFRLEtBQUssaUJBQWlCO0FBQzlCLFdBQU87QUFBQSxFQUNUO0FBY0EsV0FBUyx1QkFBdUIsTUFBTTtBQUNwQyxRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsTUFBTSxpQkFBaUI7QUFDL0IsY0FBUSxRQUFRLElBQUk7QUFDcEIsY0FBUSxLQUFLLGlCQUFpQjtBQUM5QixjQUFRLEtBQUssV0FBVztBQUN4QixhQUFPQTtBQUFBLElBQ1Q7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBQ0Y7OztBQzlsQk8sSUFBTSxrQkFBa0I7QUFBQSxFQUM3QixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixZQUFZLFNBQVM7QUFDdkI7QUFNQSxTQUFTLHdCQUF3QixTQUFTRSxLQUFJLEtBQUs7QUFDakQsUUFBTUMsUUFBTztBQUNiLFNBQU87QUFZUCxXQUFTLE1BQU0sTUFBTTtBQUNuQixZQUFRLE1BQU0sWUFBWTtBQUMxQixZQUFRLE1BQU0sa0JBQWtCO0FBQ2hDLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFlBQVEsS0FBSyxrQkFBa0I7QUFDL0IsV0FBTztBQUFBLEVBQ1Q7QUFZQSxXQUFTLEtBQUssTUFBTTtBQUNsQixRQUFJLFNBQVMsSUFBSTtBQUNmLGNBQVEsTUFBTSxhQUFhO0FBQzNCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGNBQVEsS0FBSyxhQUFhO0FBQzFCLGNBQVEsS0FBSyxZQUFZO0FBQ3pCLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQTZCQSxXQUFTLE1BQU0sTUFBTTtBQU1uQixXQUFPLFNBQVMsTUFBTSw0QkFBNEJBLE1BQUssT0FBTyxhQUMxRCxJQUFJLElBQUksSUFDUkQsSUFBRyxJQUFJO0FBQUEsRUFDYjtBQUNGOzs7QUMxRk8sSUFBTSxpQkFBaUI7QUFBQSxFQUM1QixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixZQUFZLFNBQVM7QUFDdkI7QUFNQSxTQUFTLHVCQUF1QixTQUFTRSxLQUFJLEtBQUs7QUFDaEQsUUFBTUMsUUFBTztBQUNiLFNBQU87QUFZUCxXQUFTLE1BQU0sTUFBTTtBQUNuQixZQUFRLE1BQU0sV0FBVztBQUN6QixZQUFRLE1BQU0sYUFBYTtBQUMzQixZQUFRLFFBQVEsSUFBSTtBQUNwQixZQUFRLEtBQUssYUFBYTtBQUMxQixZQUFRLEtBQUssV0FBVztBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUdBLFdBQVMsTUFBTSxNQUFNO0FBS25CLFdBQU8sU0FBUyxNQUFNLDRCQUE0QkEsTUFBSyxPQUFPLGFBQzFELElBQUksSUFBSSxJQUNSRCxJQUFHLElBQUk7QUFBQSxFQUNiO0FBQ0Y7OztBQzNDTyxJQUFNLGFBQWE7QUFBQSxFQUN4QixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQ1o7QUFNQSxTQUFTLG1CQUFtQixTQUFTRSxLQUFJO0FBQ3ZDLFNBQU87QUFHUCxXQUFTLE1BQU0sTUFBTTtBQUNuQixZQUFRLE1BQU0sWUFBWTtBQUMxQixZQUFRLFFBQVEsSUFBSTtBQUNwQixZQUFRLEtBQUssWUFBWTtBQUN6QixXQUFPLGFBQWEsU0FBU0EsS0FBSSxZQUFZO0FBQUEsRUFDL0M7QUFDRjs7O0FDbEJPLElBQU0sZ0JBQWdCO0FBQUEsRUFDM0IsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUNaO0FBTUEsU0FBUyxzQkFBc0IsU0FBU0MsS0FBSSxLQUFLO0FBQy9DLE1BQUksT0FBTztBQUVYLE1BQUk7QUFDSixTQUFPO0FBWVAsV0FBUyxNQUFNLE1BQU07QUFDbkIsWUFBUSxNQUFNLGVBQWU7QUFFN0IsV0FBTyxPQUFPLElBQUk7QUFBQSxFQUNwQjtBQVlBLFdBQVMsT0FBTyxNQUFNO0FBQ3BCLGFBQVM7QUFDVCxXQUFPLFFBQVEsSUFBSTtBQUFBLEVBQ3JCO0FBWUEsV0FBUyxRQUFRLE1BQU07QUFDckIsUUFBSSxTQUFTLFFBQVE7QUFDbkIsY0FBUSxNQUFNLHVCQUF1QjtBQUNyQyxhQUFPLFNBQVMsSUFBSTtBQUFBLElBQ3RCO0FBQ0EsUUFBSSxRQUFRLE1BQU0sU0FBUyxRQUFRLG1CQUFtQixJQUFJLElBQUk7QUFDNUQsY0FBUSxLQUFLLGVBQWU7QUFDNUIsYUFBT0EsSUFBRyxJQUFJO0FBQUEsSUFDaEI7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBWUEsV0FBUyxTQUFTLE1BQU07QUFDdEIsUUFBSSxTQUFTLFFBQVE7QUFDbkIsY0FBUSxRQUFRLElBQUk7QUFDcEI7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUNBLFlBQVEsS0FBSyx1QkFBdUI7QUFDcEMsV0FBTyxjQUFjLElBQUksSUFDckIsYUFBYSxTQUFTLFNBQVMsWUFBWSxFQUFFLElBQUksSUFDakQsUUFBUSxJQUFJO0FBQUEsRUFDbEI7QUFDRjs7O0FDcEZPLElBQU0sT0FBTztBQUFBLEVBQ2xCLE1BQU07QUFBQSxFQUNOLFVBQVU7QUFBQSxFQUNWLGNBQWM7QUFBQSxJQUNaLFVBQVU7QUFBQSxFQUNaO0FBQUEsRUFDQSxNQUFNO0FBQ1I7QUFHQSxJQUFNLG9DQUFvQztBQUFBLEVBQ3hDLFVBQVU7QUFBQSxFQUNWLFNBQVM7QUFDWDtBQUdBLElBQU0sa0JBQWtCO0FBQUEsRUFDdEIsVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUNYO0FBU0EsU0FBUyxrQkFBa0IsU0FBU0MsS0FBSSxLQUFLO0FBQzNDLFFBQU1DLFFBQU87QUFDYixRQUFNLE9BQU9BLE1BQUssT0FBT0EsTUFBSyxPQUFPLFNBQVMsQ0FBQztBQUMvQyxNQUFJLGNBQ0YsUUFBUSxLQUFLLENBQUMsRUFBRSxTQUFTLGVBQ3JCLEtBQUssQ0FBQyxFQUFFLGVBQWUsS0FBSyxDQUFDLEdBQUcsSUFBSSxFQUFFLFNBQ3RDO0FBQ04sTUFBSSxPQUFPO0FBQ1gsU0FBTztBQUdQLFdBQVMsTUFBTSxNQUFNO0FBQ25CLFVBQU0sT0FDSkEsTUFBSyxlQUFlLFNBQ25CLFNBQVMsTUFBTSxTQUFTLE1BQU0sU0FBUyxLQUNwQyxrQkFDQTtBQUNOLFFBQ0UsU0FBUyxrQkFDTCxDQUFDQSxNQUFLLGVBQWUsVUFBVSxTQUFTQSxNQUFLLGVBQWUsU0FDNUQsV0FBVyxJQUFJLEdBQ25CO0FBQ0EsVUFBSSxDQUFDQSxNQUFLLGVBQWUsTUFBTTtBQUM3QixRQUFBQSxNQUFLLGVBQWUsT0FBTztBQUMzQixnQkFBUSxNQUFNLE1BQU07QUFBQSxVQUNsQixZQUFZO0FBQUEsUUFDZCxDQUFDO0FBQUEsTUFDSDtBQUNBLFVBQUksU0FBUyxpQkFBaUI7QUFDNUIsZ0JBQVEsTUFBTSxnQkFBZ0I7QUFDOUIsZUFBTyxTQUFTLE1BQU0sU0FBUyxLQUMzQixRQUFRLE1BQU0sZUFBZSxLQUFLLFFBQVEsRUFBRSxJQUFJLElBQ2hELFNBQVMsSUFBSTtBQUFBLE1BQ25CO0FBQ0EsVUFBSSxDQUFDQSxNQUFLLGFBQWEsU0FBUyxJQUFJO0FBQ2xDLGdCQUFRLE1BQU0sZ0JBQWdCO0FBQzlCLGdCQUFRLE1BQU0sZUFBZTtBQUM3QixlQUFPLE9BQU8sSUFBSTtBQUFBLE1BQ3BCO0FBQUEsSUFDRjtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFHQSxXQUFTLE9BQU8sTUFBTTtBQUNwQixRQUFJLFdBQVcsSUFBSSxLQUFLLEVBQUUsT0FBTyxJQUFJO0FBQ25DLGNBQVEsUUFBUSxJQUFJO0FBQ3BCLGFBQU87QUFBQSxJQUNUO0FBQ0EsU0FDRyxDQUFDQSxNQUFLLGFBQWEsT0FBTyxPQUMxQkEsTUFBSyxlQUFlLFNBQ2pCLFNBQVNBLE1BQUssZUFBZSxTQUM3QixTQUFTLE1BQU0sU0FBUyxLQUM1QjtBQUNBLGNBQVEsS0FBSyxlQUFlO0FBQzVCLGFBQU8sU0FBUyxJQUFJO0FBQUEsSUFDdEI7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBS0EsV0FBUyxTQUFTLE1BQU07QUFDdEIsWUFBUSxNQUFNLGdCQUFnQjtBQUM5QixZQUFRLFFBQVEsSUFBSTtBQUNwQixZQUFRLEtBQUssZ0JBQWdCO0FBQzdCLElBQUFBLE1BQUssZUFBZSxTQUFTQSxNQUFLLGVBQWUsVUFBVTtBQUMzRCxXQUFPLFFBQVE7QUFBQSxNQUNiO0FBQUE7QUFBQSxNQUVBQSxNQUFLLFlBQVksTUFBTTtBQUFBLE1BQ3ZCLFFBQVE7QUFBQSxRQUNOO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFHQSxXQUFTLFFBQVEsTUFBTTtBQUNyQixJQUFBQSxNQUFLLGVBQWUsbUJBQW1CO0FBQ3ZDO0FBQ0EsV0FBTyxZQUFZLElBQUk7QUFBQSxFQUN6QjtBQUdBLFdBQVMsWUFBWSxNQUFNO0FBQ3pCLFFBQUksY0FBYyxJQUFJLEdBQUc7QUFDdkIsY0FBUSxNQUFNLDBCQUEwQjtBQUN4QyxjQUFRLFFBQVEsSUFBSTtBQUNwQixjQUFRLEtBQUssMEJBQTBCO0FBQ3ZDLGFBQU87QUFBQSxJQUNUO0FBQ0EsV0FBTyxJQUFJLElBQUk7QUFBQSxFQUNqQjtBQUdBLFdBQVMsWUFBWSxNQUFNO0FBQ3pCLElBQUFBLE1BQUssZUFBZSxPQUNsQixjQUNBQSxNQUFLLGVBQWUsUUFBUSxLQUFLLGdCQUFnQixHQUFHLElBQUksRUFBRTtBQUM1RCxXQUFPRCxJQUFHLElBQUk7QUFBQSxFQUNoQjtBQUNGO0FBTUEsU0FBUyx5QkFBeUIsU0FBU0EsS0FBSSxLQUFLO0FBQ2xELFFBQU1DLFFBQU87QUFDYixFQUFBQSxNQUFLLGVBQWUsYUFBYTtBQUNqQyxTQUFPLFFBQVEsTUFBTSxXQUFXLFNBQVMsUUFBUTtBQUdqRCxXQUFTLFFBQVEsTUFBTTtBQUNyQixJQUFBQSxNQUFLLGVBQWUsb0JBQ2xCQSxNQUFLLGVBQWUscUJBQ3BCQSxNQUFLLGVBQWU7QUFJdEIsV0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBRDtBQUFBLE1BQ0E7QUFBQSxNQUNBQyxNQUFLLGVBQWUsT0FBTztBQUFBLElBQzdCLEVBQUUsSUFBSTtBQUFBLEVBQ1I7QUFHQSxXQUFTLFNBQVMsTUFBTTtBQUN0QixRQUFJQSxNQUFLLGVBQWUscUJBQXFCLENBQUMsY0FBYyxJQUFJLEdBQUc7QUFDakUsTUFBQUEsTUFBSyxlQUFlLG9CQUFvQjtBQUN4QyxNQUFBQSxNQUFLLGVBQWUsbUJBQW1CO0FBQ3ZDLGFBQU8saUJBQWlCLElBQUk7QUFBQSxJQUM5QjtBQUNBLElBQUFBLE1BQUssZUFBZSxvQkFBb0I7QUFDeEMsSUFBQUEsTUFBSyxlQUFlLG1CQUFtQjtBQUN2QyxXQUFPLFFBQVEsUUFBUSxpQkFBaUJELEtBQUksZ0JBQWdCLEVBQUUsSUFBSTtBQUFBLEVBQ3BFO0FBR0EsV0FBUyxpQkFBaUIsTUFBTTtBQUU5QixJQUFBQyxNQUFLLGVBQWUsYUFBYTtBQUVqQyxJQUFBQSxNQUFLLFlBQVk7QUFHakIsV0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBLFFBQVEsUUFBUSxNQUFNRCxLQUFJLEdBQUc7QUFBQSxNQUM3QjtBQUFBLE1BQ0FDLE1BQUssT0FBTyxXQUFXLFFBQVEsS0FBSyxTQUFTLGNBQWMsSUFDdkQsU0FDQTtBQUFBLElBQ04sRUFBRSxJQUFJO0FBQUEsRUFDUjtBQUNGO0FBTUEsU0FBUyxlQUFlLFNBQVNELEtBQUksS0FBSztBQUN4QyxRQUFNQyxRQUFPO0FBQ2IsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0FBLE1BQUssZUFBZSxPQUFPO0FBQUEsRUFDN0I7QUFHQSxXQUFTLFlBQVksTUFBTTtBQUN6QixVQUFNLE9BQU9BLE1BQUssT0FBT0EsTUFBSyxPQUFPLFNBQVMsQ0FBQztBQUMvQyxXQUFPLFFBQ0wsS0FBSyxDQUFDLEVBQUUsU0FBUyxvQkFDakIsS0FBSyxDQUFDLEVBQUUsZUFBZSxLQUFLLENBQUMsR0FBRyxJQUFJLEVBQUUsV0FBV0EsTUFBSyxlQUFlLE9BQ25FRCxJQUFHLElBQUksSUFDUCxJQUFJLElBQUk7QUFBQSxFQUNkO0FBQ0Y7QUFNQSxTQUFTLGdCQUFnQixTQUFTO0FBQ2hDLFVBQVEsS0FBSyxLQUFLLGVBQWUsSUFBSTtBQUN2QztBQU1BLFNBQVMsaUNBQWlDLFNBQVNBLEtBQUksS0FBSztBQUMxRCxRQUFNQyxRQUFPO0FBSWIsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0FBLE1BQUssT0FBTyxXQUFXLFFBQVEsS0FBSyxTQUFTLGNBQWMsSUFDdkQsU0FDQSxJQUFJO0FBQUEsRUFDVjtBQUdBLFdBQVMsWUFBWSxNQUFNO0FBQ3pCLFVBQU0sT0FBT0EsTUFBSyxPQUFPQSxNQUFLLE9BQU8sU0FBUyxDQUFDO0FBQy9DLFdBQU8sQ0FBQyxjQUFjLElBQUksS0FDeEIsUUFDQSxLQUFLLENBQUMsRUFBRSxTQUFTLDZCQUNmRCxJQUFHLElBQUksSUFDUCxJQUFJLElBQUk7QUFBQSxFQUNkO0FBQ0Y7OztBQy9QTyxJQUFNLGtCQUFrQjtBQUFBLEVBQzdCLE1BQU07QUFBQSxFQUNOLFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFDYjtBQUdBLFNBQVMseUJBQXlCLFFBQVEsU0FBUztBQUVqRCxNQUFJRSxTQUFRLE9BQU87QUFFbkIsTUFBSUM7QUFFSixNQUFJQztBQUVKLE1BQUlDO0FBSUosU0FBT0gsVUFBUztBQUNkLFFBQUksT0FBT0EsTUFBSyxFQUFFLENBQUMsTUFBTSxTQUFTO0FBQ2hDLFVBQUksT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxTQUFTLFdBQVc7QUFDdkMsUUFBQUMsV0FBVUQ7QUFDVjtBQUFBLE1BQ0Y7QUFDQSxVQUFJLE9BQU9BLE1BQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxhQUFhO0FBQ3pDLFFBQUFFLFFBQU9GO0FBQUEsTUFDVDtBQUFBLElBQ0YsT0FFSztBQUNILFVBQUksT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxTQUFTLFdBQVc7QUFFdkMsZUFBTyxPQUFPQSxRQUFPLENBQUM7QUFBQSxNQUN4QjtBQUNBLFVBQUksQ0FBQ0csZUFBYyxPQUFPSCxNQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsY0FBYztBQUN6RCxRQUFBRyxjQUFhSDtBQUFBLE1BQ2Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLFFBQU0sVUFBVTtBQUFBLElBQ2QsTUFBTTtBQUFBLElBQ04sT0FBTyxPQUFPLE9BQU8sQ0FBQyxHQUFHLE9BQU9FLEtBQUksRUFBRSxDQUFDLEVBQUUsS0FBSztBQUFBLElBQzlDLEtBQUssT0FBTyxPQUFPLENBQUMsR0FBRyxPQUFPLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUN6RDtBQUdBLFNBQU9BLEtBQUksRUFBRSxDQUFDLEVBQUUsT0FBTztBQUl2QixNQUFJQyxhQUFZO0FBQ2QsV0FBTyxPQUFPRCxPQUFNLEdBQUcsQ0FBQyxTQUFTLFNBQVMsT0FBTyxDQUFDO0FBQ2xELFdBQU8sT0FBT0MsY0FBYSxHQUFHLEdBQUcsQ0FBQyxRQUFRLE9BQU9GLFFBQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQ3RFLFdBQU9BLFFBQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxPQUFPLE9BQU8sQ0FBQyxHQUFHLE9BQU9FLFdBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRztBQUFBLEVBQ3RFLE9BQU87QUFDTCxXQUFPRixRQUFPLEVBQUUsQ0FBQyxJQUFJO0FBQUEsRUFDdkI7QUFHQSxTQUFPLEtBQUssQ0FBQyxRQUFRLFNBQVMsT0FBTyxDQUFDO0FBQ3RDLFNBQU87QUFDVDtBQU1BLFNBQVMsd0JBQXdCLFNBQVNHLEtBQUksS0FBSztBQUNqRCxRQUFNQyxRQUFPO0FBRWIsTUFBSTtBQUNKLFNBQU87QUFhUCxXQUFTLE1BQU0sTUFBTTtBQUNuQixRQUFJTCxTQUFRSyxNQUFLLE9BQU87QUFFeEIsUUFBSTtBQUVKLFdBQU9MLFVBQVM7QUFHZCxVQUNFSyxNQUFLLE9BQU9MLE1BQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxnQkFDL0JLLE1BQUssT0FBT0wsTUFBSyxFQUFFLENBQUMsRUFBRSxTQUFTLGdCQUMvQkssTUFBSyxPQUFPTCxNQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsV0FDL0I7QUFDQSxvQkFBWUssTUFBSyxPQUFPTCxNQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVM7QUFDM0M7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUlBLFFBQUksQ0FBQ0ssTUFBSyxPQUFPLEtBQUtBLE1BQUssSUFBSSxFQUFFLElBQUksTUFBTUEsTUFBSyxhQUFhLFlBQVk7QUFDdkUsY0FBUSxNQUFNLG1CQUFtQjtBQUNqQyxlQUFTO0FBQ1QsYUFBTyxPQUFPLElBQUk7QUFBQSxJQUNwQjtBQUNBLFdBQU8sSUFBSSxJQUFJO0FBQUEsRUFDakI7QUFhQSxXQUFTLE9BQU8sTUFBTTtBQUNwQixZQUFRLE1BQU0sMkJBQTJCO0FBQ3pDLFdBQU8sT0FBTyxJQUFJO0FBQUEsRUFDcEI7QUFhQSxXQUFTLE9BQU8sTUFBTTtBQUNwQixRQUFJLFNBQVMsUUFBUTtBQUNuQixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUNBLFlBQVEsS0FBSywyQkFBMkI7QUFDeEMsV0FBTyxjQUFjLElBQUksSUFDckIsYUFBYSxTQUFTLE9BQU8sWUFBWSxFQUFFLElBQUksSUFDL0MsTUFBTSxJQUFJO0FBQUEsRUFDaEI7QUFhQSxXQUFTLE1BQU0sTUFBTTtBQUNuQixRQUFJLFNBQVMsUUFBUSxtQkFBbUIsSUFBSSxHQUFHO0FBQzdDLGNBQVEsS0FBSyxtQkFBbUI7QUFDaEMsYUFBT0QsSUFBRyxJQUFJO0FBQUEsSUFDaEI7QUFDQSxXQUFPLElBQUksSUFBSTtBQUFBLEVBQ2pCO0FBQ0Y7OztBQzFLTyxJQUFNLE9BQU87QUFBQSxFQUNsQixVQUFVO0FBQ1o7QUFNQSxTQUFTLGVBQWUsU0FBUztBQUMvQixRQUFNRSxRQUFPO0FBQ2IsUUFBTSxVQUFVLFFBQVE7QUFBQTtBQUFBLElBRXRCO0FBQUEsSUFDQTtBQUFBO0FBQUEsSUFFQSxRQUFRO0FBQUEsTUFDTixLQUFLLE9BQU8sV0FBVztBQUFBLE1BQ3ZCO0FBQUEsTUFDQTtBQUFBLFFBQ0U7QUFBQSxRQUNBLFFBQVE7QUFBQSxVQUNOLEtBQUssT0FBTyxXQUFXO0FBQUEsVUFDdkI7QUFBQSxVQUNBLFFBQVEsUUFBUUMsVUFBUyxjQUFjO0FBQUEsUUFDekM7QUFBQSxRQUNBO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ0EsU0FBTztBQUdQLFdBQVMsY0FBYyxNQUFNO0FBQzNCLFFBQUksU0FBUyxNQUFNO0FBQ2pCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCO0FBQUEsSUFDRjtBQUNBLFlBQVEsTUFBTSxpQkFBaUI7QUFDL0IsWUFBUSxRQUFRLElBQUk7QUFDcEIsWUFBUSxLQUFLLGlCQUFpQjtBQUM5QixJQUFBRCxNQUFLLG1CQUFtQjtBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUdBLFdBQVMsZUFBZSxNQUFNO0FBQzVCLFFBQUksU0FBUyxNQUFNO0FBQ2pCLGNBQVEsUUFBUSxJQUFJO0FBQ3BCO0FBQUEsSUFDRjtBQUNBLFlBQVEsTUFBTSxZQUFZO0FBQzFCLFlBQVEsUUFBUSxJQUFJO0FBQ3BCLFlBQVEsS0FBSyxZQUFZO0FBQ3pCLElBQUFBLE1BQUssbUJBQW1CO0FBQ3hCLFdBQU87QUFBQSxFQUNUO0FBQ0Y7OztBQzFETyxJQUFNLFdBQVc7QUFBQSxFQUN0QixZQUFZLGVBQWU7QUFDN0I7QUFDTyxJQUFNLFNBQVMsa0JBQWtCLFFBQVE7QUFDekMsSUFBTSxPQUFPLGtCQUFrQixNQUFNO0FBTTVDLFNBQVMsa0JBQWtCLE9BQU87QUFDaEMsU0FBTztBQUFBLElBQ0wsVUFBVTtBQUFBLElBQ1YsWUFBWTtBQUFBLE1BQ1YsVUFBVSxTQUFTLHlCQUF5QjtBQUFBLElBQzlDO0FBQUEsRUFDRjtBQU1BLFdBQVMsZUFBZSxTQUFTO0FBQy9CLFVBQU1FLFFBQU87QUFDYixVQUFNQyxjQUFhLEtBQUssT0FBTyxXQUFXLEtBQUs7QUFDL0MsVUFBTUMsUUFBTyxRQUFRLFFBQVFELGFBQVksT0FBTyxPQUFPO0FBQ3ZELFdBQU87QUFHUCxhQUFTLE1BQU0sTUFBTTtBQUNuQixhQUFPLFFBQVEsSUFBSSxJQUFJQyxNQUFLLElBQUksSUFBSSxRQUFRLElBQUk7QUFBQSxJQUNsRDtBQUdBLGFBQVMsUUFBUSxNQUFNO0FBQ3JCLFVBQUksU0FBUyxNQUFNO0FBQ2pCLGdCQUFRLFFBQVEsSUFBSTtBQUNwQjtBQUFBLE1BQ0Y7QUFDQSxjQUFRLE1BQU0sTUFBTTtBQUNwQixjQUFRLFFBQVEsSUFBSTtBQUNwQixhQUFPO0FBQUEsSUFDVDtBQUdBLGFBQVMsS0FBSyxNQUFNO0FBQ2xCLFVBQUksUUFBUSxJQUFJLEdBQUc7QUFDakIsZ0JBQVEsS0FBSyxNQUFNO0FBQ25CLGVBQU9BLE1BQUssSUFBSTtBQUFBLE1BQ2xCO0FBR0EsY0FBUSxRQUFRLElBQUk7QUFDcEIsYUFBTztBQUFBLElBQ1Q7QUFNQSxhQUFTLFFBQVEsTUFBTTtBQUNyQixVQUFJLFNBQVMsTUFBTTtBQUNqQixlQUFPO0FBQUEsTUFDVDtBQUNBLFlBQU1DLFFBQU9GLFlBQVcsSUFBSTtBQUM1QixVQUFJRyxTQUFRO0FBQ1osVUFBSUQsT0FBTTtBQUdSLGVBQU8sRUFBRUMsU0FBUUQsTUFBSyxRQUFRO0FBQzVCLGdCQUFNLE9BQU9BLE1BQUtDLE1BQUs7QUFDdkIsY0FBSSxDQUFDLEtBQUssWUFBWSxLQUFLLFNBQVMsS0FBS0osT0FBTUEsTUFBSyxRQUFRLEdBQUc7QUFDN0QsbUJBQU87QUFBQSxVQUNUO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFDQSxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFDRjtBQU1BLFNBQVMsZUFBZSxlQUFlO0FBQ3JDLFNBQU87QUFHUCxXQUFTLGVBQWUsUUFBUSxTQUFTO0FBQ3ZDLFFBQUlJLFNBQVE7QUFFWixRQUFJO0FBSUosV0FBTyxFQUFFQSxVQUFTLE9BQU8sUUFBUTtBQUMvQixVQUFJLFVBQVUsUUFBVztBQUN2QixZQUFJLE9BQU9BLE1BQUssS0FBSyxPQUFPQSxNQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsUUFBUTtBQUNyRCxrQkFBUUE7QUFDUixVQUFBQTtBQUFBLFFBQ0Y7QUFBQSxNQUNGLFdBQVcsQ0FBQyxPQUFPQSxNQUFLLEtBQUssT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRSxTQUFTLFFBQVE7QUFFN0QsWUFBSUEsV0FBVSxRQUFRLEdBQUc7QUFDdkIsaUJBQU8sS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLE9BQU9BLFNBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUM1QyxpQkFBTyxPQUFPLFFBQVEsR0FBR0EsU0FBUSxRQUFRLENBQUM7QUFDMUMsVUFBQUEsU0FBUSxRQUFRO0FBQUEsUUFDbEI7QUFDQSxnQkFBUTtBQUFBLE1BQ1Y7QUFBQSxJQUNGO0FBQ0EsV0FBTyxnQkFBZ0IsY0FBYyxRQUFRLE9BQU8sSUFBSTtBQUFBLEVBQzFEO0FBQ0Y7QUFhQSxTQUFTLHVCQUF1QixRQUFRLFNBQVM7QUFDL0MsTUFBSSxhQUFhO0FBRWpCLFNBQU8sRUFBRSxjQUFjLE9BQU8sUUFBUTtBQUNwQyxTQUNHLGVBQWUsT0FBTyxVQUNyQixPQUFPLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxpQkFDakMsT0FBTyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxRQUNuQztBQUNBLFlBQU0sT0FBTyxPQUFPLGFBQWEsQ0FBQyxFQUFFLENBQUM7QUFDckMsWUFBTSxTQUFTLFFBQVEsWUFBWSxJQUFJO0FBQ3ZDLFVBQUlBLFNBQVEsT0FBTztBQUNuQixVQUFJLGNBQWM7QUFDbEIsVUFBSSxPQUFPO0FBRVgsVUFBSTtBQUNKLGFBQU9BLFVBQVM7QUFDZCxjQUFNLFFBQVEsT0FBT0EsTUFBSztBQUMxQixZQUFJLE9BQU8sVUFBVSxVQUFVO0FBQzdCLHdCQUFjLE1BQU07QUFDcEIsaUJBQU8sTUFBTSxXQUFXLGNBQWMsQ0FBQyxNQUFNLElBQUk7QUFDL0M7QUFDQTtBQUFBLFVBQ0Y7QUFDQSxjQUFJO0FBQWE7QUFDakIsd0JBQWM7QUFBQSxRQUNoQixXQUVTLFVBQVUsSUFBSTtBQUNyQixpQkFBTztBQUNQO0FBQUEsUUFDRixXQUFXLFVBQVUsSUFBSTtBQUFBLFFBRXpCLE9BQU87QUFFTCxVQUFBQTtBQUNBO0FBQUEsUUFDRjtBQUFBLE1BQ0Y7QUFDQSxVQUFJLE1BQU07QUFDUixjQUFNLFFBQVE7QUFBQSxVQUNaLE1BQ0UsZUFBZSxPQUFPLFVBQVUsUUFBUSxPQUFPLElBQzNDLGVBQ0E7QUFBQSxVQUNOLE9BQU87QUFBQSxZQUNMLE1BQU0sS0FBSyxJQUFJO0FBQUEsWUFDZixRQUFRLEtBQUssSUFBSSxTQUFTO0FBQUEsWUFDMUIsUUFBUSxLQUFLLElBQUksU0FBUztBQUFBLFlBQzFCLFFBQVEsS0FBSyxNQUFNLFNBQVNBO0FBQUEsWUFDNUIsY0FBY0EsU0FDVixjQUNBLEtBQUssTUFBTSxlQUFlO0FBQUEsVUFDaEM7QUFBQSxVQUNBLEtBQUssT0FBTyxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUc7QUFBQSxRQUNqQztBQUNBLGFBQUssTUFBTSxPQUFPLE9BQU8sQ0FBQyxHQUFHLE1BQU0sS0FBSztBQUN4QyxZQUFJLEtBQUssTUFBTSxXQUFXLEtBQUssSUFBSSxRQUFRO0FBQ3pDLGlCQUFPLE9BQU8sTUFBTSxLQUFLO0FBQUEsUUFDM0IsT0FBTztBQUNMLGlCQUFPO0FBQUEsWUFDTDtBQUFBLFlBQ0E7QUFBQSxZQUNBLENBQUMsU0FBUyxPQUFPLE9BQU87QUFBQSxZQUN4QixDQUFDLFFBQVEsT0FBTyxPQUFPO0FBQUEsVUFDekI7QUFDQSx3QkFBYztBQUFBLFFBQ2hCO0FBQUEsTUFDRjtBQUNBO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7OztBQ2xLTyxTQUFTLGdCQUFnQixRQUFRLFlBQVksTUFBTTtBQUV4RCxNQUFJQyxTQUFRLE9BQU87QUFBQSxJQUNqQixPQUNJLE9BQU8sT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUN0QjtBQUFBLE1BQ0UsTUFBTTtBQUFBLE1BQ04sUUFBUTtBQUFBLE1BQ1IsUUFBUTtBQUFBLElBQ1Y7QUFBQSxJQUNKO0FBQUEsTUFDRSxRQUFRO0FBQUEsTUFDUixjQUFjO0FBQUEsSUFDaEI7QUFBQSxFQUNGO0FBRUEsUUFBTSxjQUFjLENBQUM7QUFFckIsUUFBTSx1QkFBdUIsQ0FBQztBQUU5QixNQUFJLFNBQVMsQ0FBQztBQUVkLE1BQUksUUFBUSxDQUFDO0FBRWIsTUFBSSxXQUFXO0FBT2YsUUFBTSxVQUFVO0FBQUEsSUFDZDtBQUFBLElBQ0E7QUFBQSxJQUNBLE1BQUFDO0FBQUEsSUFDQSxTQUFTLGlCQUFpQixxQkFBcUI7QUFBQSxJQUMvQyxPQUFPLGlCQUFpQixpQkFBaUI7QUFBQSxJQUN6QyxXQUFXLGlCQUFpQixtQkFBbUI7QUFBQSxNQUM3QyxXQUFXO0FBQUEsSUFDYixDQUFDO0FBQUEsRUFDSDtBQU9BLFFBQU0sVUFBVTtBQUFBLElBQ2QsVUFBVTtBQUFBLElBQ1YsTUFBTTtBQUFBLElBQ04sZ0JBQWdCLENBQUM7QUFBQSxJQUNqQixRQUFRLENBQUM7QUFBQSxJQUNUO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBT0EsTUFBSSxRQUFRLFdBQVcsU0FBUyxLQUFLLFNBQVMsT0FBTztBQU9yRCxNQUFJO0FBQ0osTUFBSSxXQUFXLFlBQVk7QUFDekIseUJBQXFCLEtBQUssVUFBVTtBQUFBLEVBQ3RDO0FBQ0EsU0FBTztBQUdQLFdBQVMsTUFBTSxPQUFPO0FBQ3BCLGFBQVMsS0FBSyxRQUFRLEtBQUs7QUFDM0IsU0FBSztBQUdMLFFBQUksT0FBTyxPQUFPLFNBQVMsQ0FBQyxNQUFNLE1BQU07QUFDdEMsYUFBTyxDQUFDO0FBQUEsSUFDVjtBQUNBLGNBQVUsWUFBWSxDQUFDO0FBR3ZCLFlBQVEsU0FBUyxXQUFXLHNCQUFzQixRQUFRLFFBQVEsT0FBTztBQUN6RSxXQUFPLFFBQVE7QUFBQSxFQUNqQjtBQU9BLFdBQVMsZUFBZSxPQUFPLFlBQVk7QUFDekMsV0FBTyxnQkFBZ0IsWUFBWSxLQUFLLEdBQUcsVUFBVTtBQUFBLEVBQ3ZEO0FBR0EsV0FBUyxZQUFZLE9BQU87QUFDMUIsV0FBTyxZQUFZLFFBQVEsS0FBSztBQUFBLEVBQ2xDO0FBR0EsV0FBUyxNQUFNO0FBRWIsVUFBTSxFQUFDLE1BQU0sUUFBUSxRQUFRLFFBQVEsYUFBWSxJQUFJRDtBQUNyRCxXQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUdBLFdBQVMsV0FBVyxPQUFPO0FBQ3pCLGdCQUFZLE1BQU0sSUFBSSxJQUFJLE1BQU07QUFDaEMsNEJBQXdCO0FBQUEsRUFDMUI7QUFnQkEsV0FBUyxPQUFPO0FBRWQsUUFBSTtBQUNKLFdBQU9BLE9BQU0sU0FBUyxPQUFPLFFBQVE7QUFDbkMsWUFBTSxRQUFRLE9BQU9BLE9BQU0sTUFBTTtBQUdqQyxVQUFJLE9BQU8sVUFBVSxVQUFVO0FBQzdCLHFCQUFhQSxPQUFNO0FBQ25CLFlBQUlBLE9BQU0sZUFBZSxHQUFHO0FBQzFCLFVBQUFBLE9BQU0sZUFBZTtBQUFBLFFBQ3ZCO0FBQ0EsZUFDRUEsT0FBTSxXQUFXLGNBQ2pCQSxPQUFNLGVBQWUsTUFBTSxRQUMzQjtBQUNBLGFBQUcsTUFBTSxXQUFXQSxPQUFNLFlBQVksQ0FBQztBQUFBLFFBQ3pDO0FBQUEsTUFDRixPQUFPO0FBQ0wsV0FBRyxLQUFLO0FBQUEsTUFDVjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBUUEsV0FBUyxHQUFHLE1BQU07QUFDaEIsZUFBVztBQUNYLG1CQUFlO0FBQ2YsWUFBUSxNQUFNLElBQUk7QUFBQSxFQUNwQjtBQUdBLFdBQVMsUUFBUSxNQUFNO0FBQ3JCLFFBQUksbUJBQW1CLElBQUksR0FBRztBQUM1QixNQUFBQSxPQUFNO0FBQ04sTUFBQUEsT0FBTSxTQUFTO0FBQ2YsTUFBQUEsT0FBTSxVQUFVLFNBQVMsS0FBSyxJQUFJO0FBQ2xDLDhCQUF3QjtBQUFBLElBQzFCLFdBQVcsU0FBUyxJQUFJO0FBQ3RCLE1BQUFBLE9BQU07QUFDTixNQUFBQSxPQUFNO0FBQUEsSUFDUjtBQUdBLFFBQUlBLE9BQU0sZUFBZSxHQUFHO0FBQzFCLE1BQUFBLE9BQU07QUFBQSxJQUNSLE9BQU87QUFDTCxNQUFBQSxPQUFNO0FBS04sVUFBSUEsT0FBTSxpQkFBaUIsT0FBT0EsT0FBTSxNQUFNLEVBQUUsUUFBUTtBQUN0RCxRQUFBQSxPQUFNLGVBQWU7QUFDckIsUUFBQUEsT0FBTTtBQUFBLE1BQ1I7QUFBQSxJQUNGO0FBR0EsWUFBUSxXQUFXO0FBR25CLGVBQVc7QUFBQSxFQUNiO0FBR0EsV0FBUyxNQUFNLE1BQU0sUUFBUTtBQUczQixVQUFNLFFBQVEsVUFBVSxDQUFDO0FBQ3pCLFVBQU0sT0FBTztBQUNiLFVBQU0sUUFBUSxJQUFJO0FBQ2xCLFlBQVEsT0FBTyxLQUFLLENBQUMsU0FBUyxPQUFPLE9BQU8sQ0FBQztBQUM3QyxVQUFNLEtBQUssS0FBSztBQUNoQixXQUFPO0FBQUEsRUFDVDtBQUdBLFdBQVNDLE1BQUssTUFBTTtBQUNsQixVQUFNLFFBQVEsTUFBTSxJQUFJO0FBQ3hCLFVBQU0sTUFBTSxJQUFJO0FBQ2hCLFlBQVEsT0FBTyxLQUFLLENBQUMsUUFBUSxPQUFPLE9BQU8sQ0FBQztBQUM1QyxXQUFPO0FBQUEsRUFDVDtBQU9BLFdBQVMsc0JBQXNCLFdBQVcsTUFBTTtBQUM5QyxjQUFVLFdBQVcsS0FBSyxJQUFJO0FBQUEsRUFDaEM7QUFPQSxXQUFTLGtCQUFrQkMsSUFBRyxNQUFNO0FBQ2xDLFNBQUssUUFBUTtBQUFBLEVBQ2Y7QUFRQSxXQUFTLGlCQUFpQixVQUFVLFFBQVE7QUFDMUMsV0FBTztBQVdQLGFBQVMsS0FBS0MsYUFBWSxhQUFhLFlBQVk7QUFFakQsVUFBSTtBQUVKLFVBQUk7QUFFSixVQUFJO0FBRUosVUFBSTtBQUNKLGFBQU8sTUFBTSxRQUFRQSxXQUFVLElBQzNCLHVCQUF1QkEsV0FBVSxJQUNqQyxjQUFjQTtBQUFBO0FBQUEsUUFFZCx1QkFBdUIsQ0FBQ0EsV0FBVSxDQUFDO0FBQUEsVUFDbkMsc0JBQXNCQSxXQUFVO0FBUXBDLGVBQVMsc0JBQXNCLEtBQUs7QUFDbEMsZUFBTztBQUdQLGlCQUFTLE1BQU0sTUFBTTtBQUNuQixnQkFBTSxNQUFNLFNBQVMsUUFBUSxJQUFJLElBQUk7QUFDckMsZ0JBQU1DLE9BQU0sU0FBUyxRQUFRLElBQUk7QUFDakMsZ0JBQU1DLFFBQU87QUFBQTtBQUFBO0FBQUEsWUFHWCxHQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksTUFBTSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7QUFBQSxZQUM5QyxHQUFJLE1BQU0sUUFBUUQsSUFBRyxJQUFJQSxPQUFNQSxPQUFNLENBQUNBLElBQUcsSUFBSSxDQUFDO0FBQUEsVUFDaEQ7QUFDQSxpQkFBTyx1QkFBdUJDLEtBQUksRUFBRSxJQUFJO0FBQUEsUUFDMUM7QUFBQSxNQUNGO0FBUUEsZUFBUyx1QkFBdUJBLE9BQU07QUFDcEMsMkJBQW1CQTtBQUNuQix5QkFBaUI7QUFDakIsWUFBSUEsTUFBSyxXQUFXLEdBQUc7QUFDckIsaUJBQU87QUFBQSxRQUNUO0FBQ0EsZUFBTyxnQkFBZ0JBLE1BQUssY0FBYyxDQUFDO0FBQUEsTUFDN0M7QUFRQSxlQUFTLGdCQUFnQixXQUFXO0FBQ2xDLGVBQU87QUFHUCxpQkFBUyxNQUFNLE1BQU07QUFLbkIsaUJBQU8sTUFBTTtBQUNiLDZCQUFtQjtBQUNuQixjQUFJLENBQUMsVUFBVSxTQUFTO0FBQ3RCLG9CQUFRLG1CQUFtQjtBQUFBLFVBQzdCO0FBSUEsY0FDRSxVQUFVLFFBQ1YsUUFBUSxPQUFPLFdBQVcsUUFBUSxLQUFLLFNBQVMsVUFBVSxJQUFJLEdBQzlEO0FBQ0EsbUJBQU8sSUFBSSxJQUFJO0FBQUEsVUFDakI7QUFDQSxpQkFBTyxVQUFVLFNBQVM7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUl4QixTQUFTLE9BQU8sT0FBTyxPQUFPLE9BQU8sT0FBTyxHQUFHLE1BQU0sSUFBSTtBQUFBLFlBQ3pEO0FBQUEsWUFDQUM7QUFBQSxZQUNBO0FBQUEsVUFDRixFQUFFLElBQUk7QUFBQSxRQUNSO0FBQUEsTUFDRjtBQUdBLGVBQVNBLElBQUcsTUFBTTtBQUNoQixtQkFBVztBQUNYLGlCQUFTLGtCQUFrQixJQUFJO0FBQy9CLGVBQU87QUFBQSxNQUNUO0FBR0EsZUFBUyxJQUFJLE1BQU07QUFDakIsbUJBQVc7QUFDWCxhQUFLLFFBQVE7QUFDYixZQUFJLEVBQUUsaUJBQWlCLGlCQUFpQixRQUFRO0FBQzlDLGlCQUFPLGdCQUFnQixpQkFBaUIsY0FBYyxDQUFDO0FBQUEsUUFDekQ7QUFDQSxlQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBT0EsV0FBUyxVQUFVLFdBQVdDLE9BQU07QUFDbEMsUUFBSSxVQUFVLGNBQWMsQ0FBQyxxQkFBcUIsU0FBUyxTQUFTLEdBQUc7QUFDckUsMkJBQXFCLEtBQUssU0FBUztBQUFBLElBQ3JDO0FBQ0EsUUFBSSxVQUFVLFNBQVM7QUFDckI7QUFBQSxRQUNFLFFBQVE7QUFBQSxRQUNSQTtBQUFBLFFBQ0EsUUFBUSxPQUFPLFNBQVNBO0FBQUEsUUFDeEIsVUFBVSxRQUFRLFFBQVEsT0FBTyxNQUFNQSxLQUFJLEdBQUcsT0FBTztBQUFBLE1BQ3ZEO0FBQUEsSUFDRjtBQUNBLFFBQUksVUFBVSxXQUFXO0FBQ3ZCLGNBQVEsU0FBUyxVQUFVLFVBQVUsUUFBUSxRQUFRLE9BQU87QUFBQSxJQUM5RDtBQUFBLEVBQ0Y7QUFPQSxXQUFTLFFBQVE7QUFDZixVQUFNLGFBQWEsSUFBSTtBQUN2QixVQUFNLGdCQUFnQixRQUFRO0FBQzlCLFVBQU0sd0JBQXdCLFFBQVE7QUFDdEMsVUFBTSxtQkFBbUIsUUFBUSxPQUFPO0FBQ3hDLFVBQU0sYUFBYSxNQUFNLEtBQUssS0FBSztBQUNuQyxXQUFPO0FBQUEsTUFDTDtBQUFBLE1BQ0EsTUFBTTtBQUFBLElBQ1I7QUFPQSxhQUFTLFVBQVU7QUFDakIsTUFBQVAsU0FBUTtBQUNSLGNBQVEsV0FBVztBQUNuQixjQUFRLG1CQUFtQjtBQUMzQixjQUFRLE9BQU8sU0FBUztBQUN4QixjQUFRO0FBQ1IsOEJBQXdCO0FBQUEsSUFDMUI7QUFBQSxFQUNGO0FBUUEsV0FBUywwQkFBMEI7QUFDakMsUUFBSUEsT0FBTSxRQUFRLGVBQWVBLE9BQU0sU0FBUyxHQUFHO0FBQ2pELE1BQUFBLE9BQU0sU0FBUyxZQUFZQSxPQUFNLElBQUk7QUFDckMsTUFBQUEsT0FBTSxVQUFVLFlBQVlBLE9BQU0sSUFBSSxJQUFJO0FBQUEsSUFDNUM7QUFBQSxFQUNGO0FBQ0Y7QUFTQSxTQUFTLFlBQVksUUFBUSxPQUFPO0FBQ2xDLFFBQU0sYUFBYSxNQUFNLE1BQU07QUFDL0IsUUFBTSxtQkFBbUIsTUFBTSxNQUFNO0FBQ3JDLFFBQU0sV0FBVyxNQUFNLElBQUk7QUFDM0IsUUFBTSxpQkFBaUIsTUFBTSxJQUFJO0FBRWpDLE1BQUk7QUFDSixNQUFJLGVBQWUsVUFBVTtBQUUzQixXQUFPLENBQUMsT0FBTyxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsY0FBYyxDQUFDO0FBQUEsRUFDcEUsT0FBTztBQUNMLFdBQU8sT0FBTyxNQUFNLFlBQVksUUFBUTtBQUN4QyxRQUFJLG1CQUFtQixJQUFJO0FBQ3pCLFlBQU0sT0FBTyxLQUFLLENBQUM7QUFDbkIsVUFBSSxPQUFPLFNBQVMsVUFBVTtBQUM1QixhQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sZ0JBQWdCO0FBQUEsTUFDdkMsT0FBTztBQUNMLGFBQUssTUFBTTtBQUFBLE1BQ2I7QUFBQSxJQUNGO0FBQ0EsUUFBSSxpQkFBaUIsR0FBRztBQUV0QixXQUFLLEtBQUssT0FBTyxRQUFRLEVBQUUsTUFBTSxHQUFHLGNBQWMsQ0FBQztBQUFBLElBQ3JEO0FBQUEsRUFDRjtBQUNBLFNBQU87QUFDVDtBQVNBLFNBQVMsZ0JBQWdCLFFBQVEsWUFBWTtBQUMzQyxNQUFJUSxTQUFRO0FBRVosUUFBTSxTQUFTLENBQUM7QUFFaEIsTUFBSTtBQUNKLFNBQU8sRUFBRUEsU0FBUSxPQUFPLFFBQVE7QUFDOUIsVUFBTSxRQUFRLE9BQU9BLE1BQUs7QUFFMUIsUUFBSTtBQUNKLFFBQUksT0FBTyxVQUFVLFVBQVU7QUFDN0IsY0FBUTtBQUFBLElBQ1Y7QUFDRSxjQUFRLE9BQU87QUFBQSxRQUNiLEtBQUssSUFBSTtBQUNQLGtCQUFRO0FBQ1I7QUFBQSxRQUNGO0FBQUEsUUFDQSxLQUFLLElBQUk7QUFDUCxrQkFBUTtBQUNSO0FBQUEsUUFDRjtBQUFBLFFBQ0EsS0FBSyxJQUFJO0FBQ1Asa0JBQVE7QUFDUjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLEtBQUssSUFBSTtBQUNQLGtCQUFRLGFBQWEsTUFBTTtBQUMzQjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLEtBQUssSUFBSTtBQUNQLGNBQUksQ0FBQyxjQUFjO0FBQU87QUFDMUIsa0JBQVE7QUFDUjtBQUFBLFFBQ0Y7QUFBQSxRQUNBLFNBQVM7QUFFUCxrQkFBUSxPQUFPLGFBQWEsS0FBSztBQUFBLFFBQ25DO0FBQUEsTUFDRjtBQUNGLFlBQVEsVUFBVTtBQUNsQixXQUFPLEtBQUssS0FBSztBQUFBLEVBQ25CO0FBQ0EsU0FBTyxPQUFPLEtBQUssRUFBRTtBQUN2Qjs7O0FDcmtCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsa0JBQUFDO0FBQUEsRUFBQSxZQUFBQztBQUFBLEVBQUE7QUFBQTtBQUFBLGdCQUFBQztBQUFBLEVBQUEsWUFBQUM7QUFBQTtBQTZCTyxJQUFNQyxZQUFXO0FBQUEsRUFDdEIsQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsRUFBRSxHQUFHO0FBQUEsRUFDTixDQUFDLEVBQUUsR0FBRztBQUFBLEVBQ04sQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsRUFBRSxHQUFHO0FBQUEsRUFDTixDQUFDLEVBQUUsR0FBRztBQUFBLEVBQ04sQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsRUFBRSxHQUFHO0FBQUEsRUFDTixDQUFDLEVBQUUsR0FBRztBQUFBLEVBQ04sQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsRUFBRSxHQUFHO0FBQUEsRUFDTixDQUFDLEVBQUUsR0FBRztBQUFBLEVBQ04sQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsRUFBRSxHQUFHO0FBQ1I7QUFHTyxJQUFNLGlCQUFpQjtBQUFBLEVBQzVCLENBQUMsRUFBRSxHQUFHO0FBQ1I7QUFHTyxJQUFNLGNBQWM7QUFBQSxFQUN6QixDQUFDLEVBQUUsR0FBRztBQUFBLEVBQ04sQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsRUFBRSxHQUFHO0FBQ1I7QUFHTyxJQUFNQyxRQUFPO0FBQUEsRUFDbEIsQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsRUFBRSxHQUFHO0FBQUEsRUFDTixDQUFDLEVBQUUsR0FBRyxDQUFDLGlCQUFpQixhQUFhO0FBQUEsRUFDckMsQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsRUFBRSxHQUFHO0FBQUEsRUFDTixDQUFDLEVBQUUsR0FBRztBQUFBLEVBQ04sQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsR0FBRyxHQUFHO0FBQ1Q7QUFHTyxJQUFNQyxVQUFTO0FBQUEsRUFDcEIsQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsRUFBRSxHQUFHO0FBQ1I7QUFHTyxJQUFNQyxRQUFPO0FBQUEsRUFDbEIsQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsRUFBRSxHQUFHO0FBQUEsRUFDTixDQUFDLEVBQUUsR0FBRztBQUFBLEVBQ04sQ0FBQyxFQUFFLEdBQUc7QUFBQSxFQUNOLENBQUMsRUFBRSxHQUFHO0FBQUEsRUFDTixDQUFDLEVBQUUsR0FBRztBQUFBLEVBQ04sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxVQUFVLFFBQVE7QUFBQSxFQUN6QixDQUFDLEVBQUUsR0FBRztBQUFBLEVBQ04sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsZUFBZTtBQUFBLEVBQ3ZDLENBQUMsRUFBRSxHQUFHO0FBQUEsRUFDTixDQUFDLEVBQUUsR0FBRztBQUFBLEVBQ04sQ0FBQyxFQUFFLEdBQUc7QUFDUjtBQUdPLElBQU0sYUFBYTtBQUFBLEVBQ3hCLE1BQU0sQ0FBQyxXQUFXLFFBQVc7QUFDL0I7QUFHTyxJQUFNLG1CQUFtQjtBQUFBLEVBQzlCLE1BQU0sQ0FBQyxJQUFJLEVBQUU7QUFDZjtBQUdPLElBQU0sVUFBVTtBQUFBLEVBQ3JCLE1BQU0sQ0FBQztBQUNUOzs7QUNyRk8sU0FBUyxNQUFNLFNBQVM7QUFDN0IsUUFBTSxXQUFXLFdBQVcsQ0FBQztBQUM3QixRQUFNQztBQUFBO0FBQUEsSUFFSixrQkFBa0IsQ0FBQyxvQkFBbUIsR0FBSSxTQUFTLGNBQWMsQ0FBQyxDQUFFLENBQUM7QUFBQTtBQUd2RSxRQUFNLFNBQVM7QUFBQSxJQUNiLFNBQVMsQ0FBQztBQUFBLElBQ1YsTUFBTSxDQUFDO0FBQUEsSUFDUCxZQUFBQTtBQUFBLElBQ0EsU0FBUyxPQUFPLE9BQU87QUFBQSxJQUN2QixVQUFVLE9BQU9DLFNBQVE7QUFBQSxJQUN6QixNQUFNLE9BQU8sSUFBSTtBQUFBLElBQ2pCLFFBQVEsT0FBTyxNQUFNO0FBQUEsSUFDckIsTUFBTSxPQUFPLElBQUk7QUFBQSxFQUNuQjtBQUNBLFNBQU87QUFLUCxXQUFTLE9BQU8sU0FBUztBQUN2QixXQUFPO0FBRVAsYUFBUyxRQUFRLE1BQU07QUFDckIsYUFBTyxnQkFBZ0IsUUFBUSxTQUFTLElBQUk7QUFBQSxJQUM5QztBQUFBLEVBQ0Y7QUFDRjs7O0FDbENBLElBQU0sU0FBUztBQUtSLFNBQVMsYUFBYTtBQUMzQixNQUFJLFNBQVM7QUFDYixNQUFJQyxVQUFTO0FBRWIsTUFBSSxRQUFRO0FBRVosTUFBSTtBQUNKLFNBQU87QUFHUCxXQUFTLGFBQWEsT0FBTyxVQUFVLEtBQUs7QUFFMUMsVUFBTSxTQUFTLENBQUM7QUFFaEIsUUFBSTtBQUVKLFFBQUk7QUFFSixRQUFJO0FBRUosUUFBSTtBQUVKLFFBQUk7QUFHSixZQUFRQSxVQUFTLE1BQU0sU0FBUyxRQUFRO0FBQ3hDLG9CQUFnQjtBQUNoQixJQUFBQSxVQUFTO0FBQ1QsUUFBSSxPQUFPO0FBRVQsVUFBSSxNQUFNLFdBQVcsQ0FBQyxNQUFNLE9BQU87QUFDakM7QUFBQSxNQUNGO0FBQ0EsY0FBUTtBQUFBLElBQ1Y7QUFDQSxXQUFPLGdCQUFnQixNQUFNLFFBQVE7QUFDbkMsYUFBTyxZQUFZO0FBQ25CLGNBQVEsT0FBTyxLQUFLLEtBQUs7QUFDekIsb0JBQ0UsU0FBUyxNQUFNLFVBQVUsU0FBWSxNQUFNLFFBQVEsTUFBTTtBQUMzRCxhQUFPLE1BQU0sV0FBVyxXQUFXO0FBQ25DLFVBQUksQ0FBQyxPQUFPO0FBQ1YsUUFBQUEsVUFBUyxNQUFNLE1BQU0sYUFBYTtBQUNsQztBQUFBLE1BQ0Y7QUFDQSxVQUFJLFNBQVMsTUFBTSxrQkFBa0IsZUFBZSxrQkFBa0I7QUFDcEUsZUFBTyxLQUFLLEVBQUU7QUFDZCwyQkFBbUI7QUFBQSxNQUNyQixPQUFPO0FBQ0wsWUFBSSxrQkFBa0I7QUFDcEIsaUJBQU8sS0FBSyxFQUFFO0FBQ2QsNkJBQW1CO0FBQUEsUUFDckI7QUFDQSxZQUFJLGdCQUFnQixhQUFhO0FBQy9CLGlCQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsV0FBVyxDQUFDO0FBQ25ELG9CQUFVLGNBQWM7QUFBQSxRQUMxQjtBQUNBLGdCQUFRLE1BQU07QUFBQSxVQUNaLEtBQUssR0FBRztBQUNOLG1CQUFPLEtBQUssS0FBSztBQUNqQjtBQUNBO0FBQUEsVUFDRjtBQUFBLFVBQ0EsS0FBSyxHQUFHO0FBQ04sbUJBQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxJQUFJO0FBQy9CLG1CQUFPLEtBQUssRUFBRTtBQUNkLG1CQUFPLFdBQVc7QUFBTSxxQkFBTyxLQUFLLEVBQUU7QUFDdEM7QUFBQSxVQUNGO0FBQUEsVUFDQSxLQUFLLElBQUk7QUFDUCxtQkFBTyxLQUFLLEVBQUU7QUFDZCxxQkFBUztBQUNUO0FBQUEsVUFDRjtBQUFBLFVBQ0EsU0FBUztBQUNQLCtCQUFtQjtBQUNuQixxQkFBUztBQUFBLFVBQ1g7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUNBLHNCQUFnQixjQUFjO0FBQUEsSUFDaEM7QUFDQSxRQUFJLEtBQUs7QUFDUCxVQUFJO0FBQWtCLGVBQU8sS0FBSyxFQUFFO0FBQ3BDLFVBQUlBO0FBQVEsZUFBTyxLQUFLQSxPQUFNO0FBQzlCLGFBQU8sS0FBSyxJQUFJO0FBQUEsSUFDbEI7QUFDQSxXQUFPO0FBQUEsRUFDVDtBQUNGOzs7QUNuR08sU0FBUyxZQUFZLFFBQVE7QUFDbEMsU0FBTyxDQUFDLFlBQVksTUFBTSxHQUFHO0FBQUEsRUFFN0I7QUFDQSxTQUFPO0FBQ1Q7OztBQ0RPLFNBQVMsZ0NBQWdDLE9BQU9DLE9BQU07QUFDM0QsUUFBTSxPQUFPLE9BQU8sU0FBUyxPQUFPQSxLQUFJO0FBQ3hDO0FBQUE7QUFBQSxJQUVFLE9BQU8sS0FDUCxTQUFTLE1BQ1IsT0FBTyxNQUFNLE9BQU87QUFBQSxJQUVwQixPQUFPLE9BQU8sT0FBTztBQUFBLElBRXJCLE9BQU8sU0FBUyxPQUFPO0FBQUEsSUFFdkIsT0FBTyxTQUFTLE9BQU8sVUFDdkIsT0FBTyxXQUFXLFVBQ2xCLE9BQU8sV0FBVztBQUFBLElBRW5CLE9BQU87QUFBQSxJQUNQO0FBQ0EsV0FBTztBQUFBLEVBQ1Q7QUFDQSxTQUFPLE9BQU8sYUFBYSxJQUFJO0FBQ2pDOzs7QUNqQ0EsSUFBTSw2QkFDSjtBQWNLLFNBQVMsYUFBYSxPQUFPO0FBQ2xDLFNBQU8sTUFBTSxRQUFRLDRCQUE0QixNQUFNO0FBQ3pEO0FBUUEsU0FBUyxPQUFPLElBQUksSUFBSSxJQUFJO0FBQzFCLE1BQUksSUFBSTtBQUVOLFdBQU87QUFBQSxFQUNUO0FBR0EsUUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDO0FBQzVCLE1BQUksU0FBUyxJQUFJO0FBQ2YsVUFBTUMsUUFBTyxHQUFHLFdBQVcsQ0FBQztBQUM1QixVQUFNLE1BQU1BLFVBQVMsT0FBT0EsVUFBUztBQUNyQyxXQUFPLGdDQUFnQyxHQUFHLE1BQU0sTUFBTSxJQUFJLENBQUMsR0FBRyxNQUFNLEtBQUssRUFBRTtBQUFBLEVBQzdFO0FBQ0EsU0FBTyw4QkFBOEIsRUFBRSxLQUFLO0FBQzlDOzs7QUNrSEEsSUFBTUMsT0FBTSxDQUFDLEVBQUU7QUFZUixJQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFjWCxTQUFVLE9BQU8sVUFBVSxTQUFTO0FBQ2xDLFFBQUksT0FBTyxhQUFhLFVBQVU7QUFDaEMsZ0JBQVU7QUFDVixpQkFBVztBQUFBLElBQ2I7QUFDQSxXQUFPLFNBQVMsT0FBTztBQUFBLE1BQ3JCO0FBQUEsUUFDRSxNQUFNLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLEVBQUUsT0FBTyxVQUFVLElBQUksQ0FBQztBQUFBLE1BQ3JFO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQTtBQU9GLFNBQVMsU0FBUyxTQUFTO0FBRXpCLFFBQU0sU0FBUztBQUFBLElBQ2IsWUFBWSxDQUFDO0FBQUEsSUFDYixnQkFBZ0IsQ0FBQyxZQUFZLFlBQVksV0FBVyxhQUFhLFFBQVE7QUFBQSxJQUN6RSxPQUFPO0FBQUEsTUFDTCxVQUFVLE9BQU8sSUFBSTtBQUFBLE1BQ3JCLGtCQUFrQjtBQUFBLE1BQ2xCLGVBQWU7QUFBQSxNQUNmLFlBQVksT0FBTyxPQUFPO0FBQUEsTUFDMUIsWUFBWSxPQUFPQyxXQUFVO0FBQUEsTUFDN0IsaUJBQWlCO0FBQUEsTUFDakIsb0JBQW9CO0FBQUEsTUFDcEIsWUFBWSxPQUFPLFFBQVE7QUFBQSxNQUMzQixxQkFBcUJDO0FBQUEsTUFDckIscUJBQXFCQTtBQUFBLE1BQ3JCLGNBQWMsT0FBTyxVQUFVQSxPQUFNO0FBQUEsTUFDckMsVUFBVSxPQUFPQyxXQUFVRCxPQUFNO0FBQUEsTUFDakMsY0FBYztBQUFBLE1BQ2QsTUFBTTtBQUFBLE1BQ04sZUFBZTtBQUFBLE1BQ2YsWUFBWSxPQUFPRSxXQUFVO0FBQUEsTUFDN0IsNkJBQTZCRjtBQUFBLE1BQzdCLHVCQUF1QkE7QUFBQSxNQUN2Qix1QkFBdUJBO0FBQUEsTUFDdkIsVUFBVSxPQUFPLFFBQVE7QUFBQSxNQUN6QixpQkFBaUIsT0FBTyxTQUFTO0FBQUEsTUFDakMsbUJBQW1CLE9BQU8sU0FBUztBQUFBLE1BQ25DLFVBQVUsT0FBTyxNQUFNQSxPQUFNO0FBQUEsTUFDN0IsY0FBYztBQUFBLE1BQ2QsVUFBVSxPQUFPLE1BQU1BLE9BQU07QUFBQSxNQUM3QixjQUFjO0FBQUEsTUFDZCxPQUFPLE9BQU8sS0FBSztBQUFBLE1BQ25CLE9BQU9BO0FBQUEsTUFDUCxNQUFNLE9BQU8sSUFBSTtBQUFBLE1BQ2pCLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDekIsZUFBZTtBQUFBLE1BQ2YsYUFBYSxPQUFPRyxPQUFNLGtCQUFrQjtBQUFBLE1BQzVDLGVBQWUsT0FBT0EsS0FBSTtBQUFBLE1BQzFCLFdBQVcsT0FBTyxTQUFTO0FBQUEsTUFDM0IsV0FBVztBQUFBLE1BQ1gsaUJBQWlCSDtBQUFBLE1BQ2pCLDJCQUEyQkE7QUFBQSxNQUMzQixxQkFBcUJBO0FBQUEsTUFDckIsZUFBZSxPQUFPLE9BQU87QUFBQSxNQUM3QixRQUFRLE9BQU8sTUFBTTtBQUFBLE1BQ3JCLGVBQWUsT0FBT0ksY0FBYTtBQUFBLElBQ3JDO0FBQUEsSUFDQSxNQUFNO0FBQUEsTUFDSixZQUFZLE9BQU87QUFBQSxNQUNuQixvQkFBb0I7QUFBQSxNQUNwQixVQUFVLE9BQU87QUFBQSxNQUNqQixlQUFlO0FBQUEsTUFDZixrQkFBa0I7QUFBQSxNQUNsQixZQUFZLE9BQU87QUFBQSxNQUNuQixzQkFBc0I7QUFBQSxNQUN0QixxQ0FBcUM7QUFBQSxNQUNyQyxpQ0FBaUM7QUFBQSxNQUNqQyx5QkFBeUI7QUFBQSxNQUN6QixZQUFZLE9BQU8sZ0JBQWdCO0FBQUEsTUFDbkMsaUJBQWlCO0FBQUEsTUFDakIscUJBQXFCO0FBQUEsTUFDckIscUJBQXFCO0FBQUEsTUFDckIsZUFBZTtBQUFBLE1BQ2YsY0FBYyxPQUFPLGtCQUFrQjtBQUFBLE1BQ3ZDLFVBQVUsT0FBTyxjQUFjO0FBQUEsTUFDL0IsY0FBYztBQUFBLE1BQ2QsTUFBTTtBQUFBLE1BQ04sWUFBWSxPQUFPO0FBQUEsTUFDbkIsNkJBQTZCO0FBQUEsTUFDN0IsdUJBQXVCO0FBQUEsTUFDdkIsdUJBQXVCO0FBQUEsTUFDdkIsVUFBVSxPQUFPO0FBQUEsTUFDakIsaUJBQWlCLE9BQU8sZUFBZTtBQUFBLE1BQ3ZDLG1CQUFtQixPQUFPLGVBQWU7QUFBQSxNQUN6QyxVQUFVLE9BQU8sY0FBYztBQUFBLE1BQy9CLGNBQWM7QUFBQSxNQUNkLFVBQVUsT0FBTyxjQUFjO0FBQUEsTUFDL0IsY0FBYztBQUFBLE1BQ2QsT0FBTyxPQUFPLFdBQVc7QUFBQSxNQUN6QixPQUFPO0FBQUEsTUFDUCxXQUFXO0FBQUEsTUFDWCxZQUFZO0FBQUEsTUFDWixNQUFNLE9BQU8sVUFBVTtBQUFBLE1BQ3ZCLFVBQVUsT0FBTztBQUFBLE1BQ2pCLGFBQWEsT0FBTztBQUFBLE1BQ3BCLGVBQWUsT0FBTztBQUFBLE1BQ3RCLFdBQVcsT0FBTztBQUFBLE1BQ2xCLGlCQUFpQjtBQUFBLE1BQ2pCLDJCQUEyQjtBQUFBLE1BQzNCLHFCQUFxQjtBQUFBLE1BQ3JCLFVBQVU7QUFBQSxNQUNWLGVBQWUsT0FBTyxtQkFBbUI7QUFBQSxNQUN6QywyQkFBMkI7QUFBQSxNQUMzQixtQkFBbUI7QUFBQSxNQUNuQixRQUFRLE9BQU87QUFBQSxNQUNmLGVBQWUsT0FBTztBQUFBLElBQ3hCO0FBQUEsRUFDRjtBQUNBLFlBQVUsU0FBUyxXQUFXLENBQUMsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDO0FBR3ZELFFBQU0sT0FBTyxDQUFDO0FBQ2QsU0FBTztBQVVQLFdBQVMsUUFBUSxRQUFRO0FBRXZCLFFBQUksT0FBTztBQUFBLE1BQ1QsTUFBTTtBQUFBLE1BQ04sVUFBVSxDQUFDO0FBQUEsSUFDYjtBQUVBLFVBQU0sVUFBVTtBQUFBLE1BQ2QsT0FBTyxDQUFDLElBQUk7QUFBQSxNQUNaLFlBQVksQ0FBQztBQUFBLE1BQ2I7QUFBQSxNQUNBO0FBQUEsTUFDQSxNQUFBQztBQUFBLE1BQ0EsUUFBQUw7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxJQUNGO0FBRUEsVUFBTSxZQUFZLENBQUM7QUFDbkIsUUFBSU0sU0FBUTtBQUNaLFdBQU8sRUFBRUEsU0FBUSxPQUFPLFFBQVE7QUFHOUIsVUFDRSxPQUFPQSxNQUFLLEVBQUUsQ0FBQyxFQUFFLFNBQVMsaUJBQzFCLE9BQU9BLE1BQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxpQkFDMUI7QUFDQSxZQUFJLE9BQU9BLE1BQUssRUFBRSxDQUFDLE1BQU0sU0FBUztBQUNoQyxvQkFBVSxLQUFLQSxNQUFLO0FBQUEsUUFDdEIsT0FBTztBQUNMLGdCQUFNLE9BQU8sVUFBVSxJQUFJO0FBQzNCLFVBQUFBLFNBQVEsWUFBWSxRQUFRLE1BQU1BLE1BQUs7QUFBQSxRQUN6QztBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQ0EsSUFBQUEsU0FBUTtBQUNSLFdBQU8sRUFBRUEsU0FBUSxPQUFPLFFBQVE7QUFDOUIsWUFBTSxVQUFVLE9BQU8sT0FBT0EsTUFBSyxFQUFFLENBQUMsQ0FBQztBQUN2QyxVQUFJUixLQUFJLEtBQUssU0FBUyxPQUFPUSxNQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRztBQUM1QyxnQkFBUSxPQUFPQSxNQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRTtBQUFBLFVBQzdCLE9BQU87QUFBQSxZQUNMO0FBQUEsY0FDRSxnQkFBZ0IsT0FBT0EsTUFBSyxFQUFFLENBQUMsRUFBRTtBQUFBLFlBQ25DO0FBQUEsWUFDQTtBQUFBLFVBQ0Y7QUFBQSxVQUNBLE9BQU9BLE1BQUssRUFBRSxDQUFDO0FBQUEsUUFDakI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUdBLFFBQUksUUFBUSxXQUFXLFNBQVMsR0FBRztBQUNqQyxZQUFNLE9BQU8sUUFBUSxXQUFXLFFBQVEsV0FBVyxTQUFTLENBQUM7QUFDN0QsWUFBTSxVQUFVLEtBQUssQ0FBQyxLQUFLO0FBQzNCLGNBQVEsS0FBSyxTQUFTLFFBQVcsS0FBSyxDQUFDLENBQUM7QUFBQSxJQUMxQztBQUdBLFNBQUssV0FBVztBQUFBLE1BQ2QsT0FBT0M7QUFBQSxRQUNMLE9BQU8sU0FBUyxJQUNaLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUNiO0FBQUEsVUFDRSxNQUFNO0FBQUEsVUFDTixRQUFRO0FBQUEsVUFDUixRQUFRO0FBQUEsUUFDVjtBQUFBLE1BQ047QUFBQSxNQUNBLEtBQUtBO0FBQUEsUUFDSCxPQUFPLFNBQVMsSUFDWixPQUFPLE9BQU8sU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQzdCO0FBQUEsVUFDRSxNQUFNO0FBQUEsVUFDTixRQUFRO0FBQUEsVUFDUixRQUFRO0FBQUEsUUFDVjtBQUFBLE1BQ047QUFBQSxJQUNGO0FBR0EsSUFBQUQsU0FBUTtBQUNSLFdBQU8sRUFBRUEsU0FBUSxPQUFPLFdBQVcsUUFBUTtBQUN6QyxhQUFPLE9BQU8sV0FBV0EsTUFBSyxFQUFFLElBQUksS0FBSztBQUFBLElBQzNDO0FBQ0EsV0FBTztBQUFBLEVBQ1Q7QUFRQSxXQUFTLFlBQVksUUFBUSxPQUFPLFFBQVE7QUFDMUMsUUFBSUEsU0FBUSxRQUFRO0FBQ3BCLFFBQUksbUJBQW1CO0FBQ3ZCLFFBQUksYUFBYTtBQUVqQixRQUFJRTtBQUVKLFFBQUk7QUFFSixRQUFJO0FBRUosUUFBSTtBQUNKLFdBQU8sRUFBRUYsVUFBUyxRQUFRO0FBQ3hCLFlBQU0sUUFBUSxPQUFPQSxNQUFLO0FBQzFCLFVBQ0UsTUFBTSxDQUFDLEVBQUUsU0FBUyxtQkFDbEIsTUFBTSxDQUFDLEVBQUUsU0FBUyxpQkFDbEIsTUFBTSxDQUFDLEVBQUUsU0FBUyxjQUNsQjtBQUNBLFlBQUksTUFBTSxDQUFDLE1BQU0sU0FBUztBQUN4QjtBQUFBLFFBQ0YsT0FBTztBQUNMO0FBQUEsUUFDRjtBQUNBLG1CQUFXO0FBQUEsTUFDYixXQUFXLE1BQU0sQ0FBQyxFQUFFLFNBQVMsbUJBQW1CO0FBQzlDLFlBQUksTUFBTSxDQUFDLE1BQU0sU0FBUztBQUN4QixjQUNFRSxhQUNBLENBQUMsWUFDRCxDQUFDLG9CQUNELENBQUMscUJBQ0Q7QUFDQSxrQ0FBc0JGO0FBQUEsVUFDeEI7QUFDQSxxQkFBVztBQUFBLFFBQ2I7QUFBQSxNQUNGLFdBQ0UsTUFBTSxDQUFDLEVBQUUsU0FBUyxnQkFDbEIsTUFBTSxDQUFDLEVBQUUsU0FBUyxtQkFDbEIsTUFBTSxDQUFDLEVBQUUsU0FBUyxvQkFDbEIsTUFBTSxDQUFDLEVBQUUsU0FBUyxvQkFDbEIsTUFBTSxDQUFDLEVBQUUsU0FBUyw0QkFDbEI7QUFBQSxNQUVGLE9BQU87QUFDTCxtQkFBVztBQUFBLE1BQ2I7QUFDQSxVQUNHLENBQUMsb0JBQ0EsTUFBTSxDQUFDLE1BQU0sV0FDYixNQUFNLENBQUMsRUFBRSxTQUFTLG9CQUNuQixxQkFBcUIsTUFDcEIsTUFBTSxDQUFDLE1BQU0sV0FDWixNQUFNLENBQUMsRUFBRSxTQUFTLG1CQUNqQixNQUFNLENBQUMsRUFBRSxTQUFTLGdCQUN0QjtBQUNBLFlBQUlFLFdBQVU7QUFDWixjQUFJLFlBQVlGO0FBQ2hCLHNCQUFZO0FBQ1osaUJBQU8sYUFBYTtBQUNsQixrQkFBTSxZQUFZLE9BQU8sU0FBUztBQUNsQyxnQkFDRSxVQUFVLENBQUMsRUFBRSxTQUFTLGdCQUN0QixVQUFVLENBQUMsRUFBRSxTQUFTLG1CQUN0QjtBQUNBLGtCQUFJLFVBQVUsQ0FBQyxNQUFNO0FBQVE7QUFDN0Isa0JBQUksV0FBVztBQUNiLHVCQUFPLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTztBQUM1Qiw2QkFBYTtBQUFBLGNBQ2Y7QUFDQSx3QkFBVSxDQUFDLEVBQUUsT0FBTztBQUNwQiwwQkFBWTtBQUFBLFlBQ2QsV0FDRSxVQUFVLENBQUMsRUFBRSxTQUFTLGdCQUN0QixVQUFVLENBQUMsRUFBRSxTQUFTLHNCQUN0QixVQUFVLENBQUMsRUFBRSxTQUFTLGdDQUN0QixVQUFVLENBQUMsRUFBRSxTQUFTLHNCQUN0QixVQUFVLENBQUMsRUFBRSxTQUFTLGtCQUN0QjtBQUFBLFlBRUYsT0FBTztBQUNMO0FBQUEsWUFDRjtBQUFBLFVBQ0Y7QUFDQSxjQUNFLHdCQUNDLENBQUMsYUFBYSxzQkFBc0IsWUFDckM7QUFDQSxZQUFBRSxVQUFTLFVBQVU7QUFBQSxVQUNyQjtBQUdBLFVBQUFBLFVBQVMsTUFBTSxPQUFPO0FBQUEsWUFDcEIsQ0FBQztBQUFBLFlBQ0QsWUFBWSxPQUFPLFNBQVMsRUFBRSxDQUFDLEVBQUUsUUFBUSxNQUFNLENBQUMsRUFBRTtBQUFBLFVBQ3BEO0FBQ0EsaUJBQU8sT0FBTyxhQUFhRixRQUFPLEdBQUcsQ0FBQyxRQUFRRSxXQUFVLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDakUsVUFBQUY7QUFDQTtBQUFBLFFBQ0Y7QUFHQSxZQUFJLE1BQU0sQ0FBQyxFQUFFLFNBQVMsa0JBQWtCO0FBQ3RDLFVBQUFFLFlBQVc7QUFBQSxZQUNULE1BQU07QUFBQSxZQUNOLFNBQVM7QUFBQSxZQUNULE9BQU8sT0FBTyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxLQUFLO0FBQUE7QUFBQSxZQUV2QyxLQUFLO0FBQUEsVUFDUDtBQUVBLGlCQUFPLE9BQU9GLFFBQU8sR0FBRyxDQUFDLFNBQVNFLFdBQVUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRCxVQUFBRjtBQUNBO0FBQ0EsZ0NBQXNCO0FBQ3RCLHFCQUFXO0FBQUEsUUFDYjtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQ0EsV0FBTyxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVU7QUFDM0IsV0FBTztBQUFBLEVBQ1Q7QUFjQSxXQUFTLFFBQVEsS0FBSyxPQUFPO0FBQzNCLFNBQUssR0FBRyxJQUFJO0FBQUEsRUFDZDtBQVlBLFdBQVMsUUFBUSxLQUFLO0FBQ3BCLFdBQU8sS0FBSyxHQUFHO0FBQUEsRUFDakI7QUFZQSxXQUFTLE9BQU8sUUFBUSxLQUFLO0FBQzNCLFdBQU87QUFPUCxhQUFTLEtBQUssT0FBTztBQUNuQixZQUFNLEtBQUssTUFBTSxPQUFPLEtBQUssR0FBRyxLQUFLO0FBQ3JDLFVBQUk7QUFBSyxZQUFJLEtBQUssTUFBTSxLQUFLO0FBQUEsSUFDL0I7QUFBQSxFQUNGO0FBTUEsV0FBU04sVUFBUztBQUNoQixTQUFLLE1BQU0sS0FBSztBQUFBLE1BQ2QsTUFBTTtBQUFBLE1BQ04sVUFBVSxDQUFDO0FBQUEsSUFDYixDQUFDO0FBQUEsRUFDSDtBQWdCQSxXQUFTLE1BQU1TLE9BQU0sT0FBTyxjQUFjO0FBQ3hDLFVBQU0sU0FBUyxLQUFLLE1BQU0sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUUvQyxXQUFPLFNBQVMsS0FBS0EsS0FBSTtBQUN6QixTQUFLLE1BQU0sS0FBS0EsS0FBSTtBQUNwQixTQUFLLFdBQVcsS0FBSyxDQUFDLE9BQU8sWUFBWSxDQUFDO0FBRTFDLElBQUFBLE1BQUssV0FBVztBQUFBLE1BQ2QsT0FBT0YsT0FBTSxNQUFNLEtBQUs7QUFBQSxJQUMxQjtBQUNBLFdBQU9FO0FBQUEsRUFDVDtBQVVBLFdBQVMsT0FBTyxLQUFLO0FBQ25CLFdBQU87QUFPUCxhQUFTLE1BQU0sT0FBTztBQUNwQixVQUFJO0FBQUssWUFBSSxLQUFLLE1BQU0sS0FBSztBQUM3QixNQUFBSixNQUFLLEtBQUssTUFBTSxLQUFLO0FBQUEsSUFDdkI7QUFBQSxFQUNGO0FBWUEsV0FBU0EsTUFBSyxPQUFPLGFBQWE7QUFDaEMsVUFBTUksUUFBTyxLQUFLLE1BQU0sSUFBSTtBQUM1QixVQUFNLE9BQU8sS0FBSyxXQUFXLElBQUk7QUFDakMsUUFBSSxDQUFDLE1BQU07QUFDVCxZQUFNLElBQUk7QUFBQSxRQUNSLG1CQUNFLE1BQU0sT0FDTixRQUNBLGtCQUFrQjtBQUFBLFVBQ2hCLE9BQU8sTUFBTTtBQUFBLFVBQ2IsS0FBSyxNQUFNO0FBQUEsUUFDYixDQUFDLElBQ0Q7QUFBQSxNQUNKO0FBQUEsSUFDRixXQUFXLEtBQUssQ0FBQyxFQUFFLFNBQVMsTUFBTSxNQUFNO0FBQ3RDLFVBQUksYUFBYTtBQUNmLG9CQUFZLEtBQUssTUFBTSxPQUFPLEtBQUssQ0FBQyxDQUFDO0FBQUEsTUFDdkMsT0FBTztBQUNMLGNBQU0sVUFBVSxLQUFLLENBQUMsS0FBSztBQUMzQixnQkFBUSxLQUFLLE1BQU0sT0FBTyxLQUFLLENBQUMsQ0FBQztBQUFBLE1BQ25DO0FBQUEsSUFDRjtBQUNBLElBQUFBLE1BQUssU0FBUyxNQUFNRixPQUFNLE1BQU0sR0FBRztBQUNuQyxXQUFPRTtBQUFBLEVBQ1Q7QUFNQSxXQUFTLFNBQVM7QUFDaEIsV0FBTyxTQUFTLEtBQUssTUFBTSxJQUFJLENBQUM7QUFBQSxFQUNsQztBQVVBLFdBQVMscUJBQXFCO0FBQzVCLFlBQVEsK0JBQStCLElBQUk7QUFBQSxFQUM3QztBQU1BLFdBQVMscUJBQXFCLE9BQU87QUFDbkMsUUFBSSxRQUFRLDZCQUE2QixHQUFHO0FBQzFDLFlBQU0sV0FBVyxLQUFLLE1BQU0sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUNqRCxlQUFTLFFBQVEsT0FBTyxTQUFTLEtBQUssZUFBZSxLQUFLLEdBQUcsRUFBRTtBQUMvRCxjQUFRLDZCQUE2QjtBQUFBLElBQ3ZDO0FBQUEsRUFDRjtBQU1BLFdBQVMsNEJBQTRCO0FBQ25DLFVBQU1DLFFBQU8sS0FBSyxPQUFPO0FBQ3pCLFVBQU1ELFFBQU8sS0FBSyxNQUFNLEtBQUssTUFBTSxTQUFTLENBQUM7QUFDN0MsSUFBQUEsTUFBSyxPQUFPQztBQUFBLEVBQ2Q7QUFNQSxXQUFTLDRCQUE0QjtBQUNuQyxVQUFNQSxRQUFPLEtBQUssT0FBTztBQUN6QixVQUFNRCxRQUFPLEtBQUssTUFBTSxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQzdDLElBQUFBLE1BQUssT0FBT0M7QUFBQSxFQUNkO0FBTUEsV0FBUyx3QkFBd0I7QUFFL0IsUUFBSSxRQUFRLGdCQUFnQjtBQUFHO0FBQy9CLFNBQUssT0FBTztBQUNaLFlBQVEsa0JBQWtCLElBQUk7QUFBQSxFQUNoQztBQU1BLFdBQVMsbUJBQW1CO0FBQzFCLFVBQU1BLFFBQU8sS0FBSyxPQUFPO0FBQ3pCLFVBQU1ELFFBQU8sS0FBSyxNQUFNLEtBQUssTUFBTSxTQUFTLENBQUM7QUFDN0MsSUFBQUEsTUFBSyxRQUFRQyxNQUFLLFFBQVEsNEJBQTRCLEVBQUU7QUFDeEQsWUFBUSxnQkFBZ0I7QUFBQSxFQUMxQjtBQU1BLFdBQVMscUJBQXFCO0FBQzVCLFVBQU1BLFFBQU8sS0FBSyxPQUFPO0FBQ3pCLFVBQU1ELFFBQU8sS0FBSyxNQUFNLEtBQUssTUFBTSxTQUFTLENBQUM7QUFDN0MsSUFBQUEsTUFBSyxRQUFRQyxNQUFLLFFBQVEsZ0JBQWdCLEVBQUU7QUFBQSxFQUM5QztBQU1BLFdBQVMsNEJBQTRCLE9BQU87QUFDMUMsVUFBTSxRQUFRLEtBQUssT0FBTztBQUMxQixVQUFNRCxRQUFPLEtBQUssTUFBTSxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQzdDLElBQUFBLE1BQUssUUFBUTtBQUNiLElBQUFBLE1BQUssYUFBYTtBQUFBLE1BQ2hCLEtBQUssZUFBZSxLQUFLO0FBQUEsSUFDM0IsRUFBRSxZQUFZO0FBQUEsRUFDaEI7QUFNQSxXQUFTLDhCQUE4QjtBQUNyQyxVQUFNQyxRQUFPLEtBQUssT0FBTztBQUN6QixVQUFNRCxRQUFPLEtBQUssTUFBTSxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQzdDLElBQUFBLE1BQUssUUFBUUM7QUFBQSxFQUNmO0FBTUEsV0FBUyxvQ0FBb0M7QUFDM0MsVUFBTUEsUUFBTyxLQUFLLE9BQU87QUFDekIsVUFBTUQsUUFBTyxLQUFLLE1BQU0sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUM3QyxJQUFBQSxNQUFLLE1BQU1DO0FBQUEsRUFDYjtBQU1BLFdBQVMseUJBQXlCLE9BQU87QUFDdkMsVUFBTUQsUUFBTyxLQUFLLE1BQU0sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUM3QyxRQUFJLENBQUNBLE1BQUssT0FBTztBQUNmLFlBQU0sUUFBUSxLQUFLLGVBQWUsS0FBSyxFQUFFO0FBQ3pDLE1BQUFBLE1BQUssUUFBUTtBQUFBLElBQ2Y7QUFBQSxFQUNGO0FBTUEsV0FBUywwQkFBMEI7QUFDakMsWUFBUSxnQ0FBZ0MsSUFBSTtBQUFBLEVBQzlDO0FBTUEsV0FBUyxnQ0FBZ0MsT0FBTztBQUM5QyxVQUFNQSxRQUFPLEtBQUssTUFBTSxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQzdDLElBQUFBLE1BQUssUUFBUSxLQUFLLGVBQWUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxNQUFNLEtBQUssSUFBSTtBQUFBLEVBQ3JFO0FBTUEsV0FBUyxzQkFBc0I7QUFDN0IsWUFBUSw4QkFBOEI7QUFBQSxFQUN4QztBQU9BLFdBQVMsWUFBWSxPQUFPO0FBQzFCLFVBQU1BLFFBQU8sS0FBSyxNQUFNLEtBQUssTUFBTSxTQUFTLENBQUM7QUFDN0MsUUFBSSxPQUFPQSxNQUFLLFNBQVNBLE1BQUssU0FBUyxTQUFTLENBQUM7QUFDakQsUUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLFFBQVE7QUFFakMsYUFBT0UsTUFBSztBQUVaLFdBQUssV0FBVztBQUFBLFFBQ2QsT0FBT0osT0FBTSxNQUFNLEtBQUs7QUFBQSxNQUMxQjtBQUVBLE1BQUFFLE1BQUssU0FBUyxLQUFLLElBQUk7QUFBQSxJQUN6QjtBQUNBLFNBQUssTUFBTSxLQUFLLElBQUk7QUFBQSxFQUN0QjtBQU9BLFdBQVMsV0FBVyxPQUFPO0FBQ3pCLFVBQU0sT0FBTyxLQUFLLE1BQU0sSUFBSTtBQUM1QixTQUFLLFNBQVMsS0FBSyxlQUFlLEtBQUs7QUFDdkMsU0FBSyxTQUFTLE1BQU1GLE9BQU0sTUFBTSxHQUFHO0FBQUEsRUFDckM7QUFPQSxXQUFTLGlCQUFpQixPQUFPO0FBQy9CLFVBQU0sVUFBVSxLQUFLLE1BQU0sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUVoRCxRQUFJLFFBQVEsYUFBYSxHQUFHO0FBQzFCLFlBQU0sT0FBTyxRQUFRLFNBQVMsUUFBUSxTQUFTLFNBQVMsQ0FBQztBQUN6RCxXQUFLLFNBQVMsTUFBTUEsT0FBTSxNQUFNLEdBQUc7QUFDbkMsY0FBUSxhQUFhO0FBQ3JCO0FBQUEsSUFDRjtBQUNBLFFBQ0UsQ0FBQyxRQUFRLDhCQUE4QixLQUN2QyxPQUFPLGVBQWUsU0FBUyxRQUFRLElBQUksR0FDM0M7QUFDQSxrQkFBWSxLQUFLLE1BQU0sS0FBSztBQUM1QixpQkFBVyxLQUFLLE1BQU0sS0FBSztBQUFBLElBQzdCO0FBQUEsRUFDRjtBQU9BLFdBQVMsa0JBQWtCO0FBQ3pCLFlBQVEsZUFBZSxJQUFJO0FBQUEsRUFDN0I7QUFPQSxXQUFTLGlCQUFpQjtBQUN4QixVQUFNRyxRQUFPLEtBQUssT0FBTztBQUN6QixVQUFNRCxRQUFPLEtBQUssTUFBTSxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQzdDLElBQUFBLE1BQUssUUFBUUM7QUFBQSxFQUNmO0FBT0EsV0FBUyxpQkFBaUI7QUFDeEIsVUFBTUEsUUFBTyxLQUFLLE9BQU87QUFDekIsVUFBTUQsUUFBTyxLQUFLLE1BQU0sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUM3QyxJQUFBQSxNQUFLLFFBQVFDO0FBQUEsRUFDZjtBQU9BLFdBQVMsaUJBQWlCO0FBQ3hCLFVBQU1BLFFBQU8sS0FBSyxPQUFPO0FBQ3pCLFVBQU1ELFFBQU8sS0FBSyxNQUFNLEtBQUssTUFBTSxTQUFTLENBQUM7QUFDN0MsSUFBQUEsTUFBSyxRQUFRQztBQUFBLEVBQ2Y7QUFPQSxXQUFTLGFBQWE7QUFDcEIsVUFBTUQsUUFBTyxLQUFLLE1BQU0sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUk3QyxRQUFJLFFBQVEsYUFBYSxHQUFHO0FBRTFCLFlBQU0sZ0JBQWdCLFFBQVEsZUFBZSxLQUFLO0FBQ2xELE1BQUFBLE1BQUssUUFBUTtBQUViLE1BQUFBLE1BQUssZ0JBQWdCO0FBRXJCLGFBQU9BLE1BQUs7QUFDWixhQUFPQSxNQUFLO0FBQUEsSUFDZCxPQUFPO0FBRUwsYUFBT0EsTUFBSztBQUVaLGFBQU9BLE1BQUs7QUFBQSxJQUNkO0FBQ0EsWUFBUSxlQUFlO0FBQUEsRUFDekI7QUFPQSxXQUFTLGNBQWM7QUFDckIsVUFBTUEsUUFBTyxLQUFLLE1BQU0sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUk3QyxRQUFJLFFBQVEsYUFBYSxHQUFHO0FBRTFCLFlBQU0sZ0JBQWdCLFFBQVEsZUFBZSxLQUFLO0FBQ2xELE1BQUFBLE1BQUssUUFBUTtBQUViLE1BQUFBLE1BQUssZ0JBQWdCO0FBRXJCLGFBQU9BLE1BQUs7QUFDWixhQUFPQSxNQUFLO0FBQUEsSUFDZCxPQUFPO0FBRUwsYUFBT0EsTUFBSztBQUVaLGFBQU9BLE1BQUs7QUFBQSxJQUNkO0FBQ0EsWUFBUSxlQUFlO0FBQUEsRUFDekI7QUFPQSxXQUFTLGdCQUFnQixPQUFPO0FBQzlCLFVBQU1HLFVBQVMsS0FBSyxlQUFlLEtBQUs7QUFDeEMsVUFBTSxXQUFXLEtBQUssTUFBTSxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBR2pELGFBQVMsUUFBUSxhQUFhQSxPQUFNO0FBRXBDLGFBQVMsYUFBYSxvQkFBb0JBLE9BQU0sRUFBRSxZQUFZO0FBQUEsRUFDaEU7QUFPQSxXQUFTLGNBQWM7QUFDckIsVUFBTSxXQUFXLEtBQUssTUFBTSxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQ2pELFVBQU0sUUFBUSxLQUFLLE9BQU87QUFDMUIsVUFBTUgsUUFBTyxLQUFLLE1BQU0sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUU3QyxZQUFRLGVBQWUsSUFBSTtBQUMzQixRQUFJQSxNQUFLLFNBQVMsUUFBUTtBQUd4QixZQUFNLFdBQVcsU0FBUztBQUMxQixNQUFBQSxNQUFLLFdBQVc7QUFBQSxJQUNsQixPQUFPO0FBQ0wsTUFBQUEsTUFBSyxNQUFNO0FBQUEsSUFDYjtBQUFBLEVBQ0Y7QUFPQSxXQUFTLGtDQUFrQztBQUN6QyxVQUFNQyxRQUFPLEtBQUssT0FBTztBQUN6QixVQUFNRCxRQUFPLEtBQUssTUFBTSxLQUFLLE1BQU0sU0FBUyxDQUFDO0FBQzdDLElBQUFBLE1BQUssTUFBTUM7QUFBQSxFQUNiO0FBT0EsV0FBUyw0QkFBNEI7QUFDbkMsVUFBTUEsUUFBTyxLQUFLLE9BQU87QUFDekIsVUFBTUQsUUFBTyxLQUFLLE1BQU0sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUM3QyxJQUFBQSxNQUFLLFFBQVFDO0FBQUEsRUFDZjtBQU9BLFdBQVMsaUJBQWlCO0FBQ3hCLFlBQVEsYUFBYTtBQUFBLEVBQ3ZCO0FBT0EsV0FBUyxtQkFBbUI7QUFDMUIsWUFBUSxpQkFBaUIsV0FBVztBQUFBLEVBQ3RDO0FBT0EsV0FBUyxzQkFBc0IsT0FBTztBQUNwQyxVQUFNLFFBQVEsS0FBSyxPQUFPO0FBQzFCLFVBQU1ELFFBQU8sS0FBSyxNQUFNLEtBQUssTUFBTSxTQUFTLENBQUM7QUFHN0MsSUFBQUEsTUFBSyxRQUFRO0FBRWIsSUFBQUEsTUFBSyxhQUFhO0FBQUEsTUFDaEIsS0FBSyxlQUFlLEtBQUs7QUFBQSxJQUMzQixFQUFFLFlBQVk7QUFDZCxZQUFRLGlCQUFpQixNQUFNO0FBQUEsRUFDakM7QUFPQSxXQUFTLCtCQUErQixPQUFPO0FBQzdDLFlBQVEsMEJBQTBCLE1BQU0sSUFBSTtBQUFBLEVBQzlDO0FBTUEsV0FBUyw4QkFBOEIsT0FBTztBQUM1QyxVQUFNQyxRQUFPLEtBQUssZUFBZSxLQUFLO0FBQ3RDLFVBQU0sT0FBTyxRQUFRLHdCQUF3QjtBQUU3QyxRQUFJO0FBQ0osUUFBSSxNQUFNO0FBQ1IsY0FBUTtBQUFBLFFBQ05BO0FBQUEsUUFDQSxTQUFTLG9DQUFvQyxLQUFLO0FBQUEsTUFDcEQ7QUFDQSxjQUFRLHdCQUF3QjtBQUFBLElBQ2xDLE9BQU87QUFDTCxZQUFNLFNBQVMsOEJBQThCQSxLQUFJO0FBQ2pELGNBQVE7QUFBQSxJQUNWO0FBQ0EsVUFBTSxPQUFPLEtBQUssTUFBTSxJQUFJO0FBQzVCLFNBQUssU0FBUztBQUNkLFNBQUssU0FBUyxNQUFNSCxPQUFNLE1BQU0sR0FBRztBQUFBLEVBQ3JDO0FBTUEsV0FBUyx1QkFBdUIsT0FBTztBQUNyQyxlQUFXLEtBQUssTUFBTSxLQUFLO0FBQzNCLFVBQU1FLFFBQU8sS0FBSyxNQUFNLEtBQUssTUFBTSxTQUFTLENBQUM7QUFDN0MsSUFBQUEsTUFBSyxNQUFNLEtBQUssZUFBZSxLQUFLO0FBQUEsRUFDdEM7QUFNQSxXQUFTLG9CQUFvQixPQUFPO0FBQ2xDLGVBQVcsS0FBSyxNQUFNLEtBQUs7QUFDM0IsVUFBTUEsUUFBTyxLQUFLLE1BQU0sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUM3QyxJQUFBQSxNQUFLLE1BQU0sWUFBWSxLQUFLLGVBQWUsS0FBSztBQUFBLEVBQ2xEO0FBT0EsV0FBU1YsY0FBYTtBQUNwQixXQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixVQUFVLENBQUM7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQUdBLFdBQVMsV0FBVztBQUNsQixXQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixNQUFNO0FBQUEsTUFDTixPQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFHQSxXQUFTRSxZQUFXO0FBQ2xCLFdBQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUdBLFdBQVNDLGNBQWE7QUFDcEIsV0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sWUFBWTtBQUFBLE1BQ1osT0FBTztBQUFBLE1BQ1AsT0FBTztBQUFBLE1BQ1AsS0FBSztBQUFBLElBQ1A7QUFBQSxFQUNGO0FBR0EsV0FBUyxXQUFXO0FBQ2xCLFdBQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFVBQVUsQ0FBQztBQUFBLElBQ2I7QUFBQSxFQUNGO0FBR0EsV0FBUyxVQUFVO0FBRWpCLFdBQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxNQUNQLFVBQVUsQ0FBQztBQUFBLElBQ2I7QUFBQSxFQUNGO0FBR0EsV0FBUyxZQUFZO0FBQ25CLFdBQU87QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUdBLFdBQVMsT0FBTztBQUNkLFdBQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUdBLFdBQVMsUUFBUTtBQUNmLFdBQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxNQUNQLEtBQUs7QUFBQSxNQUNMLEtBQUs7QUFBQSxJQUNQO0FBQUEsRUFDRjtBQUdBLFdBQVMsT0FBTztBQUNkLFdBQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxNQUNQLEtBQUs7QUFBQSxNQUNMLFVBQVUsQ0FBQztBQUFBLElBQ2I7QUFBQSxFQUNGO0FBTUEsV0FBU0MsTUFBSyxPQUFPO0FBQ25CLFdBQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFNBQVMsTUFBTSxTQUFTO0FBQUEsTUFDeEIsT0FBTztBQUFBLE1BQ1AsUUFBUSxNQUFNO0FBQUEsTUFDZCxVQUFVLENBQUM7QUFBQSxJQUNiO0FBQUEsRUFDRjtBQU1BLFdBQVMsU0FBUyxPQUFPO0FBQ3ZCLFdBQU87QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFFBQVEsTUFBTTtBQUFBLE1BQ2QsU0FBUztBQUFBLE1BQ1QsVUFBVSxDQUFDO0FBQUEsSUFDYjtBQUFBLEVBQ0Y7QUFHQSxXQUFTLFlBQVk7QUFDbkIsV0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sVUFBVSxDQUFDO0FBQUEsSUFDYjtBQUFBLEVBQ0Y7QUFHQSxXQUFTLFNBQVM7QUFDaEIsV0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sVUFBVSxDQUFDO0FBQUEsSUFDYjtBQUFBLEVBQ0Y7QUFHQSxXQUFTUSxRQUFPO0FBQ2QsV0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sT0FBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBR0EsV0FBU1AsaUJBQWdCO0FBQ3ZCLFdBQU87QUFBQSxNQUNMLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUNGO0FBVUEsU0FBU0csT0FBTU0sSUFBRztBQUNoQixTQUFPO0FBQUEsSUFDTCxNQUFNQSxHQUFFO0FBQUEsSUFDUixRQUFRQSxHQUFFO0FBQUEsSUFDVixRQUFRQSxHQUFFO0FBQUEsRUFDWjtBQUNGO0FBT0EsU0FBUyxVQUFVLFVBQVUsWUFBWTtBQUN2QyxNQUFJUCxTQUFRO0FBQ1osU0FBTyxFQUFFQSxTQUFRLFdBQVcsUUFBUTtBQUNsQyxVQUFNLFFBQVEsV0FBV0EsTUFBSztBQUM5QixRQUFJLE1BQU0sUUFBUSxLQUFLLEdBQUc7QUFDeEIsZ0JBQVUsVUFBVSxLQUFLO0FBQUEsSUFDM0IsT0FBTztBQUNMLGdCQUFVLFVBQVUsS0FBSztBQUFBLElBQzNCO0FBQUEsRUFDRjtBQUNGO0FBT0EsU0FBUyxVQUFVLFVBQVVRLFlBQVc7QUFFdEMsTUFBSTtBQUNKLE9BQUssT0FBT0EsWUFBVztBQUNyQixRQUFJaEIsS0FBSSxLQUFLZ0IsWUFBVyxHQUFHLEdBQUc7QUFDNUIsVUFBSSxRQUFRLGtCQUFrQjtBQUM1QixjQUFNLFFBQVFBLFdBQVUsR0FBRztBQUMzQixZQUFJLE9BQU87QUFDVCxtQkFBUyxHQUFHLEVBQUUsS0FBSyxHQUFHLEtBQUs7QUFBQSxRQUM3QjtBQUFBLE1BQ0YsV0FBVyxRQUFRLGNBQWM7QUFDL0IsY0FBTSxRQUFRQSxXQUFVLEdBQUc7QUFDM0IsWUFBSSxPQUFPO0FBQ1QsbUJBQVMsR0FBRyxFQUFFLEtBQUssR0FBRyxLQUFLO0FBQUEsUUFDN0I7QUFBQSxNQUNGLFdBQVcsUUFBUSxXQUFXLFFBQVEsUUFBUTtBQUM1QyxjQUFNLFFBQVFBLFdBQVUsR0FBRztBQUMzQixZQUFJLE9BQU87QUFDVCxpQkFBTyxPQUFPLFNBQVMsR0FBRyxHQUFHLEtBQUs7QUFBQSxRQUNwQztBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGO0FBR0EsU0FBUyxlQUFlLE1BQU0sT0FBTztBQUNuQyxNQUFJLE1BQU07QUFDUixVQUFNLElBQUk7QUFBQSxNQUNSLG1CQUNFLEtBQUssT0FDTCxRQUNBLGtCQUFrQjtBQUFBLFFBQ2hCLE9BQU8sS0FBSztBQUFBLFFBQ1osS0FBSyxLQUFLO0FBQUEsTUFDWixDQUFDLElBQ0QsNEJBQ0EsTUFBTSxPQUNOLFFBQ0Esa0JBQWtCO0FBQUEsUUFDaEIsT0FBTyxNQUFNO0FBQUEsUUFDYixLQUFLLE1BQU07QUFBQSxNQUNiLENBQUMsSUFDRDtBQUFBLElBQ0o7QUFBQSxFQUNGLE9BQU87QUFDTCxVQUFNLElBQUk7QUFBQSxNQUNSLHNDQUNFLE1BQU0sT0FDTixRQUNBLGtCQUFrQjtBQUFBLFFBQ2hCLE9BQU8sTUFBTTtBQUFBLFFBQ2IsS0FBSyxNQUFNO0FBQUEsTUFDYixDQUFDLElBQ0Q7QUFBQSxJQUNKO0FBQUEsRUFDRjtBQUNGOzs7QUMzMUNlLFNBQVIsWUFBNkIsU0FBUztBQUUzQyxRQUFNLFNBQVMsQ0FBQyxRQUFRO0FBRXRCLFVBQU07QUFBQTtBQUFBLE1BQW1DLEtBQUssS0FBSyxVQUFVO0FBQUE7QUFFN0QsV0FBTztBQUFBLE1BQ0w7QUFBQSxNQUNBLE9BQU8sT0FBTyxDQUFDLEdBQUcsVUFBVSxTQUFTO0FBQUE7QUFBQTtBQUFBO0FBQUEsUUFJbkMsWUFBWSxLQUFLLEtBQUsscUJBQXFCLEtBQUssQ0FBQztBQUFBLFFBQ2pELGlCQUFpQixLQUFLLEtBQUssd0JBQXdCLEtBQUssQ0FBQztBQUFBLE1BQzNELENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUVBLFNBQU8sT0FBTyxNQUFNLEVBQUMsUUFBUSxPQUFNLENBQUM7QUFDdEM7OztBQzZHTyxJQUFNO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBZ0JULFNBQVUsTUFBTTtBQUNkLFFBQUksU0FBUyxRQUFRLFNBQVMsUUFBVztBQUN2QyxhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUksT0FBTyxTQUFTLFlBQVk7QUFDOUIsYUFBTyxZQUFZLElBQUk7QUFBQSxJQUN6QjtBQUVBLFFBQUksT0FBTyxTQUFTLFVBQVU7QUFDNUIsYUFBTyxNQUFNLFFBQVEsSUFBSSxJQUFJLFdBQVcsSUFBSSxJQUFJLGFBQWEsSUFBSTtBQUFBLElBQ25FO0FBRUEsUUFBSSxPQUFPLFNBQVMsVUFBVTtBQUM1QixhQUFPLFlBQVksSUFBSTtBQUFBLElBQ3pCO0FBRUEsVUFBTSxJQUFJLE1BQU0sOENBQThDO0FBQUEsRUFDaEU7QUFBQTtBQU9KLFNBQVMsV0FBVyxPQUFPO0FBRXpCLFFBQU0sU0FBUyxDQUFDO0FBQ2hCLE1BQUlDLFNBQVE7QUFFWixTQUFPLEVBQUVBLFNBQVEsTUFBTSxRQUFRO0FBQzdCLFdBQU9BLE1BQUssSUFBSSxRQUFRLE1BQU1BLE1BQUssQ0FBQztBQUFBLEVBQ3RDO0FBRUEsU0FBTyxZQUFZLEdBQUc7QUFNdEIsV0FBUyxPQUFPLFlBQVk7QUFDMUIsUUFBSUEsU0FBUTtBQUVaLFdBQU8sRUFBRUEsU0FBUSxPQUFPLFFBQVE7QUFDOUIsVUFBSSxPQUFPQSxNQUFLLEVBQUUsTUFBTSxNQUFNLFVBQVU7QUFBRyxlQUFPO0FBQUEsSUFDcEQ7QUFFQSxXQUFPO0FBQUEsRUFDVDtBQUNGO0FBUUEsU0FBUyxhQUFhLE9BQU87QUFDM0IsUUFBTTtBQUFBO0FBQUEsSUFBd0Q7QUFBQTtBQUU5RCxTQUFPLFlBQVlDLElBQUc7QUFNdEIsV0FBU0EsS0FBSUMsT0FBTTtBQUNqQixVQUFNO0FBQUE7QUFBQTtBQUFBLE1BQ29CQTtBQUFBO0FBSTFCLFFBQUk7QUFFSixTQUFLLE9BQU8sT0FBTztBQUNqQixVQUFJLGFBQWEsR0FBRyxNQUFNLGNBQWMsR0FBRztBQUFHLGVBQU87QUFBQSxJQUN2RDtBQUVBLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFRQSxTQUFTLFlBQVksT0FBTztBQUMxQixTQUFPLFlBQVksSUFBSTtBQUt2QixXQUFTLEtBQUtBLE9BQU07QUFDbEIsV0FBT0EsU0FBUUEsTUFBSyxTQUFTO0FBQUEsRUFDL0I7QUFDRjtBQVFBLFNBQVMsWUFBWSxjQUFjO0FBQ2pDLFNBQU87QUFNUCxXQUFTLE1BQU0sT0FBT0YsUUFBTyxRQUFRO0FBQ25DLFdBQU87QUFBQSxNQUNMLGVBQWUsS0FBSyxLQUNsQixhQUFhO0FBQUEsUUFDWDtBQUFBLFFBQ0E7QUFBQSxRQUNBLE9BQU9BLFdBQVUsV0FBV0EsU0FBUTtBQUFBLFFBQ3BDLFVBQVU7QUFBQSxNQUNaO0FBQUEsSUFDSjtBQUFBLEVBQ0Y7QUFDRjtBQUVBLFNBQVMsS0FBSztBQUNaLFNBQU87QUFDVDtBQU1BLFNBQVMsZUFBZSxPQUFPO0FBQzdCLFNBQU8sVUFBVSxRQUFRLE9BQU8sVUFBVSxZQUFZLFVBQVU7QUFDbEU7OztBQzlSTyxTQUFTLE1BQU1HLElBQUc7QUFDdkIsU0FBT0E7QUFDVDs7O0FDeU5BLElBQU0sUUFBUSxDQUFDO0FBS1IsSUFBTSxXQUFXO0FBS2pCLElBQU0sT0FBTztBQUtiLElBQU0sT0FBTztBQWlEYixTQUFTLGFBQWEsTUFBTSxNQUFNLFNBQVMsU0FBUztBQUV6RCxNQUFJO0FBRUosTUFBSSxPQUFPLFNBQVMsY0FBYyxPQUFPLFlBQVksWUFBWTtBQUMvRCxjQUFVO0FBRVYsY0FBVTtBQUFBLEVBQ1osT0FBTztBQUVMLFlBQVE7QUFBQSxFQUNWO0FBRUEsUUFBTUMsTUFBSyxRQUFRLEtBQUs7QUFDeEIsUUFBTSxPQUFPLFVBQVUsS0FBSztBQUU1QixVQUFRLE1BQU0sUUFBVyxDQUFDLENBQUMsRUFBRTtBQU83QixXQUFTLFFBQVFDLE9BQU1DLFFBQU8sU0FBUztBQUNyQyxVQUFNO0FBQUE7QUFBQSxNQUNKRCxTQUFRLE9BQU9BLFVBQVMsV0FBV0EsUUFBTyxDQUFDO0FBQUE7QUFHN0MsUUFBSSxPQUFPLE1BQU0sU0FBUyxVQUFVO0FBQ2xDLFlBQU07QUFBQTtBQUFBLFFBRUosT0FBTyxNQUFNLFlBQVksV0FDckIsTUFBTTtBQUFBO0FBQUEsVUFFUixPQUFPLE1BQU0sU0FBUyxXQUNwQixNQUFNLE9BQ047QUFBQTtBQUFBO0FBRU4sYUFBTyxlQUFlRSxRQUFPLFFBQVE7QUFBQSxRQUNuQyxPQUNFLFdBQVcsTUFBTUYsTUFBSyxRQUFRLE9BQU8sTUFBTSxPQUFPLE1BQU0sR0FBRyxJQUFJO0FBQUEsTUFDbkUsQ0FBQztBQUFBLElBQ0g7QUFFQSxXQUFPRTtBQUVQLGFBQVNBLFNBQVE7QUFFZixVQUFJLFNBQVM7QUFFYixVQUFJO0FBRUosVUFBSTtBQUVKLFVBQUk7QUFFSixVQUFJLENBQUMsUUFBUUgsSUFBR0MsT0FBTUMsUUFBTyxRQUFRLFFBQVEsU0FBUyxDQUFDLEtBQUssTUFBUyxHQUFHO0FBRXRFLGlCQUFTLFNBQVMsUUFBUUQsT0FBTSxPQUFPLENBQUM7QUFFeEMsWUFBSSxPQUFPLENBQUMsTUFBTSxNQUFNO0FBQ3RCLGlCQUFPO0FBQUEsUUFDVDtBQUFBLE1BQ0Y7QUFFQSxVQUFJLGNBQWNBLFNBQVFBLE1BQUssVUFBVTtBQUN2QyxjQUFNO0FBQUE7QUFBQSxVQUEyQ0E7QUFBQTtBQUVqRCxZQUFJLGFBQWEsWUFBWSxPQUFPLENBQUMsTUFBTSxNQUFNO0FBQy9DLG9CQUFVLFVBQVUsYUFBYSxTQUFTLFNBQVMsTUFBTTtBQUN6RCx5QkFBZSxRQUFRLE9BQU8sWUFBWTtBQUUxQyxpQkFBTyxTQUFTLE1BQU0sU0FBUyxhQUFhLFNBQVMsUUFBUTtBQUMzRCxrQkFBTSxRQUFRLGFBQWEsU0FBUyxNQUFNO0FBRTFDLHdCQUFZLFFBQVEsT0FBTyxRQUFRLFlBQVksRUFBRTtBQUVqRCxnQkFBSSxVQUFVLENBQUMsTUFBTSxNQUFNO0FBQ3pCLHFCQUFPO0FBQUEsWUFDVDtBQUVBLHFCQUNFLE9BQU8sVUFBVSxDQUFDLE1BQU0sV0FBVyxVQUFVLENBQUMsSUFBSSxTQUFTO0FBQUEsVUFDL0Q7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUVBLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUNGO0FBVUEsU0FBUyxTQUFTLE9BQU87QUFDdkIsTUFBSSxNQUFNLFFBQVEsS0FBSyxHQUFHO0FBQ3hCLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxPQUFPLFVBQVUsVUFBVTtBQUM3QixXQUFPLENBQUMsVUFBVSxLQUFLO0FBQUEsRUFDekI7QUFFQSxTQUFPLFVBQVUsUUFBUSxVQUFVLFNBQVksUUFBUSxDQUFDLEtBQUs7QUFDL0Q7OztBQ3ZITyxTQUFTLE1BQU0sTUFBTSxlQUFlLGtCQUFrQixjQUFjO0FBRXpFLE1BQUk7QUFFSixNQUFJO0FBRUosTUFBSTtBQUVKLE1BQ0UsT0FBTyxrQkFBa0IsY0FDekIsT0FBTyxxQkFBcUIsWUFDNUI7QUFDQSxXQUFPO0FBQ1AsY0FBVTtBQUNWLGNBQVU7QUFBQSxFQUNaLE9BQU87QUFFTCxXQUFPO0FBRVAsY0FBVTtBQUNWLGNBQVU7QUFBQSxFQUNaO0FBRUEsZUFBYSxNQUFNLE1BQU0sVUFBVSxPQUFPO0FBTTFDLFdBQVMsU0FBU0csT0FBTSxTQUFTO0FBQy9CLFVBQU0sU0FBUyxRQUFRLFFBQVEsU0FBUyxDQUFDO0FBQ3pDLFVBQU1DLFNBQVEsU0FBUyxPQUFPLFNBQVMsUUFBUUQsS0FBSSxJQUFJO0FBQ3ZELFdBQU8sUUFBUUEsT0FBTUMsUUFBTyxNQUFNO0FBQUEsRUFDcEM7QUFDRjs7O0FsRTlTQSxlQUFzQiw0Q0FBNENDLFVBQXNCLEVBQUMsWUFBVyxnQkFBZSxZQUFXLEdBQWlKLFFBQTBCLGdCQUF5QixPQUFPO0FBVnpVO0FBV0MsUUFBTSxRQUErQixPQUFPLElBQUksY0FBYyxTQUFTLFVBQVU7QUFDakYsTUFBSSxDQUFDLGNBQWMsQ0FBQ0EsY0FBWSx5Q0FBZSwrQkFBTyxnQkFBdEIsbUJBQXFDLDJCQUEwQjtBQUM5RjtBQUVELE1BQUk7QUFDSixrQkFBZ0IsaUJBQWlCLFFBQVFBLFNBQVEsWUFBWSxpQkFBaUIsQ0FBQztBQUMvRSxRQUFNLFdBQVcsQ0FBQyxRQUFRQSxTQUFRLGNBQWMsbUJBQW1CLENBQUM7QUFDcEUsUUFBTSxXQUFXLFFBQVFBLFNBQVEsY0FBYyxlQUFlLENBQUM7QUFDL0QsTUFBSSxZQUFZLENBQUMsT0FBTyxTQUFTO0FBQ2hDO0FBRUQsTUFBSSxDQUFDLGlCQUFpQixDQUFDO0FBQ3RCLDJCQUF1QixNQUFNLEtBQUtBLFNBQVEsaUJBQWlCLDhDQUE4QyxDQUFDO0FBQUEsV0FDbEcsQ0FBQyxpQkFBaUIsVUFBVTtBQUNwQywyQkFBdUIsTUFBTSxLQUFLQSxTQUFRLGlCQUFpQix1QkFBdUIsQ0FBQztBQUNuRixRQUFJLHlCQUF3QixrRUFBdUIsT0FBdkIsbUJBQTJCLGNBQWM7QUFDckUsUUFBSSx1QkFBdUI7QUFDMUIsWUFBTSxNQUFNLEVBQUU7QUFDZCw2QkFBdUIsTUFBTSxLQUFLQSxTQUFRLGlCQUFpQix1QkFBdUIsQ0FBQztBQUFBLElBQ3BGO0FBQUEsRUFDRCxXQUFXLGlCQUFpQixDQUFDO0FBQzVCLDJCQUF1QixNQUFNLEtBQUtBLFNBQVEsaUJBQWlCLDZEQUE2RCxDQUFDO0FBQUE7QUFFekgsMkJBQXVCLENBQUM7QUFDekIsTUFBSSxxQkFBcUIsV0FBVyxLQUFLLEVBQUUsaUJBQWlCO0FBQzNEO0FBRUQsUUFBTSx1QkFBMEQsZUFBZSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3RHLE1BQUksd0JBQXdCLFlBQVksQ0FBQztBQUN4QyxpQ0FBNkIsc0JBQXFCLFlBQVcsc0JBQXFCLE1BQU07QUFBQSxXQUNoRixZQUFZLENBQUMsVUFBVTtBQUMvQixVQUFNLE1BQU0sRUFBRTtBQUNkLG9CQUFnQixpQkFBaUIsUUFBUUEsU0FBUSxZQUFZLGlCQUFpQixDQUFDO0FBQy9FLFFBQUksaUJBQWlCLENBQUNBLFNBQVEsVUFBVSxTQUFTLG9CQUFvQixHQUFHO0FBQ3ZFLFVBQUksWUFBWUEsU0FBUSxZQUFZLGVBQWU7QUFDbkQsWUFBTSw0Q0FBNEMsWUFBVSxZQUFXQSxTQUFRLFlBQVksV0FBVyxHQUFrQixFQUFDLFlBQVcsZ0JBQWUsWUFBVyxHQUFFLFFBQU8sYUFBYTtBQUFBLElBQ3JMO0FBQUEsRUFDRDtBQUVDLG1CQUFlLHNCQUFxQixZQUFXLE9BQU0sZUFBYyxVQUFTLE1BQU07QUFDcEY7QUFDQSxlQUFlLDZCQUE2QixzQkFBMEMsWUFBb0Isc0JBQWtELFFBQXlDO0FBQ3BNLFFBQU0sd0JBQXdCLE1BQU0scUJBQXFCLE1BQU0sS0FBSyxFQUFDLFFBQVEscUJBQXFCLFVBQVEscUJBQXFCLFlBQVUsRUFBQyxHQUFHLENBQUNDLElBQUUsUUFBUSxNQUFNLHFCQUFxQixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWEscUJBQXFCLEtBQUssTUFBTSxJQUFJLEVBQUUsVUFBVSxDQUFDLEdBQUUsWUFBVyxNQUFNLEdBQUc7QUFDdlIsTUFBSSxxQkFBcUIsV0FBVyxxQkFBcUI7QUFDeEQ7QUFDRCxXQUFTLENBQUMsS0FBSSxtQkFBbUIsS0FBSyxxQkFBcUIsUUFBUSxHQUFHO0FBQ3JFLFFBQUksc0JBQXNCLHFCQUFxQixHQUFHO0FBQ2xELFFBQUksdUJBQXVCLG9CQUFvQixjQUFjLFlBQVk7QUFDekUsUUFBSSxDQUFDO0FBQ0o7QUFDRCxRQUFJLE1BQU0sS0FBSyxxQkFBcUIsU0FBUyxFQUFFLEtBQUssZUFBYSxnQkFBZ0IsS0FBSyxTQUFTLENBQUM7QUFDL0YsYUFBTSxDQUFDLHFCQUFxQixVQUFVLFNBQVMsV0FBVztBQUN6RCxjQUFNLE1BQU0sQ0FBQztBQUNmLFFBQUksV0FBVyxvQkFBb0IsVUFBUyxPQUFPLFNBQVMsaUJBQWlCLEtBQUssb0JBQW9CO0FBQ3JHO0FBQ0QsVUFBTSxnQkFBZ0Isc0JBQW9DLHFCQUFvQixxQkFBb0IsTUFBSyxNQUFNO0FBQUEsRUFDOUc7QUFDRDtBQUNBLGVBQWUsZUFBZSxzQkFBMEMsWUFBb0IsT0FBOEIsZUFBd0IsVUFBbUIsUUFBMEI7QUFDOUwsUUFBTSxtQkFBbUIsTUFBTSxvQkFBb0IsWUFBVyxNQUFNO0FBQ3BFLE1BQUksQ0FBQztBQUNKO0FBQ0QsTUFBSSx1QkFBbUQsQ0FBQztBQUV4RCxNQUFJLFFBQU8sK0JBQU8sY0FBYSxhQUFhO0FBQzNDLGVBQVcsV0FBVyxNQUFNLFVBQVU7QUFDckMsVUFBSSxDQUFDLGlCQUFpQixRQUFRLFNBQVMsVUFBVSxRQUFRLFNBQVMsV0FBVztBQUM1RSxjQUFNLDZCQUE2QixNQUFNLHFCQUFxQixpQkFBaUIsTUFBTSxRQUFRLFNBQVMsTUFBTSxNQUFLLFFBQVEsU0FBUyxJQUFJLE9BQUssQ0FBQyxHQUFFLFlBQVcsTUFBTTtBQUMvSixZQUFJLENBQUMsaUJBQWlCLDJCQUEyQjtBQUNoRCxpQ0FBdUIscUJBQXFCLE9BQU8sMkJBQTJCLG9CQUFvQjtBQUFBLE1BQ3BHO0FBQUEsSUFDRDtBQUFBLEVBQ0QsT0FBTztBQUNOLFlBQVEsTUFBTSxzQ0FBc0MsWUFBWTtBQUNoRTtBQUFBLEVBQ0Q7QUFDQSxNQUFJLHFCQUFxQixXQUFXLHFCQUFxQjtBQUN4RDtBQUNELE1BQUk7QUFDSCxhQUFTLENBQUMsS0FBSSxtQkFBbUIsS0FBSyxNQUFNLEtBQUssb0JBQW9CLEVBQUUsUUFBUSxHQUFHO0FBQ2pGLFVBQUksc0JBQXNCLHFCQUFxQixHQUFHO0FBQ2xELFVBQUksdUJBQThDLG9CQUFvQixjQUFjLFlBQVk7QUFDaEcsVUFBSSxDQUFDO0FBQ0o7QUFDRCxVQUFJLE1BQU0sS0FBSyxxQkFBcUIsU0FBUyxFQUFFLEtBQUssZUFBYSxnQkFBZ0IsS0FBSyxTQUFTLENBQUM7QUFDL0YsZUFBTSxDQUFDLHFCQUFxQixVQUFVLFNBQVMsV0FBVztBQUN6RCxnQkFBTSxNQUFNLENBQUM7QUFDZixVQUFJLHFCQUFxQixjQUFjLGtDQUFrQztBQUN4RTtBQUNELFVBQUksV0FBVyxvQkFBb0IsVUFBUyxPQUFPLFNBQVMsaUJBQWlCLEtBQUssb0JBQW9CO0FBQ3JHO0FBQ0QsWUFBTSxnQkFBZ0Isc0JBQXFCLHFCQUFvQixxQkFBb0IsQ0FBQyxVQUFTLE1BQU07QUFBQSxJQUNwRztBQUFBLEVBQ0QsU0FBUyxPQUFQO0FBQ0QsWUFBUSxNQUFNLDZCQUE2QixNQUFNLFNBQVM7QUFDMUQ7QUFBQSxFQUNEO0FBQ0Q7QUFFQSxlQUFzQix5Q0FBeUNELFVBQXNCLEVBQUMsWUFBVyxnQkFBZSxZQUFXLEdBQWlKLFFBQTBCO0FBQ3JTLE1BQUksQ0FBQyxjQUFjLENBQUNBO0FBQ25CO0FBQ0QsV0FBUyxxQkFBcUIsTUFBTSxLQUFLQSxTQUFRLGlCQUFpQixrQkFBa0IsQ0FBQyxHQUFHO0FBQ3ZGLFFBQUksa0JBQWtCLFVBQVUsU0FBUyx5QkFBeUIsS0FBSyxrQkFBa0IsVUFBVSxTQUFTLDhCQUE4QjtBQUN6STtBQUNELFFBQUksc0JBQXNCLFVBQVU7QUFDcEMsUUFBSTtBQUNKLFFBQUksaUJBQWtCLGtCQUFrQztBQUN4RCxRQUFJLEVBQUMsWUFBVyxNQUFBRSxNQUFJLElBQUksZ0JBQWdCLGNBQWM7QUFDdEQsUUFBSSxDQUFDLFlBQVk7QUFDaEIsVUFBSSxDQUFDQTtBQUNKO0FBQ0Qsd0NBQWlCLGVBQWUsSUFBSSxPQUFPLEVBQUUsSUFBRUEsUUFBSyxJQUFJLE9BQU8sRUFBRSxHQUFFLHFCQUFvQixJQUFHLElBQUksMkJBQVUsQ0FBQztBQUN6Ryw0QkFBc0Isb0JBQW9CLGNBQWMsTUFBTTtBQUM5RCxVQUFJLENBQUM7QUFDSjtBQUNELHdCQUFrQixZQUFZLG9CQUFvQjtBQUNsRCx3QkFBa0IsVUFBVSxJQUFJLDhCQUE4QjtBQUFBLElBQy9ELE9BQU87QUFDTix3Q0FBaUIsZUFBZSxDQUFDLE9BQU0sT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLGtCQUFnQixXQUFXLFdBQVMsSUFBRyxNQUFLQSxPQUFLLE1BQUssS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFFLHFCQUFvQixJQUFHLElBQUksMkJBQVUsQ0FBQztBQUNoTSw0QkFBc0Isb0JBQW9CLGNBQWMsWUFBWTtBQUNwRSxVQUFJLENBQUM7QUFDSjtBQUNELGFBQU0sT0FBTyxTQUFTLGFBQWEsU0FBUyxPQUFPLG1CQUFtQixDQUFDLG9CQUFvQixVQUFVLFNBQVMsV0FBVztBQUN4SCxjQUFNLE1BQU0sQ0FBQztBQUNkLHdCQUFrQixZQUFZLG9CQUFvQjtBQUNsRCx3QkFBa0IsVUFBVSxJQUFJLHlCQUF5QjtBQUN6RCx3QkFBa0IsYUFBYSxjQUFhLGVBQWUsVUFBVSxHQUFFLGVBQWUsWUFBWUEsS0FBSSxDQUFDLENBQUM7QUFDeEcsVUFBSSxXQUFXLFFBQVEsV0FBVztBQUNqQywwQkFBa0IsYUFBYSxtQkFBbUIsWUFBVyxPQUFPLGFBQWEsR0FBRSxrQkFBa0IsV0FBVyxDQUFDLENBQUM7QUFBQSxJQUNwSDtBQUFBLEVBQ0Q7QUFDRDtBQUVPLFNBQVMsNkJBQW1DO0FBQ2xELFdBQVMsaUJBQWlCLHlCQUF5QixFQUFFLFFBQVEsd0JBQXNCO0FBQ2xGLHVCQUFtQixVQUFVLE9BQU8sd0JBQXdCO0FBQUEsRUFDN0QsQ0FBQztBQUNEO0FBQUEsSUFDQyxHQUFHLE1BQU0sS0FBSyxTQUFTLGlCQUFpQixnRUFBZ0UsQ0FBQztBQUFBLElBQ3pHLEdBQUcsTUFBTSxLQUFLLFNBQVMsaUJBQWlCLDJEQUEyRCxDQUFDO0FBQUEsSUFDcEcsR0FBRyxNQUFNLEtBQUssU0FBUyxpQkFBaUIsaURBQWlELENBQUM7QUFBQSxFQUMzRixFQUFFLFFBQVEsQ0FBQUYsYUFBV0EsU0FBUSxPQUFPLENBQUM7QUFDckMsV0FBUyxpQkFBaUIscUJBQXFCLEVBQUUsUUFBUSxDQUFDLHdCQUFxQztBQUM5Rix3QkFBb0IsVUFBVSxPQUFPLGlCQUFpQjtBQUN0RCx3QkFBb0IsVUFBVSxPQUFPLHVCQUF1QjtBQUM1RCx3QkFBb0IsTUFBTSxlQUFlLGVBQWU7QUFDeEQsd0JBQW9CLE1BQU0sZUFBZSxzQkFBc0I7QUFDL0Qsd0JBQW9CLE1BQU0sZUFBZSxZQUFZO0FBQ3JELHdCQUFvQixNQUFNLGVBQWUsYUFBYTtBQUFBLEVBQ3ZELENBQUM7QUFDRCxXQUFTLGlCQUFpQixtQ0FBbUMsRUFBRSxRQUFRLENBQUMsc0JBQW1DO0FBQzFHLHNCQUFrQixVQUFVLE9BQU8scUJBQXFCO0FBQ3hELHNCQUFrQixNQUFNLGVBQWUsZUFBZTtBQUN0RCxzQkFBa0IsTUFBTSxlQUFlLFlBQVk7QUFBQSxFQUNwRCxDQUFDO0FBQ0QsV0FBUyxpQkFBaUIsMkJBQTJCLEVBQUUsUUFBUSxDQUFDLHlCQUFzQztBQUNyRyx5QkFBcUIsTUFBTSxlQUFlLGVBQWU7QUFDekQseUJBQXFCLE1BQU0sZUFBZSxpQkFBaUI7QUFDM0QseUJBQXFCLE1BQU0sZUFBZSx3QkFBd0I7QUFDbEUseUJBQXFCLE1BQU0sZUFBZSxZQUFZO0FBQ3RELHlCQUFxQixNQUFNLGVBQWUsYUFBYTtBQUN2RCx5QkFBcUIsWUFBWSxNQUFNLEtBQUsscUJBQXFCLGlCQUFpQixvQ0FBb0MsQ0FBQyxFQUFFLE9BQU8sQ0FBQyw2QkFBNEMsa0JBQThDO0FBQzFOLFlBQU0sb0JBQXFCLGNBQWM7QUFDekMsVUFBSTtBQUNILG9DQUE0QixLQUFLLGtCQUFrQixTQUFTO0FBQzdELGFBQU87QUFBQSxJQUNSLEdBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUU7QUFBQSxFQUNsQixDQUFDO0FBQ0QsV0FBUyxpQkFBaUIsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLHNCQUFtQztBQUN6RixzQkFBa0IsVUFBVSxPQUFPLHlCQUF5QjtBQUM1RCxzQkFBa0IsVUFBVSxPQUFPLDhCQUE4QjtBQUNqRSxzQkFBa0IsWUFBWSxrQkFBa0IsYUFBYSxZQUFZLElBQUksa0JBQWtCO0FBQUEsRUFDaEcsQ0FBQztBQUNGO0FBRUEsZUFBZSxnQkFBZ0Isc0JBQW1DLHFCQUFrQyxxQkFBMEMsU0FBa0IsUUFBMEI7QUFDekwsV0FBUyxXQUFXLFdBQW1CO0FBQ3RDLFdBQU8sVUFBVSxRQUFRLE1BQUssTUFBTSxFQUFFLFFBQVEsTUFBSyxNQUFNLEVBQUUsUUFBUSxNQUFLLFFBQVE7QUFBQSxFQUNqRjtBQUdBLE1BQUksU0FBUztBQUNaLFdBQU8sNEJBQTRCLFFBQVEscUJBQW9CO0FBQUEsTUFDOUQsV0FBVztBQUFBLE1BQ1gsU0FBUztBQUFBLE1BQ1QsWUFBWTtBQUFBLE1BQ1osZUFBZTtBQUFBLElBQ2hCLENBQUM7QUFBQSxFQUNGO0FBR0Esc0JBQW9CLFVBQVUsSUFBSSxpQkFBaUI7QUFDbkQsTUFBSSxvQkFBb0I7QUFDdkIsd0JBQW9CLFVBQVUsSUFBSSxZQUFZLG9CQUFvQixVQUFVO0FBQzdFLE1BQUksb0JBQW9CO0FBQ3ZCLHdCQUFvQixjQUFjLFVBQVUsSUFBSSx3QkFBd0I7QUFHekUsUUFBTSxrQkFBa0IsYUFBYSxxQkFBcUIsT0FBTyxTQUFTLGFBQWEsVUFBUyxPQUFPLGFBQWE7QUFDcEgsc0JBQW9CLGFBQWEsaUJBQWdCLG9CQUFvQixXQUFXLENBQUMsQ0FBQztBQUVsRixNQUFJLFNBQVM7QUFFWixvQkFBZ0IsaUJBQWlCLFNBQVEsTUFBSSxXQUFXLG1CQUFtQixDQUFDO0FBQzVFLFFBQUksb0JBQW9CLEtBQUs7QUFDNUIsMEJBQW9CLFVBQVUsSUFBSSx1QkFBdUI7QUFHMUQsUUFBSSxvQkFBb0IsV0FBVyxlQUFlO0FBQ2pELDJCQUFxQixNQUFNLFlBQVksbUJBQWtCLEtBQUs7QUFDOUQsVUFBSSxvQkFBb0IsV0FBVztBQUNsQyw2QkFBcUIsTUFBTSxZQUFZLDBCQUF5QixVQUFVO0FBQUE7QUFFMUUsNkJBQXFCLE1BQU0sWUFBWSwwQkFBeUIsS0FBSztBQUFBLElBQ3ZFLFdBQVcsb0JBQW9CLFdBQVc7QUFDekMsMkJBQXFCLE1BQU0sWUFBWSxtQkFBa0IsVUFBVTtBQUFBLEVBQ3JFLFdBQVcsb0JBQW9CLEtBQUs7QUFDbkMsd0JBQW9CLFVBQVUsSUFBSSx1QkFBdUI7QUFHMUQsTUFBSSxxQkFBcUIsY0FBYyxrQ0FBa0M7QUFDeEU7QUFHRCxNQUFJLE9BQU8sUUFBUSxFQUFFLElBQUksV0FBVyxFQUFFLE1BQU0scUJBQXFCLFVBQVUsUUFBUSxPQUFNLE1BQU0sQ0FBQztBQUNoRyxNQUFJLFFBQXVCLENBQUM7QUFDNUIsTUFBSSxnQkFBd0I7QUFDNUIsdUJBQXFCLFlBQVk7QUFDakMsUUFBTSxNQUFLLENBQUNHLFVBQU87QUFDbEIsUUFBSUEsTUFBSyxTQUFTLFVBQVVBLE1BQUssU0FBUyxRQUFRO0FBQ2pELFVBQUlBLE1BQUssU0FBUyxVQUFVQSxNQUFLLFVBQVUsUUFBUTtBQUNsRCxZQUFJQSxNQUFLLE1BQU0sV0FBVyxPQUFPO0FBQ2hDLGdCQUFNLEtBQUtBLE1BQUssS0FBSztBQUFBLGlCQUNiQSxNQUFLLE1BQU0sV0FBVyxRQUFRO0FBQ3RDLGdCQUFNLElBQUk7QUFBQSxNQUNaLFdBQVdBLE1BQUssU0FBUyxVQUFVQSxNQUFLLFVBQVU7QUFDakQsUUFBQUEsTUFBSyxRQUFRLFVBQVUsT0FBTyxNQUFNLE1BQU0sSUFBRSxTQUFPLE1BQU0sS0FBSyxFQUFFO0FBQUE7QUFFaEUsUUFBQUEsTUFBSyxRQUFRLFdBQVdBLE1BQUssS0FBSztBQUNuQyx1QkFBaUJBLE1BQUs7QUFBQSxJQUN2QjtBQUFBLEVBQ0QsQ0FBQztBQUNELE1BQUksaUJBQWlCLGNBQWMsTUFBTSxNQUFNO0FBQy9DLE1BQUksZUFBZSxVQUFVO0FBQzVCLHFCQUFpQixDQUFDLElBQUcsRUFBRTtBQUN4QixpQkFBZSxRQUFRLENBQUMsTUFBS0MsV0FBVTtBQUN0QyxRQUFJQSxXQUFVLGVBQWUsU0FBTztBQUNuQztBQUNELFVBQU0sYUFBYUEsU0FBUTtBQUMzQixVQUFNLGNBQWMsU0FBUyxjQUFjLEtBQUs7QUFDaEQsaUJBQWEscUJBQW9CLFlBQVcsSUFBSSxFQUFFLFFBQVEsQ0FBQyxjQUFjO0FBQ3hFLGtCQUFZLFVBQVUsSUFBSSxTQUFTO0FBQUEsSUFDcEMsQ0FBQztBQUNELHlCQUFxQixZQUFZLFdBQVc7QUFDNUMsUUFBSSxvQkFBb0I7QUFDeEIsUUFBSSxDQUFDLG9CQUFvQixZQUFZLGlCQUFpQixvQkFBb0IsWUFBWTtBQUNyRiwwQkFBb0I7QUFBQSxhQUNaLG9CQUFvQixZQUFZLGlCQUFpQixDQUFDLG9CQUFvQixZQUFZO0FBQzFGLDBCQUFvQjtBQUNyQixnQkFBWSxZQUFZLFVBQVUsRUFBQyxLQUFLLDBCQUEwQixxQkFBcUIsT0FBTyxhQUFXLG9CQUFvQixZQUFZLFFBQVEsU0FBUyxFQUFDLENBQUMsQ0FBQztBQUM3SixnQkFBWSxZQUFZLFVBQVUsRUFBQyxLQUFLLHlCQUF5QixVQUFNLG9DQUFrQixTQUFTLEtBQUssT0FBTyxNQUFNLEVBQUMsQ0FBQyxDQUFDO0FBQUEsRUFDeEgsQ0FBQztBQUNGO0FBRUEsZUFBZSxXQUFXLHFCQUFrQztBQUMzRCxzQkFBb0IsaUJBQWlCLFlBQVksRUFBRSxRQUFRLENBQUMseUJBQW9DLHFCQUFxQixNQUFNLFlBQVksY0FBYSxRQUFRLEtBQUssS0FBSyxxQkFBcUIsZUFBYSxJQUFJLCtCQUErQixxQkFBcUIsVUFBVSxTQUFTLHFCQUFxQixJQUFFLHdDQUFzQyxNQUFNLENBQUM7QUFDdlYsUUFBTSxNQUFNLENBQUM7QUFDYixzQkFBb0IsVUFBVSxPQUFPLHVCQUF1QjtBQUM1RCxRQUFNLE1BQU0saUJBQWlCO0FBQzdCLHNCQUFvQixpQkFBaUIsWUFBWSxFQUFFLFFBQVEsQ0FBQyx5QkFBb0MscUJBQXFCLE1BQU0sZUFBZSxZQUFZLENBQUM7QUFDeEo7QUFFTyxJQUFNLDhCQUE4QixJQUFJLGlCQUFpQixDQUFDLGNBQWM7QUFDOUUsWUFBVSxRQUFRLENBQUMsYUFBNkI7QUFDL0MsUUFBSSxTQUFTLFNBQVMsZUFBZ0IsU0FBUyxPQUF1QixZQUFZLE9BQU87QUFDeEYsWUFBTSxvQkFBcUIsU0FBUyxPQUF1QixjQUFjLG1DQUFtQztBQUM1RyxVQUFJO0FBQ0gsMEJBQWtCLFVBQVUsSUFBSSxxQkFBcUI7QUFBQSxJQUN2RDtBQUFBLEVBQ0QsQ0FBQztBQUNGLENBQUM7OztBUjVSRCxJQUFxQixtQkFBckIsY0FBOEMsd0JBQU87QUFBQSxFQVNwRCxNQUFNLFNBQVM7QUFDZCxVQUFNLEtBQUssYUFBYTtBQUN4QixVQUFNLGNBQWMsSUFBSSxZQUFZLEtBQUssS0FBSSxJQUFJO0FBQ2pELFNBQUssY0FBYyxXQUFXO0FBRTlCLGFBQVMsS0FBSyxVQUFVLElBQUksYUFBYTtBQUN6QyxrQkFBYyxLQUFLLFVBQVMsS0FBSyxHQUFHO0FBRXBDLFNBQUssZ0JBQWdCLE9BQU8sS0FBSyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsUUFBaUMsUUFBZ0I7QUFDOUcsYUFBTyxHQUFHLElBQUksSUFBSSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsMEdBQTBHLG9CQUFvQixHQUFHLFNBQVMsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUMsQ0FBQztBQUNuTixhQUFPO0FBQUEsSUFDUixHQUFFLENBQUMsQ0FBQztBQUNKLFNBQUssUUFBUTtBQUFBLE1BQ1osTUFBTSxTQUFTLEtBQUssb0JBQW9CLGtCQUFrQjtBQUFBLE1BQzFELE1BQU0sU0FBUyxLQUFLLG9CQUFvQixlQUFlO0FBQUEsSUFDeEQ7QUFFQSxTQUFLLDhCQUE4QjtBQUVuQyxTQUFLLDhCQUE4QixPQUFPLElBQUcsUUFBUTtBQUFDLFlBQU0sNENBQTRDLElBQUcsS0FBSSxJQUFJO0FBQUEsSUFBQyxDQUFDO0FBQ3JILFNBQUssOEJBQThCLE9BQU8sSUFBRyxRQUFRO0FBQUMsWUFBTSx5Q0FBeUMsSUFBRyxLQUFJLElBQUk7QUFBQSxJQUFDLENBQUM7QUFFbEgsU0FBSyx3QkFBd0Isb0NBQW9DLEtBQUssVUFBUyxLQUFLLGFBQWEsQ0FBQztBQUVsRyxRQUFJLGNBQThCLFdBQVcsTUFBSTtBQUFBLElBQUMsQ0FBQztBQUNuRCxTQUFLLGNBQWMsS0FBSyxJQUFJLFVBQVUsR0FBRyxjQUFhLE1BQUk7QUFDekQsb0JBQWMsS0FBSyxVQUFTLEtBQUssR0FBRztBQUNwQyxVQUFJLGtCQUFrQixTQUFTLEtBQUssb0JBQW9CLGtCQUFrQjtBQUMxRSxVQUFJLEtBQUssTUFBTSxTQUFTLGlCQUFpQjtBQUN4QyxhQUFLLE1BQU0sT0FBTztBQUNsQixxQkFBYSxXQUFXO0FBQ3hCLHNCQUFjLFdBQVcsTUFBSTtBQUM1QixlQUFLLGdCQUFnQjtBQUFBLFFBQ3RCLEdBQUUsR0FBSTtBQUFBLE1BQ1A7QUFBQSxJQUNELEdBQUUsSUFBSSxDQUFDO0FBQ1AsU0FBSyxjQUFjLEtBQUssSUFBSSxVQUFVLEdBQUcsVUFBUyxNQUFJO0FBQ3JELFVBQUksa0JBQWtCLFNBQVMsS0FBSyxvQkFBb0IsZUFBZTtBQUN2RSxVQUFJLEtBQUssTUFBTSxTQUFTLGlCQUFpQjtBQUN4QyxhQUFLLE1BQU0sT0FBTztBQUNsQixxQkFBYSxXQUFXO0FBQ3hCLHNCQUFjLFdBQVcsTUFBSTtBQUM1QixlQUFLLGdCQUFnQjtBQUFBLFFBQ3RCLEdBQUUsR0FBSTtBQUFBLE1BQ1A7QUFBQSxJQUNELEdBQUUsSUFBSSxDQUFDO0FBRVAsU0FBSyxJQUFJLFVBQVUsY0FBYyxNQUFJO0FBQUMsV0FBSyxnQkFBZ0I7QUFBQSxJQUFDLENBQUM7QUFFN0QsWUFBUSxJQUFJLDRCQUE0QjtBQUFBLEVBQ3pDO0FBQUEsRUFFQSxXQUFXO0FBQ1YsU0FBSyw0QkFBNEIsV0FBVztBQUM1QywyQkFBdUI7QUFDdkIsK0JBQTJCO0FBQzNCLGVBQVcsT0FBTyxPQUFPLE9BQU8sS0FBSyxhQUFhO0FBQ2pELFVBQUksZ0JBQWdCLEdBQUc7QUFDeEIsWUFBUSxJQUFJLDhCQUE4QjtBQUFBLEVBQzNDO0FBQUEsRUFFQSxNQUFNLGVBQWU7QUFDcEIsU0FBSyxXQUFXLE9BQU8sT0FBTyxDQUFDLEdBQUcsZ0JBQWdCLGdCQUFnQixHQUFHLE1BQU0sS0FBSyxTQUFTLENBQUM7QUFBQSxFQUMzRjtBQUFBLEVBRUEsTUFBTSxlQUFlO0FBQ3BCLFVBQU0sS0FBSyxTQUFTLEtBQUssUUFBUTtBQUNqQyxTQUFLLElBQUksVUFBVSxjQUFjO0FBQ2pDLGtCQUFjLEtBQUssVUFBUyxLQUFLLEdBQUc7QUFBQSxFQUNyQztBQUFBLEVBRUEsa0JBQWtCO0FBQ2pCLFNBQUssSUFBSSxVQUFVLGtCQUFrQixDQUFDLFNBQXdCO0FBQzdELFVBQUksS0FBSyxnQkFBZ0IsaUNBQWdCLEtBQUssS0FBSyxRQUFRLE1BQU07QUFDaEUsYUFBSyxLQUFLLFlBQVksU0FBUyxJQUFJO0FBQUEsSUFDckMsQ0FBQztBQUFBLEVBQ0Y7QUFDRDsiLAogICJuYW1lcyI6IFsicm9vdCIsICJmYWN0b3J5IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImRlZmluZSIsICJhbWQiLCAic2VsZiIsICJfX3dlYnBhY2tfcmVxdWlyZV9fIiwgImRlZmluaXRpb24iLCAia2V5IiwgIm8iLCAiT2JqZWN0IiwgImRlZmluZVByb3BlcnR5IiwgImVudW1lcmFibGUiLCAiZ2V0IiwgIm9iaiIsICJwcm9wIiwgInByb3RvdHlwZSIsICJoYXNPd25Qcm9wZXJ0eSIsICJjYWxsIiwgIlN5bWJvbCIsICJ0b1N0cmluZ1RhZyIsICJ2YWx1ZSIsICJlIiwgInQiLCAiTCIsICJldmVudExpc3RlbmVyIiwgIm1ldGhvZCIsICJlbGVtZW50cyIsICJldmVudHMiLCAiZm4iLCAib3B0aW9ucyIsICJIVE1MQ29sbGVjdGlvbiIsICJOb2RlTGlzdCIsICJBcnJheSIsICJmcm9tIiwgImlzQXJyYXkiLCAiZWwiLCAiZXYiLCAiY2FwdHVyZSIsICJzbGljZSIsICJhcmd1bWVudHMiLCAicCIsICJyIiwgImEiLCAibCIsICJzIiwgImkiLCAiYyIsICJvbiIsICJiaW5kIiwgIm9mZiIsICJjcmVhdGVFbGVtZW50RnJvbVN0cmluZyIsICJodG1sIiwgImRpdiIsICJkb2N1bWVudCIsICJjcmVhdGVFbGVtZW50IiwgImlubmVySFRNTCIsICJ0cmltIiwgImZpcnN0RWxlbWVudENoaWxkIiwgImNyZWF0ZUZyb21UZW1wbGF0ZSIsICJzdHIiLCAicmVtb3ZlQXR0cmlidXRlIiwgIm5hbWUiLCAiZ2V0QXR0cmlidXRlIiwgInJlc29sdmUiLCAiZWxlbWVudCIsICJiYXNlIiwgImNvbiIsICJzdWJ0cmVlIiwgImNoaWxkIiwgImNoaWxkcmVuIiwgImFyciIsICJzdWIiLCAicHVzaCIsICJrZXlzIiwgImxlbmd0aCIsICJldmVudFBhdGgiLCAiZXZ0IiwgInBhdGgiLCAiY29tcG9zZWRQYXRoIiwgInRhcmdldCIsICJwYXJlbnRFbGVtZW50IiwgIndpbmRvdyIsICJyZXNvbHZlRWxlbWVudCIsICJ2YWwiLCAiRWxlbWVudCIsICJzcGxpdCIsICJyZWR1Y2UiLCAicHYiLCAiY3YiLCAiY2kiLCAicXVlcnlTZWxlY3RvciIsICJzaGFkb3dSb290IiwgImFkanVzdGFibGVJbnB1dE51bWJlcnMiLCAibWFwcGVyIiwgInYiLCAiaGFuZGxlU2Nyb2xsIiwgImluYyIsICJOdW1iZXIiLCAic2hpZnRLZXkiLCAiY3RybEtleSIsICJkZWx0YVkiLCAiaW5kZXgiLCAic2VsZWN0aW9uU3RhcnQiLCAicmVwbGFjZSIsICJmb2N1cyIsICJzZXRTZWxlY3Rpb25SYW5nZSIsICJwcmV2ZW50RGVmYXVsdCIsICJkaXNwYXRjaEV2ZW50IiwgIkV2ZW50IiwgInBhc3NpdmUiLCAibWluIiwgIm1heCIsICJmbG9vciIsICJyb3VuZCIsICJNYXRoIiwgImhzdlRvUmdiIiwgImgiLCAiZiIsICJxIiwgIm1vZCIsICJoc3ZUb0hzbCIsICJyZ2JUb0hzdiIsICJnIiwgImIiLCAibWluVmFsIiwgIm1heFZhbCIsICJkZWx0YSIsICJkciIsICJkZyIsICJkYiIsICJjbXlrVG9Ic3YiLCAibSIsICJ5IiwgImsiLCAiaHNsVG9Ic3YiLCAibnMiLCAiaXNOYU4iLCAiaGV4VG9Ic3YiLCAiaGV4IiwgIm1hdGNoIiwgIm1hcCIsICJwYXJzZUludCIsICJwYXJzZVRvSFNWQSIsICJ0b0xvd2VyQ2FzZSIsICJjdHgiLCAiZ2V0Q29udGV4dCIsICJmaWxsU3R5bGUiLCAicmVnZXgiLCAiY215ayIsICJyZ2JhIiwgImhzbGEiLCAiaHN2YSIsICJoZXhhIiwgIm51bWFyaXplIiwgImFycmF5IiwgInRlc3QiLCAidW5kZWZpbmVkIiwgImludmFsaWQiLCAidHlwZSIsICJleGVjIiwgImFscGhhVmFsaWQiLCAidmFsdWVzIiwgImpvaW4iLCAicmF3IiwgInN1YnN0cmluZyIsICJIU1ZhQ29sb3IiLCAib3JpZ2luYWwiLCAibmV4dCIsICJwcmVjaXNpb24iLCAidG9GaXhlZCIsICJ0aGF0IiwgInRvSFNWQSIsICJ0b1N0cmluZyIsICJ0b0hTTEEiLCAidG9SR0JBIiwgInRvQ01ZSyIsICJyZ2IiLCAidG9IRVhBIiwgInBhZFN0YXJ0IiwgImFscGhhIiwgInRvVXBwZXJDYXNlIiwgImNsb25lIiwgImNsYW1wIiwgIk1vdmVhYmxlIiwgIm9wdCIsICJhc3NpZ24iLCAibG9jayIsICJvbmNoYW5nZSIsICJvbnN0b3AiLCAiX2tleWJvYXJkIiwgImFjdGl2ZUVsZW1lbnQiLCAid3JhcHBlciIsICJ1cCIsICJyaWdodCIsICJkb3duIiwgImxlZnQiLCAieG0iLCAieW0iLCAidXBkYXRlIiwgImNhY2hlIiwgIngiLCAic3RhcnRzV2l0aCIsICJfdGFwc3RhcnQiLCAiXyIsICJfdGFwc3RvcCIsICJfdGFwbW92ZSIsICJjYW5jZWxhYmxlIiwgImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsICJ0b3VjaCIsICJ0b3VjaGVzIiwgImNsaWVudFgiLCAiY2xpZW50WSIsICJ3aWR0aCIsICJ0b3AiLCAiaGVpZ2h0IiwgInN0eWxlIiwgIm9mZnNldFdpZHRoIiwgIm9mZnNldEhlaWdodCIsICJjeCIsICJjeSIsICJ0cmlnZ2VyIiwgImRlc3Ryb3kiLCAiU2VsZWN0YWJsZSIsICJjbGFzc05hbWUiLCAib25UYXAiLCAiZm9yRWFjaCIsICJjbGFzc0xpc3QiLCAic3RvcFByb3BhZ2F0aW9uIiwgImRlZmF1bHRzIiwgInZhcmlhbnRGbGlwT3JkZXIiLCAic3RhcnQiLCAibWlkZGxlIiwgImVuZCIsICJwb3NpdGlvbkZsaXBPcmRlciIsICJib3R0b20iLCAicG9zaXRpb24iLCAibWFyZ2luIiwgInJlcG9zaXRpb24iLCAicmVmZXJlbmNlIiwgInBvcHBlciIsICJjb250YWluZXIiLCAiZG9jdW1lbnRFbGVtZW50IiwgIm9yaWdpbmFsTGVmdCIsICJvcmlnaW5hbFRvcCIsICJyZWZCb3giLCAicG9wQm94IiwgInBvc2l0aW9uU3RvcmUiLCAidmFyaWFudFN0b3JlIiwgInZzIiwgInZtIiwgInZlIiwgImhzIiwgImhtIiwgImhlIiwgInBvc0tleSIsICJ2YXJLZXkiLCAicG9zaXRpb25zIiwgInZhcmlhbnRzIiwgInZlcnRpY2FsIiwgInBvc2l0aW9uVmFsIiwgInBvc2l0aW9uS2V5IiwgInZhcmlhbnRLZXkiLCAicG9zaXRpb25TaXplIiwgInZhcmlhbnRTaXplIiwgInBvc2l0aW9uTWF4aW11bSIsICJ2YXJpYW50TWF4aW11bSIsICJwb3NpdGlvbk1pbmltdW0iLCAidmFyaWFudE1pbmltdW0iLCAidmFyaWFudFZhbCIsICJFIiwgIlBpY2tyIiwgImNvbnN0cnVjdG9yIiwgImluaXQiLCAic2F2ZSIsICJoaWRlIiwgInNob3ciLCAiY2xlYXIiLCAiY2hhbmdlIiwgImNoYW5nZXN0b3AiLCAiY2FuY2VsIiwgInN3YXRjaHNlbGVjdCIsICJ0aGlzIiwgIkRFRkFVTFRfT1BUSU9OUyIsICJzd2F0Y2hlcyIsICJjb21wb25lbnRzIiwgInRoZW1lIiwgInNsaWRlcnMiLCAibG9ja09wYWNpdHkiLCAicGFkZGluZyIsICJpbmNsdWRlcyIsICJpbnRlcmFjdGlvbiIsICJwcmV2aWV3IiwgIm9wYWNpdHkiLCAiaHVlIiwgInBhbGV0dGUiLCAiX3ByZUJ1aWxkIiwgIl9idWlsZENvbXBvbmVudHMiLCAiX2JpbmRFdmVudHMiLCAiX2ZpbmFsQnVpbGQiLCAiY29sb3IiLCAiYWRkU3dhdGNoIiwgImJ1dHRvbiIsICJhcHAiLCAiX3Jvb3QiLCAiX25hbm9wb3AiLCAiYmFzZU9wdGlvbnMiLCAiSFRNTEVsZW1lbnQiLCAiW29iamVjdCBPYmplY3RdIiwgIkVycm9yIiwgInNldEF0dHJpYnV0ZSIsICJfdCIsICJfc2V0dXBBbmltYXRpb25GcmFtZSIsICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCAiY2IiLCAic2V0Q29sb3IiLCAiZGVmYXVsdCIsICJfcmVQb3NpdGlvbmluZ1BpY2tlciIsICJkZWZhdWx0UmVwcmVzZW50YXRpb24iLCAiX3JlcHJlc2VudGF0aW9uIiwgInNldENvbG9yUmVwcmVzZW50YXRpb24iLCAic2hvd0Fsd2F5cyIsICJfaW5pdGlhbGl6aW5nQWN0aXZlIiwgIl9lbWl0IiwgImluc3RhbmNlIiwgInVzZUFzQnV0dG9uIiwgImlubGluZSIsICJhcHBDbGFzcyIsICJoaWRkZW4iLCAiaW5wdXQiLCAiaW50IiwgImZpbmQiLCAiYWRkIiwgImNvbnRhaW5zIiwgImFwcGVuZENoaWxkIiwgInJlbW92ZUNoaWxkIiwgInBhcmVudCIsICJuZXh0U2libGluZyIsICJpbnNlcnRCZWZvcmUiLCAicmVtb3ZlIiwgInBhcmVudE5vZGUiLCAicmVwbGFjZUNoaWxkIiwgImRpc2FibGVkIiwgImRpc2FibGUiLCAiY29tcGFyaXNvbiIsICJ0cmFuc2l0aW9uIiwgImxhc3RDb2xvciIsICJpbnN0IiwgImNzIiwgInJlcGVhdCIsICJzbyIsICJzaCIsICJnZXRDb2xvciIsICJfY29sb3IiLCAiX2xhc3RDb2xvciIsICJwaWNrZXIiLCAiY3VycmVudENvbG9yIiwgIl9yZWNhbGMiLCAiX3VwZGF0ZU91dHB1dCIsICJjc3NSR0JhU3RyaW5nIiwgImJhY2tncm91bmQiLCAic2V0UHJvcGVydHkiLCAiX3N3YXRjaENvbG9ycyIsICJzbGlkZXIiLCAiYmFja2dyb3VuZENvbG9yIiwgInNlbGVjdGFibGUiLCAiX2NvbXBvbmVudHMiLCAiZXZlbnRCaW5kaW5ncyIsICJfY2xlYXJDb2xvciIsICJzZXRIU1ZBIiwgImFwcGx5Q29sb3IiLCAicmVzdWx0IiwgInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsICJjayIsICJjbG9zZVdpdGhLZXkiLCAiaXNPcGVuIiwgImNvZGUiLCAic29tZSIsICJhZGp1c3RhYmxlTnVtYmVycyIsICJyYW5nZXMiLCAic3RlcCIsICJyYW5nZSIsICJnZXRDb2xvclJlcHJlc2VudGF0aW9uIiwgIm52IiwgInRvUHJlY2lzaW9uIiwgImF1dG9SZXBvc2l0aW9uIiwgInRpbWVvdXQiLCAiY2xvc2VPblNjcm9sbCIsICJzZXRUaW1lb3V0IiwgInJzIiwgImNsZWFyVGltZW91dCIsICJfZXZlbnRCaW5kaW5ncyIsICJib2R5IiwgImViIiwgImlubmVySGVpZ2h0IiwgImlubmVyV2lkdGgiLCAiZXZlbnRTb3VyY2UiLCAib3V0cHV0UHJlY2lzaW9uIiwgInNpbGVudCIsICJfcGFyc2VMb2NhbENvbG9yIiwgImFscGhhTWFrZXNBQ2hhbmdlIiwgImkxOG4iLCAiSTE4Tl9ERUZBVUxUUyIsICJldmVudCIsICJhcmdzIiwgIl9ldmVudExpc3RlbmVyIiwgImNhbGxCYWNrcyIsICJpbmRleE9mIiwgInNwbGljZSIsICJyZW1vdmVTd2F0Y2giLCAic3dhdGNoQ29sb3IiLCAiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCAiZGVzdHJveUFuZFJlbW92ZSIsICJyZWNhbGMiLCAic3RyaW5nIiwgInV0eXBlIiwgImNsaWNrIiwgImdldFNlbGVjdGVkQ29sb3IiLCAiZ2V0Um9vdCIsICJlbmFibGUiLCAiVkVSU0lPTiIsICJtb2R1bGUiLCAiaXNCdWZmZXIiLCAibW9kdWxlIiwgImlzQXJyYXkiLCAiaXNQbGFpbk9iamVjdCIsICJzZXRQcm9wZXJ0eSIsICJnZXRQcm9wZXJ0eSIsICJleHRlbmQiLCAiaSIsICJpbXBvcnRfb2JzaWRpYW4iLCAidCIsICJlIiwgInIiLCAibiIsICJpIiwgIm8iLCAiYSIsICJ1IiwgImMiLCAicyIsICJkIiwgImgiLCAibCIsICJmIiwgImciLCAicCIsICJiIiwgIkYiLCAibSIsICJ5IiwgIkEiLCAiRSIsICJ2IiwgInRleHQiLCAidmFsdWUiLCAiZSIsICJQaWNrciIsICJpIiwgImltcG9ydF9vYnNpZGlhbiIsICJjb2RlU2VjdGlvbiIsICJjb2RlVGV4dCIsICJfIiwgImUiLCAidGV4dCIsICJpIiwgInZhbHVlIiwgIl9hIiwgInRleHQiLCAiZnJvbSIsICJ0byIsICJlbXB0eSIsICJsYW5ndWFnZUljb25zIiwgInBvc2l0aW9uIiwgInRleHQiLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9pc19idWZmZXIiLCAiaW5kZXgiLCAicG9pbnQiLCAicG9zaXRpb24iLCAiaW5kZXgiLCAicGF0aCIsICJpbmRleCIsICJwYXRoIiwgImluZGV4IiwgImluZGV4IiwgInByb3AiLCAicGF0aCIsICJkaXJuYW1lIiwgImFzc2VydFBhdGgiLCAiYmFzZW5hbWUiLCAiZXh0bmFtZSIsICJidWZmZXJMaWtlIiwgInBhcnNlIiwgImluZGV4IiwgImV4dGVuZCIsICJ2YWx1ZSIsICJvcHRpb25zIiwgIm5vZGUiLCAiZmlsZSIsICJpc0J1ZmZlciIsICJpbmRleCIsICJsaXN0IiwgImFsbCIsICJpbmRleCIsICJleHRlbnNpb24iLCAibGlzdCIsICJvayIsICJwcmV2aW91cyIsICJkb2N1bWVudCIsICJzZWxmIiwgInBvaW50IiwgImluZGV4IiwgIm9rIiwgImNvbnN0cnVjdHMiLCAiaW5kZXgiLCAiaW5kZXgiLCAidGV4dCIsICJvayIsICJhdHRlbnRpb25NYXJrZXJzIiwgInByZXZpb3VzIiwgInBvaW50IiwgIm9rIiwgIm9rIiwgIm9rIiwgInNlbGYiLCAib2siLCAiY2hhcmFjdGVyUmVmZXJlbmNlIiwgIm9rIiwgInNlbGYiLCAib2siLCAic2VsZiIsICJlZmZlY3RzIiwgIm5vayIsICJzdGFydCIsICJvayIsICJzZWxmIiwgImZ1cnRoZXJTdGFydCIsICJpbmRleCIsICJvayIsICJzZWxmIiwgImluZGV4IiwgInByZXZpb3VzIiwgInN0YXJ0IiwgImNvbnRlbnQiLCAib2siLCAicHJldmlvdXMiLCAic2VsZiIsICJvayIsICJvayIsICJzZWxmIiwgIm9rIiwgIm9rIiwgIm9rIiwgInNlbGYiLCAidGl0bGVCZWZvcmUiLCAib2siLCAiY29udGVudCIsICJ0ZXh0IiwgIm9rIiwgImluZGV4IiwgIm9rIiwgInNlbGYiLCAiYnVmZmVyIiwgIm9rIiwgInNlbGYiLCAiaW5kZXgiLCAiaW5kZXgiLCAidGV4dCIsICJvayIsICJzZWxmIiwgIm9rIiwgInNlbGYiLCAib2siLCAic2VsZiIsICJvayIsICJvayIsICJvayIsICJzZWxmIiwgImluZGV4IiwgImNvbnRlbnQiLCAidGV4dCIsICJkZWZpbml0aW9uIiwgIm9rIiwgInNlbGYiLCAic2VsZiIsICJjb250ZW50IiwgInNlbGYiLCAiY29uc3RydWN0cyIsICJ0ZXh0IiwgImxpc3QiLCAiaW5kZXgiLCAicG9pbnQiLCAiZXhpdCIsICJfIiwgImNvbnN0cnVjdHMiLCAiYWxsIiwgImxpc3QiLCAib2siLCAiZnJvbSIsICJpbmRleCIsICJkb2N1bWVudCIsICJmbG93IiwgInN0cmluZyIsICJ0ZXh0IiwgImRvY3VtZW50IiwgImZsb3ciLCAic3RyaW5nIiwgInRleHQiLCAiY29uc3RydWN0cyIsICJkb2N1bWVudCIsICJidWZmZXIiLCAiYmFzZSIsICJoZWFkIiwgIm93biIsICJibG9ja1F1b3RlIiwgImJ1ZmZlciIsICJjb2RlVGV4dCIsICJkZWZpbml0aW9uIiwgImxpc3QiLCAidGhlbWF0aWNCcmVhayIsICJleGl0IiwgImluZGV4IiwgInBvaW50IiwgImxpc3RJdGVtIiwgIm5vZGUiLCAiZGF0YSIsICJ0ZXh0IiwgInN0cmluZyIsICJkIiwgImV4dGVuc2lvbiIsICJpbmRleCIsICJhbGwiLCAibm9kZSIsICJkIiwgImlzIiwgIm5vZGUiLCAiaW5kZXgiLCAidmlzaXQiLCAibm9kZSIsICJpbmRleCIsICJlbGVtZW50IiwgIl8iLCAidGV4dCIsICJub2RlIiwgImluZGV4Il0KfQo=
+//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ib290c3RyYXAiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsICJub2RlX21vZHVsZXMvQHNpbW9ud2VwL3BpY2tyL2Rpc3Qvd2VicGFjazovc3JjL2pzL3V0aWxzL3V0aWxzLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvdXRpbHMvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3NyYy9qcy91dGlscy9oc3ZhY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3dlYnBhY2s6L3NyYy9qcy9saWJzL21vdmVhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvbGlicy9zZWxlY3RhYmxlLmpzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvdGVtcGxhdGUuanMiLCAibm9kZV9tb2R1bGVzL0BzaW1vbndlcC9waWNrci9kaXN0L3NyYy9OYW5vUG9wLnRzIiwgIm5vZGVfbW9kdWxlcy9Ac2ltb253ZXAvcGlja3IvZGlzdC93ZWJwYWNrOi9zcmMvanMvcGlja3IuanMiLCAibm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZXh0ZW5kL2luZGV4LmpzIiwgInNyYy9tYWluLnRzIiwgInNyYy9TZXR0aW5ncy50cyIsICJzcmMvU2V0dGluZ3NUYWIudHMiLCAibm9kZV9tb2R1bGVzL2NvbG9ydHJhbnNsYXRvci9lc20vaW5kZXguanMiLCAic3JjL0FwcGx5U3R5bGluZy50cyIsICJzcmMvRWRpdGluZ1ZpZXcudHMiLCAic3JjL0NvZGVibG9ja1BhcnNpbmcudHMiLCAic3JjL0NvZGVibG9ja0RlY29yYXRpbmcudHMiLCAic3JjL1JlYWRpbmdWaWV3LnRzIiwgIm5vZGVfbW9kdWxlcy9iYWlsL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy91bmlmaWVkL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvaXMtcGxhaW4tb2JqL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy90cm91Z2gvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL3ZmaWxlL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1zdHJpbmdpZnktcG9zaXRpb24vbGliL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy92ZmlsZS1tZXNzYWdlL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvdmZpbGUvbGliL21pbnBhdGguYnJvd3Nlci5qcyIsICJub2RlX21vZHVsZXMvdmZpbGUvbGliL21pbnByb2MuYnJvd3Nlci5qcyIsICJub2RlX21vZHVsZXMvdmZpbGUvbGliL21pbnVybC5zaGFyZWQuanMiLCAibm9kZV9tb2R1bGVzL3ZmaWxlL2xpYi9taW51cmwuYnJvd3Nlci5qcyIsICJub2RlX21vZHVsZXMvbWRhc3QtdXRpbC10by1zdHJpbmcvbGliL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1jaHVua2VkL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1jb21iaW5lLWV4dGVuc2lvbnMvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWNoYXJhY3Rlci9saWIvdW5pY29kZS1wdW5jdHVhdGlvbi1yZWdleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstZmFjdG9yeS1zcGFjZS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrL2xpYi9pbml0aWFsaXplL2NvbnRlbnQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvaW5pdGlhbGl6ZS9kb2N1bWVudC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtY2xhc3NpZnktY2hhcmFjdGVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstdXRpbC1yZXNvbHZlLWFsbC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvYXR0ZW50aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9hdXRvbGluay5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvYmxhbmstbGluZS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvYmxvY2stcXVvdGUuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NoYXJhY3Rlci1lc2NhcGUuanMiLCAibm9kZV9tb2R1bGVzL2RlY29kZS1uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlL2luZGV4LmRvbS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvY2hhcmFjdGVyLXJlZmVyZW5jZS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvY29kZS1mZW5jZWQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NvZGUtaW5kZW50ZWQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NvZGUtdGV4dC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtc3VidG9rZW5pemUvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2NvbnRlbnQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LWRlc3RpbmF0aW9uL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstZmFjdG9yeS1sYWJlbC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWZhY3RvcnktdGl0bGUvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1mYWN0b3J5LXdoaXRlc3BhY2UvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLW5vcm1hbGl6ZS1pZGVudGlmaWVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9kZWZpbml0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9oYXJkLWJyZWFrLWVzY2FwZS5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvaGVhZGluZy1hdHguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay11dGlsLWh0bWwtdGFnLW5hbWUvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2h0bWwtZmxvdy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvaHRtbC10ZXh0LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9sYWJlbC1lbmQuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2xhYmVsLXN0YXJ0LWltYWdlLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9sYWJlbC1zdGFydC1saW5rLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmstY29yZS1jb21tb25tYXJrL2xpYi9saW5lLWVuZGluZy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLWNvcmUtY29tbW9ubWFyay9saWIvdGhlbWF0aWMtYnJlYWsuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL2xpc3QuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsvbGliL3NldGV4dC11bmRlcmxpbmUuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvaW5pdGlhbGl6ZS9mbG93LmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmsvbGliL2luaXRpYWxpemUvdGV4dC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrL2xpYi9jcmVhdGUtdG9rZW5pemVyLmpzIiwgIm5vZGVfbW9kdWxlcy9taWNyb21hcmsvbGliL2NvbnN0cnVjdHMuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvcGFyc2UuanMiLCAibm9kZV9tb2R1bGVzL21pY3JvbWFyay9saWIvcHJlcHJvY2Vzcy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrL2xpYi9wb3N0cHJvY2Vzcy5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtZGVjb2RlLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZS9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWljcm9tYXJrLXV0aWwtZGVjb2RlLXN0cmluZy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvbWRhc3QtdXRpbC1mcm9tLW1hcmtkb3duL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvcmVtYXJrLXBhcnNlL2xpYi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvdW5pc3QtdXRpbC1pcy9saWIvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9saWIvY29sb3IuanMiLCAibm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cy9saWIvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL3VuaXN0LXV0aWwtdmlzaXQvbGliL2luZGV4LmpzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJQaWNrclwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJQaWNrclwiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsICIvLyBUaGUgcmVxdWlyZSBzY29wZVxudmFyIF9fd2VicGFja19yZXF1aXJlX18gPSB7fTtcblxuIiwgIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsICJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwgIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsICIvKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItcmVzdC1wYXJhbXMgKi9cclxuZnVuY3Rpb24gZXZlbnRMaXN0ZW5lcihtZXRob2QsIGVsZW1lbnRzLCBldmVudHMsIGZuLCBvcHRpb25zID0ge30pIHtcclxuXHJcbiAgICAvLyBOb3JtYWxpemUgYXJyYXlcclxuICAgIGlmIChlbGVtZW50cyBpbnN0YW5jZW9mIEhUTUxDb2xsZWN0aW9uIHx8IGVsZW1lbnRzIGluc3RhbmNlb2YgTm9kZUxpc3QpIHtcclxuICAgICAgICBlbGVtZW50cyA9IEFycmF5LmZyb20oZWxlbWVudHMpO1xyXG4gICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShlbGVtZW50cykpIHtcclxuICAgICAgICBlbGVtZW50cyA9IFtlbGVtZW50c107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGV2ZW50cykpIHtcclxuICAgICAgICBldmVudHMgPSBbZXZlbnRzXTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGVsIG9mIGVsZW1lbnRzKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBldiBvZiBldmVudHMpIHtcclxuICAgICAgICAgICAgZWxbbWV0aG9kXShldiwgZm4sIHtjYXB0dXJlOiBmYWxzZSwgLi4ub3B0aW9uc30pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCBldmVudChzKSB0byBlbGVtZW50KHMpLlxyXG4gKiBAcGFyYW0gZWxlbWVudHMgRE9NLUVsZW1lbnRzXHJcbiAqIEBwYXJhbSBldmVudHMgRXZlbnQgbmFtZXNcclxuICogQHBhcmFtIGZuIENhbGxiYWNrXHJcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnNcclxuICogQHJldHVybiBBcnJheSBwYXNzZWQgYXJndW1lbnRzXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgb24gPSBldmVudExpc3RlbmVyLmJpbmQobnVsbCwgJ2FkZEV2ZW50TGlzdGVuZXInKTtcclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgZXZlbnQocykgZnJvbSBlbGVtZW50KHMpLlxyXG4gKiBAcGFyYW0gZWxlbWVudHMgRE9NLUVsZW1lbnRzXHJcbiAqIEBwYXJhbSBldmVudHMgRXZlbnQgbmFtZXNcclxuICogQHBhcmFtIGZuIENhbGxiYWNrXHJcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnNcclxuICogQHJldHVybiBBcnJheSBwYXNzZWQgYXJndW1lbnRzXHJcbiAqL1xyXG5leHBvcnQgY29uc3Qgb2ZmID0gZXZlbnRMaXN0ZW5lci5iaW5kKG51bGwsICdyZW1vdmVFdmVudExpc3RlbmVyJyk7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhbiBET00tRWxlbWVudCBvdXQgb2YgYSBzdHJpbmcgKFNpbmdsZSBlbGVtZW50KS5cclxuICogQHBhcmFtIGh0bWwgSFRNTCByZXByZXNlbnRpbmcgYSBzaW5nbGUgZWxlbWVudFxyXG4gKiBAcmV0dXJucyB7RWxlbWVudCB8IG51bGx9IFRoZSBlbGVtZW50LlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRGcm9tU3RyaW5nKGh0bWwpIHtcclxuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgZGl2LmlubmVySFRNTCA9IGh0bWwudHJpbSgpO1xyXG4gICAgcmV0dXJuIGRpdi5maXJzdEVsZW1lbnRDaGlsZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBuZXcgaHRtbCBlbGVtZW50LCBldmVyeSBlbGVtZW50IHdoaWNoIGhhc1xyXG4gKiBhICc6cmVmJyBhdHRyaWJ1dGUgd2lsbCBiZSBzYXZlZCBpbiBhIG9iamVjdCAod2hpY2ggd2lsbCBiZSByZXR1cm5lZClcclxuICogd2hlcmUgdGhlIHZhbHVlIG9mICc6cmVmJyBpcyB0aGUgb2JqZWN0LWtleSBhbmQgdGhlIHZhbHVlIHRoZSBIVE1MRWxlbWVudC5cclxuICpcclxuICogSXQncyBwb3NzaWJsZSB0byBjcmVhdGUgYSBoaWVyYXJjaHkgaWYgeW91IGFkZCBhICc6b2JqJyBhdHRyaWJ1dGUuIEV2ZXJ5XHJcbiAqIHNpYmxpbmcgd2lsbCBiZSBhZGRlZCB0byB0aGUgb2JqZWN0IHdoaWNoIHdpbGwgZ2V0IHRoZSBuYW1lIGZyb20gdGhlICdkYXRhLWNvbicgYXR0cmlidXRlLlxyXG4gKlxyXG4gKiBJZiB5b3Ugd2FudCB0byBjcmVhdGUgYW4gQXJyYXkgb3V0IG9mIG11bHRpcGxlIGVsZW1lbnRzLCB5b3UgY2FuIHVzZSB0aGUgJzphcnInIGF0dHJpYnV0ZSxcclxuICogdGhlIHZhbHVlIGRlZmluZXMgdGhlIGtleSBhbmQgYWxsIGVsZW1lbnRzLCB3aGljaCBoYXMgdGhlIHNhbWUgcGFyZW50IGFuZCB0aGUgc2FtZSAnZGF0YS1hcnInIGF0dHJpYnV0ZSxcclxuICogd291bGQgYmUgYWRkZWQgdG8gaXQuXHJcbiAqXHJcbiAqIEBwYXJhbSBzdHIgLSBUaGUgSFRNTCBTdHJpbmcuXHJcbiAqL1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZyb21UZW1wbGF0ZShzdHIpIHtcclxuXHJcbiAgICAvLyBSZW1vdmVzIGFuIGF0dHJpYnV0ZSBmcm9tIGEgSFRNTEVsZW1lbnQgYW5kIHJldHVybnMgdGhlIHZhbHVlLlxyXG4gICAgY29uc3QgcmVtb3ZlQXR0cmlidXRlID0gKGVsLCBuYW1lKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBlbC5nZXRBdHRyaWJ1dGUobmFtZSk7XHJcbiAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUmVjdXJzaXZlIGZ1bmN0aW9uIHRvIHJlc29sdmUgdGVtcGxhdGVcclxuICAgIGNvbnN0IHJlc29sdmUgPSAoZWxlbWVudCwgYmFzZSA9IHt9KSA9PiB7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGtleSBhbmQgY29udGFpbmVyIGF0dHJpYnV0ZVxyXG4gICAgICAgIGNvbnN0IGNvbiA9IHJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCAnOm9iaicpO1xyXG4gICAgICAgIGNvbnN0IGtleSA9IHJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCAnOnJlZicpO1xyXG4gICAgICAgIGNvbnN0IHN1YnRyZWUgPSBjb24gPyAoYmFzZVtjb25dID0ge30pIDogYmFzZTtcclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgYW5kIHNhdmUgZWxlbWVudFxyXG4gICAgICAgIGtleSAmJiAoYmFzZVtrZXldID0gZWxlbWVudCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBBcnJheS5mcm9tKGVsZW1lbnQuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IHJlbW92ZUF0dHJpYnV0ZShjaGlsZCwgJzphcnInKTtcclxuICAgICAgICAgICAgY29uc3Qgc3ViID0gcmVzb2x2ZShjaGlsZCwgYXJyID8ge30gOiBzdWJ0cmVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChhcnIpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGFycmF5IGFuZCBhZGQgZWxlbWVudFxyXG4gICAgICAgICAgICAgICAgKHN1YnRyZWVbYXJyXSB8fCAoc3VidHJlZVthcnJdID0gW10pKVxyXG4gICAgICAgICAgICAgICAgICAgIC5wdXNoKE9iamVjdC5rZXlzKHN1YikubGVuZ3RoID8gc3ViIDogY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYmFzZTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHJlc29sdmUoY3JlYXRlRWxlbWVudEZyb21TdHJpbmcoc3RyKSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQb2x5ZmlsbCBmb3Igc2FmYXJpICYgZmlyZWZveCBmb3IgdGhlIGV2ZW50UGF0aCBldmVudCBwcm9wZXJ0eS5cclxuICogQHBhcmFtIGV2dCBUaGUgZXZlbnQgb2JqZWN0LlxyXG4gKiBAcmV0dXJuIFtTdHJpbmddIGV2ZW50IHBhdGguXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRQYXRoKGV2dCkge1xyXG4gICAgbGV0IHBhdGggPSBldnQucGF0aCB8fCAoZXZ0LmNvbXBvc2VkUGF0aCAmJiBldnQuY29tcG9zZWRQYXRoKCkpO1xyXG4gICAgaWYgKHBhdGgpIHtcclxuICAgICAgICByZXR1cm4gcGF0aDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgZWwgPSBldnQudGFyZ2V0LnBhcmVudEVsZW1lbnQ7XHJcbiAgICBwYXRoID0gW2V2dC50YXJnZXQsIGVsXTtcclxuICAgIHdoaWxlIChlbCA9IGVsLnBhcmVudEVsZW1lbnQpIHtcclxuICAgICAgICBwYXRoLnB1c2goZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhdGgucHVzaChkb2N1bWVudCwgd2luZG93KTtcclxuICAgIHJldHVybiBwYXRoO1xyXG59XHJcblxyXG4vKipcclxuICogUmVzb2x2ZXMgYSBIVE1MRWxlbWVudCBieSBxdWVyeS5cclxuICogQHBhcmFtIHZhbFxyXG4gKiBAcmV0dXJucyB7bnVsbHxEb2N1bWVudHxFbGVtZW50fVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVFbGVtZW50KHZhbCkge1xyXG4gICAgaWYgKHZhbCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcclxuICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIHJldHVybiB2YWwuc3BsaXQoLz4+L2cpLnJlZHVjZSgocHYsIGN2LCBjaSwgYSkgPT4ge1xyXG4gICAgICAgICAgICBwdiA9IHB2LnF1ZXJ5U2VsZWN0b3IoY3YpO1xyXG4gICAgICAgICAgICByZXR1cm4gY2kgPCBhLmxlbmd0aCAtIDEgPyBwdi5zaGFkb3dSb290IDogcHY7XHJcbiAgICAgICAgfSwgZG9jdW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyB0aGUgYWJpbGl0eSB0byBjaGFuZ2UgbnVtYmVycyBpbiBhbiBpbnB1dCBmaWVsZCB3aXRoIHRoZSBzY3JvbGwtd2hlZWwuXHJcbiAqIEBwYXJhbSBlbFxyXG4gKiBAcGFyYW0gbWFwcGVyXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0YWJsZUlucHV0TnVtYmVycyhlbCwgbWFwcGVyID0gdiA9PiB2KSB7XHJcblxyXG4gICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKGUpIHtcclxuICAgICAgICBjb25zdCBpbmMgPSAoWzAuMDAxLCAwLjAxLCAwLjFdKVtOdW1iZXIoZS5zaGlmdEtleSB8fCBlLmN0cmxLZXkgKiAyKV0gKiAoZS5kZWx0YVkgPCAwID8gMSA6IC0xKTtcclxuXHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICBsZXQgb2ZmID0gZWwuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICAgICAgZWwudmFsdWUgPSBlbC52YWx1ZS5yZXBsYWNlKC9bXFxkLl0rL2csICh2LCBpKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAvLyBDaGVjayBpZiBudW1iZXIgaXMgaW4gY3Vyc29yIHJhbmdlIGFuZCBpbmNyZWFzZSBpdFxyXG4gICAgICAgICAgICBpZiAoaSA8PSBvZmYgJiYgaSArIHYubGVuZ3RoID49IG9mZikge1xyXG4gICAgICAgICAgICAgICAgb2ZmID0gaTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtYXBwZXIoTnVtYmVyKHYpLCBpbmMsIGluZGV4KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgcmV0dXJuIHY7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGVsLmZvY3VzKCk7XHJcbiAgICAgICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2Uob2ZmLCBvZmYpO1xyXG5cclxuICAgICAgICAvLyBQcmV2ZW50IGRlZmF1bHQgYW5kIHRyaWdnZXIgaW5wdXQgZXZlbnRcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEJpbmQgZXZlbnRzXHJcbiAgICBvbihlbCwgJ2ZvY3VzJywgKCkgPT4gb24od2luZG93LCAnd2hlZWwnLCBoYW5kbGVTY3JvbGwsIHtwYXNzaXZlOiBmYWxzZX0pKTtcclxuICAgIG9uKGVsLCAnYmx1cicsICgpID0+IG9mZih3aW5kb3csICd3aGVlbCcsIGhhbmRsZVNjcm9sbCkpO1xyXG59XHJcbiIsICIvLyBTaG9ydGhhbmRzXHJcbmNvbnN0IHttaW4sIG1heCwgZmxvb3IsIHJvdW5kfSA9IE1hdGg7XHJcblxyXG4vKipcclxuICogVHJpZXMgdG8gY29udmVydCBhIGNvbG9yIG5hbWUgdG8gcmdiL2EgaGV4IHJlcHJlc2VudGF0aW9uXHJcbiAqIEBwYXJhbSBuYW1lXHJcbiAqIEByZXR1cm5zIHtzdHJpbmcgfCBDYW52YXNHcmFkaWVudCB8IENhbnZhc1BhdHRlcm59XHJcbiAqL1xyXG5mdW5jdGlvbiBzdGFuZGFyZGl6ZUNvbG9yKG5hbWUpIHtcclxuXHJcbiAgICAvLyBTaW5jZSBpbnZhbGlkIGNvbG9yJ3Mgd2lsbCBiZSBwYXJzZWQgYXMgYmxhY2ssIGZpbHRlciB0aGVtIG91dFxyXG4gICAgaWYgKG5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2JsYWNrJykge1xyXG4gICAgICAgIHJldHVybiAnIzAwMCc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3R4ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGN0eC5maWxsU3R5bGUgPSBuYW1lO1xyXG4gICAgcmV0dXJuIGN0eC5maWxsU3R5bGUgPT09ICcjMDAwJyA/IG51bGwgOiBjdHguZmlsbFN0eWxlO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIU1Ygc3BlY3RydW0gdG8gUkdCLlxyXG4gKiBAcGFyYW0gaCBIdWVcclxuICogQHBhcmFtIHMgU2F0dXJhdGlvblxyXG4gKiBAcGFyYW0gdiBWYWx1ZVxyXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IEFycmF5IHdpdGggcmdiIHZhbHVlcy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBoc3ZUb1JnYihoLCBzLCB2KSB7XHJcbiAgICBoID0gKGggLyAzNjApICogNjtcclxuICAgIHMgLz0gMTAwO1xyXG4gICAgdiAvPSAxMDA7XHJcblxyXG4gICAgY29uc3QgaSA9IGZsb29yKGgpO1xyXG5cclxuICAgIGNvbnN0IGYgPSBoIC0gaTtcclxuICAgIGNvbnN0IHAgPSB2ICogKDEgLSBzKTtcclxuICAgIGNvbnN0IHEgPSB2ICogKDEgLSBmICogcyk7XHJcbiAgICBjb25zdCB0ID0gdiAqICgxIC0gKDEgLSBmKSAqIHMpO1xyXG5cclxuICAgIGNvbnN0IG1vZCA9IGkgJSA2O1xyXG4gICAgY29uc3QgciA9IFt2LCBxLCBwLCBwLCB0LCB2XVttb2RdO1xyXG4gICAgY29uc3QgZyA9IFt0LCB2LCB2LCBxLCBwLCBwXVttb2RdO1xyXG4gICAgY29uc3QgYiA9IFtwLCBwLCB0LCB2LCB2LCBxXVttb2RdO1xyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgciAqIDI1NSxcclxuICAgICAgICBnICogMjU1LFxyXG4gICAgICAgIGIgKiAyNTVcclxuICAgIF07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhTViBzcGVjdHJ1bSB0byBIZXguXHJcbiAqIEBwYXJhbSBoIEh1ZVxyXG4gKiBAcGFyYW0gcyBTYXR1cmF0aW9uXHJcbiAqIEBwYXJhbSB2IFZhbHVlXHJcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX0gSGV4IHZhbHVlc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvSGV4KGgsIHMsIHYpIHtcclxuICAgIHJldHVybiBoc3ZUb1JnYihoLCBzLCB2KS5tYXAodiA9PlxyXG4gICAgICAgIHJvdW5kKHYpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpXHJcbiAgICApO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIU1Ygc3BlY3RydW0gdG8gQ01ZSy5cclxuICogQHBhcmFtIGggSHVlXHJcbiAqIEBwYXJhbSBzIFNhdHVyYXRpb25cclxuICogQHBhcmFtIHYgVmFsdWVcclxuICogQHJldHVybnMge251bWJlcltdfSBDTVlLIHZhbHVlc1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGhzdlRvQ215ayhoLCBzLCB2KSB7XHJcbiAgICBjb25zdCByZ2IgPSBoc3ZUb1JnYihoLCBzLCB2KTtcclxuICAgIGNvbnN0IHIgPSByZ2JbMF0gLyAyNTU7XHJcbiAgICBjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xyXG4gICAgY29uc3QgYiA9IHJnYlsyXSAvIDI1NTtcclxuXHJcbiAgICBjb25zdCBrID0gbWluKDEgLSByLCAxIC0gZywgMSAtIGIpO1xyXG4gICAgY29uc3QgYyA9IGsgPT09IDEgPyAwIDogKDEgLSByIC0gaykgLyAoMSAtIGspO1xyXG4gICAgY29uc3QgbSA9IGsgPT09IDEgPyAwIDogKDEgLSBnIC0gaykgLyAoMSAtIGspO1xyXG4gICAgY29uc3QgeSA9IGsgPT09IDEgPyAwIDogKDEgLSBiIC0gaykgLyAoMSAtIGspO1xyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgYyAqIDEwMCxcclxuICAgICAgICBtICogMTAwLFxyXG4gICAgICAgIHkgKiAxMDAsXHJcbiAgICAgICAgayAqIDEwMFxyXG4gICAgXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgSFNWIHNwZWN0cnVtIHRvIEhTTC5cclxuICogQHBhcmFtIGggSHVlXHJcbiAqIEBwYXJhbSBzIFNhdHVyYXRpb25cclxuICogQHBhcmFtIHYgVmFsdWVcclxuICogQHJldHVybnMge251bWJlcltdfSBIU0wgdmFsdWVzXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaHN2VG9Ic2woaCwgcywgdikge1xyXG4gICAgcyAvPSAxMDA7XHJcbiAgICB2IC89IDEwMDtcclxuXHJcbiAgICBjb25zdCBsID0gKDIgLSBzKSAqIHYgLyAyO1xyXG5cclxuICAgIGlmIChsICE9PSAwKSB7XHJcbiAgICAgICAgaWYgKGwgPT09IDEpIHtcclxuICAgICAgICAgICAgcyA9IDA7XHJcbiAgICAgICAgfSBlbHNlIGlmIChsIDwgMC41KSB7XHJcbiAgICAgICAgICAgIHMgPSBzICogdiAvIChsICogMik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcyA9IHMgKiB2IC8gKDIgLSBsICogMik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgaCxcclxuICAgICAgICBzICogMTAwLFxyXG4gICAgICAgIGwgKiAxMDBcclxuICAgIF07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IFJHQiB0byBIU1YuXHJcbiAqIEBwYXJhbSByIFJlZFxyXG4gKiBAcGFyYW0gZyBHcmVlblxyXG4gKiBAcGFyYW0gYiBCbHVlXHJcbiAqIEByZXR1cm4ge251bWJlcltdfSBIU1YgdmFsdWVzLlxyXG4gKi9cclxuZnVuY3Rpb24gcmdiVG9Ic3YociwgZywgYikge1xyXG4gICAgciAvPSAyNTU7XHJcbiAgICBnIC89IDI1NTtcclxuICAgIGIgLz0gMjU1O1xyXG5cclxuICAgIGNvbnN0IG1pblZhbCA9IG1pbihyLCBnLCBiKTtcclxuICAgIGNvbnN0IG1heFZhbCA9IG1heChyLCBnLCBiKTtcclxuICAgIGNvbnN0IGRlbHRhID0gbWF4VmFsIC0gbWluVmFsO1xyXG5cclxuICAgIGxldCBoLCBzO1xyXG4gICAgY29uc3QgdiA9IG1heFZhbDtcclxuICAgIGlmIChkZWx0YSA9PT0gMCkge1xyXG4gICAgICAgIGggPSBzID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcyA9IGRlbHRhIC8gbWF4VmFsO1xyXG4gICAgICAgIGNvbnN0IGRyID0gKCgobWF4VmFsIC0gcikgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhO1xyXG4gICAgICAgIGNvbnN0IGRnID0gKCgobWF4VmFsIC0gZykgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhO1xyXG4gICAgICAgIGNvbnN0IGRiID0gKCgobWF4VmFsIC0gYikgLyA2KSArIChkZWx0YSAvIDIpKSAvIGRlbHRhO1xyXG5cclxuICAgICAgICBpZiAociA9PT0gbWF4VmFsKSB7XHJcbiAgICAgICAgICAgIGggPSBkYiAtIGRnO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZyA9PT0gbWF4VmFsKSB7XHJcbiAgICAgICAgICAgIGggPSAoMSAvIDMpICsgZHIgLSBkYjtcclxuICAgICAgICB9IGVsc2UgaWYgKGIgPT09IG1heFZhbCkge1xyXG4gICAgICAgICAgICBoID0gKDIgLyAzKSArIGRnIC0gZHI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaCA8IDApIHtcclxuICAgICAgICAgICAgaCArPSAxO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaCA+IDEpIHtcclxuICAgICAgICAgICAgaCAtPSAxO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAgIGggKiAzNjAsXHJcbiAgICAgICAgcyAqIDEwMCxcclxuICAgICAgICB2ICogMTAwXHJcbiAgICBdO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBDTVlLIHRvIEhTVi5cclxuICogQHBhcmFtIGMgQ3lhblxyXG4gKiBAcGFyYW0gbSBNYWdlbnRhXHJcbiAqIEBwYXJhbSB5IFllbGxvd1xyXG4gKiBAcGFyYW0gayBLZXkgKEJsYWNrKVxyXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gSFNWIHZhbHVlcy5cclxuICovXHJcbmZ1bmN0aW9uIGNteWtUb0hzdihjLCBtLCB5LCBrKSB7XHJcbiAgICBjIC89IDEwMDtcclxuICAgIG0gLz0gMTAwO1xyXG4gICAgeSAvPSAxMDA7XHJcbiAgICBrIC89IDEwMDtcclxuXHJcbiAgICBjb25zdCByID0gKDEgLSBtaW4oMSwgYyAqICgxIC0gaykgKyBrKSkgKiAyNTU7XHJcbiAgICBjb25zdCBnID0gKDEgLSBtaW4oMSwgbSAqICgxIC0gaykgKyBrKSkgKiAyNTU7XHJcbiAgICBjb25zdCBiID0gKDEgLSBtaW4oMSwgeSAqICgxIC0gaykgKyBrKSkgKiAyNTU7XHJcblxyXG4gICAgcmV0dXJuIFsuLi5yZ2JUb0hzdihyLCBnLCBiKV07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IEhTTCB0byBIU1YuXHJcbiAqIEBwYXJhbSBoIEh1ZVxyXG4gKiBAcGFyYW0gcyBTYXR1cmF0aW9uXHJcbiAqIEBwYXJhbSBsIExpZ2h0bmVzc1xyXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gSFNWIHZhbHVlcy5cclxuICovXHJcbmZ1bmN0aW9uIGhzbFRvSHN2KGgsIHMsIGwpIHtcclxuICAgIHMgLz0gMTAwO1xyXG4gICAgbCAvPSAxMDA7XHJcbiAgICBzICo9IGwgPCAwLjUgPyBsIDogMSAtIGw7XHJcblxyXG4gICAgY29uc3QgbnMgPSAoMiAqIHMgLyAobCArIHMpKSAqIDEwMDtcclxuICAgIGNvbnN0IHYgPSAobCArIHMpICogMTAwO1xyXG4gICAgcmV0dXJuIFtoLCBpc05hTihucykgPyAwIDogbnMsIHZdO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBIRVggdG8gSFNWLlxyXG4gKiBAcGFyYW0gaGV4IEhleGFkZWNpbWFsIHN0cmluZyBvZiByZ2IgY29sb3JzLCBjYW4gaGF2ZSBsZW5ndGggMyBvciA2LlxyXG4gKiBAcmV0dXJuIHtudW1iZXJbXX0gSFNWIHZhbHVlcy5cclxuICovXHJcbmZ1bmN0aW9uIGhleFRvSHN2KGhleCkge1xyXG4gICAgcmV0dXJuIHJnYlRvSHN2KC4uLmhleC5tYXRjaCgvLnsyfS9nKS5tYXAodiA9PiBwYXJzZUludCh2LCAxNikpKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRyeSdzIHRvIHBhcnNlIGEgc3RyaW5nIHdoaWNoIHJlcHJlc2VudHMgYSBjb2xvciB0byBhIEhTViBhcnJheS5cclxuICogQ3VycmVudCBzdXBwb3J0ZWQgdHlwZXMgYXJlIGNteWssIHJnYmEsIGhzbGEgYW5kIGhleGFkZWNpbWFsLlxyXG4gKiBAcGFyYW0gc3RyXHJcbiAqIEByZXR1cm4geyp9XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUb0hTVkEoc3RyKSB7XHJcblxyXG4gICAgLy8gQ2hlY2sgaWYgc3RyaW5nIGlzIGEgY29sb3ItbmFtZVxyXG4gICAgc3RyID0gc3RyLm1hdGNoKC9eW2EtekEtWl0rJC8pID8gc3RhbmRhcmRpemVDb2xvcihzdHIpIDogc3RyO1xyXG5cclxuICAgIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gbWF0Y2ggZGlmZmVyZW50IHR5cGVzIG9mIGNvbG9yIHJlcHJlc2VudGlvblxyXG4gICAgY29uc3QgcmVnZXggPSB7XHJcbiAgICAgICAgY215azogL15jbXlrW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspL2ksXHJcbiAgICAgICAgcmdiYTogL14oKHJnYmEpfHJnYilbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSsoW1xcZC5dKylbXFxEXSo/KFtcXGQuXSt8JCkvaSxcclxuICAgICAgICBoc2xhOiAvXigoaHNsYSl8aHNsKVtcXERdKyhbXFxkLl0rKVtcXERdKyhbXFxkLl0rKVtcXERdKyhbXFxkLl0rKVtcXERdKj8oW1xcZC5dK3wkKS9pLFxyXG4gICAgICAgIGhzdmE6IC9eKChoc3ZhKXxoc3YpW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0rKFtcXGQuXSspW1xcRF0qPyhbXFxkLl0rfCQpL2ksXHJcbiAgICAgICAgaGV4YTogL14jPygoW1xcZEEtRmEtZl17Myw0fSl8KFtcXGRBLUZhLWZdezZ9KXwoW1xcZEEtRmEtZl17OH0pKSQvaVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRha2VzIGFuIEFycmF5IG9mIGFueSB0eXBlLCBjb252ZXJ0IHN0cmluZ3Mgd2hpY2ggcmVwcmVzZW50c1xyXG4gICAgICogYSBudW1iZXIgdG8gYSBudW1iZXIgYW4gYW55dGhpbmcgZWxzZSB0byB1bmRlZmluZWQuXHJcbiAgICAgKiBAcGFyYW0gYXJyYXlcclxuICAgICAqIEByZXR1cm4geyp9XHJcbiAgICAgKi9cclxuICAgIGNvbnN0IG51bWFyaXplID0gYXJyYXkgPT4gYXJyYXkubWFwKHYgPT4gL14ofFxcZCspXFwuXFxkK3xcXGQrJC8udGVzdCh2KSA/IE51bWJlcih2KSA6IHVuZGVmaW5lZCk7XHJcblxyXG4gICAgbGV0IG1hdGNoO1xyXG4gICAgaW52YWxpZDogZm9yIChjb25zdCB0eXBlIGluIHJlZ2V4KSB7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGlmIGN1cnJlbnQgc2NoZW1lIHBhc3NlZFxyXG4gICAgICAgIGlmICghKG1hdGNoID0gcmVnZXhbdHlwZV0uZXhlYyhzdHIpKSkge1xyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIE1hdGNoWzJdIGRvZXMgb25seSBjb250YWluIGEgdHJ1bHkgdmFsdWUgaWYgcmdiYSwgaHNsYSwgb3IgaHNsYSBnb3QgbWF0Y2hlZFxyXG4gICAgICAgIGNvbnN0IGFscGhhVmFsaWQgPSBhID0+ICghIW1hdGNoWzJdID09PSAodHlwZW9mIGEgPT09ICdudW1iZXInKSk7XHJcblxyXG4gICAgICAgIC8vIFRyeSB0byBjb252ZXJ0XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2NteWsnOiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBbLCBjLCBtLCB5LCBrXSA9IG51bWFyaXplKG1hdGNoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoYyA+IDEwMCB8fCBtID4gMTAwIHx8IHkgPiAxMDAgfHwgayA+IDEwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IGNteWtUb0hzdihjLCBtLCB5LCBrKSwgdHlwZX07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAncmdiYSc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFssICwgLCByLCBnLCBiLCBhXSA9IG51bWFyaXplKG1hdGNoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAociA+IDI1NSB8fCBnID4gMjU1IHx8IGIgPiAyNTUgfHwgYSA8IDAgfHwgYSA+IDEgfHwgIWFscGhhVmFsaWQoYSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhayBpbnZhbGlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWVzOiBbLi4ucmdiVG9Ic3YociwgZywgYiksIGFdLCBhLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdoZXhhJzoge1xyXG4gICAgICAgICAgICAgICAgbGV0IFssIGhleF0gPSBtYXRjaDtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaGV4Lmxlbmd0aCA9PT0gNCB8fCBoZXgubGVuZ3RoID09PSAzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGV4ID0gaGV4LnNwbGl0KCcnKS5tYXAodiA9PiB2ICsgdikuam9pbignJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgcmF3ID0gaGV4LnN1YnN0cmluZygwLCA2KTtcclxuICAgICAgICAgICAgICAgIGxldCBhID0gaGV4LnN1YnN0cmluZyg2KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IDAgLSAyNTUgdG8gMCAtIDEgZm9yIG9wYWNpdHlcclxuICAgICAgICAgICAgICAgIGEgPSBhID8gKHBhcnNlSW50KGEsIDE2KSAvIDI1NSkgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IFsuLi5oZXhUb0hzdihyYXcpLCBhXSwgYSwgdHlwZX07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAnaHNsYSc6IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFssICwgLCBoLCBzLCBsLCBhXSA9IG51bWFyaXplKG1hdGNoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoaCA+IDM2MCB8fCBzID4gMTAwIHx8IGwgPiAxMDAgfHwgYSA8IDAgfHwgYSA+IDEgfHwgIWFscGhhVmFsaWQoYSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhayBpbnZhbGlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7dmFsdWVzOiBbLi4uaHNsVG9Ic3YoaCwgcywgbCksIGFdLCBhLCB0eXBlfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlICdoc3ZhJzoge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgWywgLCAsIGgsIHMsIHYsIGFdID0gbnVtYXJpemUobWF0Y2gpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChoID4gMzYwIHx8IHMgPiAxMDAgfHwgdiA+IDEwMCB8fCBhIDwgMCB8fCBhID4gMSB8fCAhYWxwaGFWYWxpZChhKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrIGludmFsaWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZXM6IFtoLCBzLCB2LCBhXSwgYSwgdHlwZX07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHt2YWx1ZXM6IG51bGwsIHR5cGU6IG51bGx9O1xyXG59XHJcbiIsICJpbXBvcnQge2hzdlRvQ215aywgaHN2VG9IZXgsIGhzdlRvSHNsLCBoc3ZUb1JnYn0gZnJvbSAnLi9jb2xvcic7XHJcblxyXG4vKipcclxuICogU2ltcGxlIGNsYXNzIHdoaWNoIGhvbGRzIHRoZSBwcm9wZXJ0aWVzXHJcbiAqIG9mIHRoZSBjb2xvciByZXByZXNlbnRpb24gbW9kZWwgaHNsYSAoaHVlIHNhdHVyYXRpb24gbGlnaHRuZXNzIGFscGhhKVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIEhTVmFDb2xvcihoID0gMCwgcyA9IDAsIHYgPSAwLCBhID0gMSkge1xyXG4gICAgY29uc3QgbWFwcGVyID0gKG9yaWdpbmFsLCBuZXh0KSA9PiAocHJlY2lzaW9uID0gLTEpID0+IHtcclxuICAgICAgICByZXR1cm4gbmV4dCh+cHJlY2lzaW9uID8gb3JpZ2luYWwubWFwKHYgPT4gTnVtYmVyKHYudG9GaXhlZChwcmVjaXNpb24pKSkgOiBvcmlnaW5hbCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHRoYXQgPSB7XHJcbiAgICAgICAgaCwgcywgdiwgYSxcclxuXHJcbiAgICAgICAgdG9IU1ZBKCkge1xyXG4gICAgICAgICAgICBjb25zdCBoc3ZhID0gW3RoYXQuaCwgdGhhdC5zLCB0aGF0LnYsIHRoYXQuYV07XHJcbiAgICAgICAgICAgIGhzdmEudG9TdHJpbmcgPSBtYXBwZXIoaHN2YSwgYXJyID0+IGBoc3ZhKCR7YXJyWzBdfSwgJHthcnJbMV19JSwgJHthcnJbMl19JSwgJHt0aGF0LmF9KWApO1xyXG4gICAgICAgICAgICByZXR1cm4gaHN2YTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b0hTTEEoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhzbGEgPSBbLi4uaHN2VG9Ic2wodGhhdC5oLCB0aGF0LnMsIHRoYXQudiksIHRoYXQuYV07XHJcbiAgICAgICAgICAgIGhzbGEudG9TdHJpbmcgPSBtYXBwZXIoaHNsYSwgYXJyID0+IGBoc2xhKCR7YXJyWzBdfSwgJHthcnJbMV19JSwgJHthcnJbMl19JSwgJHt0aGF0LmF9KWApO1xyXG4gICAgICAgICAgICByZXR1cm4gaHNsYTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b1JHQkEoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJnYmEgPSBbLi4uaHN2VG9SZ2IodGhhdC5oLCB0aGF0LnMsIHRoYXQudiksIHRoYXQuYV07XHJcbiAgICAgICAgICAgIHJnYmEudG9TdHJpbmcgPSBtYXBwZXIocmdiYSwgYXJyID0+IGByZ2JhKCR7YXJyWzBdfSwgJHthcnJbMV19LCAke2FyclsyXX0sICR7dGhhdC5hfSlgKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJnYmE7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdG9DTVlLKCkge1xyXG4gICAgICAgICAgICBjb25zdCBjbXlrID0gaHN2VG9DbXlrKHRoYXQuaCwgdGhhdC5zLCB0aGF0LnYpO1xyXG4gICAgICAgICAgICBjbXlrLnRvU3RyaW5nID0gbWFwcGVyKGNteWssIGFyciA9PiBgY215aygke2FyclswXX0lLCAke2FyclsxXX0lLCAke2FyclsyXX0lLCAke2FyclszXX0lKWApO1xyXG4gICAgICAgICAgICByZXR1cm4gY215aztcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB0b0hFWEEoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhleCA9IGhzdlRvSGV4KHRoYXQuaCwgdGhhdC5zLCB0aGF0LnYpO1xyXG5cclxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYWxwaGEgY2hhbm5lbCBtYWtlIHNlbnNlLCBjb252ZXJ0IGl0IHRvIDI1NSBudW1iZXIgc3BhY2UsIGNvbnZlcnRcclxuICAgICAgICAgICAgLy8gVG8gaGV4IGFuZCBwYWQgaXQgd2l0aCB6ZXJvcyBpZiBuZWVkZXQuXHJcbiAgICAgICAgICAgIGNvbnN0IGFscGhhID0gdGhhdC5hID49IDEgPyAnJyA6IE51bWJlcigodGhhdC5hICogMjU1KS50b0ZpeGVkKDApKVxyXG4gICAgICAgICAgICAgICAgLnRvU3RyaW5nKDE2KVxyXG4gICAgICAgICAgICAgICAgLnRvVXBwZXJDYXNlKCkucGFkU3RhcnQoMiwgJzAnKTtcclxuXHJcbiAgICAgICAgICAgIGFscGhhICYmIGhleC5wdXNoKGFscGhhKTtcclxuICAgICAgICAgICAgaGV4LnRvU3RyaW5nID0gKCkgPT4gYCMke2hleC5qb2luKCcnKS50b1VwcGVyQ2FzZSgpfWA7XHJcbiAgICAgICAgICAgIHJldHVybiBoZXg7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgY2xvbmU6ICgpID0+IEhTVmFDb2xvcih0aGF0LmgsIHRoYXQucywgdGhhdC52LCB0aGF0LmEpXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGF0O1xyXG59XHJcbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbmNvbnN0IGNsYW1wID0gdiA9PiBNYXRoLm1heChNYXRoLm1pbih2LCAxKSwgMCk7XHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1vdmVhYmxlKG9wdCkge1xyXG5cclxuICAgIGNvbnN0IHRoYXQgPSB7XHJcblxyXG4gICAgICAgIC8vIEFzc2lnbiBkZWZhdWx0IHZhbHVlc1xyXG4gICAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe1xyXG4gICAgICAgICAgICBsb2NrOiBudWxsLFxyXG4gICAgICAgICAgICBvbmNoYW5nZTogKCkgPT4gMCxcclxuICAgICAgICAgICAgb25zdG9wOiAoKSA9PiAwXHJcbiAgICAgICAgfSwgb3B0KSxcclxuXHJcbiAgICAgICAgX2tleWJvYXJkKGUpIHtcclxuICAgICAgICAgICAgY29uc3Qge29wdGlvbnN9ID0gdGhhdDtcclxuICAgICAgICAgICAgY29uc3Qge3R5cGUsIGtleX0gPSBlO1xyXG5cclxuICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSBNb3ZhYmxlIGlzIGZvY3VzZWQgYW5kIHRoZW4gbW92ZSBpdCBiYXNlZCBvbiBhcnJvdyBrZXkgaW5wdXRzXHJcbiAgICAgICAgICAgIC8vIEZvciBpbXByb3ZlZCBhY2Nlc3NpYmlsaXR5XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBvcHRpb25zLndyYXBwZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHtsb2NrfSA9IHRoYXQub3B0aW9ucztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHVwID0ga2V5ID09PSAnQXJyb3dVcCc7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodCA9IGtleSA9PT0gJ0Fycm93UmlnaHQnO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZG93biA9IGtleSA9PT0gJ0Fycm93RG93bic7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0ga2V5ID09PSAnQXJyb3dMZWZ0JztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2tleWRvd24nICYmICh1cCB8fCByaWdodCB8fCBkb3duIHx8IGxlZnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHhtID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgeW0gPSAwO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAobG9jayA9PT0gJ3YnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtID0gKHVwIHx8IHJpZ2h0KSA/IDEgOiAtMTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2sgPT09ICdoJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB4bSA9ICh1cCB8fCByaWdodCkgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgeW0gPSB1cCA/IC0xIDogKGRvd24gPyAxIDogMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHhtID0gbGVmdCA/IC0xIDogKHJpZ2h0ID8gMSA6IDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC51cGRhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYW1wKHRoYXQuY2FjaGUueCArICgwLjAxICogeG0pKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhbXAodGhhdC5jYWNoZS55ICsgKDAuMDEgKiB5bSkpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleS5zdGFydHNXaXRoKCdBcnJvdycpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhhdC5vcHRpb25zLm9uc3RvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIF90YXBzdGFydChldnQpIHtcclxuICAgICAgICAgICAgXy5vbihkb2N1bWVudCwgWydtb3VzZXVwJywgJ3RvdWNoZW5kJywgJ3RvdWNoY2FuY2VsJ10sIHRoYXQuX3RhcHN0b3ApO1xyXG4gICAgICAgICAgICBfLm9uKGRvY3VtZW50LCBbJ21vdXNlbW92ZScsICd0b3VjaG1vdmUnXSwgdGhhdC5fdGFwbW92ZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZXZ0LmNhbmNlbGFibGUpIHtcclxuICAgICAgICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBUcmlnZ2VyXHJcbiAgICAgICAgICAgIHRoYXQuX3RhcG1vdmUoZXZ0KTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBfdGFwbW92ZShldnQpIHtcclxuICAgICAgICAgICAgY29uc3Qge29wdGlvbnMsIGNhY2hlfSA9IHRoYXQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHtsb2NrLCBlbGVtZW50LCB3cmFwcGVyfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgICAgIGNvbnN0IGIgPSB3cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgICAgICAgbGV0IHggPSAwLCB5ID0gMDtcclxuICAgICAgICAgICAgaWYgKGV2dCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdG91Y2ggPSBldnQgJiYgZXZ0LnRvdWNoZXMgJiYgZXZ0LnRvdWNoZXNbMF07XHJcbiAgICAgICAgICAgICAgICB4ID0gZXZ0ID8gKHRvdWNoIHx8IGV2dCkuY2xpZW50WCA6IDA7XHJcbiAgICAgICAgICAgICAgICB5ID0gZXZ0ID8gKHRvdWNoIHx8IGV2dCkuY2xpZW50WSA6IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gUmVzZXQgdG8gYm91bmRzXHJcbiAgICAgICAgICAgICAgICBpZiAoeCA8IGIubGVmdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHggPSBiLmxlZnQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHggPiBiLmxlZnQgKyBiLndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeCA9IGIubGVmdCArIGIud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoeSA8IGIudG9wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeSA9IGIudG9wO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh5ID4gYi50b3AgKyBiLmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHkgPSBiLnRvcCArIGIuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZVxyXG4gICAgICAgICAgICAgICAgeCAtPSBiLmxlZnQ7XHJcbiAgICAgICAgICAgICAgICB5IC09IGIudG9wO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhY2hlKSB7XHJcbiAgICAgICAgICAgICAgICB4ID0gY2FjaGUueCAqIGIud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB5ID0gY2FjaGUueSAqIGIuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAobG9jayAhPT0gJ2gnKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSBgY2FsYygke3ggLyBiLndpZHRoICogMTAwfSUgLSAke2VsZW1lbnQub2Zmc2V0V2lkdGggLyAyfXB4KWA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChsb2NrICE9PSAndicpIHtcclxuICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGUudG9wID0gYGNhbGMoJHt5IC8gYi5oZWlnaHQgKiAxMDB9JSAtICR7ZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyfXB4KWA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoYXQuY2FjaGUgPSB7eDogeCAvIGIud2lkdGgsIHk6IHkgLyBiLmhlaWdodH07XHJcbiAgICAgICAgICAgIGNvbnN0IGN4ID0gY2xhbXAoeCAvIGIud2lkdGgpO1xyXG4gICAgICAgICAgICBjb25zdCBjeSA9IGNsYW1wKHkgLyBiLmhlaWdodCk7XHJcblxyXG4gICAgICAgICAgICBzd2l0Y2ggKGxvY2spIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3YnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm9uY2hhbmdlKGN4KTtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2gnOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLm9uY2hhbmdlKGN5KTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMub25jaGFuZ2UoY3gsIGN5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIF90YXBzdG9wKCkge1xyXG4gICAgICAgICAgICB0aGF0Lm9wdGlvbnMub25zdG9wKCk7XHJcbiAgICAgICAgICAgIF8ub2ZmKGRvY3VtZW50LCBbJ21vdXNldXAnLCAndG91Y2hlbmQnLCAndG91Y2hjYW5jZWwnXSwgdGhhdC5fdGFwc3RvcCk7XHJcbiAgICAgICAgICAgIF8ub2ZmKGRvY3VtZW50LCBbJ21vdXNlbW92ZScsICd0b3VjaG1vdmUnXSwgdGhhdC5fdGFwbW92ZSk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgdHJpZ2dlcigpIHtcclxuICAgICAgICAgICAgdGhhdC5fdGFwbW92ZSgpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHVwZGF0ZSh4ID0gMCwgeSA9IDApIHtcclxuICAgICAgICAgICAgY29uc3Qge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH0gPSB0aGF0Lm9wdGlvbnMud3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGF0Lm9wdGlvbnMubG9jayA9PT0gJ2gnKSB7XHJcbiAgICAgICAgICAgICAgICB5ID0geDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhhdC5fdGFwbW92ZSh7XHJcbiAgICAgICAgICAgICAgICBjbGllbnRYOiBsZWZ0ICsgd2lkdGggKiB4LFxyXG4gICAgICAgICAgICAgICAgY2xpZW50WTogdG9wICsgaGVpZ2h0ICogeVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICBkZXN0cm95KCkge1xyXG4gICAgICAgICAgICBjb25zdCB7b3B0aW9ucywgX3RhcHN0YXJ0LCBfa2V5Ym9hcmR9ID0gdGhhdDtcclxuICAgICAgICAgICAgXy5vZmYoZG9jdW1lbnQsIFsna2V5ZG93bicsICdrZXl1cCddLCBfa2V5Ym9hcmQpO1xyXG4gICAgICAgICAgICBfLm9mZihbb3B0aW9ucy53cmFwcGVyLCBvcHRpb25zLmVsZW1lbnRdLCAnbW91c2Vkb3duJywgX3RhcHN0YXJ0KTtcclxuICAgICAgICAgICAgXy5vZmYoW29wdGlvbnMud3JhcHBlciwgb3B0aW9ucy5lbGVtZW50XSwgJ3RvdWNoc3RhcnQnLCBfdGFwc3RhcnQsIHtcclxuICAgICAgICAgICAgICAgIHBhc3NpdmU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8gSW5pdGlsaXplXHJcbiAgICBjb25zdCB7b3B0aW9ucywgX3RhcHN0YXJ0LCBfa2V5Ym9hcmR9ID0gdGhhdDtcclxuICAgIF8ub24oW29wdGlvbnMud3JhcHBlciwgb3B0aW9ucy5lbGVtZW50XSwgJ21vdXNlZG93bicsIF90YXBzdGFydCk7XHJcbiAgICBfLm9uKFtvcHRpb25zLndyYXBwZXIsIG9wdGlvbnMuZWxlbWVudF0sICd0b3VjaHN0YXJ0JywgX3RhcHN0YXJ0LCB7XHJcbiAgICAgICAgcGFzc2l2ZTogZmFsc2VcclxuICAgIH0pO1xyXG5cclxuICAgIF8ub24oZG9jdW1lbnQsIFsna2V5ZG93bicsICdrZXl1cCddLCBfa2V5Ym9hcmQpO1xyXG5cclxuICAgIHJldHVybiB0aGF0O1xyXG59XHJcbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4uL3V0aWxzL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2VsZWN0YWJsZShvcHQgPSB7fSkge1xuICAgIG9wdCA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBvbmNoYW5nZTogKCkgPT4gMCxcbiAgICAgICAgY2xhc3NOYW1lOiAnJyxcbiAgICAgICAgZWxlbWVudHM6IFtdXG4gICAgfSwgb3B0KTtcblxuICAgIGNvbnN0IG9uVGFwID0gXy5vbihvcHQuZWxlbWVudHMsICdjbGljaycsIGV2dCA9PiB7XG4gICAgICAgIG9wdC5lbGVtZW50cy5mb3JFYWNoKGUgPT5cbiAgICAgICAgICAgIGUuY2xhc3NMaXN0W2V2dC50YXJnZXQgPT09IGUgPyAnYWRkJyA6ICdyZW1vdmUnXShvcHQuY2xhc3NOYW1lKVxuICAgICAgICApO1xuXG4gICAgICAgIG9wdC5vbmNoYW5nZShldnQpO1xuXG4gICAgICAgIC8vIEZpeCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL1NpbW9ud2VwL3BpY2tyL2lzc3Vlcy8yNDNcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGVzdHJveTogKCkgPT4gXy5vZmYoLi4ub25UYXApXG4gICAgfTtcbn1cbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4vdXRpbHMvdXRpbHMnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgaW5zdGFuY2UgPT4ge1xyXG5cclxuICAgIGNvbnN0IHtcclxuICAgICAgICBjb21wb25lbnRzLFxyXG4gICAgICAgIHVzZUFzQnV0dG9uLFxyXG4gICAgICAgIGlubGluZSxcclxuICAgICAgICBhcHBDbGFzcyxcclxuICAgICAgICB0aGVtZSxcclxuICAgICAgICBsb2NrT3BhY2l0eVxyXG4gICAgfSA9IGluc3RhbmNlLm9wdGlvbnM7XHJcblxyXG4gICAgLy8gVXRpbHNcclxuICAgIGNvbnN0IGhpZGRlbiA9IGNvbiA9PiBjb24gPyAnJyA6ICdzdHlsZT1cImRpc3BsYXk6bm9uZVwiIGhpZGRlbic7XHJcbiAgICBjb25zdCB0ID0gc3RyID0+IGluc3RhbmNlLl90KHN0cik7XHJcblxyXG4gICAgY29uc3Qgcm9vdCA9IF8uY3JlYXRlRnJvbVRlbXBsYXRlKGBcclxuICAgICAgPGRpdiA6cmVmPVwicm9vdFwiIGNsYXNzPVwicGlja3JcIj5cclxuXHJcbiAgICAgICAgJHt1c2VBc0J1dHRvbiA/ICcnIDogJzxidXR0b24gdHlwZT1cImJ1dHRvblwiIDpyZWY9XCJidXR0b25cIiBjbGFzcz1cInBjci1idXR0b25cIj48L2J1dHRvbj4nfVxyXG5cclxuICAgICAgICA8ZGl2IDpyZWY9XCJhcHBcIiBjbGFzcz1cInBjci1hcHAgJHthcHBDbGFzcyB8fCAnJ31cIiBkYXRhLXRoZW1lPVwiJHt0aGVtZX1cIiAke2lubGluZSA/ICdzdHlsZT1cInBvc2l0aW9uOiB1bnNldFwiJyA6ICcnfSBhcmlhLWxhYmVsPVwiJHt0KCd1aTpkaWFsb2cnLCAnY29sb3IgcGlja2VyIGRpYWxvZycpfVwiIHJvbGU9XCJ3aW5kb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwY3Itc2VsZWN0aW9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5wYWxldHRlKX0+XHJcbiAgICAgICAgICAgIDxkaXYgOm9iaj1cInByZXZpZXdcIiBjbGFzcz1cInBjci1jb2xvci1wcmV2aWV3XCIgJHtoaWRkZW4oY29tcG9uZW50cy5wcmV2aWV3KX0+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgOnJlZj1cImxhc3RDb2xvclwiIGNsYXNzPVwicGNyLWxhc3QtY29sb3JcIiBhcmlhLWxhYmVsPVwiJHt0KCdidG46bGFzdC1jb2xvcicpfVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cImN1cnJlbnRDb2xvclwiIGNsYXNzPVwicGNyLWN1cnJlbnQtY29sb3JcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IDpvYmo9XCJwYWxldHRlXCIgY2xhc3M9XCJwY3ItY29sb3ItcGFsZXR0ZVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cInBpY2tlclwiIGNsYXNzPVwicGNyLXBpY2tlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgOnJlZj1cInBhbGV0dGVcIiBjbGFzcz1cInBjci1wYWxldHRlXCIgdGFiaW5kZXg9XCIwXCIgYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpwYWxldHRlJyl9XCIgcm9sZT1cImxpc3Rib3hcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IDpvYmo9XCJodWVcIiBjbGFzcz1cInBjci1jb2xvci1jaG9vc2VyXCIgJHtoaWRkZW4oY29tcG9uZW50cy5odWUpfT5cclxuICAgICAgICAgICAgICA8ZGl2IDpyZWY9XCJwaWNrZXJcIiBjbGFzcz1cInBjci1waWNrZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IDpyZWY9XCJzbGlkZXJcIiBjbGFzcz1cInBjci1odWUgcGNyLXNsaWRlclwiIHRhYmluZGV4PVwiMFwiIGFyaWEtbGFiZWw9XCIke3QoJ2FyaWE6aHVlJyl9XCIgcm9sZT1cInNsaWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgOm9iaj1cIm9wYWNpdHlcIiBjbGFzcz1cInBjci1jb2xvci1vcGFjaXR5XCIgJHtoaWRkZW4oY29tcG9uZW50cy5vcGFjaXR5KX0+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwicGlja2VyXCIgY2xhc3M9XCJwY3ItcGlja2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiA6cmVmPVwic2xpZGVyXCIgY2xhc3M9XCJwY3Itb3BhY2l0eSBwY3Itc2xpZGVyXCIgdGFiaW5kZXg9XCIwXCIgYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpvcGFjaXR5JywgJ29wYWNpdHkgc2VsZWN0aW9uIHNsaWRlcicpfVwiIHJvbGU9XCJzbGlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGNyLXN3YXRjaGVzICR7Y29tcG9uZW50cy5wYWxldHRlID8gJycgOiAncGNyLWxhc3QnfVwiIDpyZWY9XCJzd2F0Y2hlc1wiPjwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgOm9iaj1cImludGVyYWN0aW9uXCIgY2xhc3M9XCJwY3ItaW50ZXJhY3Rpb25cIiAke2hpZGRlbihPYmplY3Qua2V5cyhjb21wb25lbnRzLmludGVyYWN0aW9uKS5sZW5ndGgpfT5cclxuICAgICAgICAgICAgPGlucHV0IDpyZWY9XCJyZXN1bHRcIiBjbGFzcz1cInBjci1yZXN1bHRcIiB0eXBlPVwidGV4dFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uaW5wdXQpfSBhcmlhLWxhYmVsPVwiJHt0KCdhcmlhOmlucHV0JywgJ2NvbG9yIGlucHV0IGZpZWxkJyl9XCI+XHJcblxyXG4gICAgICAgICAgICA8aW5wdXQgOmFycj1cIm9wdGlvbnNcIiBjbGFzcz1cInBjci10eXBlXCIgZGF0YS10eXBlPVwiSEVYQVwiIHZhbHVlPVwiJHtsb2NrT3BhY2l0eSA/ICdIRVgnIDogJ0hFWEEnfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLmhleCl9PlxyXG4gICAgICAgICAgICA8aW5wdXQgOmFycj1cIm9wdGlvbnNcIiBjbGFzcz1cInBjci10eXBlXCIgZGF0YS10eXBlPVwiUkdCQVwiIHZhbHVlPVwiJHtsb2NrT3BhY2l0eSA/ICdSR0InIDogJ1JHQkEnfVwiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLnJnYmEpfT5cclxuICAgICAgICAgICAgPGlucHV0IDphcnI9XCJvcHRpb25zXCIgY2xhc3M9XCJwY3ItdHlwZVwiIGRhdGEtdHlwZT1cIkhTTEFcIiB2YWx1ZT1cIiR7bG9ja09wYWNpdHkgPyAnSFNMJyA6ICdIU0xBJ31cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5oc2xhKX0+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6YXJyPVwib3B0aW9uc1wiIGNsYXNzPVwicGNyLXR5cGVcIiBkYXRhLXR5cGU9XCJIU1ZBXCIgdmFsdWU9XCIke2xvY2tPcGFjaXR5ID8gJ0hTVicgOiAnSFNWQSd9XCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uaHN2YSl9PlxyXG4gICAgICAgICAgICA8aW5wdXQgOmFycj1cIm9wdGlvbnNcIiBjbGFzcz1cInBjci10eXBlXCIgZGF0YS10eXBlPVwiQ01ZS1wiIHZhbHVlPVwiQ01ZS1wiIHR5cGU9XCJidXR0b25cIiAke2hpZGRlbihjb21wb25lbnRzLmludGVyYWN0aW9uLmNteWspfT5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dCA6cmVmPVwic2F2ZVwiIGNsYXNzPVwicGNyLXNhdmVcIiB2YWx1ZT1cIiR7dCgnYnRuOnNhdmUnKX1cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5zYXZlKX0gYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpidG46c2F2ZScpfVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgOnJlZj1cImNhbmNlbFwiIGNsYXNzPVwicGNyLWNhbmNlbFwiIHZhbHVlPVwiJHt0KCdidG46Y2FuY2VsJyl9XCIgdHlwZT1cImJ1dHRvblwiICR7aGlkZGVuKGNvbXBvbmVudHMuaW50ZXJhY3Rpb24uY2FuY2VsKX0gYXJpYS1sYWJlbD1cIiR7dCgnYXJpYTpidG46Y2FuY2VsJyl9XCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCA6cmVmPVwiY2xlYXJcIiBjbGFzcz1cInBjci1jbGVhclwiIHZhbHVlPVwiJHt0KCdidG46Y2xlYXInKX1cIiB0eXBlPVwiYnV0dG9uXCIgJHtoaWRkZW4oY29tcG9uZW50cy5pbnRlcmFjdGlvbi5jbGVhcil9IGFyaWEtbGFiZWw9XCIke3QoJ2FyaWE6YnRuOmNsZWFyJyl9XCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICBgKTtcclxuXHJcbiAgICBjb25zdCBpbnQgPSByb290LmludGVyYWN0aW9uO1xyXG5cclxuICAgIC8vIFNlbGVjdCBvcHRpb24gd2hpY2ggaXMgbm90IGhpZGRlblxyXG4gICAgaW50Lm9wdGlvbnMuZmluZChvID0+ICFvLmhpZGRlbiAmJiAhby5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKSk7XHJcblxyXG4gICAgLy8gQXBwZW5kIG1ldGhvZCB0byBmaW5kIGN1cnJlbnRseSBhY3RpdmUgb3B0aW9uXHJcbiAgICBpbnQudHlwZSA9ICgpID0+IGludC5vcHRpb25zLmZpbmQoZSA9PiBlLmNsYXNzTGlzdC5jb250YWlucygnYWN0aXZlJykpO1xyXG4gICAgcmV0dXJuIHJvb3Q7XHJcbn07XHJcbiIsICJ0eXBlIERpcmVjdGlvbiA9ICd0b3AnIHwgJ2xlZnQnIHwgJ2JvdHRvbScgfCAncmlnaHQnO1xuXG5leHBvcnQgdHlwZSBWYXJpYW50RmxpcE9yZGVyID0ge1xuICAgIHN0YXJ0OiBzdHJpbmc7XG4gICAgbWlkZGxlOiBzdHJpbmc7XG4gICAgZW5kOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvbkZsaXBPcmRlciA9IHtcbiAgICB0b3A6IHN0cmluZztcbiAgICByaWdodDogc3RyaW5nO1xuICAgIGJvdHRvbTogc3RyaW5nO1xuICAgIGxlZnQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE5hbm9Qb3BQb3NpdGlvbiA9XG4gICAgJ3RvcC1zdGFydCcgfCAndG9wLW1pZGRsZScgfCAndG9wLWVuZCcgfFxuICAgICdsZWZ0LXN0YXJ0JyB8ICdsZWZ0LW1pZGRsZScgfCAnbGVmdC1lbmQnIHxcbiAgICAncmlnaHQtc3RhcnQnIHwgJ3JpZ2h0LW1pZGRsZScgfCAncmlnaHQtZW5kJyB8XG4gICAgJ2JvdHRvbS1zdGFydCcgfCAnYm90dG9tLW1pZGRsZScgfCAnYm90dG9tLWVuZCcgfCBEaXJlY3Rpb247XG5cbmV4cG9ydCB0eXBlIE5hbm9Qb3BPcHRpb25zID0ge1xuICAgIGNvbnRhaW5lcjogRE9NUmVjdDtcbiAgICBwb3NpdGlvbjogTmFub1BvcFBvc2l0aW9uO1xuICAgIHZhcmlhbnRGbGlwT3JkZXI6IFZhcmlhbnRGbGlwT3JkZXI7XG4gICAgcG9zaXRpb25GbGlwT3JkZXI6IFBvc2l0aW9uRmxpcE9yZGVyO1xuICAgIG1hcmdpbjogbnVtYmVyO1xuICAgIHJlZmVyZW5jZT86IEhUTUxFbGVtZW50O1xuICAgIHBvcHBlcj86IEhUTUxFbGVtZW50O1xufTtcblxudHlwZSBBdmFpbGFibGVQb3NpdGlvbnMgPSB7XG4gICAgdDogbnVtYmVyO1xuICAgIGI6IG51bWJlcjtcbiAgICBsOiBudW1iZXI7XG4gICAgcjogbnVtYmVyO1xufTtcblxudHlwZSBBdmFpbGFibGVWYXJpYW50cyA9IHtcbiAgICB2czogbnVtYmVyO1xuICAgIHZtOiBudW1iZXI7XG4gICAgdmU6IG51bWJlcjtcbiAgICBoczogbnVtYmVyO1xuICAgIGhtOiBudW1iZXI7XG4gICAgaGU6IG51bWJlcjtcbn07XG5cbnR5cGUgUG9zaXRpb25QYWlycyA9IFtEaXJlY3Rpb24sIERpcmVjdGlvbl07XG5leHBvcnQgdHlwZSBQb3NpdGlvbk1hdGNoID0gJ3RzJyB8ICd0bScgfCAndGUnIHwgJ2JzJyB8ICdibScgfCAnYmUnIHwgJ2xzJyB8ICdsbScgfCAnbGUnIHwgJ3JzJyB8ICdybScgfCAncmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hbm9Qb3Age1xuICAgIHVwZGF0ZSh1cGRhdGVkT3B0aW9ucz86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+KTogUG9zaXRpb25NYXRjaCB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmFub1BvcENvbnN0cnVjdG9yIHtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSByZWZlcmVuY2UgUmVmZXJlbmNlIGVsZW1lbnRcbiAgICAgKiBAcGFyYW0gcG9wcGVyIEFjdHVhbCBwb3BwZXIgZWxlbWVudFxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbmFsIG9wdGlvbnNcbiAgICAgKi9cbiAgICAocmVmZXJlbmNlOiBIVE1MRWxlbWVudCwgcG9wcGVyOiBIVE1MRWxlbWVudCwgb3B0aW9ucz86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+KTogTmFub1BvcDtcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBvcHRpb25zIFBhcnRpYWwgb3B0aW9ucyB3aGljaCBnZXQgbWVyZ2VkIHdpdGggdGhlIGN1cnJlbnQgb25lXG4gICAgICovXG4gICAgKG9wdGlvbnM/OiBQYXJ0aWFsPE5hbm9Qb3BPcHRpb25zPik6IE5hbm9Qb3A7XG59XG5cbi8vIEV4cG9ydCBjdXJyZW50IHZlcnNpb25cbmV4cG9ydCBjb25zdCB2ZXJzaW9uID0gVkVSU0lPTjtcblxuLy8gRXhwb3J0IGRlZmF1bHRcbmV4cG9ydCBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICB2YXJpYW50RmxpcE9yZGVyOiB7c3RhcnQ6ICdzbWUnLCBtaWRkbGU6ICdtc2UnLCBlbmQ6ICdlbXMnfSxcbiAgICBwb3NpdGlvbkZsaXBPcmRlcjoge3RvcDogJ3RicmwnLCByaWdodDogJ3JsdGInLCBib3R0b206ICdidHJsJywgbGVmdDogJ2xyYnQnfSxcbiAgICBwb3NpdGlvbjogJ2JvdHRvbScsXG4gICAgbWFyZ2luOiA4XG59O1xuXG4vKipcbiAqIFJlcG9zaXRpb25zIGFuIGVsZW1lbnQgb25jZSB1c2luZyB0aGUgcHJvdmlkZWQgb3B0aW9ucyBhbmQgZWxlbWVudHMuXG4gKiBAcGFyYW0gcmVmZXJlbmNlIFJlZmVyZW5jZSBlbGVtZW50XG4gKiBAcGFyYW0gcG9wcGVyIFBvcHBlciBlbGVtZW50XG4gKiBAcGFyYW0gb3B0IE9wdGlvbmFsLCBhZGRpdGlvbmFsIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlcG9zaXRpb24gPSAoXG4gICAgcmVmZXJlbmNlOiBIVE1MRWxlbWVudCxcbiAgICBwb3BwZXI6IEhUTUxFbGVtZW50LFxuICAgIG9wdD86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+XG4pOiBQb3NpdGlvbk1hdGNoIHwgbnVsbCA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgICBjb250YWluZXIsXG4gICAgICAgIG1hcmdpbixcbiAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIHZhcmlhbnRGbGlwT3JkZXIsXG4gICAgICAgIHBvc2l0aW9uRmxpcE9yZGVyXG4gICAgfSA9IHtcbiAgICAgICAgY29udGFpbmVyOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICAgIC4uLmRlZmF1bHRzLFxuICAgICAgICAuLi5vcHRcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUmVzZXQgcG9zaXRpb24gdG8gcmVzb2x2ZSB2aWV3cG9ydFxuICAgICAqIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvcG9zaXRpb24jZml4ZWRcbiAgICAgKi9cbiAgICBjb25zdCB7bGVmdDogb3JpZ2luYWxMZWZ0LCB0b3A6IG9yaWdpbmFsVG9wfSA9IHBvcHBlci5zdHlsZTtcbiAgICBwb3BwZXIuc3R5bGUubGVmdCA9ICcwJztcbiAgICBwb3BwZXIuc3R5bGUudG9wID0gJzAnO1xuXG4gICAgY29uc3QgcmVmQm94ID0gcmVmZXJlbmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHBvcEJveCA9IHBvcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIC8qKlxuICAgICAqIEhvbGRzIGNvb3JkaW5hdGVzIG9mIHRvcCwgbGVmdCwgYm90dG9tIGFuZCByaWdodCBhbGlnbm1lbnRcbiAgICAgKi9cbiAgICBjb25zdCBwb3NpdGlvblN0b3JlOiBBdmFpbGFibGVQb3NpdGlvbnMgPSB7XG4gICAgICAgIHQ6IHJlZkJveC50b3AgLSBwb3BCb3guaGVpZ2h0IC0gbWFyZ2luLFxuICAgICAgICBiOiByZWZCb3guYm90dG9tICsgbWFyZ2luLFxuICAgICAgICByOiByZWZCb3gucmlnaHQgKyBtYXJnaW4sXG4gICAgICAgIGw6IHJlZkJveC5sZWZ0IC0gcG9wQm94LndpZHRoIC0gbWFyZ2luXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEhvbGRzIGNvcnJlc3BvbmRpbmcgdmFyaWFudHMgKHN0YXJ0LCBtaWRkbGUsIGVuZCkuXG4gICAgICogVGhlIHZhbHVlcyBkZXBlbmQgb24gaG9yaXpvbnRhbCAvIHZlcnRpY2FsIG9yaWVudGF0aW9uXG4gICAgICovXG4gICAgY29uc3QgdmFyaWFudFN0b3JlOiBBdmFpbGFibGVWYXJpYW50cyA9IHtcbiAgICAgICAgdnM6IHJlZkJveC5sZWZ0LFxuICAgICAgICB2bTogcmVmQm94LmxlZnQgKyByZWZCb3gud2lkdGggLyAyICsgLXBvcEJveC53aWR0aCAvIDIsXG4gICAgICAgIHZlOiByZWZCb3gubGVmdCArIHJlZkJveC53aWR0aCAtIHBvcEJveC53aWR0aCxcbiAgICAgICAgaHM6IHJlZkJveC50b3AsXG4gICAgICAgIGhtOiByZWZCb3guYm90dG9tIC0gcmVmQm94LmhlaWdodCAvIDIgLSBwb3BCb3guaGVpZ2h0IC8gMixcbiAgICAgICAgaGU6IHJlZkJveC5ib3R0b20gLSBwb3BCb3guaGVpZ2h0XG4gICAgfTtcblxuICAgIC8vIEV4dHJhY3QgcG9zaXRpb24gYW5kIHZhcmlhbnRcbiAgICAvLyBUb3Atc3RhcnQgLT4gdG9wIGlzIFwicG9zaXRpb25cIiBhbmQgXCJzdGFydFwiIGlzIHRoZSB2YXJpYW50XG4gICAgY29uc3QgW3Bvc0tleSwgdmFyS2V5ID0gJ21pZGRsZSddID0gcG9zaXRpb24uc3BsaXQoJy0nKTtcbiAgICBjb25zdCBwb3NpdGlvbnMgPSBwb3NpdGlvbkZsaXBPcmRlcltwb3NLZXkgYXMga2V5b2YgUG9zaXRpb25GbGlwT3JkZXJdO1xuICAgIGNvbnN0IHZhcmlhbnRzID0gdmFyaWFudEZsaXBPcmRlclt2YXJLZXkgYXMga2V5b2YgVmFyaWFudEZsaXBPcmRlcl07XG5cbiAgICAvLyBUcnkgb3V0IGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMsIHN0YXJ0aW5nIHdpdGggdGhlIHByZWZlcnJlZCBvbmUuXG4gICAgY29uc3Qge3RvcCwgbGVmdCwgYm90dG9tLCByaWdodH0gPSBjb250YWluZXI7XG5cbiAgICBmb3IgKGNvbnN0IHAgb2YgcG9zaXRpb25zKSB7XG4gICAgICAgIGNvbnN0IHZlcnRpY2FsID0gKHAgPT09ICd0JyB8fCBwID09PSAnYicpO1xuXG4gICAgICAgIC8vIFRoZSBwb3NpdGlvbi12YWx1ZVxuICAgICAgICBjb25zdCBwb3NpdGlvblZhbCA9IHBvc2l0aW9uU3RvcmVbcCBhcyBrZXlvZiBBdmFpbGFibGVQb3NpdGlvbnNdO1xuXG4gICAgICAgIC8vIFdoaWNoIHByb3BlcnR5IGhhcyB0byBiZSBjaGFuZ2VzLlxuICAgICAgICBjb25zdCBbcG9zaXRpb25LZXksIHZhcmlhbnRLZXldID0gKHZlcnRpY2FsID8gWyd0b3AnLCAnbGVmdCddIDogWydsZWZ0JywgJ3RvcCddKSBhcyBQb3NpdGlvblBhaXJzO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBib3ggcmVmZXJzIHRvIHRoZSBzaXplIG9mIHRoZSBwb3BwZXIgZWxlbWVudC4gRGVwZW5kaW5nIG9uIHRoZSBvcmllbnRhdGlvbiB0aGlzIGlzIHdpZHRoIG9yIGhlaWdodC5cbiAgICAgICAgICogVGhlIGxpbWl0IGlzIHRoZSBjb3JyZXNwb25kaW5nLCBtYXhpbXVtIHZhbHVlIGZvciB0aGlzIHBvc2l0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgW3Bvc2l0aW9uU2l6ZSwgdmFyaWFudFNpemVdID0gdmVydGljYWwgPyBbcG9wQm94LmhlaWdodCwgcG9wQm94LndpZHRoXSA6IFtwb3BCb3gud2lkdGgsIHBvcEJveC5oZWlnaHRdO1xuICAgICAgICBjb25zdCBbcG9zaXRpb25NYXhpbXVtLCB2YXJpYW50TWF4aW11bV0gPSB2ZXJ0aWNhbCA/IFtib3R0b20sIHJpZ2h0XSA6IFtyaWdodCwgYm90dG9tXTtcbiAgICAgICAgY29uc3QgW3Bvc2l0aW9uTWluaW11bSwgdmFyaWFudE1pbmltdW1dID0gdmVydGljYWwgPyBbdG9wLCBsZWZ0XSA6IFtsZWZ0LCB0b3BdO1xuXG4gICAgICAgIC8vIFNraXAgcHJlLWNsaXBwZWQgdmFsdWVzXG4gICAgICAgIGlmIChwb3NpdGlvblZhbCA8IHBvc2l0aW9uTWluaW11bSB8fCAocG9zaXRpb25WYWwgKyBwb3NpdGlvblNpemUpID4gcG9zaXRpb25NYXhpbXVtKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdiBvZiB2YXJpYW50cykge1xuXG4gICAgICAgICAgICAvLyBUaGUgcG9zaXRpb24tdmFsdWUsIHRoZSByZWxhdGVkIHNpemUgdmFsdWUgb2YgdGhlIHBvcHBlciBhbmQgdGhlIGxpbWl0XG4gICAgICAgICAgICBjb25zdCB2YXJpYW50VmFsID0gdmFyaWFudFN0b3JlWygodmVydGljYWwgPyAndicgOiAnaCcpICsgdikgYXMga2V5b2YgQXZhaWxhYmxlVmFyaWFudHNdO1xuXG4gICAgICAgICAgICBpZiAodmFyaWFudFZhbCA8IHZhcmlhbnRNaW5pbXVtIHx8ICh2YXJpYW50VmFsICsgdmFyaWFudFNpemUpID4gdmFyaWFudE1heGltdW0pIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQXBwbHkgc3R5bGVzIGFuZCBub3JtYWxpemUgdmlld3BvcnRcbiAgICAgICAgICAgIHBvcHBlci5zdHlsZVt2YXJpYW50S2V5XSA9IGAke3ZhcmlhbnRWYWwgLSBwb3BCb3hbdmFyaWFudEtleV19cHhgO1xuICAgICAgICAgICAgcG9wcGVyLnN0eWxlW3Bvc2l0aW9uS2V5XSA9IGAke3Bvc2l0aW9uVmFsIC0gcG9wQm94W3Bvc2l0aW9uS2V5XX1weGA7XG4gICAgICAgICAgICByZXR1cm4gKHAgKyB2KSBhcyBQb3NpdGlvbk1hdGNoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV2ZXJ0IHN0eWxlIHZhbHVlcyAod29uJ3Qgd29yayB3aXRoIHN0eWxlZC1lbGVtZW50cyBvciBzaW1pbGFyIHN5c3RlbXMpXG4gICAgLy8gXCJGaXhcIiBmb3IgaHR0cHM6Ly9naXRodWIuY29tL1NpbW9ud2VwL25hbm9wb3AvaXNzdWVzLzdcbiAgICBwb3BwZXIuc3R5bGUubGVmdCA9IG9yaWdpbmFsTGVmdDtcbiAgICBwb3BwZXIuc3R5bGUudG9wID0gb3JpZ2luYWxUb3A7XG5cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0YXRlZnVsIHBvcHBlci5cbiAqIFlvdSBjYW4gZWl0aGVyLi4uXG4gKiAuLi4gcGFzcyBhbiBvcHRpb25zIG9iamVjdDogY3JlYXRlUG9wcGVyKDxvcHRpb25zPilcbiAqIC4uLiBwYXNzIGJvdGggdGhlIHJlZmVyZW5jZSBhbmQgcG9wcGVyOiBjcmVhdGUoPHJlZj4sIDxlbD4sIDw/b3B0aW9ucz4pXG4gKiAuLi4gcGFzcyBub3RoaW5nLCBpbiB0aGlzIGNhc2UgeW91J2xsIGhhdmUgdG8gc2V0IGF0IGxlYXN0IGJvdGggYSByZWZlcmVuY2UgYW5kIGEgcG9wcGVyIGluIHVwZGF0ZS5cbiAqXG4gKiBAcGFyYW0gcmVmZXJlbmNlIHwgb3B0aW9ucyBSZWZlcmVuY2UgZWxlbWVudCBvciBvcHRpb25zXG4gKiBAcGFyYW0gcG9wcGVyIFBvcHBlciBlbGVtZW50XG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBhZGRpdGlvbmFsIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVBvcHBlcjogTmFub1BvcENvbnN0cnVjdG9yID0gKFxuICAgIHJlZmVyZW5jZT86IEhUTUxFbGVtZW50IHwgUGFydGlhbDxOYW5vUG9wT3B0aW9ucz4sXG4gICAgcG9wcGVyPzogSFRNTEVsZW1lbnQsXG4gICAgb3B0aW9ucz86IFBhcnRpYWw8TmFub1BvcE9wdGlvbnM+XG4pOiBOYW5vUG9wID0+IHtcblxuICAgIC8vIFJlc29sdmUgb3B0aW9uc1xuICAgIGNvbnN0IGJhc2VPcHRpb25zOiBQYXJ0aWFsPE5hbm9Qb3BPcHRpb25zPiA9IHR5cGVvZiByZWZlcmVuY2UgPT09ICdvYmplY3QnICYmICEocmVmZXJlbmNlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpID9cbiAgICAgICAgcmVmZXJlbmNlIDoge3JlZmVyZW5jZSwgcG9wcGVyLCAuLi5vcHRpb25zfTtcblxuICAgIHJldHVybiB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlcG9zaXRpb25zIHRoZSBjdXJyZW50IHBvcHBlci5cbiAgICAgICAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9ucyB3aGljaCBnZXQgbWVyZ2VkIHdpdGggdGhlIGN1cnJlbnQgb25lcy5cbiAgICAgICAgICovXG4gICAgICAgIHVwZGF0ZShvcHRpb25zOiBQYXJ0aWFsPE5hbm9Qb3BPcHRpb25zPiA9IGJhc2VPcHRpb25zKTogUG9zaXRpb25NYXRjaCB8IG51bGwge1xuICAgICAgICAgICAgY29uc3Qge3JlZmVyZW5jZSwgcG9wcGVyfSA9IE9iamVjdC5hc3NpZ24oYmFzZU9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBpZiAoIXBvcHBlciB8fCAhcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQb3BwZXItIG9yIHJlZmVyZW5jZS1lbGVtZW50IG1pc3NpbmcuJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXBvc2l0aW9uKHJlZmVyZW5jZSwgcG9wcGVyLCBiYXNlT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcbiIsICJpbXBvcnQgKiBhcyBfIGZyb20gJy4vdXRpbHMvdXRpbHMnO1xuaW1wb3J0IHtwYXJzZVRvSFNWQX0gZnJvbSAnLi91dGlscy9jb2xvcic7XG5pbXBvcnQge0hTVmFDb2xvcn0gZnJvbSAnLi91dGlscy9oc3ZhY29sb3InO1xuaW1wb3J0IE1vdmVhYmxlIGZyb20gJy4vbGlicy9tb3ZlYWJsZSc7XG5pbXBvcnQgU2VsZWN0YWJsZSBmcm9tICcuL2xpYnMvc2VsZWN0YWJsZSc7XG5pbXBvcnQgYnVpbGRQaWNrciBmcm9tICcuL3RlbXBsYXRlJztcbmltcG9ydCB7Y3JlYXRlUG9wcGVyfSBmcm9tICduYW5vcG9wJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGlja3Ige1xuXG4gICAgLy8gRXhwb3NlIHBpY2tyIHV0aWxzXG4gICAgc3RhdGljIHV0aWxzID0gXztcblxuICAgIC8vIEFzc2lnbiB2ZXJzaW9uIGFuZCBleHBvcnRcbiAgICBzdGF0aWMgdmVyc2lvbiA9IFZFUlNJT047XG5cbiAgICAvLyBEZWZhdWx0IHN0cmluZ3NcbiAgICBzdGF0aWMgSTE4Tl9ERUZBVUxUUyA9IHtcblxuICAgICAgICAvLyBTdHJpbmdzIHZpc2libGUgaW4gdGhlIFVJXG4gICAgICAgICd1aTpkaWFsb2cnOiAnY29sb3IgcGlja2VyIGRpYWxvZycsXG4gICAgICAgICdidG46dG9nZ2xlJzogJ3RvZ2dsZSBjb2xvciBwaWNrZXIgZGlhbG9nJyxcbiAgICAgICAgJ2J0bjpzd2F0Y2gnOiAnY29sb3Igc3dhdGNoJyxcbiAgICAgICAgJ2J0bjpsYXN0LWNvbG9yJzogJ3VzZSBwcmV2aW91cyBjb2xvcicsXG4gICAgICAgICdidG46c2F2ZSc6ICdTYXZlJyxcbiAgICAgICAgJ2J0bjpjYW5jZWwnOiAnQ2FuY2VsJyxcbiAgICAgICAgJ2J0bjpjbGVhcic6ICdDbGVhcicsXG5cbiAgICAgICAgLy8gU3RyaW5ncyB1c2VkIGZvciBhcmlhLWxhYmVsc1xuICAgICAgICAnYXJpYTpidG46c2F2ZSc6ICdzYXZlIGFuZCBjbG9zZScsXG4gICAgICAgICdhcmlhOmJ0bjpjYW5jZWwnOiAnY2FuY2VsIGFuZCBjbG9zZScsXG4gICAgICAgICdhcmlhOmJ0bjpjbGVhcic6ICdjbGVhciBhbmQgY2xvc2UnLFxuICAgICAgICAnYXJpYTppbnB1dCc6ICdjb2xvciBpbnB1dCBmaWVsZCcsXG4gICAgICAgICdhcmlhOnBhbGV0dGUnOiAnY29sb3Igc2VsZWN0aW9uIGFyZWEnLFxuICAgICAgICAnYXJpYTpodWUnOiAnaHVlIHNlbGVjdGlvbiBzbGlkZXInLFxuICAgICAgICAnYXJpYTpvcGFjaXR5JzogJ3NlbGVjdGlvbiBzbGlkZXInXG4gICAgfTtcblxuICAgIC8vIERlZmF1bHQgb3B0aW9uc1xuICAgIHN0YXRpYyBERUZBVUxUX09QVElPTlMgPSB7XG4gICAgICAgIGFwcENsYXNzOiBudWxsLFxuICAgICAgICB0aGVtZTogJ2NsYXNzaWMnLFxuICAgICAgICB1c2VBc0J1dHRvbjogZmFsc2UsXG4gICAgICAgIHBhZGRpbmc6IDgsXG4gICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgY29tcGFyaXNvbjogdHJ1ZSxcbiAgICAgICAgY2xvc2VPblNjcm9sbDogZmFsc2UsXG4gICAgICAgIG91dHB1dFByZWNpc2lvbjogMCxcbiAgICAgICAgbG9ja09wYWNpdHk6IGZhbHNlLFxuICAgICAgICBhdXRvUmVwb3NpdGlvbjogdHJ1ZSxcbiAgICAgICAgY29udGFpbmVyOiAnYm9keScsXG5cbiAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgaW50ZXJhY3Rpb246IHt9XG4gICAgICAgIH0sXG5cbiAgICAgICAgaTE4bjoge30sXG4gICAgICAgIHN3YXRjaGVzOiBudWxsLFxuICAgICAgICBpbmxpbmU6IGZhbHNlLFxuICAgICAgICBzbGlkZXJzOiBudWxsLFxuXG4gICAgICAgIGRlZmF1bHQ6ICcjNDI0NDVhJyxcbiAgICAgICAgZGVmYXVsdFJlcHJlc2VudGF0aW9uOiBudWxsLFxuICAgICAgICBwb3NpdGlvbjogJ2JvdHRvbS1taWRkbGUnLFxuICAgICAgICBhZGp1c3RhYmxlTnVtYmVyczogdHJ1ZSxcbiAgICAgICAgc2hvd0Fsd2F5czogZmFsc2UsXG5cbiAgICAgICAgY2xvc2VXaXRoS2V5OiAnRXNjYXBlJ1xuICAgIH07XG5cbiAgICAvLyBXaWxsIGJlIHVzZWQgdG8gcHJldmVudCBzcGVjaWZpYyBhY3Rpb25zIGR1cmluZyBpbml0aWxpemF0aW9uXG4gICAgX2luaXRpYWxpemluZ0FjdGl2ZSA9IHRydWU7XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudCBjb2xvciB2YWx1ZSBzaG91bGQgYmUgcmVjYWxjdWxhdGVkXG4gICAgX3JlY2FsYyA9IHRydWU7XG5cbiAgICAvLyBQb3NpdGlvbmluZyBlbmdpbmUgYW5kIERPTS1UcmVlXG4gICAgX25hbm9wb3AgPSBudWxsO1xuICAgIF9yb290ID0gbnVsbDtcblxuICAgIC8vIEN1cnJlbnQgYW5kIGxhc3QgY29sb3IgZm9yIGNvbXBhcmlzb25cbiAgICBfY29sb3IgPSBIU1ZhQ29sb3IoKTtcbiAgICBfbGFzdENvbG9yID0gSFNWYUNvbG9yKCk7XG4gICAgX3N3YXRjaENvbG9ycyA9IFtdO1xuXG4gICAgLy8gQW5pbWF0aW9uIGZyYW1lIHVzZWQgZm9yIHNldHVwLlxuICAgIC8vIFdpbGwgYmUgY2FuY2VsbGVkIGluIGNhc2Ugb2YgZGVzdHJ1Y3Rpb24uXG4gICAgX3NldHVwQW5pbWF0aW9uRnJhbWUgPSBudWxsO1xuXG4gICAgLy8gRXZlbmxpc3RlbmVyIG5hbWU6IFtjYWxsYmFja3NdXG4gICAgX2V2ZW50TGlzdGVuZXIgPSB7XG4gICAgICAgIGluaXQ6IFtdLFxuICAgICAgICBzYXZlOiBbXSxcbiAgICAgICAgaGlkZTogW10sXG4gICAgICAgIHNob3c6IFtdLFxuICAgICAgICBjbGVhcjogW10sXG4gICAgICAgIGNoYW5nZTogW10sXG4gICAgICAgIGNoYW5nZXN0b3A6IFtdLFxuICAgICAgICBjYW5jZWw6IFtdLFxuICAgICAgICBzd2F0Y2hzZWxlY3Q6IFtdXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdCkge1xuXG4gICAgICAgIC8vIEFzc2lnbiBkZWZhdWx0IHZhbHVlc1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHQgPSBPYmplY3QuYXNzaWduKHsuLi5QaWNrci5ERUZBVUxUX09QVElPTlN9LCBvcHQpO1xuXG4gICAgICAgIGNvbnN0IHtzd2F0Y2hlcywgY29tcG9uZW50cywgdGhlbWUsIHNsaWRlcnMsIGxvY2tPcGFjaXR5LCBwYWRkaW5nfSA9IG9wdDtcblxuICAgICAgICBpZiAoWyduYW5vJywgJ21vbm9saXRoJ10uaW5jbHVkZXModGhlbWUpICYmICFzbGlkZXJzKSB7XG4gICAgICAgICAgICBvcHQuc2xpZGVycyA9ICdoJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGludGVyYWN0aW9uIHNlY3Rpb25cbiAgICAgICAgaWYgKCFjb21wb25lbnRzLmludGVyYWN0aW9uKSB7XG4gICAgICAgICAgICBjb21wb25lbnRzLmludGVyYWN0aW9uID0ge307XG4gICAgICAgIH1cblxuICAgICAgICAvLyBPdmVyd3JpdGUgcGFsZXR0ZSBpZiBwcmV2aWV3LCBvcGFjaXR5IG9yIGh1ZSBhcmUgdHJ1ZVxuICAgICAgICBjb25zdCB7cHJldmlldywgb3BhY2l0eSwgaHVlLCBwYWxldHRlfSA9IGNvbXBvbmVudHM7XG4gICAgICAgIGNvbXBvbmVudHMub3BhY2l0eSA9ICghbG9ja09wYWNpdHkgJiYgb3BhY2l0eSk7XG4gICAgICAgIGNvbXBvbmVudHMucGFsZXR0ZSA9IHBhbGV0dGUgfHwgcHJldmlldyB8fCBvcGFjaXR5IHx8IGh1ZTtcblxuICAgICAgICAvLyBJbml0aWFsaXplIHBpY2tlclxuICAgICAgICB0aGlzLl9wcmVCdWlsZCgpO1xuICAgICAgICB0aGlzLl9idWlsZENvbXBvbmVudHMoKTtcbiAgICAgICAgdGhpcy5fYmluZEV2ZW50cygpO1xuICAgICAgICB0aGlzLl9maW5hbEJ1aWxkKCk7XG5cbiAgICAgICAgLy8gQXBwZW5kIHByZS1kZWZpbmVkIHN3YXRjaCBjb2xvcnNcbiAgICAgICAgaWYgKHN3YXRjaGVzICYmIHN3YXRjaGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3dhdGNoZXMuZm9yRWFjaChjb2xvciA9PiB0aGlzLmFkZFN3YXRjaChjb2xvcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSBwb3NpdGlvbmluZyBlbmdpbmVcbiAgICAgICAgY29uc3Qge2J1dHRvbiwgYXBwfSA9IHRoaXMuX3Jvb3Q7XG4gICAgICAgIHRoaXMuX25hbm9wb3AgPSBjcmVhdGVQb3BwZXIoYnV0dG9uLCBhcHAsIHtcbiAgICAgICAgICAgIG1hcmdpbjogcGFkZGluZ1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBJbml0aWFsaXplIGFjY2Vzc2liaWxpdHlcbiAgICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgncm9sZScsICdidXR0b24nKTtcbiAgICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuX3QoJ2J0bjp0b2dnbGUnKSk7XG5cbiAgICAgICAgLy8gSW5pdGlsaXphdGlvbiBpcyBmaW5pc2gsIHBpY2tyIGlzIHZpc2libGUgYW5kIHJlYWR5IGZvciB1c2FnZVxuICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgdGhpcy5fc2V0dXBBbmltYXRpb25GcmFtZSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24gY2IoKSB7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFBlcmZvcm1hbmNlIGlzc3VlIGR1ZSB0byBoaWdoIGNhbGwtcmF0ZT9cbiAgICAgICAgICAgIGlmICghYXBwLm9mZnNldFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFwcGx5IGRlZmF1bHQgY29sb3JcbiAgICAgICAgICAgIHRoYXQuc2V0Q29sb3Iob3B0LmRlZmF1bHQpO1xuICAgICAgICAgICAgdGhhdC5fcmVQb3NpdGlvbmluZ1BpY2tlcigpO1xuXG4gICAgICAgICAgICAvLyBJbml0aWFsaXplIGNvbG9yIHJlcHJlc2VudGF0aW9uXG4gICAgICAgICAgICBpZiAob3B0LmRlZmF1bHRSZXByZXNlbnRhdGlvbikge1xuICAgICAgICAgICAgICAgIHRoYXQuX3JlcHJlc2VudGF0aW9uID0gb3B0LmRlZmF1bHRSZXByZXNlbnRhdGlvbjtcbiAgICAgICAgICAgICAgICB0aGF0LnNldENvbG9yUmVwcmVzZW50YXRpb24odGhhdC5fcmVwcmVzZW50YXRpb24pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTaG93IHBpY2tyIGlmIGxvY2tlZFxuICAgICAgICAgICAgaWYgKG9wdC5zaG93QWx3YXlzKSB7XG4gICAgICAgICAgICAgICAgdGhhdC5zaG93KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEluaXRpYWxpemF0aW9uIGlzIGRvbmUgLSBwaWNrciBpcyB1c2FibGUsIGZpcmUgaW5pdCBldmVudFxuICAgICAgICAgICAgdGhhdC5faW5pdGlhbGl6aW5nQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGF0Ll9lbWl0KCdpbml0Jyk7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgaW5zdGFuY2UgdmlhIG1ldGhvZFxuICAgIHN0YXRpYyBjcmVhdGUgPSBvcHRpb25zID0+IG5ldyBQaWNrcihvcHRpb25zKTtcblxuICAgIC8vIERvZXMgb25seSB0aGUgYWJzb2x1dGx5IGJhc2ljIHRoaW5nIHRvIGluaXRpYWxpemUgdGhlIGNvbXBvbmVudHNcbiAgICBfcHJlQnVpbGQoKSB7XG4gICAgICAgIGNvbnN0IHtvcHRpb25zfSA9IHRoaXM7XG5cbiAgICAgICAgLy8gUmVzb2x2ZSBlbGVtZW50c1xuICAgICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgWydlbCcsICdjb250YWluZXInXSkge1xuICAgICAgICAgICAgb3B0aW9uc1t0eXBlXSA9IF8ucmVzb2x2ZUVsZW1lbnQob3B0aW9uc1t0eXBlXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgZWxlbWVudCBhbmQgYXBwZW5kIGl0IHRvIGJvZHkgdG9cbiAgICAgICAgLy8gUHJldmVudCBpbml0aWFsaXphdGlvbiBlcnJvcnNcbiAgICAgICAgdGhpcy5fcm9vdCA9IGJ1aWxkUGlja3IodGhpcyk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgYSBjdXN0b20gYnV0dG9uIGlzIHVzZWRcbiAgICAgICAgaWYgKG9wdGlvbnMudXNlQXNCdXR0b24pIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvb3QuYnV0dG9uID0gb3B0aW9ucy5lbDsgLy8gUmVwbGFjZSBidXR0b24gd2l0aCBjdXN0b21pemVkIGJ1dHRvblxuICAgICAgICB9XG5cbiAgICAgICAgb3B0aW9ucy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5fcm9vdC5yb290KTtcbiAgICB9XG5cbiAgICBfZmluYWxCdWlsZCgpIHtcbiAgICAgICAgY29uc3Qgb3B0ID0gdGhpcy5vcHRpb25zO1xuICAgICAgICBjb25zdCByb290ID0gdGhpcy5fcm9vdDtcblxuICAgICAgICAvLyBSZW1vdmUgZnJvbSBib2R5XG4gICAgICAgIG9wdC5jb250YWluZXIucmVtb3ZlQ2hpbGQocm9vdC5yb290KTtcblxuICAgICAgICBpZiAob3B0LmlubGluZSkge1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gb3B0LmVsLnBhcmVudEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmIChvcHQuZWwubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHJvb3QuYXBwLCBvcHQuZWwubmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQocm9vdC5hcHApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3B0LmNvbnRhaW5lci5hcHBlbmRDaGlsZChyb290LmFwcCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEb24ndCByZXBsYWNlIHRoZSB0aGUgZWxlbWVudCBpZiBhIGN1c3RvbSBidXR0b24gaXMgdXNlZFxuICAgICAgICBpZiAoIW9wdC51c2VBc0J1dHRvbikge1xuXG4gICAgICAgICAgICAvLyBSZXBsYWNlIGVsZW1lbnQgd2l0aCBhY3R1YWwgY29sb3ItcGlja2VyXG4gICAgICAgICAgICBvcHQuZWwucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQocm9vdC5yb290LCBvcHQuZWwpO1xuICAgICAgICB9IGVsc2UgaWYgKG9wdC5pbmxpbmUpIHtcbiAgICAgICAgICAgIG9wdC5lbC5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENoZWNrIGlmIGl0IHNob3VsZCBiZSBpbW1lZGlhdGx5IGRpc2FibGVkXG4gICAgICAgIGlmIChvcHQuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgY29sb3IgY29tcGFyaXNvbiBpcyBkaXNhYmxlZCwgaWYgeWVzIC0gcmVtb3ZlIHRyYW5zaXRpb25zIHNvIGV2ZXJ5dGhpbmcga2VlcHMgc21vb3RobHlcbiAgICAgICAgaWYgKCFvcHQuY29tcGFyaXNvbikge1xuICAgICAgICAgICAgcm9vdC5idXR0b24uc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcblxuICAgICAgICAgICAgaWYgKCFvcHQudXNlQXNCdXR0b24pIHtcbiAgICAgICAgICAgICAgICByb290LnByZXZpZXcubGFzdENvbG9yLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICB9XG5cbiAgICBfYnVpbGRDb21wb25lbnRzKCkge1xuXG4gICAgICAgIC8vIEluc3RhbmNlIHJlZmVyZW5jZVxuICAgICAgICBjb25zdCBpbnN0ID0gdGhpcztcbiAgICAgICAgY29uc3QgY3MgPSB0aGlzLm9wdGlvbnMuY29tcG9uZW50cztcbiAgICAgICAgY29uc3Qgc2xpZGVycyA9IChpbnN0Lm9wdGlvbnMuc2xpZGVycyB8fCAndicpLnJlcGVhdCgyKTtcbiAgICAgICAgY29uc3QgW3NvLCBzaF0gPSBzbGlkZXJzLm1hdGNoKC9eW3ZoXSskL2cpID8gc2xpZGVycyA6IFtdO1xuXG4gICAgICAgIC8vIFJlLWFzc2lnbiBpZiBudWxsXG4gICAgICAgIGNvbnN0IGdldENvbG9yID0gKCkgPT5cbiAgICAgICAgICAgIHRoaXMuX2NvbG9yIHx8ICh0aGlzLl9jb2xvciA9IHRoaXMuX2xhc3RDb2xvci5jbG9uZSgpKTtcblxuICAgICAgICBjb25zdCBjb21wb25lbnRzID0ge1xuXG4gICAgICAgICAgICBwYWxldHRlOiBNb3ZlYWJsZSh7XG4gICAgICAgICAgICAgICAgZWxlbWVudDogaW5zdC5fcm9vdC5wYWxldHRlLnBpY2tlcixcbiAgICAgICAgICAgICAgICB3cmFwcGVyOiBpbnN0Ll9yb290LnBhbGV0dGUucGFsZXR0ZSxcblxuICAgICAgICAgICAgICAgIG9uc3RvcDogKCkgPT4gaW5zdC5fZW1pdCgnY2hhbmdlc3RvcCcsICdzbGlkZXInLCBpbnN0KSxcbiAgICAgICAgICAgICAgICBvbmNoYW5nZSh4LCB5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3MucGFsZXR0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBnZXRDb2xvcigpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7X3Jvb3QsIG9wdGlvbnN9ID0gaW5zdDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge2xhc3RDb2xvciwgY3VycmVudENvbG9yfSA9IF9yb290LnByZXZpZXc7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBpbnB1dCBmaWVsZCBvbmx5IGlmIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBub3QgdHlwaW5nXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnN0Ll9yZWNhbGMpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHNhdHVyYXRpb24gYmFzZWQgb24gdGhlIHBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvci5zID0geCAqIDEwMDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IudiA9IDEwMCAtIHkgKiAxMDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgZmFsbGluZyB1bmRlciB6ZXJvXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvci52IDwgMCA/IGNvbG9yLnYgPSAwIDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QuX3VwZGF0ZU91dHB1dCgnc2xpZGVyJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBTZXQgcGlja2VyIGFuZCBncmFkaWVudCBjb2xvclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjc3NSR0JhU3RyaW5nID0gY29sb3IudG9SR0JBKCkudG9TdHJpbmcoMCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gY3NzUkdCYVN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy53cmFwcGVyLnN0eWxlLmJhY2tncm91bmQgPSBgXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsIDAsIDAsICR7Y29sb3IuYX0pLCB0cmFuc3BhcmVudCksXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQodG8gbGVmdCwgaHNsYSgke2NvbG9yLmh9LCAxMDAlLCA1MCUsICR7Y29sb3IuYX0pLCByZ2JhKDI1NSwgMjU1LCAyNTUsICR7Y29sb3IuYX0pKVxuICAgICAgICAgICAgICAgICAgICBgO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGNvbG9yIGlzIGxvY2tlZFxuICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuY29tcGFyaXNvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3Jvb3QuYnV0dG9uLnN0eWxlLnNldFByb3BlcnR5KCctLXBjci1jb2xvcicsIGNzc1JHQmFTdHJpbmcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBjaGFuZ2VzIHRoZSBjb2xvciwgcmVtb3ZlIHRoZSBjbGVhcmVkIGljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIF9yb290LmJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCdjbGVhcicpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLnVzZUFzQnV0dG9uICYmICFpbnN0Ll9sYXN0Q29sb3IpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwbHkgY29sb3IgdG8gYm90aCB0aGUgbGFzdCBhbmQgY3VycmVudCBjb2xvciBzaW5jZSB0aGUgY3VycmVudCBzdGF0ZSBpcyBjbGVhcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0Q29sb3Iuc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGEgc3dhdGNoIHdoaWNoIGNvbG9yIG1hdGNoZXMgdGhlIGN1cnJlbnQgb25lXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhleGEgPSBjb2xvci50b0hFWEEoKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHtlbCwgY29sb3J9IG9mIGluc3QuX3N3YXRjaENvbG9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0W2hleGEgPT09IGNvbG9yLnRvSEVYQSgpLnRvU3RyaW5nKCkgPyAnYWRkJyA6ICdyZW1vdmUnXSgncGNyLWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hhbmdlIGN1cnJlbnQgY29sb3JcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbG9yLnN0eWxlLnNldFByb3BlcnR5KCctLXBjci1jb2xvcicsIGNzc1JHQmFTdHJpbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBodWU6IE1vdmVhYmxlKHtcbiAgICAgICAgICAgICAgICBsb2NrOiBzaCA9PT0gJ3YnID8gJ2gnIDogJ3YnLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGluc3QuX3Jvb3QuaHVlLnBpY2tlcixcbiAgICAgICAgICAgICAgICB3cmFwcGVyOiBpbnN0Ll9yb290Lmh1ZS5zbGlkZXIsXG5cbiAgICAgICAgICAgICAgICBvbnN0b3A6ICgpID0+IGluc3QuX2VtaXQoJ2NoYW5nZXN0b3AnLCAnc2xpZGVyJywgaW5zdCksXG4gICAgICAgICAgICAgICAgb25jaGFuZ2Uodikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNzLmh1ZSB8fCAhY3MucGFsZXR0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBnZXRDb2xvcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBodWVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3QuX3JlY2FsYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IuaCA9IHYgKiAzNjA7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgY29sb3JcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGBoc2woJHtjb2xvci5ofSwgMTAwJSwgNTAlKWA7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHMucGFsZXR0ZS50cmlnZ2VyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIG9wYWNpdHk6IE1vdmVhYmxlKHtcbiAgICAgICAgICAgICAgICBsb2NrOiBzbyA9PT0gJ3YnID8gJ2gnIDogJ3YnLFxuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGluc3QuX3Jvb3Qub3BhY2l0eS5waWNrZXIsXG4gICAgICAgICAgICAgICAgd3JhcHBlcjogaW5zdC5fcm9vdC5vcGFjaXR5LnNsaWRlcixcblxuICAgICAgICAgICAgICAgIG9uc3RvcDogKCkgPT4gaW5zdC5fZW1pdCgnY2hhbmdlc3RvcCcsICdzbGlkZXInLCBpbnN0KSxcbiAgICAgICAgICAgICAgICBvbmNoYW5nZSh2KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY3Mub3BhY2l0eSB8fCAhY3MucGFsZXR0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sb3IgPSBnZXRDb2xvcigpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBvcGFjaXR5XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnN0Ll9yZWNhbGMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yLmEgPSBNYXRoLnJvdW5kKHYgKiAxZTIpIC8gMTAwO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGNvbG9yXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gYHJnYmEoMCwgMCwgMCwgJHtjb2xvci5hfSlgO1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzLnBhbGV0dGUudHJpZ2dlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBzZWxlY3RhYmxlOiBTZWxlY3RhYmxlKHtcbiAgICAgICAgICAgICAgICBlbGVtZW50czogaW5zdC5fcm9vdC5pbnRlcmFjdGlvbi5vcHRpb25zLFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2FjdGl2ZScsXG5cbiAgICAgICAgICAgICAgICBvbmNoYW5nZShlKSB7XG4gICAgICAgICAgICAgICAgICAgIGluc3QuX3JlcHJlc2VudGF0aW9uID0gZS50YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICBpbnN0Ll9yZWNhbGMgJiYgaW5zdC5fdXBkYXRlT3V0cHV0KCdzd2F0Y2gnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX2NvbXBvbmVudHMgPSBjb21wb25lbnRzO1xuICAgIH1cblxuICAgIF9iaW5kRXZlbnRzKCkge1xuICAgICAgICBjb25zdCB7X3Jvb3QsIG9wdGlvbnN9ID0gdGhpcztcblxuICAgICAgICBjb25zdCBldmVudEJpbmRpbmdzID0gW1xuXG4gICAgICAgICAgICAvLyBDbGVhciBjb2xvclxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5jbGVhciwgJ2NsaWNrJywgKCkgPT4gdGhpcy5fY2xlYXJDb2xvcigpKSxcblxuICAgICAgICAgICAgLy8gU2VsZWN0IGxhc3QgY29sb3Igb24gY2xpY2tcbiAgICAgICAgICAgIF8ub24oW1xuICAgICAgICAgICAgICAgIF9yb290LmludGVyYWN0aW9uLmNhbmNlbCxcbiAgICAgICAgICAgICAgICBfcm9vdC5wcmV2aWV3Lmxhc3RDb2xvclxuICAgICAgICAgICAgXSwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SFNWQSguLi4odGhpcy5fbGFzdENvbG9yIHx8IHRoaXMuX2NvbG9yKS50b0hTVkEoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2FuY2VsJyk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgLy8gU2F2ZSBjb2xvclxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5zYXZlLCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgIXRoaXMuYXBwbHlDb2xvcigpICYmICFvcHRpb25zLnNob3dBbHdheXMgJiYgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgLy8gVXNlciBpbnB1dFxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5yZXN1bHQsIFsna2V5dXAnLCAnaW5wdXQnXSwgZSA9PiB7XG5cbiAgICAgICAgICAgICAgICAvLyBGaXJlIGxpc3RlbmVyIGlmIGluaXRpYWxpemF0aW9uIGlzIGZpbmlzaCBhbmQgY2hhbmdlZCBjb2xvciB3YXMgdmFsaWRcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXRDb2xvcihlLnRhcmdldC52YWx1ZSwgdHJ1ZSkgJiYgIXRoaXMuX2luaXRpYWxpemluZ0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0KCdjaGFuZ2UnLCB0aGlzLl9jb2xvciwgJ2lucHV0JywgdGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQoJ2NoYW5nZXN0b3AnLCAnaW5wdXQnLCB0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIC8vIERldGVjdCB1c2VyIGlucHV0IGFuZCBkaXNhYmxlIGF1dG8tcmVjYWxjdWxhdGlvblxuICAgICAgICAgICAgXy5vbihfcm9vdC5pbnRlcmFjdGlvbi5yZXN1bHQsIFsnZm9jdXMnLCAnYmx1ciddLCBlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWNhbGMgPSBlLnR5cGUgPT09ICdibHVyJztcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWNhbGMgJiYgdGhpcy5fdXBkYXRlT3V0cHV0KG51bGwpO1xuICAgICAgICAgICAgfSksXG5cbiAgICAgICAgICAgIC8vIENhbmNlbCBpbnB1dCBkZXRlY3Rpb24gb24gY29sb3IgY2hhbmdlXG4gICAgICAgICAgICBfLm9uKFtcbiAgICAgICAgICAgICAgICBfcm9vdC5wYWxldHRlLnBhbGV0dGUsXG4gICAgICAgICAgICAgICAgX3Jvb3QucGFsZXR0ZS5waWNrZXIsXG4gICAgICAgICAgICAgICAgX3Jvb3QuaHVlLnNsaWRlcixcbiAgICAgICAgICAgICAgICBfcm9vdC5odWUucGlja2VyLFxuICAgICAgICAgICAgICAgIF9yb290Lm9wYWNpdHkuc2xpZGVyLFxuICAgICAgICAgICAgICAgIF9yb290Lm9wYWNpdHkucGlja2VyXG4gICAgICAgICAgICBdLCBbJ21vdXNlZG93bicsICd0b3VjaHN0YXJ0J10sICgpID0+IHRoaXMuX3JlY2FsYyA9IHRydWUsIHtwYXNzaXZlOiB0cnVlfSlcbiAgICAgICAgXTtcblxuICAgICAgICAvLyBQcm92aWRlIGhpZGluZyAvIHNob3dpbmcgYWJpbGl0aWVzIG9ubHkgaWYgc2hvd0Fsd2F5cyBpcyBmYWxzZVxuICAgICAgICBpZiAoIW9wdGlvbnMuc2hvd0Fsd2F5cykge1xuICAgICAgICAgICAgY29uc3QgY2sgPSBvcHRpb25zLmNsb3NlV2l0aEtleTtcblxuICAgICAgICAgICAgZXZlbnRCaW5kaW5ncy5wdXNoKFxuXG4gICAgICAgICAgICAgICAgLy8gU2F2ZSBhbmQgaGlkZSAvIHNob3cgcGlja2VyXG4gICAgICAgICAgICAgICAgXy5vbihfcm9vdC5idXR0b24sICdjbGljaycsICgpID0+IHRoaXMuaXNPcGVuKCkgPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdygpKSxcblxuICAgICAgICAgICAgICAgIC8vIENsb3NlIHdpdGggZXNjYXBlIGtleVxuICAgICAgICAgICAgICAgIF8ub24oZG9jdW1lbnQsICdrZXl1cCcsIGUgPT4gdGhpcy5pc09wZW4oKSAmJiAoZS5rZXkgPT09IGNrIHx8IGUuY29kZSA9PT0gY2spICYmIHRoaXMuaGlkZSgpKSxcblxuICAgICAgICAgICAgICAgIC8vIENhbmNlbCBzZWxlY3RpbmcgaWYgdGhlIHVzZXIgdGFwcyBiZWhpbmQgdGhlIGNvbG9yIHBpY2tlclxuICAgICAgICAgICAgICAgIF8ub24oZG9jdW1lbnQsIFsndG91Y2hzdGFydCcsICdtb3VzZWRvd24nXSwgZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzT3BlbigpICYmICFfLmV2ZW50UGF0aChlKS5zb21lKGVsID0+IGVsID09PSBfcm9vdC5hcHAgfHwgZWwgPT09IF9yb290LmJ1dHRvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge2NhcHR1cmU6IHRydWV9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1ha2UgaW5wdXQgYWRqdXN0YWJsZSBpZiBlbmFibGVkXG4gICAgICAgIGlmIChvcHRpb25zLmFkanVzdGFibGVOdW1iZXJzKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZXMgPSB7XG4gICAgICAgICAgICAgICAgcmdiYTogWzI1NSwgMjU1LCAyNTUsIDFdLFxuICAgICAgICAgICAgICAgIGhzdmE6IFszNjAsIDEwMCwgMTAwLCAxXSxcbiAgICAgICAgICAgICAgICBoc2xhOiBbMzYwLCAxMDAsIDEwMCwgMV0sXG4gICAgICAgICAgICAgICAgY215azogWzEwMCwgMTAwLCAxMDAsIDEwMF1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIF8uYWRqdXN0YWJsZUlucHV0TnVtYmVycyhfcm9vdC5pbnRlcmFjdGlvbi5yZXN1bHQsIChvLCBzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gcmFuZ2VzW3RoaXMuZ2V0Q29sb3JSZXByZXNlbnRhdGlvbigpLnRvTG93ZXJDYXNlKCldO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJhbmdlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heCA9IHJhbmdlW2luZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgbmV4dCByZWFzb25hYmxlIG51bWJlclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBudiA9IG8gKyAobWF4ID49IDEwMCA/IHN0ZXAgKiAxMDAwIDogc3RlcCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQXBwbHkgcmFuZ2Ugb2YgemVybyB1cCB0byBtYXgsIGZpeCBmbG9hdGluZy1wb2ludCBpc3N1ZXNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG52IDw9IDAgPyAwIDogTnVtYmVyKChudiA8IG1heCA/IG52IDogbWF4KS50b1ByZWNpc2lvbigzKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG87XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmF1dG9SZXBvc2l0aW9uICYmICFvcHRpb25zLmlubGluZSkge1xuICAgICAgICAgICAgbGV0IHRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG5cbiAgICAgICAgICAgIC8vIFJlLWNhbGMgcG9zaXRpb24gb24gd2luZG93IHJlc2l6ZSwgc2Nyb2xsIGFuZCB3aGVlbFxuICAgICAgICAgICAgZXZlbnRCaW5kaW5ncy5wdXNoKFxuICAgICAgICAgICAgICAgIF8ub24od2luZG93LCBbJ3Njcm9sbCcsICdyZXNpemUnXSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhhdC5pc09wZW4oKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5jbG9zZU9uU2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdC5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aW1lb3V0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGltZW91dCA9IG51bGwsIDEwMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgcG9zaXRpb24gb24gZXZlcnkgZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24gcnMoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQuX3JlUG9zaXRpb25pbmdQaWNrZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRpbWVvdXQgIT09IG51bGwpICYmIHJlcXVlc3RBbmltYXRpb25GcmFtZShycyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB0aW1lb3V0ID0gbnVsbCwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHtjYXB0dXJlOiB0cnVlfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTYXZlIGJpbmRpbmdzXG4gICAgICAgIHRoaXMuX2V2ZW50QmluZGluZ3MgPSBldmVudEJpbmRpbmdzO1xuICAgIH1cblxuICAgIF9yZVBvc2l0aW9uaW5nUGlja2VyKCkge1xuICAgICAgICBjb25zdCB7b3B0aW9uc30gPSB0aGlzO1xuXG4gICAgICAgIC8vIE5vIHJlcG9zaXRpb25pbmcgbmVlZGVkIGlmIGlubGluZVxuICAgICAgICBpZiAoIW9wdGlvbnMuaW5saW5lKSB7XG4gICAgICAgICAgICBjb25zdCBzdWNjZXNzID0gdGhpcy5fbmFub3BvcC51cGRhdGUoe1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogZG9jdW1lbnQuYm9keS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogb3B0aW9ucy5wb3NpdGlvblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy5fcm9vdC5hcHA7XG4gICAgICAgICAgICAgICAgY29uc3QgZWIgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBlbC5zdHlsZS50b3AgPSBgJHsod2luZG93LmlubmVySGVpZ2h0IC0gZWIuaGVpZ2h0KSAvIDJ9cHhgO1xuICAgICAgICAgICAgICAgIGVsLnN0eWxlLmxlZnQgPSBgJHsod2luZG93LmlubmVyV2lkdGggLSBlYi53aWR0aCkgLyAyfXB4YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIF91cGRhdGVPdXRwdXQoZXZlbnRTb3VyY2UpIHtcbiAgICAgICAgY29uc3Qge19yb290LCBfY29sb3IsIG9wdGlvbnN9ID0gdGhpcztcblxuICAgICAgICAvLyBDaGVjayBpZiBjb21wb25lbnQgaXMgcHJlc2VudFxuICAgICAgICBpZiAoX3Jvb3QuaW50ZXJhY3Rpb24udHlwZSgpKSB7XG5cbiAgICAgICAgICAgIC8vIENvbnN0cnVjdCBmdW5jdGlvbiBuYW1lIGFuZCBjYWxsIGlmIHByZXNlbnRcbiAgICAgICAgICAgIGNvbnN0IG1ldGhvZCA9IGB0byR7X3Jvb3QuaW50ZXJhY3Rpb24udHlwZSgpLmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJyl9YDtcbiAgICAgICAgICAgIF9yb290LmludGVyYWN0aW9uLnJlc3VsdC52YWx1ZSA9IHR5cGVvZiBfY29sb3JbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJyA/XG4gICAgICAgICAgICAgICAgX2NvbG9yW21ldGhvZF0oKS50b1N0cmluZyhvcHRpb25zLm91dHB1dFByZWNpc2lvbikgOiAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcmUgbGlzdGVuZXIgaWYgaW5pdGlhbGl6YXRpb24gaXMgZmluaXNoXG4gICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6aW5nQWN0aXZlICYmIHRoaXMuX3JlY2FsYykge1xuICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2hhbmdlJywgX2NvbG9yLCBldmVudFNvdXJjZSwgdGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBfY2xlYXJDb2xvcihzaWxlbnQgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB7X3Jvb3QsIG9wdGlvbnN9ID0gdGhpcztcblxuICAgICAgICAvLyBDaGFuZ2Ugb25seSB0aGUgYnV0dG9uIGNvbG9yIGlmIGl0IGlzbid0IGN1c3RvbWl6ZWRcbiAgICAgICAgaWYgKCFvcHRpb25zLnVzZUFzQnV0dG9uKSB7XG4gICAgICAgICAgICBfcm9vdC5idXR0b24uc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgJ3JnYmEoMCwgMCwgMCwgMC4xNSknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF9yb290LmJ1dHRvbi5jbGFzc0xpc3QuYWRkKCdjbGVhcicpO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5zaG93QWx3YXlzKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xhc3RDb2xvciA9IG51bGw7XG4gICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6aW5nQWN0aXZlICYmICFzaWxlbnQpIHtcblxuICAgICAgICAgICAgLy8gRmlyZSBsaXN0ZW5lclxuICAgICAgICAgICAgdGhpcy5fZW1pdCgnc2F2ZScsIG51bGwpO1xuICAgICAgICAgICAgdGhpcy5fZW1pdCgnY2xlYXInKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9wYXJzZUxvY2FsQ29sb3Ioc3RyKSB7XG4gICAgICAgIGNvbnN0IHt2YWx1ZXMsIHR5cGUsIGF9ID0gcGFyc2VUb0hTVkEoc3RyKTtcbiAgICAgICAgY29uc3Qge2xvY2tPcGFjaXR5fSA9IHRoaXMub3B0aW9ucztcbiAgICAgICAgY29uc3QgYWxwaGFNYWtlc0FDaGFuZ2UgPSBhICE9PSB1bmRlZmluZWQgJiYgYSAhPT0gMTtcblxuICAgICAgICAvLyBJZiBubyBvcGFjaXR5IGlzIGFwcGxpZWQsIGFkZCB1bmRlZmluZWQgYXQgdGhlIHZlcnkgZW5kIHdoaWNoIGdldHNcbiAgICAgICAgLy8gU2V0IHRvIDEgaW4gc2V0SFNWQVxuICAgICAgICBpZiAodmFsdWVzICYmIHZhbHVlcy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgICAgIHZhbHVlc1szXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZXM6ICghdmFsdWVzIHx8IChsb2NrT3BhY2l0eSAmJiBhbHBoYU1ha2VzQUNoYW5nZSkpID8gbnVsbCA6IHZhbHVlcyxcbiAgICAgICAgICAgIHR5cGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBfdChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pMThuW2tleV0gfHwgUGlja3IuSTE4Tl9ERUZBVUxUU1trZXldO1xuICAgIH1cblxuICAgIF9lbWl0KGV2ZW50LCAuLi5hcmdzKSB7XG4gICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJbZXZlbnRdLmZvckVhY2goY2IgPT4gY2IoLi4uYXJncywgdGhpcykpO1xuICAgIH1cblxuICAgIG9uKGV2ZW50LCBjYikge1xuICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyW2V2ZW50XS5wdXNoKGNiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgb2ZmKGV2ZW50LCBjYikge1xuICAgICAgICBjb25zdCBjYWxsQmFja3MgPSAodGhpcy5fZXZlbnRMaXN0ZW5lcltldmVudF0gfHwgW10pO1xuICAgICAgICBjb25zdCBpbmRleCA9IGNhbGxCYWNrcy5pbmRleE9mKGNiKTtcblxuICAgICAgICBpZiAofmluZGV4KSB7XG4gICAgICAgICAgICBjYWxsQmFja3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFwcGVuZHMgYSBjb2xvciB0byB0aGUgc3dhdGNoIHBhbGV0dGVcbiAgICAgKiBAcGFyYW0gY29sb3JcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBhZGRTd2F0Y2goY29sb3IpIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlc30gPSB0aGlzLl9wYXJzZUxvY2FsQ29sb3IoY29sb3IpO1xuXG4gICAgICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHtfc3dhdGNoQ29sb3JzLCBfcm9vdH0gPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgY29sb3IgPSBIU1ZhQ29sb3IoLi4udmFsdWVzKTtcblxuICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBzd2F0Y2ggSFRNTEVsZW1lbnRcbiAgICAgICAgICAgIGNvbnN0IGVsID0gXy5jcmVhdGVFbGVtZW50RnJvbVN0cmluZyhcbiAgICAgICAgICAgICAgICBgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCItLXBjci1jb2xvcjogJHtjb2xvci50b1JHQkEoKS50b1N0cmluZygwKX1cIiBhcmlhLWxhYmVsPVwiJHt0aGlzLl90KCdidG46c3dhdGNoJyl9XCIvPmBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEFwcGVuZCBlbGVtZW50IGFuZCBzYXZlIHN3YXRjaCBkYXRhXG4gICAgICAgICAgICBfcm9vdC5zd2F0Y2hlcy5hcHBlbmRDaGlsZChlbCk7XG4gICAgICAgICAgICBfc3dhdGNoQ29sb3JzLnB1c2goe2VsLCBjb2xvcn0pO1xuXG4gICAgICAgICAgICAvLyBCaW5kIGV2ZW50XG4gICAgICAgICAgICB0aGlzLl9ldmVudEJpbmRpbmdzLnB1c2goXG4gICAgICAgICAgICAgICAgXy5vbihlbCwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEhTVkEoLi4uY29sb3IudG9IU1ZBKCksIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0KCdzd2F0Y2hzZWxlY3QnLCBjb2xvcik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXQoJ2NoYW5nZScsIGNvbG9yLCAnc3dhdGNoJywgdGhpcyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgYSBzd2F0Y2ggY29sb3IgYnkgaXQncyBpbmRleFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIHJlbW92ZVN3YXRjaChpbmRleCkge1xuICAgICAgICBjb25zdCBzd2F0Y2hDb2xvciA9IHRoaXMuX3N3YXRjaENvbG9yc1tpbmRleF07XG5cbiAgICAgICAgLy8gQ2hlY2sgc3dhdGNoIGRhdGFcbiAgICAgICAgaWYgKHN3YXRjaENvbG9yKSB7XG4gICAgICAgICAgICBjb25zdCB7ZWx9ID0gc3dhdGNoQ29sb3I7XG5cbiAgICAgICAgICAgIC8vIFJlbW92ZSBIVE1MIGNoaWxkIGFuZCBzd2F0Y2ggZGF0YVxuICAgICAgICAgICAgdGhpcy5fcm9vdC5zd2F0Y2hlcy5yZW1vdmVDaGlsZChlbCk7XG4gICAgICAgICAgICB0aGlzLl9zd2F0Y2hDb2xvcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGFwcGx5Q29sb3Ioc2lsZW50ID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qge3ByZXZpZXcsIGJ1dHRvbn0gPSB0aGlzLl9yb290O1xuXG4gICAgICAgIC8vIENoYW5nZSBwcmV2aWV3IGFuZCBjdXJyZW50IGNvbG9yXG4gICAgICAgIGNvbnN0IGNzc1JHQmFTdHJpbmcgPSB0aGlzLl9jb2xvci50b1JHQkEoKS50b1N0cmluZygwKTtcbiAgICAgICAgcHJldmlldy5sYXN0Q29sb3Iuc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG5cbiAgICAgICAgLy8gQ2hhbmdlIG9ubHkgdGhlIGJ1dHRvbiBjb2xvciBpZiBpdCBpc24ndCBjdXN0b21pemVkXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLnVzZUFzQnV0dG9uKSB7XG4gICAgICAgICAgICBidXR0b24uc3R5bGUuc2V0UHJvcGVydHkoJy0tcGNyLWNvbG9yJywgY3NzUkdCYVN0cmluZyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2VyIGNoYW5nZWQgdGhlIGNvbG9yIHNvIHJlbW92ZSB0aGUgY2xlYXIgY2xhc1xuICAgICAgICBidXR0b24uY2xhc3NMaXN0LnJlbW92ZSgnY2xlYXInKTtcblxuICAgICAgICAvLyBTYXZlIGxhc3QgY29sb3JcbiAgICAgICAgdGhpcy5fbGFzdENvbG9yID0gdGhpcy5fY29sb3IuY2xvbmUoKTtcblxuICAgICAgICAvLyBGaXJlIGxpc3RlbmVyXG4gICAgICAgIGlmICghdGhpcy5faW5pdGlhbGl6aW5nQWN0aXZlICYmICFzaWxlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXQoJ3NhdmUnLCB0aGlzLl9jb2xvcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95J3MgYWxsIGZ1bmN0aW9uYWxpdHlzXG4gICAgICovXG4gICAgZGVzdHJveSgpIHtcblxuICAgICAgICAvLyBDYW5jZWwgc2V0dXAtZnJhbWUgaWYgc2V0XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NldHVwQW5pbWF0aW9uRnJhbWUpO1xuXG4gICAgICAgIC8vIFVuYmluZCBldmVudHNcbiAgICAgICAgdGhpcy5fZXZlbnRCaW5kaW5ncy5mb3JFYWNoKGFyZ3MgPT4gXy5vZmYoLi4uYXJncykpO1xuXG4gICAgICAgIC8vIERlc3Ryb3kgc3ViLWNvbXBvbmVudHNcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5fY29tcG9uZW50cylcbiAgICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB0aGlzLl9jb21wb25lbnRzW2tleV0uZGVzdHJveSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXN0cm95J3MgYWxsIGZ1bmN0aW9uYWxpdHlzIGFuZCByZW1vdmVzXG4gICAgICogdGhlIHBpY2tyIGVsZW1lbnQuXG4gICAgICovXG4gICAgZGVzdHJveUFuZFJlbW92ZSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIGNvbnN0IHtyb290LCBhcHB9ID0gdGhpcy5fcm9vdDtcblxuICAgICAgICAvLyBSZW1vdmUgZWxlbWVudFxuICAgICAgICBpZiAocm9vdC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICByb290LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQocm9vdCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW1vdmUgLnBjci1hcHBcbiAgICAgICAgYXBwLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoYXBwKTtcblxuICAgICAgICAvLyBUaGVyZSBhcmUgcmVmZXJlbmNlcyB0byB2YXJpb3VzIERPTSBlbGVtZW50cyBzdG9yZWQgaW4gdGhlIHBpY2tyIGluc3RhbmNlXG4gICAgICAgIC8vIFRoaXMgY2xlYW5zIGFsbCBvZiB0aGVtIHRvIGF2b2lkIGRldGFjaGVkIERPTXNcbiAgICAgICAgT2JqZWN0LmtleXModGhpcylcbiAgICAgICAgICAgIC5mb3JFYWNoKGtleSA9PiB0aGlzW2tleV0gPSBudWxsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIaWRlcyB0aGUgY29sb3ItcGlja2VyIHVpLlxuICAgICAqL1xuICAgIGhpZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9yb290LmFwcC5jbGFzc0xpc3QucmVtb3ZlKCd2aXNpYmxlJyk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdoaWRlJyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93cyB0aGUgY29sb3ItcGlja2VyIHVpLlxuICAgICAqL1xuICAgIHNob3coKSB7XG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmRpc2FibGVkICYmICF0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgICAgICB0aGlzLl9yb290LmFwcC5jbGFzc0xpc3QuYWRkKCd2aXNpYmxlJyk7XG4gICAgICAgICAgICB0aGlzLl9yZVBvc2l0aW9uaW5nUGlja2VyKCk7XG4gICAgICAgICAgICB0aGlzLl9lbWl0KCdzaG93JywgdGhpcy5fY29sb3IpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gSWYgdGhlIGNvbG9yIHBpY2tlciBpcyBjdXJyZW50bHkgb3BlblxuICAgICAqL1xuICAgIGlzT3BlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QuYXBwLmNsYXNzTGlzdC5jb250YWlucygndmlzaWJsZScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBhIHNwZWNpZmljIGNvbG9yLlxuICAgICAqIEBwYXJhbSBoIEh1ZVxuICAgICAqIEBwYXJhbSBzIFNhdHVyYXRpb25cbiAgICAgKiBAcGFyYW0gdiBWYWx1ZVxuICAgICAqIEBwYXJhbSBhIEFscGhhIGNoYW5uZWwgKDAgLSAxKVxuICAgICAqIEBwYXJhbSBzaWxlbnQgSWYgdGhlIGJ1dHRvbiBzaG91bGQgbm90IGNoYW5nZSB0aGUgY29sb3JcbiAgICAgKiBAcmV0dXJuIGJvb2xlYW4gaWYgdGhlIGNvbG9yIGhhcyBiZWVuIGFjY2VwdGVkXG4gICAgICovXG4gICAgc2V0SFNWQShoID0gMzYwLCBzID0gMCwgdiA9IDAsIGEgPSAxLCBzaWxlbnQgPSBmYWxzZSkge1xuXG4gICAgICAgIC8vIERlYWN0aXZhdGUgY29sb3IgY2FsY3VsYXRpb25cbiAgICAgICAgY29uc3QgcmVjYWxjID0gdGhpcy5fcmVjYWxjOyAvLyBTYXZlIHN0YXRlXG4gICAgICAgIHRoaXMuX3JlY2FsYyA9IGZhbHNlO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIGlucHV0XG4gICAgICAgIGlmIChoIDwgMCB8fCBoID4gMzYwIHx8IHMgPCAwIHx8IHMgPiAxMDAgfHwgdiA8IDAgfHwgdiA+IDEwMCB8fCBhIDwgMCB8fCBhID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3ZlcnJpZGUgY3VycmVudCBjb2xvciBhbmQgcmUtYWN0aXZlIGNvbG9yIGNhbGN1bGF0aW9uXG4gICAgICAgIHRoaXMuX2NvbG9yID0gSFNWYUNvbG9yKGgsIHMsIHYsIGEpO1xuXG4gICAgICAgIC8vIFVwZGF0ZSBzbGlkZXIgYW5kIHBhbGV0dGVcbiAgICAgICAgY29uc3Qge2h1ZSwgb3BhY2l0eSwgcGFsZXR0ZX0gPSB0aGlzLl9jb21wb25lbnRzO1xuICAgICAgICBodWUudXBkYXRlKChoIC8gMzYwKSk7XG4gICAgICAgIG9wYWNpdHkudXBkYXRlKGEpO1xuICAgICAgICBwYWxldHRlLnVwZGF0ZShzIC8gMTAwLCAxIC0gKHYgLyAxMDApKTtcblxuICAgICAgICAvLyBDaGVjayBpZiBjYWxsIGlzIHNpbGVudFxuICAgICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUNvbG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGUgb3V0cHV0IGlmIHJlY2FsY3VsYXRpb24gaXMgZW5hYmxlZFxuICAgICAgICBpZiAocmVjYWxjKSB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVPdXRwdXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlc3RvcmUgb2xkIHN0YXRlXG4gICAgICAgIHRoaXMuX3JlY2FsYyA9IHJlY2FsYztcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gcGFyc2UgYSBzdHJpbmcgd2hpY2ggcmVwcmVzZW50cyBhIGNvbG9yLlxuICAgICAqIEV4YW1wbGVzOiAjZmZmXG4gICAgICogICAgICAgICAgIHJnYiAxMCAxMCAyMDBcbiAgICAgKiAgICAgICAgICAgaHN2YSAxMCAyMCA1IDAuNVxuICAgICAqIEBwYXJhbSBzdHJpbmdcbiAgICAgKiBAcGFyYW0gc2lsZW50XG4gICAgICovXG4gICAgc2V0Q29sb3Ioc3RyaW5nLCBzaWxlbnQgPSBmYWxzZSkge1xuXG4gICAgICAgIC8vIENoZWNrIGlmIG51bGxcbiAgICAgICAgaWYgKHN0cmluZyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5fY2xlYXJDb2xvcihzaWxlbnQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7dmFsdWVzLCB0eXBlfSA9IHRoaXMuX3BhcnNlTG9jYWxDb2xvcihzdHJpbmcpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGNvbG9yIGlzIG9rXG4gICAgICAgIGlmICh2YWx1ZXMpIHtcblxuICAgICAgICAgICAgLy8gQ2hhbmdlIHNlbGVjdGVkIGNvbG9yIGZvcm1hdFxuICAgICAgICAgICAgY29uc3QgdXR5cGUgPSB0eXBlLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCB7b3B0aW9uc30gPSB0aGlzLl9yb290LmludGVyYWN0aW9uO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gb3B0aW9ucy5maW5kKGVsID0+IGVsLmdldEF0dHJpYnV0ZSgnZGF0YS10eXBlJykgPT09IHV0eXBlKTtcblxuICAgICAgICAgICAgLy8gQXV0byBzZWxlY3Qgb25seSBpZiBub3QgaGlkZGVuXG4gICAgICAgICAgICBpZiAodGFyZ2V0ICYmICF0YXJnZXQuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlbCBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIGVsLmNsYXNzTGlzdFtlbCA9PT0gdGFyZ2V0ID8gJ2FkZCcgOiAncmVtb3ZlJ10oJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIGNvbG9yIChmaXJlcyAnc2F2ZScgZXZlbnQgaWYgc2lsZW50IGlzICdmYWxzZScpXG4gICAgICAgICAgICBpZiAoIXRoaXMuc2V0SFNWQSguLi52YWx1ZXMsIHNpbGVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSByZXByZXNlbnRhdGlvbiAoZmlyZXMgJ2NoYW5nZScgZXZlbnQpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRDb2xvclJlcHJlc2VudGF0aW9uKHV0eXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2VzIHRoZSBjb2xvciBfcmVwcmVzZW50YXRpb24uXG4gICAgICogQWxsb3dlZCB2YWx1ZXMgYXJlIEhFWCwgUkdCLCBIU1YsIEhTTCBhbmQgQ01ZS1xuICAgICAqIEBwYXJhbSB0eXBlXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IGlmIHRoZSBzZWxlY3RlZCB0eXBlIHdhcyB2YWxpZC5cbiAgICAgKi9cbiAgICBzZXRDb2xvclJlcHJlc2VudGF0aW9uKHR5cGUpIHtcblxuICAgICAgICAvLyBGb3JjZSB1cHBlcmNhc2UgdG8gYWxsb3cgYSBjYXNlLXNlbnNpdGl2IGNvbXBhcmlzb25cbiAgICAgICAgdHlwZSA9IHR5cGUudG9VcHBlckNhc2UoKTtcblxuICAgICAgICAvLyBGaW5kIGJ1dHRvbiB3aXRoIGdpdmVuIHR5cGUgYW5kIHRyaWdnZXIgY2xpY2sgZXZlbnRcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fcm9vdC5pbnRlcmFjdGlvbi5vcHRpb25zXG4gICAgICAgICAgICAuZmluZCh2ID0+IHYuZ2V0QXR0cmlidXRlKCdkYXRhLXR5cGUnKS5zdGFydHNXaXRoKHR5cGUpICYmICF2LmNsaWNrKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgY29sb3IgcmVwcmVzZW50YWlvbi4gU2VlIHNldENvbG9yUmVwcmVzZW50YXRpb25cbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBnZXRDb2xvclJlcHJlc2VudGF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVwcmVzZW50YXRpb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgSFNWYUNvbG9yIEN1cnJlbnQgSFNWYUNvbG9yIG9iamVjdC5cbiAgICAgKi9cbiAgICBnZXRDb2xvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjb2xvci5cbiAgICAgKiBAcmV0dXJucyB7e2EsIHRvSFNWQSwgdG9IRVhBLCBzLCB2LCBoLCBjbG9uZSwgdG9DTVlLLCB0b0hTTEEsIHRvUkdCQX19XG4gICAgICovXG4gICAgZ2V0U2VsZWN0ZWRDb2xvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RDb2xvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBUaGUgcm9vdCBIVE1MRWxlbWVudCB3aXRoIGFsbCBoaXMgY29tcG9uZW50cy5cbiAgICAgKi9cbiAgICBnZXRSb290KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm9vdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEaXNhYmxlIHBpY2tyXG4gICAgICovXG4gICAgZGlzYWJsZSgpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Jvb3QuYnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2Rpc2FibGVkJyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuYWJsZSBwaWNrclxuICAgICAqL1xuICAgIGVuYWJsZSgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3Jvb3QuYnV0dG9uLmNsYXNzTGlzdC5yZW1vdmUoJ2Rpc2FibGVkJyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cbiIsICIvKiFcbiAqIERldGVybWluZSBpZiBhbiBvYmplY3QgaXMgYSBCdWZmZXJcbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNCdWZmZXIgKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgb2JqLmNvbnN0cnVjdG9yICE9IG51bGwgJiZcbiAgICB0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihvYmopXG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBpc0FycmF5ID0gZnVuY3Rpb24gaXNBcnJheShhcnIpIHtcblx0aWYgKHR5cGVvZiBBcnJheS5pc0FycmF5ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkoYXJyKTtcblx0fVxuXG5cdHJldHVybiB0b1N0ci5jYWxsKGFycikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuXG52YXIgaXNQbGFpbk9iamVjdCA9IGZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG5cdGlmICghb2JqIHx8IHRvU3RyLmNhbGwob2JqKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHR2YXIgaGFzT3duQ29uc3RydWN0b3IgPSBoYXNPd24uY2FsbChvYmosICdjb25zdHJ1Y3RvcicpO1xuXHR2YXIgaGFzSXNQcm90b3R5cGVPZiA9IG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IucHJvdG90eXBlICYmIGhhc093bi5jYWxsKG9iai5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsICdpc1Byb3RvdHlwZU9mJyk7XG5cdC8vIE5vdCBvd24gY29uc3RydWN0b3IgcHJvcGVydHkgbXVzdCBiZSBPYmplY3Rcblx0aWYgKG9iai5jb25zdHJ1Y3RvciAmJiAhaGFzT3duQ29uc3RydWN0b3IgJiYgIWhhc0lzUHJvdG90eXBlT2YpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBPd24gcHJvcGVydGllcyBhcmUgZW51bWVyYXRlZCBmaXJzdGx5LCBzbyB0byBzcGVlZCB1cCxcblx0Ly8gaWYgbGFzdCBvbmUgaXMgb3duLCB0aGVuIGFsbCBwcm9wZXJ0aWVzIGFyZSBvd24uXG5cdHZhciBrZXk7XG5cdGZvciAoa2V5IGluIG9iaikgeyAvKiovIH1cblxuXHRyZXR1cm4gdHlwZW9mIGtleSA9PT0gJ3VuZGVmaW5lZCcgfHwgaGFzT3duLmNhbGwob2JqLCBrZXkpO1xufTtcblxuLy8gSWYgbmFtZSBpcyAnX19wcm90b19fJywgYW5kIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBpcyBhdmFpbGFibGUsIGRlZmluZSBfX3Byb3RvX18gYXMgYW4gb3duIHByb3BlcnR5IG9uIHRhcmdldFxudmFyIHNldFByb3BlcnR5ID0gZnVuY3Rpb24gc2V0UHJvcGVydHkodGFyZ2V0LCBvcHRpb25zKSB7XG5cdGlmIChkZWZpbmVQcm9wZXJ0eSAmJiBvcHRpb25zLm5hbWUgPT09ICdfX3Byb3RvX18nKSB7XG5cdFx0ZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBvcHRpb25zLm5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHR2YWx1ZTogb3B0aW9ucy5uZXdWYWx1ZSxcblx0XHRcdHdyaXRhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0dGFyZ2V0W29wdGlvbnMubmFtZV0gPSBvcHRpb25zLm5ld1ZhbHVlO1xuXHR9XG59O1xuXG4vLyBSZXR1cm4gdW5kZWZpbmVkIGluc3RlYWQgb2YgX19wcm90b19fIGlmICdfX3Byb3RvX18nIGlzIG5vdCBhbiBvd24gcHJvcGVydHlcbnZhciBnZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uIGdldFByb3BlcnR5KG9iaiwgbmFtZSkge1xuXHRpZiAobmFtZSA9PT0gJ19fcHJvdG9fXycpIHtcblx0XHRpZiAoIWhhc093bi5jYWxsKG9iaiwgbmFtZSkpIHtcblx0XHRcdHJldHVybiB2b2lkIDA7XG5cdFx0fSBlbHNlIGlmIChnT1BEKSB7XG5cdFx0XHQvLyBJbiBlYXJseSB2ZXJzaW9ucyBvZiBub2RlLCBvYmpbJ19fcHJvdG9fXyddIGlzIGJ1Z2d5IHdoZW4gb2JqIGhhc1xuXHRcdFx0Ly8gX19wcm90b19fIGFzIGFuIG93biBwcm9wZXJ0eS4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcigpIHdvcmtzLlxuXHRcdFx0cmV0dXJuIGdPUEQob2JqLCBuYW1lKS52YWx1ZTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb2JqW25hbWVdO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBleHRlbmQoKSB7XG5cdHZhciBvcHRpb25zLCBuYW1lLCBzcmMsIGNvcHksIGNvcHlJc0FycmF5LCBjbG9uZTtcblx0dmFyIHRhcmdldCA9IGFyZ3VtZW50c1swXTtcblx0dmFyIGkgPSAxO1xuXHR2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcblx0dmFyIGRlZXAgPSBmYWxzZTtcblxuXHQvLyBIYW5kbGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uXG5cdGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnYm9vbGVhbicpIHtcblx0XHRkZWVwID0gdGFyZ2V0O1xuXHRcdHRhcmdldCA9IGFyZ3VtZW50c1sxXSB8fCB7fTtcblx0XHQvLyBza2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0aSA9IDI7XG5cdH1cblx0aWYgKHRhcmdldCA9PSBudWxsIHx8ICh0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nKSkge1xuXHRcdHRhcmdldCA9IHt9O1xuXHR9XG5cblx0Zm9yICg7IGkgPCBsZW5ndGg7ICsraSkge1xuXHRcdG9wdGlvbnMgPSBhcmd1bWVudHNbaV07XG5cdFx0Ly8gT25seSBkZWFsIHdpdGggbm9uLW51bGwvdW5kZWZpbmVkIHZhbHVlc1xuXHRcdGlmIChvcHRpb25zICE9IG51bGwpIHtcblx0XHRcdC8vIEV4dGVuZCB0aGUgYmFzZSBvYmplY3Rcblx0XHRcdGZvciAobmFtZSBpbiBvcHRpb25zKSB7XG5cdFx0XHRcdHNyYyA9IGdldFByb3BlcnR5KHRhcmdldCwgbmFtZSk7XG5cdFx0XHRcdGNvcHkgPSBnZXRQcm9wZXJ0eShvcHRpb25zLCBuYW1lKTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICh0YXJnZXQgIT09IGNvcHkpIHtcblx0XHRcdFx0XHQvLyBSZWN1cnNlIGlmIHdlJ3JlIG1lcmdpbmcgcGxhaW4gb2JqZWN0cyBvciBhcnJheXNcblx0XHRcdFx0XHRpZiAoZGVlcCAmJiBjb3B5ICYmIChpc1BsYWluT2JqZWN0KGNvcHkpIHx8IChjb3B5SXNBcnJheSA9IGlzQXJyYXkoY29weSkpKSkge1xuXHRcdFx0XHRcdFx0aWYgKGNvcHlJc0FycmF5KSB7XG5cdFx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGlzQXJyYXkoc3JjKSA/IHNyYyA6IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y2xvbmUgPSBzcmMgJiYgaXNQbGFpbk9iamVjdChzcmMpID8gc3JjIDoge307XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdFx0c2V0UHJvcGVydHkodGFyZ2V0LCB7IG5hbWU6IG5hbWUsIG5ld1ZhbHVlOiBleHRlbmQoZGVlcCwgY2xvbmUsIGNvcHkpIH0pO1xuXG5cdFx0XHRcdFx0Ly8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlc1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIGNvcHkgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdFx0XHRzZXRQcm9wZXJ0eSh0YXJnZXQsIHsgbmFtZTogbmFtZSwgbmV3VmFsdWU6IGNvcHkgfSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmplY3Rcblx0cmV0dXJuIHRhcmdldDtcbn07XG4iLCAiaW1wb3J0IHsgUGx1Z2luLCBNYXJrZG93blZpZXcsIFdvcmtzcGFjZUxlYWYgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgREVGQVVMVF9TRVRUSU5HUywgTEFOR1VBR0VfSUNPTlNfREFUQSwgQ29kZVN0eWxlclNldHRpbmdzIH0gZnJvbSAnLi9TZXR0aW5ncyc7XG5pbXBvcnQgeyBTZXR0aW5nc1RhYiB9IGZyb20gXCIuL1NldHRpbmdzVGFiXCI7XG5pbXBvcnQgeyByZW1vdmVTdHlsZXNBbmRDbGFzc2VzLCB1cGRhdGVTdHlsaW5nIH0gZnJvbSBcIi4vQXBwbHlTdHlsaW5nXCI7XG5pbXBvcnQgeyBjcmVhdGVDb2RlYmxvY2tDb2RlTWlycm9yRXh0ZW5zaW9ucyB9IGZyb20gXCIuL0VkaXRpbmdWaWV3XCI7XG5pbXBvcnQgeyBkZXN0cm95UmVhZGluZ01vZGVFbGVtZW50cywgZXhlY3V0ZUNvZGVNdXRhdGlvbk9ic2VydmVyLCByZWFkaW5nVmlld0NvZGVibG9ja0RlY29yYXRpbmdQb3N0UHJvY2Vzc29yLCByZWFkaW5nVmlld0lubGluZURlY29yYXRpbmdQb3N0UHJvY2Vzc29yIH0gZnJvbSBcIi4vUmVhZGluZ1ZpZXdcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29kZVN0eWxlclBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG5cdHNldHRpbmdzOiBDb2RlU3R5bGVyU2V0dGluZ3M7XG5cdGV4ZWN1dGVDb2RlTXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblx0bGFuZ3VhZ2VJY29uczogUmVjb3JkPHN0cmluZyxzdHJpbmc+O1xuXHRzaXplczoge1xuXHRcdGZvbnQ6IHN0cmluZztcblx0XHR6b29tOiBzdHJpbmc7XG5cdH07XG5cdFxuXHRhc3luYyBvbmxvYWQoKSB7XG5cdFx0YXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTsgLy8gTG9hZCBTZXR0aW5nc1xuXHRcdGNvbnN0IHNldHRpbmdzVGFiID0gbmV3IFNldHRpbmdzVGFiKHRoaXMuYXBwLHRoaXMpO1xuXHRcdHRoaXMuYWRkU2V0dGluZ1RhYihzZXR0aW5nc1RhYik7XG5cblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2NvZGUtc3R5bGVyJyk7IC8vIExvYWQgU3R5bGVzXG5cdFx0dXBkYXRlU3R5bGluZyh0aGlzLnNldHRpbmdzLHRoaXMuYXBwKTtcblxuXHRcdHRoaXMubGFuZ3VhZ2VJY29ucyA9IE9iamVjdC5rZXlzKExBTkdVQUdFX0lDT05TX0RBVEEpLnJlZHVjZSgocmVzdWx0OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSwga2V5OiBzdHJpbmcpID0+IHsgLy8gTG9hZCBJY29uc1xuXHRcdFx0cmVzdWx0W2tleV0gPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiPiR7TEFOR1VBR0VfSUNPTlNfREFUQVtrZXldfTwvc3ZnPmBdLCB7IHR5cGU6IFwiaW1hZ2Uvc3ZnK3htbFwiIH0pKTtcblx0XHRcdHJldHVybiByZXN1bHRcblx0XHR9LHt9KTtcblx0XHR0aGlzLnNpemVzID0ge1xuXHRcdFx0Zm9udDogZG9jdW1lbnQuYm9keS5nZXRDc3NQcm9wZXJ0eVZhbHVlKCctLWZvbnQtdGV4dC1zaXplJyksXG5cdFx0XHR6b29tOiBkb2N1bWVudC5ib2R5LmdldENzc1Byb3BlcnR5VmFsdWUoJy0tem9vbS1mYWN0b3InKSxcblx0XHR9O1xuXG5cdFx0dGhpcy5leGVjdXRlQ29kZU11dGF0aW9uT2JzZXJ2ZXIgPSBleGVjdXRlQ29kZU11dGF0aW9uT2JzZXJ2ZXI7IC8vIEFkZCBleGVjdXRlIGNvZGUgbXV0YXRpb24gb2JzZXJ2ZXJcblx0XHRcblx0XHR0aGlzLnJlZ2lzdGVyTWFya2Rvd25Qb3N0UHJvY2Vzc29yKGFzeW5jIChlbCxjdHgpID0+IHthd2FpdCByZWFkaW5nVmlld0NvZGVibG9ja0RlY29yYXRpbmdQb3N0UHJvY2Vzc29yKGVsLGN0eCx0aGlzKX0pOyAvLyBBZGQgY29kZWJsb2NrIGRlY29yYXRpbmcgbWFya2Rvd25Qb3N0UHJvY2Vzc29yXG5cdFx0dGhpcy5yZWdpc3Rlck1hcmtkb3duUG9zdFByb2Nlc3Nvcihhc3luYyAoZWwsY3R4KSA9PiB7YXdhaXQgcmVhZGluZ1ZpZXdJbmxpbmVEZWNvcmF0aW5nUG9zdFByb2Nlc3NvcihlbCxjdHgsdGhpcyl9KTsgLy8gQWRkIGlubGluZSBjb2RlIGRlY29yYXRpbmcgbWFya2Rvd25Qb3N0UHJvY2Vzc29yXG5cblx0XHR0aGlzLnJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uKGNyZWF0ZUNvZGVibG9ja0NvZGVNaXJyb3JFeHRlbnNpb25zKHRoaXMuc2V0dGluZ3MsdGhpcy5sYW5ndWFnZUljb25zKSk7IC8vIEFkZCBjb2RlbWlycm9yIGV4dGVuc2lvbnNcblxuXHRcdGxldCB6b29tVGltZW91dDogTm9kZUpTLlRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57fSk7XG5cdFx0dGhpcy5yZWdpc3RlckV2ZW50KHRoaXMuYXBwLndvcmtzcGFjZS5vbignY3NzLWNoYW5nZScsKCk9Pntcblx0XHRcdHVwZGF0ZVN0eWxpbmcodGhpcy5zZXR0aW5ncyx0aGlzLmFwcCk7IC8vIFVwZGF0ZSBzdHlsaW5nIG9uIGNzcyBjaGFuZ2VzXG5cdFx0XHRjb25zdCBjdXJyZW50Rm9udFNpemUgPSBkb2N1bWVudC5ib2R5LmdldENzc1Byb3BlcnR5VmFsdWUoJy0tZm9udC10ZXh0LXNpemUnKTtcblx0XHRcdGlmICh0aGlzLnNpemVzLmZvbnQgIT09IGN1cnJlbnRGb250U2l6ZSkge1xuXHRcdFx0XHR0aGlzLnNpemVzLmZvbnQgPSBjdXJyZW50Rm9udFNpemU7XG5cdFx0XHRcdGNsZWFyVGltZW91dCh6b29tVGltZW91dCk7XG5cdFx0XHRcdHpvb21UaW1lb3V0ID0gc2V0VGltZW91dCgoKT0+e1xuXHRcdFx0XHRcdHRoaXMucmVyZW5kZXJQcmV2aWV3KCk7IC8vIFJlLXJlbmRlciBvbiBmb250IHNpemUgY2hhbmdlc1xuXHRcdFx0XHR9LDEwMDApO1xuXHRcdFx0fVxuXHRcdH0sdGhpcykpO1xuXHRcdHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC53b3Jrc3BhY2Uub24oJ3Jlc2l6ZScsKCk9Pntcblx0XHRcdGNvbnN0IGN1cnJlbnRab29tU2l6ZSA9IGRvY3VtZW50LmJvZHkuZ2V0Q3NzUHJvcGVydHlWYWx1ZSgnLS16b29tLWZhY3RvcicpO1xuXHRcdFx0aWYgKHRoaXMuc2l6ZXMuem9vbSAhPT0gY3VycmVudFpvb21TaXplKSB7XG5cdFx0XHRcdHRoaXMuc2l6ZXMuem9vbSA9IGN1cnJlbnRab29tU2l6ZTtcblx0XHRcdFx0Y2xlYXJUaW1lb3V0KHpvb21UaW1lb3V0KTtcblx0XHRcdFx0em9vbVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57XG5cdFx0XHRcdFx0dGhpcy5yZXJlbmRlclByZXZpZXcoKTsgLy8gUmUtcmVuZGVyIG9uIHpvb20gY2hhbmdlc1xuXHRcdFx0XHR9LDEwMDApO1xuXHRcdFx0fVxuXHRcdH0sdGhpcykpO1xuXG5cdFx0dGhpcy5hcHAud29ya3NwYWNlLm9uTGF5b3V0UmVhZHkoKCk9Pnt0aGlzLnJlcmVuZGVyUHJldmlldygpfSk7IC8vIEFkZCBkZWNvcmF0aW9uIG9uIGVuYWJsaW5nIG9mIHBsdWdpblxuXG5cdFx0Y29uc29sZS5sb2coXCJMb2FkZWQgcGx1Z2luOiBDb2RlIFN0eWxlclwiKTtcblx0fVxuXHRcblx0b251bmxvYWQoKSB7XG5cdFx0dGhpcy5leGVjdXRlQ29kZU11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXHRcdHJlbW92ZVN0eWxlc0FuZENsYXNzZXMoKTtcblx0XHRkZXN0cm95UmVhZGluZ01vZGVFbGVtZW50cygpO1xuXHRcdGZvciAoY29uc3QgdXJsIG9mIE9iamVjdC52YWx1ZXModGhpcy5sYW5ndWFnZUljb25zKSkgLy8gVW5sb2FkIGljb25zXG5cdFx0XHRVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG5cdFx0Y29uc29sZS5sb2coXCJVbmxvYWRlZCBwbHVnaW46IENvZGUgU3R5bGVyXCIpO1xuXHR9XG5cblx0YXN5bmMgbG9hZFNldHRpbmdzKCkge1xuXHRcdHRoaXMuc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCBzdHJ1Y3R1cmVkQ2xvbmUoREVGQVVMVF9TRVRUSU5HUyksIGF3YWl0IHRoaXMubG9hZERhdGEoKSk7XG5cdH1cblxuXHRhc3luYyBzYXZlU2V0dGluZ3MoKSB7XG5cdFx0YXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcblx0XHR0aGlzLmFwcC53b3Jrc3BhY2UudXBkYXRlT3B0aW9ucygpO1xuXHRcdHVwZGF0ZVN0eWxpbmcodGhpcy5zZXR0aW5ncyx0aGlzLmFwcCk7XG5cdH1cblxuXHRyZXJlbmRlclByZXZpZXcoKSB7XG5cdFx0dGhpcy5hcHAud29ya3NwYWNlLml0ZXJhdGVSb290TGVhdmVzKChsZWFmOiBXb3Jrc3BhY2VMZWFmKSA9PiB7XG5cdFx0XHRpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3ICYmIGxlYWYudmlldy5nZXRNb2RlKCkgPT09ICdwcmV2aWV3Jylcblx0XHRcdFx0bGVhZi52aWV3LnByZXZpZXdNb2RlLnJlcmVuZGVyKHRydWUpO1xuXHRcdH0pO1xuXHR9XG59XG4iLCAiLy8gVHlwaW5nXG5leHBvcnQgdHlwZSBIRVggPSBgIyR7c3RyaW5nfWA7XG5leHBvcnQgdHlwZSBDU1MgPSBgLS0ke3N0cmluZ31gO1xuZXhwb3J0IHR5cGUgQ29sb3VyID0gSEVYIHwgQ1NTO1xuZXhwb3J0IHR5cGUgUGVyY2VudGFnZSA9IGAke251bWJlcn0lYDtcbmV4cG9ydCB0eXBlIERpc3BsYXkgPSBcIm5vbmVcIiB8IFwiaWZfaGVhZGVyX3Nob3duXCIgfCBcImFsd2F5c1wiO1xuXG4vLyBJbnRlcmZhY2UgQ3JlYXRpb25cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZVN0eWxlclRoZW1lTW9kZUNvbG91cnMge1xuXHRjb2RlYmxvY2s6IHtcblx0XHRiYWNrZ3JvdW5kQ29sb3VyOiBDb2xvdXI7XG5cdFx0dGV4dENvbG91cjogQ29sb3VyO1xuXHR9LFxuXHRndXR0ZXI6IHtcblx0XHRiYWNrZ3JvdW5kQ29sb3VyOiBDb2xvdXI7XG5cdFx0dGV4dENvbG91cjogQ29sb3VyO1xuXHRcdGFjdGl2ZVRleHRDb2xvdXI6IENvbG91cjtcblx0fSxcblx0aGVhZGVyOiB7XG5cdFx0YmFja2dyb3VuZENvbG91cjogQ29sb3VyO1xuXHRcdHRpdGxlOiB7XG5cdFx0XHR0ZXh0Q29sb3VyOiBDb2xvdXI7XG5cdFx0fSxcblx0XHRsYW5ndWFnZVRhZzoge1xuXHRcdFx0YmFja2dyb3VuZENvbG91cjogQ29sb3VyO1xuXHRcdFx0dGV4dENvbG91cjogQ29sb3VyO1xuXHRcdH0sXG5cdFx0bGluZUNvbG91cjogQ29sb3VyO1xuXHR9LFxuXHRoaWdobGlnaHRzOiB7XG5cdFx0YWN0aXZlQ29kZWJsb2NrTGluZUNvbG91cjogQ29sb3VyO1xuXHRcdGFjdGl2ZUVkaXRvckxpbmVDb2xvdXI6IENvbG91cjtcblx0XHRkZWZhdWx0Q29sb3VyOiBDb2xvdXI7XG5cdFx0YWx0ZXJuYXRpdmVIaWdobGlnaHRzOiBSZWNvcmQ8c3RyaW5nLENvbG91cj47XG5cdH0sXG5cdGlubGluZToge1xuXHRcdGJhY2tncm91bmRDb2xvdXI6IENvbG91cjtcblx0XHR0ZXh0Q29sb3VyOiBDb2xvdXI7XG5cdFx0YWN0aXZlVGV4dENvbG91cjogQ29sb3VyO1xuXHRcdHRpdGxlVGV4dENvbG91cjogQ29sb3VyXG5cdH1cblx0YWR2YW5jZWQ6IHtcblx0XHRidXR0b25Db2xvdXI6IENvbG91cjtcblx0XHRidXR0b25BY3RpdmVDb2xvdXI6IENvbG91cjtcblx0fVxufVxuZXhwb3J0IGludGVyZmFjZSBDb2RlU3R5bGVyVGhlbWVTZXR0aW5ncyB7XG5cdGNvZGVibG9jazoge1xuXHRcdGxpbmVOdW1iZXJzOiBib29sZWFuO1xuXHRcdHVud3JhcExpbmVzOiBib29sZWFuO1xuXHRcdHdyYXBMaW5lc0FjdGl2ZTogYm9vbGVhbjtcblx0XHRjdXJ2YXR1cmU6IG51bWJlcjtcblx0fSxcblx0Z3V0dGVyOiB7XG5cdFx0aGlnaGxpZ2h0OiBib29sZWFuO1xuXHRcdGFjdGl2ZUxpbmU6IGJvb2xlYW47XG5cdH0sXG5cdGhlYWRlcjoge1xuXHRcdHRpdGxlOiB7XG5cdFx0XHR0ZXh0Rm9udDogc3RyaW5nO1xuXHRcdFx0dGV4dEJvbGQ6IGJvb2xlYW47XG5cdFx0XHR0ZXh0SXRhbGljOiBib29sZWFuO1xuXHRcdH0sXG5cdFx0bGFuZ3VhZ2VUYWc6IHtcblx0XHRcdGRpc3BsYXk6IERpc3BsYXk7XG5cdFx0XHR0ZXh0Rm9udDogc3RyaW5nO1xuXHRcdFx0dGV4dEJvbGQ6IGJvb2xlYW47XG5cdFx0XHR0ZXh0SXRhbGljOiBib29sZWFuO1xuXHRcdH0sXG5cdFx0bGFuZ3VhZ2VJY29uOiB7XG5cdFx0XHRkaXNwbGF5OiBEaXNwbGF5O1xuXHRcdFx0ZGlzcGxheUNvbG91cjogYm9vbGVhbjtcblx0XHR9LFxuXHRcdGZvbnRTaXplOiBudW1iZXI7XG5cdFx0Y29sbGFwc2VQbGFjZWhvbGRlcjogc3RyaW5nO1xuXHR9LFxuXHRoaWdobGlnaHRzOiB7XG5cdFx0YWN0aXZlQ29kZWJsb2NrTGluZTogYm9vbGVhbjtcblx0XHRhY3RpdmVFZGl0b3JMaW5lOiBib29sZWFuO1xuXHR9LFxuXHRpbmxpbmU6IHtcblx0XHRzeW50YXhIaWdobGlnaHQ6IGJvb2xlYW47XG5cdFx0Zm9udFdlaWdodDogbnVtYmVyO1xuXHRcdGN1cnZhdHVyZTogbnVtYmVyO1xuXHRcdHBhZGRpbmdWZXJ0aWNhbDogbnVtYmVyO1xuXHRcdHBhZGRpbmdIb3Jpem9udGFsOiBudW1iZXI7XG5cdFx0bWFyZ2luSG9yaXpvbnRhbDogbnVtYmVyO1xuXHRcdHRpdGxlRm9udFdlaWdodDogbnVtYmVyO1xuXHR9LFxuXHRhZHZhbmNlZDoge1xuXHRcdGdyYWRpZW50SGlnaGxpZ2h0czogYm9vbGVhbjtcblx0XHRncmFkaWVudEhpZ2hsaWdodHNDb2xvdXJTdG9wOiBQZXJjZW50YWdlO1xuXHRcdGxhbmd1YWdlQm9yZGVyQ29sb3VyOiBib29sZWFuO1xuXHRcdGxhbmd1YWdlQm9yZGVyV2lkdGg6IG51bWJlcjtcblx0XHRpY29uU2l6ZTogbnVtYmVyO1xuXHR9O1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzIHtcblx0bGlnaHQ6IENvZGVTdHlsZXJUaGVtZU1vZGVDb2xvdXJzO1xuXHRkYXJrOiBDb2RlU3R5bGVyVGhlbWVNb2RlQ29sb3Vycztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29kZVN0eWxlclRoZW1lIHtcblx0c2V0dGluZ3M6IENvZGVTdHlsZXJUaGVtZVNldHRpbmdzO1xuXHRjb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2RlU3R5bGVyU2V0dGluZ3Mge1xuXHR0aGVtZXM6IFJlY29yZDxzdHJpbmcsQ29kZVN0eWxlclRoZW1lPjtcblx0c2VsZWN0ZWRUaGVtZTogc3RyaW5nO1xuXHRjdXJyZW50VGhlbWU6IENvZGVTdHlsZXJUaGVtZTtcblx0bmV3VGhlbWU6IHN0cmluZztcblx0bmV3SGlnaGxpZ2h0OiBzdHJpbmc7XG5cdGRlY29yYXRlUHJpbnQ6IGJvb2xlYW47XG5cdGV4Y2x1ZGVkTGFuZ3VhZ2VzOiBzdHJpbmc7XG5cdGV4Y2x1ZGVkQ29kZWJsb2Nrczogc3RyaW5nO1xuXHRzcGVjaWFsTGFuZ3VhZ2VzOiBBcnJheTxzdHJpbmc+O1xuXHRyZWRpcmVjdExhbmd1YWdlczogUmVjb3JkPHN0cmluZyx7Y29sb3VyPzogQ29sb3VyLCBpY29uPzogc3RyaW5nfT5cbn1cblxuLy8gVGhlbWUgRGVmYXVsdHNcbmNvbnN0IFRIRU1FX0RFRkFVTFRfU0VUVElOR1M6IENvZGVTdHlsZXJUaGVtZVNldHRpbmdzID0ge1xuXHRjb2RlYmxvY2s6IHtcblx0XHRsaW5lTnVtYmVyczogdHJ1ZSxcblx0XHR1bndyYXBMaW5lczogdHJ1ZSxcblx0XHR3cmFwTGluZXNBY3RpdmU6IGZhbHNlLFxuXHRcdGN1cnZhdHVyZTogNCxcblx0fSxcblx0Z3V0dGVyOiB7XG5cdFx0aGlnaGxpZ2h0OiB0cnVlLFxuXHRcdGFjdGl2ZUxpbmU6IGZhbHNlLFxuXHR9LFxuXHRoZWFkZXI6IHtcblx0XHR0aXRsZToge1xuXHRcdFx0dGV4dEZvbnQ6ICcnLFxuXHRcdFx0dGV4dEJvbGQ6IGZhbHNlLFxuXHRcdFx0dGV4dEl0YWxpYzogdHJ1ZSxcblx0XHR9LFxuXHRcdGxhbmd1YWdlVGFnOiB7XG5cdFx0XHRkaXNwbGF5OiBcIm5vbmVcIixcblx0XHRcdHRleHRGb250OiAnJyxcblx0XHRcdHRleHRCb2xkOiB0cnVlLFxuXHRcdFx0dGV4dEl0YWxpYzogZmFsc2UsXG5cdFx0fSxcblx0XHRsYW5ndWFnZUljb246IHtcblx0XHRcdGRpc3BsYXk6IFwibm9uZVwiLFxuXHRcdFx0ZGlzcGxheUNvbG91cjogdHJ1ZSxcblx0XHR9LFxuXHRcdGZvbnRTaXplOiAxNCxcblx0XHRjb2xsYXBzZVBsYWNlaG9sZGVyOiAnJyxcblx0fSxcblx0aGlnaGxpZ2h0czoge1xuXHRcdGFjdGl2ZUNvZGVibG9ja0xpbmU6IGZhbHNlLFxuXHRcdGFjdGl2ZUVkaXRvckxpbmU6IGZhbHNlLFxuXHR9LFxuXHRpbmxpbmU6IHtcblx0XHRzeW50YXhIaWdobGlnaHQ6IHRydWUsXG5cdFx0Zm9udFdlaWdodDogNCxcblx0XHRjdXJ2YXR1cmU6IDYsXG5cdFx0cGFkZGluZ1ZlcnRpY2FsOiA1LFxuXHRcdHBhZGRpbmdIb3Jpem9udGFsOiA1LFxuXHRcdG1hcmdpbkhvcml6b250YWw6IDAsXG5cdFx0dGl0bGVGb250V2VpZ2h0OiA4LFxuXHR9LFxuXHRhZHZhbmNlZDoge1xuXHRcdGdyYWRpZW50SGlnaGxpZ2h0czogZmFsc2UsXG5cdFx0Z3JhZGllbnRIaWdobGlnaHRzQ29sb3VyU3RvcDogJzcwJScsXG5cdFx0bGFuZ3VhZ2VCb3JkZXJDb2xvdXI6IGZhbHNlLFxuXHRcdGxhbmd1YWdlQm9yZGVyV2lkdGg6IDUsXG5cdFx0aWNvblNpemU6IDI4LFxuXHR9LFxufVxuZXhwb3J0IGNvbnN0IFRIRU1FX0ZBTExCQUNLX0NPTE9VUlM6IENvZGVTdHlsZXJUaGVtZU1vZGVDb2xvdXJzID0ge1xuXHRjb2RlYmxvY2s6IHtcblx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnLS1jb2RlLWJhY2tncm91bmQnLFxuXHRcdHRleHRDb2xvdXI6ICctLWNvZGUtbm9ybWFsJyxcblx0fSxcblx0Z3V0dGVyOiB7XG5cdFx0YmFja2dyb3VuZENvbG91cjogJy0tY29kZS1iYWNrZ3JvdW5kJyxcblx0XHR0ZXh0Q29sb3VyOiAnLS10ZXh0LWZhaW50Jyxcblx0XHRhY3RpdmVUZXh0Q29sb3VyOiAnLS10ZXh0LW11dGVkJyxcblx0fSxcblx0aGVhZGVyOiB7XG5cdFx0YmFja2dyb3VuZENvbG91cjogJy0tY29kZS1iYWNrZ3JvdW5kJyxcblx0XHR0aXRsZToge1xuXHRcdFx0dGV4dENvbG91cjogJy0tY29kZS1jb21tZW50Jyxcblx0XHR9LFxuXHRcdGxhbmd1YWdlVGFnOiB7XG5cdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnLS1jb2RlLWJhY2tncm91bmQnLFxuXHRcdFx0dGV4dENvbG91cjogJy0tY29kZS1jb21tZW50Jyxcblx0XHR9LFxuXHRcdGxpbmVDb2xvdXI6ICctLWNvbG9yLWJhc2UtMzAnLFxuXHR9LFxuXHRoaWdobGlnaHRzOiB7XG5cdFx0YWN0aXZlQ29kZWJsb2NrTGluZUNvbG91cjogJy0tY29sb3ItYmFzZS0zMCcsXG5cdFx0YWN0aXZlRWRpdG9yTGluZUNvbG91cjogJy0tY29sb3ItYmFzZS0yMCcsXG5cdFx0ZGVmYXVsdENvbG91cjogJy0tdGV4dC1oaWdobGlnaHQtYmcnLFxuXHRcdGFsdGVybmF0aXZlSGlnaGxpZ2h0czoge30sXG5cdH0sXG5cdGlubGluZToge1xuXHRcdGJhY2tncm91bmRDb2xvdXI6ICctLWNvZGUtYmFja2dyb3VuZCcsXG5cdFx0dGV4dENvbG91cjogJy0tY29kZS1ub3JtYWwnLFxuXHRcdGFjdGl2ZVRleHRDb2xvdXI6ICctLWNvZGUtbm9ybWFsJyxcblx0XHR0aXRsZVRleHRDb2xvdXI6ICctLWNvZGUtY29tbWVudCcsXG5cdH0sXG5cdGFkdmFuY2VkOiB7XG5cdFx0YnV0dG9uQ29sb3VyOiAnLS10ZXh0LW11dGVkJyxcblx0XHRidXR0b25BY3RpdmVDb2xvdXI6ICctLXRleHQtbm9ybWFsJyxcblx0fVxufVxuXG4vLyBUaGVtZSBDcmVhdGlvblxuY29uc3QgREVGQVVMVF9USEVNRTogQ29kZVN0eWxlclRoZW1lID0ge1xuXHRzZXR0aW5nczogVEhFTUVfREVGQVVMVF9TRVRUSU5HUyxcblx0Y29sb3Vyczoge1xuXHRcdGxpZ2h0OiBUSEVNRV9GQUxMQkFDS19DT0xPVVJTLFxuXHRcdGRhcms6IFRIRU1FX0ZBTExCQUNLX0NPTE9VUlMsXG5cdH0sXG59XG5jb25zdCBTT0xBUklaRURfVEhFTUU6IENvZGVTdHlsZXJUaGVtZSA9IHtcblx0c2V0dGluZ3M6IFRIRU1FX0RFRkFVTFRfU0VUVElOR1MsXG5cdGNvbG91cnM6IHtcblx0XHRsaWdodDoge1xuXHRcdFx0Y29kZWJsb2NrOiB7XG5cdFx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICcjRkNGNkU0Jyxcblx0XHRcdFx0dGV4dENvbG91cjogJyNiYWJhYmEnLFxuXHRcdFx0fSxcblx0XHRcdGd1dHRlcjoge1xuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnI0VERThENicsXG5cdFx0XHRcdHRleHRDb2xvdXI6ICcjNmM2YzZjJyxcblx0XHRcdFx0YWN0aXZlVGV4dENvbG91cjogJyM4YzhjOGMnLFxuXHRcdFx0fSxcblx0XHRcdGhlYWRlcjoge1xuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnI0Q1Q0NCNCcsXG5cdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0dGV4dENvbG91cjogJyM4NjY3MDQnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRsYW5ndWFnZVRhZzoge1xuXHRcdFx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICcjQjhCNUFBJyxcblx0XHRcdFx0XHR0ZXh0Q29sb3VyOiAnI0MyNUYzMCcsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGxpbmVDb2xvdXI6ICcjRURENDg5Jyxcblx0XHRcdH0sXG5cdFx0XHRoaWdobGlnaHRzOiB7XG5cdFx0XHRcdGFjdGl2ZUNvZGVibG9ja0xpbmVDb2xvdXI6ICcjRURFOEQ2Jyxcblx0XHRcdFx0YWN0aXZlRWRpdG9yTGluZUNvbG91cjogJyM2MDQ2MDYzMycsXG5cdFx0XHRcdGRlZmF1bHRDb2xvdXI6ICcjRTlERkJBJyxcblx0XHRcdFx0YWx0ZXJuYXRpdmVIaWdobGlnaHRzOiB7fSxcblx0XHRcdH0sXG5cdFx0XHRpbmxpbmU6IHtcblx0XHRcdFx0YmFja2dyb3VuZENvbG91cjogJyNGQ0Y2RTQnLFxuXHRcdFx0XHR0ZXh0Q29sb3VyOiAnI2JhYmFiYScsXG5cdFx0XHRcdGFjdGl2ZVRleHRDb2xvdXI6ICcjYmFiYWJhJyxcblx0XHRcdFx0dGl0bGVUZXh0Q29sb3VyOiAnI0MyNUYzMCcsXG5cdFx0XHR9LFxuXHRcdFx0YWR2YW5jZWQ6IHtcblx0XHRcdFx0YnV0dG9uQ29sb3VyOiAnLS10ZXh0LW11dGVkJyxcblx0XHRcdFx0YnV0dG9uQWN0aXZlQ29sb3VyOiAnLS10ZXh0LW5vcm1hbCcsXG5cdFx0XHR9XG5cdFx0fSxcblx0XHRkYXJrOiB7XG5cdFx0XHRjb2RlYmxvY2s6IHtcblx0XHRcdFx0YmFja2dyb3VuZENvbG91cjogJyMwMDJiMzYnLFxuXHRcdFx0XHR0ZXh0Q29sb3VyOiAnI2JhYmFiYScsXG5cdFx0XHR9LFxuXHRcdFx0Z3V0dGVyOiB7XG5cdFx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICcjMDczNjQyJyxcblx0XHRcdFx0dGV4dENvbG91cjogJyM2YzZjNmMnLFxuXHRcdFx0XHRhY3RpdmVUZXh0Q29sb3VyOiAnIzRjNGM0YycsXG5cdFx0XHR9LFxuXHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdGJhY2tncm91bmRDb2xvdXI6ICcjMGE0NTU0Jyxcblx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHR0ZXh0Q29sb3VyOiAnI2RhZGFkYScsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGxhbmd1YWdlVGFnOiB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZENvbG91cjogJyMwMDgwODAnLFxuXHRcdFx0XHRcdHRleHRDb2xvdXI6ICcjMDAwMDAwJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0bGluZUNvbG91cjogJyM0NmNjZWQnLFxuXHRcdFx0fSxcblx0XHRcdGhpZ2hsaWdodHM6IHtcblx0XHRcdFx0YWN0aXZlQ29kZWJsb2NrTGluZUNvbG91cjogJyMwNzM2NDInLFxuXHRcdFx0XHRhY3RpdmVFZGl0b3JMaW5lQ29sb3VyOiAnIzQ2OGVlYjMzJyxcblx0XHRcdFx0ZGVmYXVsdENvbG91cjogJyMwNTRiNWMnLFxuXHRcdFx0XHRhbHRlcm5hdGl2ZUhpZ2hsaWdodHM6IHt9LFxuXHRcdFx0fSxcblx0XHRcdGlubGluZToge1xuXHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3VyOiAnIzAwMmIzNicsXG5cdFx0XHRcdHRleHRDb2xvdXI6ICcjYmFiYWJhJyxcblx0XHRcdFx0YWN0aXZlVGV4dENvbG91cjogJyNiYWJhYmEnLFxuXHRcdFx0XHR0aXRsZVRleHRDb2xvdXI6ICcjMDAwMDAwJyxcblx0XHRcdH0sXG5cdFx0XHRhZHZhbmNlZDoge1xuXHRcdFx0XHRidXR0b25Db2xvdXI6ICctLXRleHQtbXV0ZWQnLFxuXHRcdFx0XHRidXR0b25BY3RpdmVDb2xvdXI6ICctLXRleHQtbm9ybWFsJyxcblx0XHRcdH1cblx0XHR9LFxuXHR9LFxufVxuXG4vLyBQbHVnaW4gZGVmYXVsdCBzZXR0aW5nc1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VUVElOR1M6IENvZGVTdHlsZXJTZXR0aW5ncyA9IHtcblx0dGhlbWVzOiB7XG5cdFx0J0RlZmF1bHQnOiBERUZBVUxUX1RIRU1FLFxuXHRcdCdTb2xhcml6ZWQnOiBTT0xBUklaRURfVEhFTUUsXG5cdH0sXG5cdHNlbGVjdGVkVGhlbWU6ICdEZWZhdWx0Jyxcblx0Y3VycmVudFRoZW1lOiBzdHJ1Y3R1cmVkQ2xvbmUoREVGQVVMVF9USEVNRSksXG5cdG5ld1RoZW1lOiAnJyxcblx0bmV3SGlnaGxpZ2h0OiAnJyxcblx0ZGVjb3JhdGVQcmludDogdHJ1ZSxcblx0ZXhjbHVkZWRMYW5ndWFnZXM6IFwiYWQtKlwiLFxuXHRleGNsdWRlZENvZGVibG9ja3M6IFwiZGF0YXZpZXcsIGRhdGF2aWV3anMsIG1hdGhcIixcblx0c3BlY2lhbExhbmd1YWdlczogW1wiXnByZXZpZXckXCIsXCJeaW5jbHVkZSRcIixcIl5vdXRwdXQkXCIsXCJecnVuLS4rJFwiXSxcblx0cmVkaXJlY3RMYW5ndWFnZXM6IHt9LFxufVxuXG4vLyBDb25zdGFudHNcbmV4cG9ydCBjb25zdCBQQVJBTUVURVJTID0gWyd0aXRsZScsJ2ZvbGQnLCdsbicsJ3Vud3JhcCcsJ2lnbm9yZSddO1xuZXhwb3J0IGNvbnN0IFRSQU5TSVRJT05fTEVOR1RIID0gMjQwOyAvLyAyNDBtc1xuXG5jb25zdCBQUklTTV9MQU5HVUFHRVM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0geyAvLyBQcmlzbSBMYW5ndWFnZXM6IGh0dHBzOi8vcHJpc21qcy5jb20vcGx1Z2lucy9zaG93LWxhbmd1YWdlL1xuXHQvLyBcIm5vbmVcIjogXCJQbGFpbiB0ZXh0XCIsIC8vIE5PVEU6IE9ic2lkaWFuIHVzZXMgdGhpcyBmb3IgY29kZWJsb2NrcyB3aXRob3V0IGxhbmd1YWdlIG5hbWVzXG5cdFwicGxhaW5cIjogXCJQbGFpbiB0ZXh0XCIsXG5cdFwicGxhaW50ZXh0XCI6IFwiUGxhaW4gdGV4dFwiLFxuXHRcInRleHRcIjogXCJQbGFpbiB0ZXh0XCIsXG5cdFwidHh0XCI6IFwiUGxhaW4gdGV4dFwiLFxuXHRcImh0bWxcIjogXCJIVE1MXCIsXG5cdFwieG1sXCI6IFwiWE1MXCIsXG5cdFwic3ZnXCI6IFwiU1ZHXCIsXG5cdFwibWF0aG1sXCI6IFwiTWF0aE1MXCIsXG5cdFwic3NtbFwiOiBcIlNTTUxcIixcblx0XCJyc3NcIjogXCJSU1NcIixcblx0XCJjc3NcIjogXCJDU1NcIixcblx0XCJjbGlrZVwiOiBcIkMtbGlrZVwiLFxuXHRcImpzXCI6IFwiSmF2YVNjcmlwdFwiLFxuXHRcImFiYXBcIjogXCJBQkFQXCIsXG5cdFwiYWJuZlwiOiBcIkFCTkZcIixcblx0XCJhbFwiOiBcIkFMXCIsXG5cdFwiYW50bHI0XCI6IFwiQU5UTFI0XCIsXG5cdFwiZzRcIjogXCJBTlRMUjRcIixcblx0XCJhcGFjaGVjb25mXCI6IFwiQXBhY2hlIENvbmZpZ3VyYXRpb25cIixcblx0XCJhcGxcIjogXCJBUExcIixcblx0XCJhcWxcIjogXCJBUUxcIixcblx0XCJpbm9cIjogXCJBcmR1aW5vXCIsXG5cdFwiYXJmZlwiOiBcIkFSRkZcIixcblx0XCJhcm1hc21cIjogXCJBUk0gQXNzZW1ibHlcIixcblx0XCJhcm0tYXNtXCI6IFwiQVJNIEFzc2VtYmx5XCIsXG5cdFwiYXJ0XCI6IFwiQXJ0dXJvXCIsXG5cdFwiYXNjaWlkb2NcIjogXCJBc2NpaURvY1wiLFxuXHRcImFkb2NcIjogXCJBc2NpaURvY1wiLFxuXHRcImFzcG5ldFwiOiBcIkFTUC5ORVQgKEMjKVwiLFxuXHRcImFzbTY1MDJcIjogXCI2NTAyIEFzc2VtYmx5XCIsXG5cdFwiYXNtYXRtZWxcIjogXCJBdG1lbCBBVlIgQXNzZW1ibHlcIixcblx0XCJhdXRvaG90a2V5XCI6IFwiQXV0b0hvdGtleVwiLFxuXHRcImF1dG9pdFwiOiBcIkF1dG9JdFwiLFxuXHRcImF2aXN5bnRoXCI6IFwiQXZpU3ludGhcIixcblx0XCJhdnNcIjogXCJBdmlTeW50aFwiLFxuXHRcImF2cm8taWRsXCI6IFwiQXZybyBJRExcIixcblx0XCJhdmRsXCI6IFwiQXZybyBJRExcIixcblx0XCJhd2tcIjogXCJBV0tcIixcblx0XCJnYXdrXCI6IFwiR0FXS1wiLFxuXHRcInNoXCI6IFwiU2hlbGxcIixcblx0XCJiYXNpY1wiOiBcIkJBU0lDXCIsXG5cdFwiYmJjb2RlXCI6IFwiQkJjb2RlXCIsXG5cdFwiYmJqXCI6IFwiQkJqXCIsXG5cdFwiYm5mXCI6IFwiQk5GXCIsXG5cdFwicmJuZlwiOiBcIlJCTkZcIixcblx0XCJicW5cIjogXCJCUU5cIixcblx0XCJic2xcIjogXCJCU0wgKDFDOkVudGVycHJpc2UpXCIsXG5cdFwib3NjcmlwdFwiOiBcIk9uZVNjcmlwdFwiLFxuXHRcImNzaGFycFwiOiBcIkMjXCIsXG5cdFwiY3NcIjogXCJDI1wiLFxuXHRcImRvdG5ldFwiOiBcIkMjXCIsXG5cdFwiY3BwXCI6IFwiQysrXCIsXG5cdFwiY2ZzY3JpcHRcIjogXCJDRlNjcmlwdFwiLFxuXHRcImNmY1wiOiBcIkNGU2NyaXB0XCIsXG5cdFwiY2lsXCI6IFwiQ0lMXCIsXG5cdFwiY2lsa2NcIjogXCJDaWxrL0NcIixcblx0XCJjaWxrLWNcIjogXCJDaWxrL0NcIixcblx0XCJjaWxrY3BwXCI6IFwiQ2lsay9DKytcIixcblx0XCJjaWxrLWNwcFwiOiBcIkNpbGsvQysrXCIsXG5cdFwiY2lsa1wiOiBcIkNpbGsvQysrXCIsXG5cdFwiY21ha2VcIjogXCJDTWFrZVwiLFxuXHRcImNvYm9sXCI6IFwiQ09CT0xcIixcblx0XCJjb2ZmZWVcIjogXCJDb2ZmZWVTY3JpcHRcIixcblx0XCJjb25jXCI6IFwiQ29uY3VybmFzXCIsXG5cdFwiY3NwXCI6IFwiQ29udGVudC1TZWN1cml0eS1Qb2xpY3lcIixcblx0XCJjc3MtZXh0cmFzXCI6IFwiQ1NTIEV4dHJhc1wiLFxuXHRcImNzdlwiOiBcIkNTVlwiLFxuXHRcImN1ZVwiOiBcIkNVRVwiLFxuXHRcImRhdGF3ZWF2ZVwiOiBcIkRhdGFXZWF2ZVwiLFxuXHRcImRheFwiOiBcIkRBWFwiLFxuXHRcImRqYW5nb1wiOiBcIkRqYW5nby9KaW5qYTJcIixcblx0XCJqaW5qYTJcIjogXCJEamFuZ28vSmluamEyXCIsXG5cdFwiZG5zLXpvbmUtZmlsZVwiOiBcIkROUyB6b25lIGZpbGVcIixcblx0XCJkbnMtem9uZVwiOiBcIkROUyB6b25lIGZpbGVcIixcblx0XCJkb2NrZXJmaWxlXCI6IFwiRG9ja2VyXCIsXG5cdFwiZG90XCI6IFwiRE9UIChHcmFwaHZpeilcIixcblx0XCJndlwiOiBcIkRPVCAoR3JhcGh2aXopXCIsXG5cdFwiZWJuZlwiOiBcIkVCTkZcIixcblx0XCJlZGl0b3Jjb25maWdcIjogXCJFZGl0b3JDb25maWdcIixcblx0XCJlanNcIjogXCJFSlNcIixcblx0XCJldGx1YVwiOiBcIkVtYmVkZGVkIEx1YSB0ZW1wbGF0aW5nXCIsXG5cdFwiZXJiXCI6IFwiRVJCXCIsXG5cdFwiZXhjZWwtZm9ybXVsYVwiOiBcIkV4Y2VsIEZvcm11bGFcIixcblx0XCJ4bHN4XCI6IFwiRXhjZWwgRm9ybXVsYVwiLFxuXHRcInhsc1wiOiBcIkV4Y2VsIEZvcm11bGFcIixcblx0XCJmc2hhcnBcIjogXCJGI1wiLFxuXHRcImZpcmVzdG9yZS1zZWN1cml0eS1ydWxlc1wiOiBcIkZpcmVzdG9yZSBzZWN1cml0eSBydWxlc1wiLFxuXHRcImZ0bFwiOiBcIkZyZWVNYXJrZXIgVGVtcGxhdGUgTGFuZ3VhZ2VcIixcblx0XCJnbWxcIjogXCJHYW1lTWFrZXIgTGFuZ3VhZ2VcIixcblx0XCJnYW1lbWFrZXJsYW5ndWFnZVwiOiBcIkdhbWVNYWtlciBMYW5ndWFnZVwiLFxuXHRcImdhcFwiOiBcIkdBUCAoQ0FTKVwiLFxuXHRcImdjb2RlXCI6IFwiRy1jb2RlXCIsXG5cdFwiZ2RzY3JpcHRcIjogXCJHRFNjcmlwdFwiLFxuXHRcImdlZGNvbVwiOiBcIkdFRENPTVwiLFxuXHRcImdldHRleHRcIjogXCJnZXR0ZXh0XCIsXG5cdFwicG9cIjogXCJnZXR0ZXh0XCIsXG5cdFwiZ2xzbFwiOiBcIkdMU0xcIixcblx0XCJnblwiOiBcIkdOXCIsXG5cdFwiZ25pXCI6IFwiR05cIixcblx0XCJsaW5rZXItc2NyaXB0XCI6IFwiR05VIExpbmtlciBTY3JpcHRcIixcblx0XCJsZFwiOiBcIkdOVSBMaW5rZXIgU2NyaXB0XCIsXG5cdFwiZ28tbW9kdWxlXCI6IFwiR28gbW9kdWxlXCIsXG5cdFwiZ28tbW9kXCI6IFwiR28gbW9kdWxlXCIsXG5cdFwiZ3JhcGhxbFwiOiBcIkdyYXBoUUxcIixcblx0XCJoYnNcIjogXCJIYW5kbGViYXJzXCIsXG5cdFwiaHNcIjogXCJIYXNrZWxsXCIsXG5cdFwiaGNsXCI6IFwiSENMXCIsXG5cdFwiaGxzbFwiOiBcIkhMU0xcIixcblx0XCJodHRwXCI6IFwiSFRUUFwiLFxuXHRcImhwa3BcIjogXCJIVFRQIFB1YmxpYy1LZXktUGluc1wiLFxuXHRcImhzdHNcIjogXCJIVFRQIFN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHlcIixcblx0XCJpY2hpZ29qYW1cIjogXCJJY2hpZ29KYW1cIixcblx0XCJpY3UtbWVzc2FnZS1mb3JtYXRcIjogXCJJQ1UgTWVzc2FnZSBGb3JtYXRcIixcblx0XCJpZHJcIjogXCJJZHJpc1wiLFxuXHRcImlnbm9yZVwiOiBcIi5pZ25vcmVcIixcblx0XCJnaXRpZ25vcmVcIjogXCIuZ2l0aWdub3JlXCIsXG5cdFwiaGdpZ25vcmVcIjogXCIuaGdpZ25vcmVcIixcblx0XCJucG1pZ25vcmVcIjogXCIubnBtaWdub3JlXCIsXG5cdFwiaW5mb3JtN1wiOiBcIkluZm9ybSA3XCIsXG5cdFwiamF2YWRvY1wiOiBcIkphdmFEb2NcIixcblx0XCJqYXZhZG9jbGlrZVwiOiBcIkphdmFEb2MtbGlrZVwiLFxuXHRcImphdmFzdGFja3RyYWNlXCI6IFwiSmF2YSBzdGFjayB0cmFjZVwiLFxuXHRcImpxXCI6IFwiSlFcIixcblx0XCJqc2RvY1wiOiBcIkpTRG9jXCIsXG5cdFwianMtZXh0cmFzXCI6IFwiSlMgRXh0cmFzXCIsXG5cdFwianNvblwiOiBcIkpTT05cIixcblx0XCJ3ZWJtYW5pZmVzdFwiOiBcIldlYiBBcHAgTWFuaWZlc3RcIixcblx0XCJqc29uNVwiOiBcIkpTT041XCIsXG5cdFwianNvbnBcIjogXCJKU09OUFwiLFxuXHRcImpzc3RhY2t0cmFjZVwiOiBcIkpTIHN0YWNrIHRyYWNlXCIsXG5cdFwianMtdGVtcGxhdGVzXCI6IFwiSlMgVGVtcGxhdGVzXCIsXG5cdFwia2VlcGFsaXZlZFwiOiBcIktlZXBhbGl2ZWQgQ29uZmlndXJlXCIsXG5cdFwia3RzXCI6IFwiS290bGluIFNjcmlwdFwiLFxuXHRcImt0XCI6IFwiS290bGluXCIsXG5cdFwia3VtaXJcIjogXCJLdU1pciAoXHUwNDFBXHUwNDQzXHUwNDFDXHUwNDM4XHUwNDQwKVwiLFxuXHRcImt1bVwiOiBcIkt1TWlyIChcdTA0MUFcdTA0NDNcdTA0MUNcdTA0MzhcdTA0NDApXCIsXG5cdFwibGF0ZXhcIjogXCJMYVRlWFwiLFxuXHRcInRleFwiOiBcIlRlWFwiLFxuXHRcImNvbnRleHRcIjogXCJDb25UZVh0XCIsXG5cdFwibGlseXBvbmRcIjogXCJMaWx5UG9uZFwiLFxuXHRcImx5XCI6IFwiTGlseVBvbmRcIixcblx0XCJlbWFjc1wiOiBcIkxpc3BcIixcblx0XCJlbGlzcFwiOiBcIkxpc3BcIixcblx0XCJlbWFjcy1saXNwXCI6IFwiTGlzcFwiLFxuXHRcImxsdm1cIjogXCJMTFZNIElSXCIsXG5cdFwibG9nXCI6IFwiTG9nIGZpbGVcIixcblx0XCJsb2xjb2RlXCI6IFwiTE9MQ09ERVwiLFxuXHRcIm1hZ21hXCI6IFwiTWFnbWEgKENBUylcIixcblx0XCJtZFwiOiBcIk1hcmtkb3duXCIsXG5cdFwibWFya3VwLXRlbXBsYXRpbmdcIjogXCJNYXJrdXAgdGVtcGxhdGluZ1wiLFxuXHRcIm1hdGxhYlwiOiBcIk1BVExBQlwiLFxuXHRcIm1heHNjcmlwdFwiOiBcIk1BWFNjcmlwdFwiLFxuXHRcIm1lbFwiOiBcIk1FTFwiLFxuXHRcIm1ldGFmb250XCI6IFwiTUVUQUZPTlRcIixcblx0XCJtb25nb2RiXCI6IFwiTW9uZ29EQlwiLFxuXHRcIm1vb25cIjogXCJNb29uU2NyaXB0XCIsXG5cdFwibjFxbFwiOiBcIk4xUUxcIixcblx0XCJuNGpzXCI6IFwiTjRKU1wiLFxuXHRcIm40anNkXCI6IFwiTjRKU1wiLFxuXHRcIm5hbmQydGV0cmlzLWhkbFwiOiBcIk5hbmQgVG8gVGV0cmlzIEhETFwiLFxuXHRcIm5hbmlzY3JpcHRcIjogXCJOYW5pbm92ZWwgU2NyaXB0XCIsXG5cdFwibmFuaVwiOiBcIk5hbmlub3ZlbCBTY3JpcHRcIixcblx0XCJuYXNtXCI6IFwiTkFTTVwiLFxuXHRcIm5lb25cIjogXCJORU9OXCIsXG5cdFwibmdpbnhcIjogXCJuZ2lueFwiLFxuXHRcIm5zaXNcIjogXCJOU0lTXCIsXG5cdFwib2JqZWN0aXZlY1wiOiBcIk9iamVjdGl2ZS1DXCIsXG5cdFwib2JqY1wiOiBcIk9iamVjdGl2ZS1DXCIsXG5cdFwib2NhbWxcIjogXCJPQ2FtbFwiLFxuXHRcIm9wZW5jbFwiOiBcIk9wZW5DTFwiLFxuXHRcIm9wZW5xYXNtXCI6IFwiT3BlblFhc21cIixcblx0XCJxYXNtXCI6IFwiT3BlblFhc21cIixcblx0XCJwYXJpZ3BcIjogXCJQQVJJL0dQXCIsXG5cdFwib2JqZWN0cGFzY2FsXCI6IFwiT2JqZWN0IFBhc2NhbFwiLFxuXHRcInBzbFwiOiBcIlBBVFJPTCBTY3JpcHRpbmcgTGFuZ3VhZ2VcIixcblx0XCJwY2F4aXNcIjogXCJQQy1BeGlzXCIsXG5cdFwicHhcIjogXCJQQy1BeGlzXCIsXG5cdFwicGVvcGxlY29kZVwiOiBcIlBlb3BsZUNvZGVcIixcblx0XCJwY29kZVwiOiBcIlBlb3BsZUNvZGVcIixcblx0XCJwaHBcIjogXCJQSFBcIixcblx0XCJwaHBkb2NcIjogXCJQSFBEb2NcIixcblx0XCJwaHAtZXh0cmFzXCI6IFwiUEhQIEV4dHJhc1wiLFxuXHRcInBsYW50LXVtbFwiOiBcIlBsYW50VU1MXCIsXG5cdFwicGxhbnR1bWxcIjogXCJQbGFudFVNTFwiLFxuXHRcInBsc3FsXCI6IFwiUEwvU1FMXCIsXG5cdFwicG93ZXJxdWVyeVwiOiBcIlBvd2VyUXVlcnlcIixcblx0XCJwcVwiOiBcIlBvd2VyUXVlcnlcIixcblx0XCJtc2NyaXB0XCI6IFwiUG93ZXJRdWVyeVwiLFxuXHRcInBvd2Vyc2hlbGxcIjogXCJQb3dlclNoZWxsXCIsXG5cdFwicHJvbXFsXCI6IFwiUHJvbVFMXCIsXG5cdFwicHJvcGVydGllc1wiOiBcIi5wcm9wZXJ0aWVzXCIsXG5cdFwicHJvdG9idWZcIjogXCJQcm90b2NvbCBCdWZmZXJzXCIsXG5cdFwicHVyZWJhc2ljXCI6IFwiUHVyZUJhc2ljXCIsXG5cdFwicGJmYXNtXCI6IFwiUHVyZUJhc2ljXCIsXG5cdFwicHVyc1wiOiBcIlB1cmVTY3JpcHRcIixcblx0XCJweVwiOiBcIlB5dGhvblwiLFxuXHRcInFzaGFycFwiOiBcIlEjXCIsXG5cdFwicXNcIjogXCJRI1wiLFxuXHRcInFcIjogXCJRIChrZGIrIGRhdGFiYXNlKVwiLFxuXHRcInFtbFwiOiBcIlFNTFwiLFxuXHRcInJrdFwiOiBcIlJhY2tldFwiLFxuXHRcImNzaHRtbFwiOiBcIlJhem9yIEMjXCIsXG5cdFwicmF6b3JcIjogXCJSYXpvciBDI1wiLFxuXHRcImpzeFwiOiBcIlJlYWN0IEpTWFwiLFxuXHRcInRzeFwiOiBcIlJlYWN0IFRTWFwiLFxuXHRcInJlbnB5XCI6IFwiUmVuJ3B5XCIsXG5cdFwicnB5XCI6IFwiUmVuJ3B5XCIsXG5cdFwicmVzXCI6IFwiUmVTY3JpcHRcIixcblx0XCJyZXN0XCI6IFwicmVTVCAocmVTdHJ1Y3R1cmVkVGV4dClcIixcblx0XCJyb2JvdGZyYW1ld29ya1wiOiBcIlJvYm90IEZyYW1ld29ya1wiLFxuXHRcInJvYm90XCI6IFwiUm9ib3QgRnJhbWV3b3JrXCIsXG5cdFwicmJcIjogXCJSdWJ5XCIsXG5cdFwic2FzXCI6IFwiU0FTXCIsXG5cdFwic2Fzc1wiOiBcIlNhc3MgKFNhc3MpXCIsXG5cdFwic2Nzc1wiOiBcIlNhc3MgKFNDU1MpXCIsXG5cdFwic2hlbGwtc2Vzc2lvblwiOiBcIlNoZWxsIHNlc3Npb25cIixcblx0XCJzaC1zZXNzaW9uXCI6IFwiU2hlbGwgc2Vzc2lvblwiLFxuXHRcInNoZWxsc2Vzc2lvblwiOiBcIlNoZWxsIHNlc3Npb25cIixcblx0XCJzbWxcIjogXCJTTUxcIixcblx0XCJzbWxualwiOiBcIlNNTC9OSlwiLFxuXHRcInNvbGlkaXR5XCI6IFwiU29saWRpdHkgKEV0aGVyZXVtKVwiLFxuXHRcInNvbFwiOiBcIlNvbGlkaXR5IChFdGhlcmV1bSlcIixcblx0XCJzb2x1dGlvbi1maWxlXCI6IFwiU29sdXRpb24gZmlsZVwiLFxuXHRcInNsblwiOiBcIlNvbHV0aW9uIGZpbGVcIixcblx0XCJzb3lcIjogXCJTb3kgKENsb3N1cmUgVGVtcGxhdGUpXCIsXG5cdFwic3BhcnFsXCI6IFwiU1BBUlFMXCIsXG5cdFwicnFcIjogXCJTUEFSUUxcIixcblx0XCJzcGx1bmstc3BsXCI6IFwiU3BsdW5rIFNQTFwiLFxuXHRcInNxZlwiOiBcIlNRRjogU3RhdHVzIFF1byBGdW5jdGlvbiAoQXJtYSAzKVwiLFxuXHRcInNxbFwiOiBcIlNRTFwiLFxuXHRcInN0YXRhXCI6IFwiU3RhdGEgQWRvXCIsXG5cdFwiaWVjc3RcIjogXCJTdHJ1Y3R1cmVkIFRleHQgKElFQyA2MTEzMS0zKVwiLFxuXHRcInN1cGVyY29sbGlkZXJcIjogXCJTdXBlckNvbGxpZGVyXCIsXG5cdFwic2NsYW5nXCI6IFwiU3VwZXJDb2xsaWRlclwiLFxuXHRcInN5c3RlbWRcIjogXCJTeXN0ZW1kIGNvbmZpZ3VyYXRpb24gZmlsZVwiLFxuXHRcInQ0LXRlbXBsYXRpbmdcIjogXCJUNCB0ZW1wbGF0aW5nXCIsXG5cdFwidDQtY3NcIjogXCJUNCBUZXh0IFRlbXBsYXRlcyAoQyMpXCIsXG5cdFwidDRcIjogXCJUNCBUZXh0IFRlbXBsYXRlcyAoQyMpXCIsXG5cdFwidDQtdmJcIjogXCJUNCBUZXh0IFRlbXBsYXRlcyAoVkIpXCIsXG5cdFwidGFwXCI6IFwiVEFQXCIsXG5cdFwidHQyXCI6IFwiVGVtcGxhdGUgVG9vbGtpdCAyXCIsXG5cdFwidG9tbFwiOiBcIlRPTUxcIixcblx0XCJ0cmlja2xlXCI6IFwidHJpY2tsZVwiLFxuXHRcInRyb3lcIjogXCJ0cm95XCIsXG5cdFwidHJpZ1wiOiBcIlRyaUdcIixcblx0XCJ0c1wiOiBcIlR5cGVTY3JpcHRcIixcblx0XCJ0c2NvbmZpZ1wiOiBcIlRTQ29uZmlnXCIsXG5cdFwidXNjcmlwdFwiOiBcIlVucmVhbFNjcmlwdFwiLFxuXHRcInVjXCI6IFwiVW5yZWFsU2NyaXB0XCIsXG5cdFwidW9yYXpvclwiOiBcIlVPIFJhem9yIFNjcmlwdFwiLFxuXHRcInVyaVwiOiBcIlVSSVwiLFxuXHRcInVybFwiOiBcIlVSTFwiLFxuXHRcInZibmV0XCI6IFwiVkIuTmV0XCIsXG5cdFwidmhkbFwiOiBcIlZIRExcIixcblx0XCJ2aW1cIjogXCJ2aW1cIixcblx0XCJ2aXN1YWwtYmFzaWNcIjogXCJWaXN1YWwgQmFzaWNcIixcblx0XCJ2YmFcIjogXCJWQkFcIixcblx0XCJ2YlwiOiBcIlZpc3VhbCBCYXNpY1wiLFxuXHRcIndhc21cIjogXCJXZWJBc3NlbWJseVwiLFxuXHRcIndlYi1pZGxcIjogXCJXZWIgSURMXCIsXG5cdFwid2ViaWRsXCI6IFwiV2ViIElETFwiLFxuXHRcIndnc2xcIjogXCJXR1NMXCIsXG5cdFwid2lraVwiOiBcIldpa2kgbWFya3VwXCIsXG5cdFwid29sZnJhbVwiOiBcIldvbGZyYW0gbGFuZ3VhZ2VcIixcblx0XCJuYlwiOiBcIk1hdGhlbWF0aWNhIE5vdGVib29rXCIsXG5cdFwid2xcIjogXCJXb2xmcmFtIGxhbmd1YWdlXCIsXG5cdFwieGVvcmFjdWJlXCI6IFwiWGVvcmFDdWJlXCIsXG5cdFwieG1sLWRvY1wiOiBcIlhNTCBkb2MgKC5uZXQpXCIsXG5cdFwieG9qb1wiOiBcIlhvam8gKFJFQUxiYXNpYylcIixcblx0XCJ4cXVlcnlcIjogXCJYUXVlcnlcIixcblx0XCJ5YW1sXCI6IFwiWUFNTFwiLFxuXHRcInltbFwiOiBcIllBTUxcIixcblx0XCJ5YW5nXCI6IFwiWUFOR1wiLFxufTsgXG5jb25zdCBNQU5VQUxfUFJJU01fTEFOR1VBR0VTOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHsgLy8gTWFudWFsbHkgZ2VuZXJhdGVkIGxpc3QgZnJvbSBodHRwczovL3ByaXNtanMuY29tLyAgLSAgMjk3IGxhbmd1YWdlc1xuXHRcImNzc1wiOlwiQ1NTXCIsXG5cdFwiY2xpa2VcIjpcIkMtbGlrZVwiLFxuXHRcImphdmFzY3JpcHRcIjpcIkphdmFTY3JpcHRcIixcblx0XCJqc1wiOlwiSmF2YVNjcmlwdFwiLFxuXHRcImFiYXBcIjpcIkFCQVBcIixcblx0XCJhYm5mXCI6XCJBQk5GXCIsXG5cdFwiYWN0aW9uc2NyaXB0XCI6XCJBY3Rpb25TY3JpcHRcIixcblx0XCJhZGFcIjpcIkFkYVwiLFxuXHRcImFnZGFcIjpcIkFnZGFcIixcblx0XCJhbFwiOlwiQUxcIixcblx0XCJhbnRscjRcIjpcIkFOVExSNFwiLFxuXHRcImc0XCI6XCJBTlRMUjRcIixcblx0XCJhcGFjaGVjb25mXCI6XCJBcGFjaGUgQ29uZmlndXJhdGlvblwiLFxuXHRcImFwZXhcIjpcIkFwZXhcIixcblx0XCJhcGxcIjpcIkFQTFwiLFxuXHRcImFwcGxlc2NyaXB0XCI6XCJBcHBsZVNjcmlwdFwiLFxuXHRcImFxbFwiOlwiQVFMXCIsXG5cdFwiYXJkdWlub1wiOlwiQXJkdWlub1wiLFxuXHRcImlub1wiOlwiQXJkdWlub1wiLFxuXHRcImFyZmZcIjpcIkFSRkZcIixcblx0XCJhcm1hc21cIjpcIkFSTSBBc3NlbWJseVwiLFxuXHRcImFybS1hc21cIjpcIkFSTSBBc3NlbWJseVwiLFxuXHRcImFydHVyb1wiOlwiQXJ0dXJvXCIsXG5cdFwiYXJ0XCI6XCJBcnR1cm9cIixcblx0XCJhc2NpaWRvY1wiOlwiQXNjaWlEb2NcIixcblx0XCJhZG9jXCI6XCJBc2NpaURvY1wiLFxuXHRcImFzcG5ldFwiOlwiQVNQLk5FVCAoQyMpXCIsXG5cdFwiYXNtNjUwMlwiOlwiNjUwMiBBc3NlbWJseVwiLFxuXHRcImFzbWF0bWVsXCI6XCJBdG1lbCBBVlIgQXNzZW1ibHlcIixcblx0XCJhdXRvaG90a2V5XCI6XCJBdXRvSG90a2V5XCIsXG5cdFwiYXV0b2l0XCI6XCJBdXRvSXRcIixcblx0XCJhdmlzeW50aFwiOlwiQXZpU3ludGhcIixcblx0XCJhdnNcIjpcIkF2aVN5bnRoXCIsXG5cdFwiYXZyby1pZGxcIjpcIkF2cm8gSURMXCIsXG5cdFwiYXZkbFwiOlwiQXZybyBJRExcIixcblx0XCJhd2tcIjpcIkFXS1wiLFxuXHRcImdhd2tcIjpcIkdBV0tcIixcblx0XCJiYXNoXCI6XCJCYXNoXCIsXG5cdFwic2hcIjpcIlNoZWxsXCIsXG5cdFwic2hlbGxcIjpcIlNoZWxsXCIsXG5cdFwiYmFzaWNcIjpcIkJBU0lDXCIsXG5cdFwiYmF0Y2hcIjpcIkJhdGNoXCIsXG5cdFwiYmJjb2RlXCI6XCJCQmNvZGVcIixcblx0XCJzaG9ydGNvZGVcIjpcIkJCY29kZVwiLFxuXHRcImJialwiOlwiQkJqXCIsXG5cdFwiYmlyYlwiOlwiQmlyYlwiLFxuXHRcImJpc29uXCI6XCJCaXNvblwiLFxuXHRcImJuZlwiOlwiQk5GXCIsXG5cdFwicmJuZlwiOlwiQk5GXCIsXG5cdFwiYnFuXCI6XCJCUU5cIixcblx0XCJicmFpbmZ1Y2tcIjpcIkJyYWluZnVja1wiLFxuXHRcImJyaWdodHNjcmlwdFwiOlwiQnJpZ2h0U2NyaXB0XCIsXG5cdFwiYnJvXCI6XCJCcm9cIixcblx0XCJic2xcIjpcIkJTTCAoMUMpXCIsXG5cdFwib3NjcmlwdFwiOlwiQlNMICgxQylcIixcblx0XCJjXCI6XCJDXCIsXG5cdFwiY3NoYXJwXCI6XCJDI1wiLFxuXHRcImNzXCI6XCJDI1wiLFxuXHRcImRvdG5ldFwiOlwiQyNcIixcblx0XCJjcHBcIjpcIkMrK1wiLFxuXHRcImNmc2NyaXB0XCI6XCJDRlNjcmlwdFwiLFxuXHRcImNmY1wiOlwiQ0ZTY3JpcHRcIixcblx0XCJjaGFpc2NyaXB0XCI6XCJDaGFpU2NyaXB0XCIsXG5cdFwiY2lsXCI6XCJDSUxcIixcblx0XCJjaWxrY1wiOlwiQ2lsay9DXCIsXG5cdFwiY2lsay1jXCI6XCJDaWxrL0NcIixcblx0XCJjaWxrY3BwXCI6XCJDaWxrL0MrK1wiLFxuXHRcImNpbGstY3BwXCI6XCJDaWxrL0MrK1wiLFxuXHRcImNpbGtcIjpcIkNpbGsvQysrXCIsXG5cdFwiY2xvanVyZVwiOlwiQ2xvanVyZVwiLFxuXHRcImNtYWtlXCI6XCJDTWFrZVwiLFxuXHRcImNvYm9sXCI6XCJDT0JPTFwiLFxuXHRcImNvZmZlZXNjcmlwdFwiOlwiQ29mZmVlU2NyaXB0XCIsXG5cdFwiY29mZmVlXCI6XCJDb2ZmZWVTY3JpcHRcIixcblx0XCJjb25jdXJuYXNcIjpcIkNvbmN1cm5hc1wiLFxuXHRcImNvbmNcIjpcIkNvbmN1cm5hc1wiLFxuXHRcImNzcFwiOlwiQ29udGVudC1TZWN1cml0eS1Qb2xpY3lcIixcblx0XCJjb29rbGFuZ1wiOlwiQ29va2xhbmdcIixcblx0XCJjb3FcIjpcIkNvcVwiLFxuXHRcImNyeXN0YWxcIjpcIkNyeXN0YWxcIixcblx0XCJjc3MtZXh0cmFzXCI6XCJDU1MgRXh0cmFzXCIsXG5cdFwiY3N2XCI6XCJDU1ZcIixcblx0XCJjdWVcIjpcIkNVRVwiLFxuXHRcImN5cGhlclwiOlwiQ3lwaGVyXCIsXG5cdFwiZFwiOlwiRFwiLFxuXHRcImRhcnRcIjpcIkRhcnRcIixcblx0XCJkYXRhd2VhdmVcIjpcIkRhdGFXZWF2ZVwiLFxuXHRcImRheFwiOlwiREFYXCIsXG5cdFwiZGhhbGxcIjpcIkRoYWxsXCIsXG5cdFwiZGlmZlwiOlwiRGlmZlwiLFxuXHRcImRqYW5nb1wiOlwiRGphbmdvL0ppbmphMlwiLFxuXHRcImppbmphMlwiOlwiRGphbmdvL0ppbmphMlwiLFxuXHRcImRucy16b25lLWZpbGVcIjpcIkROUyB6b25lIGZpbGVcIixcblx0XCJkbnMtem9uZVwiOlwiRE5TIHpvbmUgZmlsZVwiLFxuXHRcImRvY2tlclwiOlwiRG9ja2VyXCIsXG5cdFwiZG9ja2VyZmlsZVwiOlwiRG9ja2VyXCIsXG5cdFwiZG90XCI6XCJET1QgKEdyYXBodml6KVwiLFxuXHRcImd2XCI6XCJET1QgKEdyYXBodml6KVwiLFxuXHRcImVibmZcIjpcIkVCTkZcIixcblx0XCJlZGl0b3Jjb25maWdcIjpcIkVkaXRvckNvbmZpZ1wiLFxuXHRcImVpZmZlbFwiOlwiRWlmZmVsXCIsXG5cdFwiZWpzXCI6XCJFSlNcIixcblx0XCJldGFcIjpcIkVKU1wiLFxuXHRcImVsaXhpclwiOlwiRWxpeGlyXCIsXG5cdFwiZWxtXCI6XCJFbG1cIixcblx0XCJldGx1YVwiOlwiRW1iZWRkZWQgTHVhIHRlbXBsYXRpbmdcIixcblx0XCJlcmJcIjpcIkVSQlwiLFxuXHRcImVybGFuZ1wiOlwiRXJsYW5nXCIsXG5cdFwiZXhjZWwtZm9ybXVsYVwiOlwiRXhjZWwgRm9ybXVsYVwiLFxuXHRcInhsc3hcIjpcIkV4Y2VsIEZvcm11bGFcIixcblx0XCJ4bHNcIjpcIkV4Y2VsIEZvcm11bGFcIixcblx0XCJmc2hhcnBcIjpcIkYjXCIsXG5cdFwiZmFjdG9yXCI6XCJGYWN0b3JcIixcblx0XCJmYWxzZVwiOlwiRmFsc2VcIixcblx0XCJmaXJlc3RvcmUtc2VjdXJpdHktcnVsZXNcIjpcIkZpcmVzdG9yZSBzZWN1cml0eSBydWxlc1wiLFxuXHRcImZsb3dcIjpcIkZsb3dcIixcblx0XCJmb3J0cmFuXCI6XCJGb3J0cmFuXCIsXG5cdFwiZnRsXCI6XCJGcmVlTWFya2VyIFRlbXBsYXRlIExhbmd1YWdlXCIsXG5cdFwiZ21sXCI6XCJHYW1lTWFrZXIgTGFuZ3VhZ2VcIixcblx0XCJnYW1lbWFrZXJsYW5ndWFnZVwiOlwiR2FtZU1ha2VyIExhbmd1YWdlXCIsXG5cdFwiZ2FwXCI6XCJHQVAgKENBUylcIixcblx0XCJnY29kZVwiOlwiRy1jb2RlXCIsXG5cdFwiZ2RzY3JpcHRcIjpcIkdEU2NyaXB0XCIsXG5cdFwiZ2VkY29tXCI6XCJHRURDT01cIixcblx0XCJnZXR0ZXh0XCI6XCJnZXR0ZXh0XCIsXG5cdFwicG9cIjpcImdldHRleHRcIixcblx0XCJnaGVya2luXCI6XCJHaGVya2luXCIsXG5cdFwiZ2l0XCI6XCJHaXRcIixcblx0XCJnbHNsXCI6XCJHTFNMXCIsXG5cdFwiZ25cIjpcIkdOXCIsXG5cdFwiZ25pXCI6XCJHTlwiLFxuXHRcImxpbmtlci1zY3JpcHRcIjpcIkdOVSBMaW5rZXIgU2NyaXB0XCIsXG5cdFwibGRcIjpcIkdOVSBMaW5rZXIgU2NyaXB0XCIsXG5cdFwiZ29cIjpcIkdvXCIsXG5cdFwiZ28tbW9kdWxlXCI6XCJHbyBtb2R1bGVcIixcblx0XCJnby1tb2RcIjpcIkdvIG1vZHVsZVwiLFxuXHRcImdyYWRsZVwiOlwiR3JhZGxlXCIsXG5cdFwiZ3JhcGhxbFwiOlwiR3JhcGhRTFwiLFxuXHRcImdyb292eVwiOlwiR3Jvb3Z5XCIsXG5cdFwiaGFtbFwiOlwiSGFtbFwiLFxuXHRcImhhbmRsZWJhcnNcIjpcIkhhbmRsZWJhcnNcIixcblx0XCJoYnNcIjpcIkhhbmRsZWJhcnNcIixcblx0XCJtdXN0YWNoZVwiOlwiSGFuZGxlYmFyc1wiLFxuXHRcImhhc2tlbGxcIjpcIkhhc2tlbGxcIixcblx0XCJoc1wiOlwiSGFza2VsbFwiLFxuXHRcImhheGVcIjpcIkhheGVcIixcblx0XCJoY2xcIjpcIkhDTFwiLFxuXHRcImhsc2xcIjpcIkhMU0xcIixcblx0XCJob29uXCI6XCJIb29uXCIsXG5cdFwiaHR0cFwiOlwiSFRUUFwiLFxuXHRcImhwa3BcIjpcIkhUVFAgUHVibGljLUtleS1QaW5zXCIsXG5cdFwiaHN0c1wiOlwiSFRUUCBTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5XCIsXG5cdFwiaWNoaWdvamFtXCI6XCJJY2hpZ29KYW1cIixcblx0XCJpY29uXCI6XCJJY29uXCIsXG5cdFwiaWN1LW1lc3NhZ2UtZm9ybWF0XCI6XCJJQ1UgTWVzc2FnZSBGb3JtYXRcIixcblx0XCJpZHJpc1wiOlwiSWRyaXNcIixcblx0XCJpZHJcIjpcIklkcmlzXCIsXG5cdFwiaW5mb3JtN1wiOlwiSW5mb3JtIDdcIixcblx0XCJpbmlcIjpcIkluaVwiLFxuXHRcImlvXCI6XCJJb1wiLFxuXHRcImpcIjpcIkpcIixcblx0XCJqYXZhXCI6XCJKYXZhXCIsXG5cdFwiamF2YWRvY1wiOlwiSmF2YURvY1wiLFxuXHRcImphdmFkb2NsaWtlXCI6XCJKYXZhRG9jLWxpa2VcIixcblx0XCJqYXZhc3RhY2t0cmFjZVwiOlwiSmF2YSBzdGFjayB0cmFjZVwiLFxuXHRcImpleGxcIjpcIkpleGxcIixcblx0XCJqb2xpZVwiOlwiSm9saWVcIixcblx0XCJqcVwiOlwiSlFcIixcblx0XCJqc2RvY1wiOlwiSlNEb2NcIixcblx0XCJqcy1leHRyYXNcIjpcIkpTIEV4dHJhc1wiLFxuXHRcImpzb25cIjpcIkpTT05cIixcblx0XCJ3ZWJtYW5pZmVzdFwiOlwiSlNPTlwiLFxuXHRcImpzb241XCI6XCJKU09ONVwiLFxuXHRcImpzb25wXCI6XCJKU09OUFwiLFxuXHRcImpzc3RhY2t0cmFjZVwiOlwiSlMgc3RhY2sgdHJhY2VcIixcblx0XCJqcy10ZW1wbGF0ZXNcIjpcIkpTIFRlbXBsYXRlc1wiLFxuXHRcImp1bGlhXCI6XCJKdWxpYVwiLFxuXHRcImtlZXBhbGl2ZWRcIjpcIktlZXBhbGl2ZWQgQ29uZmlndXJlXCIsXG5cdFwia2V5bWFuXCI6XCJLZXltYW5cIixcblx0XCJrb3RsaW5cIjpcIktvdGxpblwiLFxuXHRcImt0XCI6XCJLb3RsaW5cIixcblx0XCJrdHNcIjpcIktvdGxpblwiLFxuXHRcImt1bWlyXCI6XCJLdU1pciAoXHUwNDFBXHUwNDQzXHUwNDFDXHUwNDM4XHUwNDQwKVwiLFxuXHRcImt1bVwiOlwiS3VNaXIgKFx1MDQxQVx1MDQ0M1x1MDQxQ1x1MDQzOFx1MDQ0MClcIixcblx0XCJrdXN0b1wiOlwiS3VzdG9cIixcblx0XCJsYXRleFwiOlwiTGFUZVhcIixcblx0XCJ0ZXhcIjpcIkxhVGVYXCIsXG5cdFwiY29udGV4dFwiOlwiTGFUZVhcIixcblx0XCJsYXR0ZVwiOlwiTGF0dGVcIixcblx0XCJsZXNzXCI6XCJMZXNzXCIsXG5cdFwibGlseXBvbmRcIjpcIkxpbHlQb25kXCIsXG5cdFwibHlcIjpcIkxpbHlQb25kXCIsXG5cdFwibGlxdWlkXCI6XCJMaXF1aWRcIixcblx0XCJsaXNwXCI6XCJMaXNwXCIsXG5cdFwiZW1hY3NcIjpcIkxpc3BcIixcblx0XCJlbGlzcFwiOlwiTGlzcFwiLFxuXHRcImVtYWNzLWxpc3BcIjpcIkxpc3BcIixcblx0XCJsaXZlc2NyaXB0XCI6XCJMaXZlU2NyaXB0XCIsXG5cdFwibGx2bVwiOlwiTExWTSBJUlwiLFxuXHRcImxvZ1wiOlwiTG9nIGZpbGVcIixcblx0XCJsb2xjb2RlXCI6XCJMT0xDT0RFXCIsXG5cdFwibHVhXCI6XCJMdWFcIixcblx0XCJtYWdtYVwiOlwiTWFnbWEgKENBUylcIixcblx0XCJtYWtlZmlsZVwiOlwiTWFrZWZpbGVcIixcblx0XCJtYXJrZG93blwiOlwiTWFya2Rvd25cIixcblx0XCJtZFwiOlwiTWFya2Rvd25cIixcblx0XCJtYXJrdXAtdGVtcGxhdGluZ1wiOlwiTWFya3VwIHRlbXBsYXRpbmdcIixcblx0XCJtYXRhXCI6XCJNYXRhXCIsXG5cdFwibWF0bGFiXCI6XCJNQVRMQUJcIixcblx0XCJtYXhzY3JpcHRcIjpcIk1BWFNjcmlwdFwiLFxuXHRcIm1lbFwiOlwiTUVMXCIsXG5cdFwibWVybWFpZFwiOlwiTWVybWFpZFwiLFxuXHRcIm1ldGFmb250XCI6XCJNRVRBRk9OVFwiLFxuXHRcIm1pemFyXCI6XCJNaXphclwiLFxuXHRcIm1vbmdvZGJcIjpcIk1vbmdvREJcIixcblx0XCJtb25rZXlcIjpcIk1vbmtleVwiLFxuXHRcIm1vb25zY3JpcHRcIjpcIk1vb25TY3JpcHRcIixcblx0XCJtb29uXCI6XCJNb29uU2NyaXB0XCIsXG5cdFwibjFxbFwiOlwiTjFRTFwiLFxuXHRcIm40anNcIjpcIk40SlNcIixcblx0XCJuNGpzZFwiOlwiTjRKU1wiLFxuXHRcIm5hbmQydGV0cmlzLWhkbFwiOlwiTmFuZCBUbyBUZXRyaXMgSERMXCIsXG5cdFwibmFuaXNjcmlwdFwiOlwiTmFuaW5vdmVsIFNjcmlwdFwiLFxuXHRcIm5hbmlcIjpcIk5hbmlub3ZlbCBTY3JpcHRcIixcblx0XCJuYXNtXCI6XCJOQVNNXCIsXG5cdFwibmVvblwiOlwiTkVPTlwiLFxuXHRcIm5ldm9kXCI6XCJOZXZvZFwiLFxuXHRcIm5naW54XCI6XCJuZ2lueFwiLFxuXHRcIm5pbVwiOlwiTmltXCIsXG5cdFwibml4XCI6XCJOaXhcIixcblx0XCJuc2lzXCI6XCJOU0lTXCIsXG5cdFwib2JqZWN0aXZlY1wiOlwiT2JqZWN0aXZlLUNcIixcblx0XCJvYmpjXCI6XCJPYmplY3RpdmUtQ1wiLFxuXHRcIm9jYW1sXCI6XCJPQ2FtbFwiLFxuXHRcIm9kaW5cIjpcIk9kaW5cIixcblx0XCJvcGVuY2xcIjpcIk9wZW5DTFwiLFxuXHRcIm9wZW5xYXNtXCI6XCJPcGVuUWFzbVwiLFxuXHRcInFhc21cIjpcIk9wZW5RYXNtXCIsXG5cdFwib3pcIjpcIk96XCIsXG5cdFwicGFyaWdwXCI6XCJQQVJJL0dQXCIsXG5cdFwicGFyc2VyXCI6XCJQYXJzZXJcIixcblx0XCJwYXNjYWxcIjpcIlBhc2NhbFwiLFxuXHRcInBhc2NhbGlnb1wiOlwiUGFzY2FsaWdvXCIsXG5cdFwicHNsXCI6XCJQQVRST0wgU2NyaXB0aW5nIExhbmd1YWdlXCIsXG5cdFwicGNheGlzXCI6XCJQQy1BeGlzXCIsXG5cdFwicHhcIjpcIlBDLUF4aXNcIixcblx0XCJwZW9wbGVjb2RlXCI6XCJQZW9wbGVDb2RlXCIsXG5cdFwicGNvZGVcIjpcIlBlb3BsZUNvZGVcIixcblx0XCJwZXJsXCI6XCJQZXJsXCIsXG5cdFwicGhwXCI6XCJQSFBcIixcblx0XCJwaHBkb2NcIjpcIlBIUERvY1wiLFxuXHRcInBocC1leHRyYXNcIjpcIlBIUCBFeHRyYXNcIixcblx0XCJwbGFudC11bWxcIjpcIlBsYW50VU1MXCIsXG5cdFwicGxhbnR1bWxcIjpcIlBsYW50VU1MXCIsXG5cdFwicGxzcWxcIjpcIlBML1NRTFwiLFxuXHRcInBvd2VycXVlcnlcIjpcIlBvd2VyUXVlcnlcIixcblx0XCJwcVwiOlwiUG93ZXJRdWVyeVwiLFxuXHRcIm1zY3JpcHRcIjpcIlBvd2VyUXVlcnlcIixcblx0XCJwb3dlcnNoZWxsXCI6XCJQb3dlclNoZWxsXCIsXG5cdFwicHJvY2Vzc2luZ1wiOlwiUHJvY2Vzc2luZ1wiLFxuXHRcInByb2xvZ1wiOlwiUHJvbG9nXCIsXG5cdFwicHJvbXFsXCI6XCJQcm9tUUxcIixcblx0XCJwcm9wZXJ0aWVzXCI6XCIucHJvcGVydGllc1wiLFxuXHRcInByb3RvYnVmXCI6XCJQcm90b2NvbCBCdWZmZXJzXCIsXG5cdFwicHVnXCI6XCJQdWdcIixcblx0XCJwdXBwZXRcIjpcIlB1cHBldFwiLFxuXHRcInB1cmVcIjpcIlB1cmVcIixcblx0XCJwdXJlYmFzaWNcIjpcIlB1cmVCYXNpY1wiLFxuXHRcInBiZmFzbVwiOlwiUHVyZUJhc2ljXCIsXG5cdFwicHVyZXNjcmlwdFwiOlwiUHVyZVNjcmlwdFwiLFxuXHRcInB1cnNcIjpcIlB1cmVTY3JpcHRcIixcblx0XCJweXRob25cIjpcIlB5dGhvblwiLFxuXHRcInB5XCI6XCJQeXRob25cIixcblx0XCJxc2hhcnBcIjpcIlEjXCIsXG5cdFwicXNcIjpcIlEjXCIsXG5cdFwicVwiOlwiUSAoa2RiKyBkYXRhYmFzZSlcIixcblx0XCJxbWxcIjpcIlFNTFwiLFxuXHRcInFvcmVcIjpcIlFvcmVcIixcblx0XCJyXCI6XCJSXCIsXG5cdFwicmFja2V0XCI6XCJSYWNrZXRcIixcblx0XCJya3RcIjpcIlJhY2tldFwiLFxuXHRcImNzaHRtbFwiOlwiUmF6b3IgQyNcIixcblx0XCJqc3hcIjpcIlJlYWN0IEpTWFwiLFxuXHRcInRzeFwiOlwiUmVhY3QgVFNYXCIsXG5cdFwicmVhc29uXCI6XCJSZWFzb25cIixcblx0XCJyZWdleFwiOlwiUmVnZXhcIixcblx0XCJyZWdvXCI6XCJSZWdvXCIsXG5cdFwicmVucHlcIjpcIlJlbidweVwiLFxuXHRcInJweVwiOlwiUmVuJ3B5XCIsXG5cdFwicmVzY3JpcHRcIjpcIlJlU2NyaXB0XCIsXG5cdFwicmVzXCI6XCJSZVNjcmlwdFwiLFxuXHRcInJlc3RcIjpcInJlU1QgKHJlU3RydWN0dXJlZFRleHQpXCIsXG5cdFwicmlwXCI6XCJSaXBcIixcblx0XCJyb2JvY29uZlwiOlwiUm9ib2NvbmZcIixcblx0XCJyb2JvdGZyYW1ld29ya1wiOlwiUm9ib3QgRnJhbWV3b3JrXCIsXG5cdFwicm9ib3RcIjpcIlJvYm90IEZyYW1ld29ya1wiLFxuXHRcInJ1YnlcIjpcIlJ1YnlcIixcblx0XCJyYlwiOlwiUnVieVwiLFxuXHRcInJ1c3RcIjpcIlJ1c3RcIixcblx0XCJzYXNcIjpcIlNBU1wiLFxuXHRcInNhc3NcIjpcIlNhc3MgKFNhc3MpXCIsXG5cdFwic2Nzc1wiOlwiU2FzcyAoU0NTUylcIixcblx0XCJzY2FsYVwiOlwiU2NhbGFcIixcblx0XCJzY2hlbWVcIjpcIlNjaGVtZVwiLFxuXHRcInNoZWxsLXNlc3Npb25cIjpcIlNoZWxsIHNlc3Npb25cIixcblx0XCJzaC1zZXNzaW9uXCI6XCJTaGVsbCBzZXNzaW9uXCIsXG5cdFwic2hlbGxzZXNzaW9uXCI6XCJTaGVsbCBzZXNzaW9uXCIsXG5cdFwic21hbGlcIjpcIlNtYWxpXCIsXG5cdFwic21hbGx0YWxrXCI6XCJTbWFsbHRhbGtcIixcblx0XCJzbWFydHlcIjpcIlNtYXJ0eVwiLFxuXHRcInNtbFwiOlwiU01MXCIsXG5cdFwic21sbmpcIjpcIlNNTFwiLFxuXHRcInNvbGlkaXR5XCI6XCJTb2xpZGl0eSAoRXRoZXJldW0pXCIsXG5cdFwic29sXCI6XCJTb2xpZGl0eSAoRXRoZXJldW0pXCIsXG5cdFwic29sdXRpb24tZmlsZVwiOlwiU29sdXRpb24gZmlsZVwiLFxuXHRcInNsblwiOlwiU29sdXRpb24gZmlsZVwiLFxuXHRcInNveVwiOlwiU295IChDbG9zdXJlIFRlbXBsYXRlKVwiLFxuXHRcInNwYXJxbFwiOlwiU1BBUlFMXCIsXG5cdFwicnFcIjpcIlNQQVJRTFwiLFxuXHRcInNwbHVuay1zcGxcIjpcIlNwbHVuayBTUExcIixcblx0XCJzcWZcIjpcIlNRRlwiLFxuXHRcInNxbFwiOlwiU1FMXCIsXG5cdFwic3F1aXJyZWxcIjpcIlNxdWlycmVsXCIsXG5cdFwic3RhblwiOlwiU3RhblwiLFxuXHRcInN0YXRhXCI6XCJTdGF0YSBBZG9cIixcblx0XCJpZWNzdFwiOlwiU3RydWN0dXJlZCBUZXh0IChJRUMgNjExMzEtMylcIixcblx0XCJzdHlsdXNcIjpcIlN0eWx1c1wiLFxuXHRcInN1cGVyY29sbGlkZXJcIjpcIlN1cGVyQ29sbGlkZXJcIixcblx0XCJzY2xhbmdcIjpcIlN1cGVyQ29sbGlkZXJcIixcblx0XCJzd2lmdFwiOlwiU3dpZnRcIixcblx0XCJzeXN0ZW1kXCI6XCJTeXN0ZW1kIGNvbmZpZ3VyYXRpb24gZmlsZVwiLFxuXHRcInQ0LXRlbXBsYXRpbmdcIjpcIlQ0IHRlbXBsYXRpbmdcIixcblx0XCJ0NC1jc1wiOlwiVDQgVGV4dCBUZW1wbGF0ZXMgKEMjKVwiLFxuXHRcInQ0XCI6XCJUNCBUZXh0IFRlbXBsYXRlcyAoQyMpXCIsXG5cdFwidDQtdmJcIjpcIlQ0IFRleHQgVGVtcGxhdGVzIChWQilcIixcblx0XCJ0YXBcIjpcIlRBUFwiLFxuXHRcInRjbFwiOlwiVGNsXCIsXG5cdFwidHQyXCI6XCJUZW1wbGF0ZSBUb29sa2l0IDJcIixcblx0XCJ0ZXh0aWxlXCI6XCJUZXh0aWxlXCIsXG5cdFwidG9tbFwiOlwiVE9NTFwiLFxuXHRcInRyZW1vclwiOlwiVHJlbW9yXCIsXG5cdFwidHJpY2tsZVwiOlwiVHJlbW9yXCIsXG5cdFwidHJveVwiOlwiVHJlbW9yXCIsXG5cdFwidHVydGxlXCI6XCJUdXJ0bGVcIixcblx0XCJ0cmlnXCI6XCJUdXJ0bGVcIixcblx0XCJ0d2lnXCI6XCJUd2lnXCIsXG5cdFwidHlwZXNjcmlwdFwiOlwiVHlwZVNjcmlwdFwiLFxuXHRcInRzXCI6XCJUeXBlU2NyaXB0XCIsXG5cdFwidHlwb3NjcmlwdFwiOlwiVHlwb1NjcmlwdFwiLFxuXHRcInRzY29uZmlnXCI6XCJUU0NvbmZpZ1wiLFxuXHRcInVucmVhbHNjcmlwdFwiOlwiVW5yZWFsU2NyaXB0XCIsXG5cdFwidXNjcmlwdFwiOlwiVW5yZWFsU2NyaXB0XCIsXG5cdFwidWNcIjpcIlVucmVhbFNjcmlwdFwiLFxuXHRcInVvcmF6b3JcIjpcIlVPIFJhem9yIFNjcmlwdFwiLFxuXHRcInVyaVwiOlwiVVJJXCIsXG5cdFwidXJsXCI6XCJVUklcIixcblx0XCJ2XCI6XCJWXCIsXG5cdFwidmFsYVwiOlwiVmFsYVwiLFxuXHRcInZibmV0XCI6XCJWQi5OZXRcIixcblx0XCJ2ZWxvY2l0eVwiOlwiVmVsb2NpdHlcIixcblx0XCJ2ZXJpbG9nXCI6XCJWZXJpbG9nXCIsXG5cdFwidmhkbFwiOlwiVkhETFwiLFxuXHRcInZpbVwiOlwidmltXCIsXG5cdFwidmlzdWFsLWJhc2ljXCI6XCJWaXN1YWwgQmFzaWNcIixcblx0XCJ2YlwiOlwiVmlzdWFsIEJhc2ljXCIsXG5cdFwid2FycHNjcmlwdFwiOlwiV2FycFNjcmlwdFwiLFxuXHRcIndhc21cIjpcIldlYkFzc2VtYmx5XCIsXG5cdFwid2ViLWlkbFwiOlwiV2ViIElETFwiLFxuXHRcIndlYmlkbFwiOlwiV2ViIElETFwiLFxuXHRcIndnc2xcIjpcIldHU0xcIixcblx0XCJ3aWtpXCI6XCJXaWtpIG1hcmt1cFwiLFxuXHRcIndvbGZyYW1cIjpcIldvbGZyYW0gbGFuZ3VhZ2VcIixcblx0XCJtYXRoZW1hdGljYVwiOlwiV29sZnJhbSBsYW5ndWFnZVwiLFxuXHRcIm5iXCI6XCJXb2xmcmFtIGxhbmd1YWdlXCIsXG5cdFwid2xcIjpcIldvbGZyYW0gbGFuZ3VhZ2VcIixcblx0XCJ3cmVuXCI6XCJXcmVuXCIsXG5cdFwieGVvcmFcIjpcIlhlb3JhXCIsXG5cdFwieGVvcmFjdWJlXCI6XCJYZW9yYVwiLFxuXHRcInhtbC1kb2NcIjpcIlhNTCBkb2MgKC5uZXQpXCIsXG5cdFwieG9qb1wiOlwiWG9qbyAoUkVBTGJhc2ljKVwiLFxuXHRcInhxdWVyeVwiOlwiWFF1ZXJ5XCIsXG5cdFwieWFtbFwiOlwiWUFNTFwiLFxuXHRcInltbFwiOlwiWUFNTFwiLFxuXHRcInlhbmdcIjpcIllBTkdcIixcblx0XCJ6aWdcIjpcIlppZ1wiXG59XG5jb25zdCBNQU5VQUxfTEFOR1VBR0VTOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHsgLy8gTWFudWFsbHkgY3JlYXRlZCBsaXN0XG5cdFwiZmlzaFwiOlwiRmlzaFwiLFxuXHRcIm9jdGF2ZVwiOlwiT2N0YXZlXCIsXG5cdFwibWF4aW1hXCI6XCJNYXhpbWFcIixcblx0XCJteXNxbFwiOlwiU1FMXCIsXG5cdFwicG9zdGdyZXNxbFwiOlwiU1FMXCIsXG5cdFwicnNjcmlwdFwiOlwiUlwiLFxuXHRcInNoZWxsc2NyaXB0XCI6XCJTaGVsbFwiLFxuXHRcInNxbGl0ZVwiOlwiU1FMXCIsXG5cdFwienNoXCI6XCJac2hcIixcbn1cbmV4cG9ydCBjb25zdCBMQU5HVUFHRV9OQU1FUzoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7Li4uUFJJU01fTEFOR1VBR0VTLC4uLk1BTlVBTF9QUklTTV9MQU5HVUFHRVMsLi4uTUFOVUFMX0xBTkdVQUdFU307XG5leHBvcnQgY29uc3QgTEFOR1VBR0VfSUNPTlNfREFUQToge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7IC8vIEljb25zIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZzY29kZS1pY29ucy92c2NvZGUtaWNvbnMvd2lraS9MaXN0T2ZGaWxlcyBhbmQgaHR0cHM6Ly9kZXZpY29uLmRldi9cblx0XCIuZ2l0aWdub3JlXCI6IGA8cGF0aCBkPVwiTTI5LjQ3MiwxNC43NTMsMTcuMjQ3LDIuNTI4YTEuOCwxLjgsMCwwLDAtMi41NSwwTDEyLjE1OCw1LjA2N2wzLjIyLDMuMjJhMi4xNDEsMi4xNDEsMCwwLDEsMi43MTIsMi43M2wzLjEsMy4xYTIuMTQzLDIuMTQzLDAsMSwxLTEuMjg1LDEuMjFsLTIuODk1LTIuODk1djcuNjE3YTIuMTQxLDIuMTQxLDAsMSwxLTEuNzY0LS4wNjJWMTIuM2EyLjE0NiwyLjE0NiwwLDAsMS0xLjE2NS0yLjgxNEwxMC45MTEsNi4zMTQsMi41MjgsMTQuN2ExLjgsMS44LDAsMCwwLDAsMi41NTFMMTQuNzUzLDI5LjQ3MmExLjgsMS44LDAsMCwwLDIuNTUsMEwyOS40NzIsMTcuM2ExLjgsMS44LDAsMCwwLDAtMi41NTFcIiBzdHlsZT1cImZpbGw6I2RkNGMzNVwiLz48cGF0aCBkPVwiTTEyLjE1OCw1LjA2N2wzLjIyLDMuMjJhMi4xNDEsMi4xNDEsMCwwLDEsMi43MTIsMi43M2wzLjEsMy4xYTIuMTQzLDIuMTQzLDAsMSwxLTEuMjg1LDEuMjFsLTIuODk1LTIuODk1djcuNjE3YTIuMTQxLDIuMTQxLDAsMSwxLTEuNzY0LS4wNjJWMTIuM2EyLjE0NiwyLjE0NiwwLDAsMS0xLjE2NS0yLjgxNEwxMC45MTEsNi4zMTRcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIi5oZ2lnbm9yZVwiOiBgPHBhdGggZD1cIk0yOC4wNDIsMjMuMTcyYzQuOTg5LTguMy0xLjA1NC0yMS43NTEtMTIuMS0yMC4zODRDNS45NTUsNC4wMjIsNS43OTQsMTQuNTMsMTQuNTkzLDE3LjAyNmM3LjYxNCwyLjE2MiwxLjU3Myw2Ljk5MiwxLjc0OSwxMC4yMDhzNi42Miw0LjM4MiwxMS43LTQuMDYzXCIgc3R5bGU9XCJmaWxsOiMxYjFiMWJcIi8+PGNpcmNsZSBjeD1cIjkuNzg0XCIgY3k9XCIyNC4yNTdcIiByPVwiNC4zMzJcIiBzdHlsZT1cImZpbGw6IzFiMWIxYlwiLz48Y2lyY2xlIGN4PVwiNC44MzVcIiBjeT1cIjE1LjA5OVwiIHI9XCIyLjgzNVwiIHN0eWxlPVwiZmlsbDojMWIxYjFiXCIvPjxwYXRoIGQ9XCJNMjguMjMxLDIyLjgzNWM0Ljk4OS04LjMtMS4wNTQtMjEuNzUxLTEyLjEtMjAuMzg0QzYuMTQ0LDMuNjg2LDUuOTgzLDE0LjE5NCwxNC43ODEsMTYuNjljNy42MTQsMi4xNjIsMS41NzMsNi45OTIsMS43NDksMTAuMjA4czYuNjIsNC4zODIsMTEuNy00LjA2M1wiIHN0eWxlPVwiZmlsbDojYmZiZmJmXCIvPjxjaXJjbGUgY3g9XCI5Ljk3MlwiIGN5PVwiMjMuOTIxXCIgcj1cIjQuMzMyXCIgc3R5bGU9XCJmaWxsOiNiZmJmYmZcIi8+PGNpcmNsZSBjeD1cIjUuMDIzXCIgY3k9XCIxNC43NjJcIiByPVwiMi44MzVcIiBzdHlsZT1cImZpbGw6I2JmYmZiZlwiLz48cGF0aCBkPVwiTTE3LjgxMSwyOC4xNjhhLjY2OS42NjksMCwwLDEsLjYzNS0uOTk0LDcsNywwLDAsMCwzLjctLjc0NmMzLjI0Ny0xLjg0MSw4LjI0NC0xMC43LDUuNzMxLTE2LjI4NUExMi43NywxMi43NywwLDAsMCwyNS4wNDksNS43Yy0uMjM2LS4yNDktLjEtLjIzNi4wNTktLjE1MmExMC4wOCwxMC4wOCwwLDAsMSwyLjg1NywzLjY3NiwxNC41NzgsMTQuNTc4LDAsMCwxLDEuMSwxMC4yNzljLS40OTQsMS44MTctMi4yLDUuOTI4LTQuNjkxLDcuNzA2cy01LjQyNCwyLjgtNi41NjMuOTU1TTE1LjU0OCwxNi42NzNjLTEuNy0uNS0zLjg5NC0xLjIwOC01LjE2My0yLjg2N0E4LjA4OCw4LjA4OCwwLDAsMSw4Ljg1NCwxMC40OWMtLjA0My0uMjctLjA4LS41LDAtLjU1OGEyMS44ODIsMjEuODgyLDAsMCwwLDEuNjg4LDIuNzIzLDYuNDg3LDYuNDg3LDAsMCwwLDMuNTI2LDIuMjU2LDEyLjM4MywxMi4zODMsMCwwLDEsMy44NjcsMS4zN2MuNzM5LjYyOS44LDEuOTg5LjU1MiwyLjE0MnMtLjc1OS0xLjEtMi45MzgtMS43NDltLTguMTU1LDEwLjRjMy4zNjksMy4xMjEsOC40MzktMS4xNjYsNi4yMDctNC45NTQtLjI1MS0uNDI1LS41NzYtLjc0OS0uNDY5LS40MjMuNzE0LDIuMTc4LjA1NCwzLjktMS4xNzYsNC43ODhhNC4wNjMsNC4wNjMsMCwwLDEtNC4xOTIuMzI4Yy0uMzktLjItLjU1MS4wOTItLjM3LjI2MW0tMy45My0xMC4xNmMuMDE4LjIuMjkyLjQ1OC43MjIuNTc2YTIuOTY5LDIuOTY5LDAsMCwwLDIuNTUtLjQxMywyLjc1OSwyLjc1OSwwLDAsMCwuODEtMy40NTJjLS4xNzItLjMwOC0uNC0uNTMzLS4yMTgtLjA0MUEyLjY4LDIuNjgsMCwwLDEsNi4xNDgsMTYuNTNhMi40MzksMi40MzksMCwwLDEtMi4xLjE2NGMtLjM5MS0uMTE5LS42LjAxNi0uNTguMjIzXCIvPjxwYXRoIGQ9XCJNMTkuMDU2LDI4LjQwN2MtLjAzMy4zODkuNDE0LjQ2NiwxLjAxNi4zNzZhNi43NTUsNi43NTUsMCwwLDAsMi4zMTMtLjY0OCw5LjU0LDkuNTQsMCwwLDAsMy4zMTQtMi42M2MyLjY2Mi0zLjQ3MywzLjYtNy41ODIsMy40Ni04LjE3M0ExNi4xNzIsMTYuMTcyLDAsMCwxLDI3LDIyLjY5MmMtMS44ODgsMi45NjgtMy4yNTYsNC41NDgtNi40MTMsNS4zMTQtLjg3OS4yMTMtMS40ODUtLjExMi0xLjUyOS40bS03LTEzLjVBNy45NjcsNy45NjcsMCwwLDAsMTQuNiwxNi4wODlhMTIuMiwxMi4yLDAsMCwxLDIuOTYsMS4zMWMuMzc4LjI1My42MTguODE5LjY0Mi4zMTdzLS4yODUtLjkzNC0uOTc2LTEuMTY0YTE1LjI3NCwxNS4yNzQsMCwwLDAtMi4wMDktLjY3NGMtLjQ4NS0uMS0xLjI3My0uMjg1LTEuOTQ5LS40OTMtLjM3MS0uMTE0LS43NDgtLjMxMy0xLjIxNC0uNDgzTTEwLjAzNywyNy43MThjLjQyOS0uMDksMi45MjQtLjczNiwzLjUxLTIuNzg4LjE4My0uNjQuMjE1LS41MTEuMTY0LS4xNjVhMy44LDMuOCwwLDAsMS0zLjM1OCwzLjEyM2MtLjI4OS4wMy0uNjY4LS4xLS4zMTUtLjE3TTUuMDQ2LDE3LjJhNy45OTEsNy45OTEsMCwwLDAsMS4xOTUtLjMzNiwyLjM4MywyLjM4MywwLDAsMCwxLjIzMi0xLjc0MWMuMDY0LS41MDUuMDgzLS4zNzguMTA5LS4xYTIuNjI3LDIuNjI3LDAsMCwxLTIuMTQ3LDIuMzI0Yy0uMi4wMjgtLjU2LjAxMS0uMzg5LS4xNDNcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTI3LjU0LDE3LjQ0NmMyLjEyNC02LjEyMy0yLjMyMS0xNS4zNy0xMS4zMTUtMTQuMjU4LTguMTI2LDEtOC4yNTcsOS41NTctMS4xLDExLjU5LDguMTEyLDEuMjI4LDMuMjI3LDcuMzQ3LDIuNTM1LDEwLjQzMy0uNjIxLDIuNzY2LDYuNTU1LDMuMjIxLDkuODc2LTcuNzY1TTcuMjE5LDI2LjJhMi4wMjgsMi4wMjgsMCwwLDEsMS4zMzIuNDQyLDMuNTI1LDMuNTI1LDAsMCwwLDMuNzU1LS45ODNBNC4xNTQsNC4xNTQsMCwwLDAsMTIuODY5LDIyYy0uODA2LTIuMzE5LTQuMjI5LTIuMjc4LTUuNzU4LS4zNTMtMS42NTQsMi4xNS0uNCw0LjUzOS4xMDgsNC41NDhNMi42NzYsMTUuNDUxYTEuMTY2LDEuMTY2LDAsMCwwLC45MDguODYzYy43MzEuMS44OC40MzQsMS43NDMuMjYzQTIuNDY0LDIuNDY0LDAsMCwwLDcuMSwxNC45MTZhMS43NzEsMS43NzEsMCwwLDAtLjgyNC0yLjE0LDIuNjg5LDIuNjg5LDAsMCwwLTMuMDQ3LjM2MywyLjI2MywyLjI2MywwLDAsMC0uNTU4LDIuMzEyXCIgc3R5bGU9XCJmaWxsOiM5OTlcIi8+PHBhdGggZD1cIk0yMS45ODEsMjIuMjI4Yy0yLjItLjI3Mi01LjM2LDQuNjktMi4zNzgsNC4xMDloMGE1LjY0NSw1LjY0NSwwLDAsMCwzLjY4My0xLjkzMiwyMy4xMzYsMjMuMTM2LDAsMCwwLDQuMDU1LTcuMmMuNS0xLjg2MS4yNTEtNC43NDUtLjI2OS0yLjAzNi0uNTMzLDIuNzgxLTIuODkzLDcuMzM2LTUuMDkxLDcuMDY0TTEwLjUyMywyNi4zNjJBMi43NzgsMi43NzgsMCwwLDAsMTIuNSwyMi45OWMtLjE2NS0xLjI3Ni0uODYxLDEuNTg0LTIuMTUsMi4wMTItMS45NTMuNjQ4LTEuNzMzLDEuODYxLjE3NiwxLjM2MW0tNC45NzgtMTAuMmMuNjYzLS4xNzMsMS41NC0xLjA3NywxLjEtMS43NjctLjUzNy0uODUtMi4wMzMtLjEyMi0yLjA4NC44MjRzLjI3NywxLjEyNy45NzkuOTQzXCIgc3R5bGU9XCJmaWxsOiNmM2YzZjNcIi8+YCxcblx0XCIubnBtaWdub3JlXCI6IGA8cGF0aCBkPVwiTTIsMTAuNTU1SDMwdjkuMzM1SDE2djEuNTU2SDkuNzc4VjE5Ljg4OUgyWm0xLjU1Niw3Ljc3OUg2LjY2N1YxMy42NjZIOC4yMjJ2NC42NjdIOS43NzhWMTIuMTExSDMuNTU2Wm03Ljc3OC02LjIyM3Y3Ljc3OWgzLjExMVYxOC4zMzRoMy4xMTFWMTIuMTExWm0zLjExMSwxLjU1NkgxNnYzLjExMkgxNC40NDRabTQuNjY3LTEuNTU2djYuMjIzaDMuMTExVjEzLjY2NmgxLjU1NnY0LjY2N2gxLjU1NlYxMy42NjZoMS41NTZ2NC42NjdoMS41NTZWMTIuMTExWlwiIHN0eWxlPVwiZmlsbDojY2IzODM3XCIvPmAsXG5cdFwiLnByb3BlcnRpZXNcIjogYDxwYXRoIGQ9XCJNMjMuMjY1LDI0LjM4MWwuOS0uODk0YzQuMTY0LjEzNiw0LjIyOC0uMDEsNC40MTEtLjQzOGwxLjE0NC0yLjc4NUwyOS44MDUsMjBsLS4wOTMtLjIzMWMtLjA0OS0uMTIyLS4yLS40ODYtMi44LTIuOTY1VjE1LjVjMy0yLjg5LDIuOTM2LTMuMDM4LDIuNzY1LTMuNDYxTDI4LjUzOCw5LjIyNWMtLjE3MS0uNDIyLS4yMzYtLjU4Ny00LjM3LS40NzRsLS45LS45M2EyMC4xNjYsMjAuMTY2LDAsMCwwLS4xNDEtNC4xMDZsLS4xMTYtLjI2My0yLjk3NC0xLjNjLS40MzgtLjItLjU5Mi0uMjcyLTMuNCwyLjc4NmwtMS4yNjItLjAxOWMtMi44OTEtMy4wODYtMy4wMjgtMy4wMy0zLjQ2MS0yLjg1NUw5LjE0OSwzLjE4MmMtLjQzMy4xNzUtLjU4Ni4yMzctLjQxOCw0LjQzN2wtLjg5My44OWMtNC4xNjItLjEzNi00LjIyNi4wMTItNC40MDcuNDM4TDIuMjg1LDExLjczMywyLjE5NSwxMmwuMDk0LjIzMmMuMDQ5LjEyLjE5NC40OCwyLjgsMi45NjJsMCwxLjNjLTMsMi44OS0yLjkzNSwzLjAzOC0yLjc2MywzLjQ2MmwxLjEzOCwyLjgxN2MuMTc0LjQzMS4yMzYuNTg0LDQuMzY5LjQ3NmwuOS45MzVhMjAuMjQzLDIwLjI0MywwLDAsMCwuMTM3LDQuMWwuMTE2LjI2NSwyLjk5MywxLjMwOGMuNDM1LjE4Mi41ODYuMjQ3LDMuMzg2LTIuOGwxLjI2Mi4wMTZjMi44OTUsMy4wOSwzLjA0MywzLjAzLDMuNDY2LDIuODU5bDIuNzU5LTEuMTE1QzIzLjI4OCwyOC42NDQsMjMuNDQsMjguNTgzLDIzLjI2NSwyNC4zODFaTTExLjQwNywxNy44NTdhNC45NTcsNC45NTcsMCwxLDEsNi40ODgsMi44MjRBNS4wMTQsNS4wMTQsMCwwLDEsMTEuNDA3LDE3Ljg1N1pcIiBzdHlsZT1cImZpbGw6Izk5YjhjNFwiLz5gLFxuXHRcIjY1MDIgQXNzZW1ibHlcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjgzNi42M1wiIHkxPVwiMzYuMjA1XCIgeDI9XCI4NDMuODAyXCIgeTI9XCIxNC40OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDUyNS45MjIgMzAuMjQ5KSByb3RhdGUoMTgwKSBzY2FsZSgwLjYwNyAwLjYwNylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiIHN0b3Atb3BhY2l0eT1cIjAuMjc1XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfYXNzZW1ibHk8L3RpdGxlPjxwYXRoIGQ9XCJNMTYsMmMtMS4yNDYsMy4wNTYtMiw1LjA1Ny0zLjM5MSw4LjAyMkEyMS44ODQsMjEuODg0LDAsMCwwLDE2LjIsMTMuMTU2YTE0Ljg1OCwxNC44NTgsMCwwLDEtNC0yLjI4M0MxMC40MywxNC41NzksNy42NDYsMTkuODU1LDIsMzBjNS4xODYtMi45OTQsOS4wMTItNC42NDgsMTIuNjkxLTQuOTY2VjI0LjJoLS44MzR2LS44MzdoLjgzNFYyNC4yaDEuNjc1VjIyLjUyMUgxNC42OTF2LS44MzRoLS44MzRWMjAuMDEzaC44MzR2LS44MzRoMS42NzV2LjgzNEgxNy4ydi44MzdoLS44Mzd2LS44MzdIMTQuNjkxdjEuNjc1aDEuNjc1di44MzRIMTcuMlYyNC4yaC0uODM3di43ODNjMy45OC4xLDguMDA2LDEuNzcyLDEzLjYzNCw1LjAyMS0uODYzLTEuNTg5LTEuNjM2LTMuMDIxLTIuMzcyLTQuMzg1YTI1LjUyNiwyNS41MjYsMCwwLDAtNC44MzMtMy4zMzNBMTQuNDM2LDE0LjQzNiwwLDAsMSwyNi42NSwyMy44QzE5LjE3LDkuODcyLDE4LjU2NSw4LjAyLDE2LDJaTTEwLjUxMSwxOS4xNzloMS42NzF2LjgzNGguODM3djUuMDIxaC0uODM3VjIyLjUyMUgxMC41MTF2Mi41MTJIOS42NzNWMjAuMDEzaC44MzdabTAsLjgzNHYxLjY3NWgxLjY3MVYyMC4wMTNabTcuNTI2LS44MzRoLjgzN3YuODM0aC44Mzd2LjgzN2guODM0di0uODM3aC44Mzd2LS44MzRoLjgzN3Y1Ljg1NWgtLjgzN1YyMC44NWgtLjgzN3YuODM3aC0uODM0VjIwLjg1aC0uODM3djQuMTg0aC0uODM3WlwiIHN0eWxlPVwiZmlsbDojMDAwMGJmXCIvPjxwYXRoIGQ9XCJNMjMuODgxLDE4LjY0MmMtNi4wNjktOC4yMzctNy40NzYtMTQuODc2LTcuODMyLTE2LjQ2MUExNzUuMjE3LDE3NS4yMTcsMCwwLDAsMjMuODgxLDE4LjY0MlpcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLW9wYWNpdHk6MC4xNjU2ODA0NjgwODI0MjhcIi8+PHBhdGggZD1cIk0xNi4wNTEsMi4xMiwxNS42LDMuMjI3Yy0uMTU5LjM5MS0uMzExLjc2NS0uNDYxLDEuMTMxcy0uMy43MjQtLjQ0OCwxLjA3Ny0uMy43LS40NDgsMS4wNTMtLjMuNzA2LS40NjUsMS4wNjYtLjMyOS43MjktLjUwNiwxLjExMS0uMzYyLjc3OC0uNTYxLDEuMTkzYy0uMDI4LjA1Ny0uMDYxLjEyMy0uMDg5LjE4MUEyMS44NzIsMjEuODcyLDAsMCwwLDE2LjIsMTMuMTU2YTE0Ljg3OSwxNC44NzksMCwwLDEtMy45ODktMi4yNzZsLS4xNC4yODdjLS4wNjUuMTMzLS4xNDQuMjgzLS4yMTIuNDJsLS4xMDYuMjE5Yy0uODc4LDEuNzkzLTIuMDA2LDMuOTg0LTMuNTI0LDYuODIyLDMuNTUxLTIsNy4zODEtNC44ODcsMTQuMzM4LTIuNC0uMzQ5LS42NjEtLjY3LTEuMjgtLjk3MS0xLjg2M3MtLjU4MS0xLjEyOC0uODQxLTEuNjQ0LS41LTEtLjcyNS0xLjQ2My0uNDMzLS45LS42MjktMS4zMTMtLjM4LS44MTgtLjU1NC0xLjItLjMzOS0uNzU0LS41LTEuMTE4UzE4LjA0Nyw2LjksMTcuOSw2LjU0NnMtLjI5MS0uNzA5LS40MzQtMS4wNjZjLS4wMzYtLjA5MS0uMDczLS4xODYtLjEwOS0uMjc3QzE2Ljk0OSw0LjI0NywxNi41MzYsMy4yNTgsMTYuMDUxLDIuMTJaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcblx0XCJBY3Rpb25TY3JpcHRcIjogYDxwYXRoIGQ9XCJNMiwxNS4yODFjMS45MTgsMCwyLjExLTEuMDU1LDIuMTEtMS45MThhMTcuMTE5LDE3LjExOSwwLDAsMC0uMTkyLTIuMjA1LDE4LjcyMywxOC43MjMsMCwwLDEtLjE5Mi0yLjIwNWMwLTIuNCwxLjYzLTMuNDUyLDMuODM2LTMuNDUyaC41NzVWNi45MzhINy42NThjLTEuNTM0LDAtMi4xMS43NjctMi4xMSwyLjIwNWExNC40MTIsMTQuNDEyLDAsMCwwLC4xOTIsMS45MTgsMTQuMzA2LDE0LjMwNiwwLDAsMSwuMTkyLDIuMDE0YzAsMS43MjYtLjY3MSwyLjQ5My0xLjkxOCwyLjg3N3YuMWMxLjE1MS4yODgsMS45MTgsMS4xNTEsMS45MTgsMi44NzdhMTQuMzA2LDE0LjMwNiwwLDAsMS0uMTkyLDIuMDE0LDEzLDEzLDAsMCwwLS4xOTIsMS45MThjMCwxLjQzOC41NzUsMi4zLDIuMTEsMi4zaC40NzlWMjYuNkg3LjU2MmMtMi4yMDUsMC0zLjgzNi0uOTU5LTMuODM2LTMuNjQ0YTE4LjcyMywxOC43MjMsMCwwLDEsLjE5Mi0yLjIwNSwxNS42OCwxNS42OCwwLDAsMCwuMTkyLTIuMTFjMC0uODYzLS4yODgtMS45MTgtMi4xMS0xLjkxOFpcIiBzdHlsZT1cImZpbGw6I2M0MTcxOFwiLz48cGF0aCBkPVwiTTkuNDc5LDE4LjA2Miw4LjIzMywyMS44SDYuNkwxMC42Myw5LjkxMWgxLjgyMkwxNi40NzksMjEuOEgxNC45NDVMMTMuNywxOC4wNjJabTMuOTMyLTEuMTUxTDEyLjI2LDEzLjQ1OWE5LjM2NCw5LjM2NCwwLDAsMS0uNTc1LTIuMjA1aDBjLS4xOTIuNjcxLS4zODQsMS40MzgtLjU3NSwyLjExTDkuOTU5LDE2LjgxNWgzLjQ1MlpcIiBzdHlsZT1cImZpbGw6I2M0MTcxOFwiLz48cGF0aCBkPVwiTTE3LjkxOCwxOS45NzlhNS45NDEsNS45NDEsMCwwLDAsMi43ODEuNzY3YzEuNTM0LDAsMi40OTMtLjg2MywyLjQ5My0yLjAxNHMtLjY3MS0xLjcyNi0yLjIwNS0yLjRjLTEuOTE4LS42NzEtMy4xNjQtMS43MjYtMy4xNjQtMy4zNTYsMC0xLjgyMiwxLjUzNC0zLjI2LDMuODM2LTMuMjZhNS4xMzUsNS4xMzUsMCwwLDEsMi41ODkuNTc1bC0uMzg0LDEuMjQ3YTUuNTE5LDUuNTE5LDAsMCwwLTIuMy0uNDc5Yy0xLjYzLDAtMi4yMDUuOTU5LTIuMjA1LDEuODIyLDAsMS4xNTEuNzY3LDEuNjMsMi40LDIuMywyLjAxNC43NjcsMy4wNjgsMS43MjYsMy4wNjgsMy40NTIsMCwxLjgyMi0xLjM0MiwzLjQ1Mi00LjEyMywzLjQ1MmE1LjgwNyw1LjgwNywwLDAsMS0zLjA2OC0uNzY3WlwiIHN0eWxlPVwiZmlsbDojYzQxNzE4XCIvPjxwYXRoIGQ9XCJNMzAsMTYuNjIzYy0xLjkxOCwwLTIuMTEsMS4xNTEtMi4xMSwxLjkxOGExNS42OCwxNS42OCwwLDAsMCwuMTkyLDIuMTEsMTUuNzM4LDE1LjczOCwwLDAsMSwuMTkyLDIuMjA1YzAsMi42ODUtMS42MywzLjY0NC0zLjgzNiwzLjY0NGgtLjU3NVYyNS4wNjJoLjQ3OWMxLjQzOCwwLDIuMTEtLjg2MywyLjExLTIuM2ExMywxMywwLDAsMC0uMTkyLTEuOTE4LDE0LjMwNiwxNC4zMDYsMCwwLDEtLjE5Mi0yLjAxNGMwLTEuNzI2Ljc2Ny0yLjU4OSwxLjkxOC0yLjg3N3YtLjFjLTEuMTUxLS4yODgtMS45MTgtMS4xNTEtMS45MTgtMi44NzdhMTQuMzA2LDE0LjMwNiwwLDAsMSwuMTkyLTIuMDE0LDEzLDEzLDAsMCwwLC4xOTItMS45MThjMC0xLjQzOC0uNTc1LTIuMjA1LTIuMTEtMi4zaC0uNDc5VjUuNGguNTc1YzIuMjA1LDAsMy44MzYsMS4wNTUsMy44MzYsMy40NTJhMTcuMTE5LDE3LjExOSwwLDAsMS0uMTkyLDIuMjA1LDE3LjExOSwxNy4xMTksMCwwLDAtLjE5MiwyLjIwNWMwLC45NTkuMjg4LDEuOTE4LDIuMTEsMS45MThaXCIgc3R5bGU9XCJmaWxsOiNjNDE3MThcIi8+YCxcblx0XCJBZGFcIjogYDxwYXRoIGQ9XCJNMjQuNTU0LDIwLjA3NWMuMjA5LjI3LDEuMzU2Ljk2MSwxLjM3LDEuMjQ2YTYuOTIxLDYuOTIxLDAsMCwwLTEuNC0uMzI0Yy0uNDY4LS4xNDItLjk1MS0uMjkzLTEuNDEyLS40OGE5LjIsOS4yLDAsMCwxLTIuMzc1LTEuM0EzLjE0NiwzLjE0NiwwLDAsMSwxOS4zLDE2Ljc1YTEuNzIyLDEuNzIyLDAsMCwxLDEuNzY3LTEuODIyLDMuNTg0LDMuNTg0LDAsMCwxLDEuNTkzLjMyMWMuMTQ2LjA2NiwxLjMxLjYwNiwxLjI1Ni44MDlhNS41LDUuNSwwLDAsMC0xLjQxLS4xMTJjLS42NDkuMjQ0LS40LjgyOC0uMTY4LDEuMzExYTcuODc3LDcuODc3LDAsMCwwLDEuMDc4LDEuNTU0QzIzLjU4LDE5LjAwNSwyNC4zLDIwLjA4MiwyNC41NTQsMjAuMDc1WlwiIHN0eWxlPVwiZmlsbDojMGYyM2MzXCIvPjxwYXRoIGQ9XCJNMjQuMTQxLDE2LjI3NmMuMTI4LS41OS44MTktMS4zODQsMS4zNDQtLjc3M2E0LjIsNC4yLDAsMCwxLC41NzgsMS45MThjLjEyLjY1Ni4yLDEuMzI3LjI2MSwxLjk4Mi4wMzguMzc5LjM0LDEuNzk0LjEyMywyLjA3NWEyMy4yNCwyMy4yNCwwLDAsMS0yLjkyMi0yLjgzOCwzLjc2MywzLjc2MywwLDAsMS0uOTI1LTEuN0MyMi41LDE1Ljg2NywyMy40NzksMTYuMjEsMjQuMTQxLDE2LjI3NlpcIiBzdHlsZT1cImZpbGw6IzFhMTk3OFwiLz48cGF0aCBkPVwiTTI2LjMsMTcuNzgxYy4xNDEtLjczMi0uNDA2LTIuNTkyLTEuMDY3LTIuOTQ5YS4wNi4wNiwwLDAsMCwuMDQ0LS4wMDdjLS4xNTYtLjQ0NC0xLjM1OSwxLjExNi0xLjIyOCwxLjE3NC0uMzE2LS4xMzguNzc0LTEuOTg0Ljk4OC0yLjE2LjctLjU3OCwxLjM3Mi0uMDg2LDEuODQ1LjU0M2E2LjAzNiw2LjAzNiwwLDAsMSwuNzMzLDQuNDM0LDQuNSw0LjUsMCwwLDEtLjQyMSwxLjMxMmMtLjEuMjItLjQ1LDEuMS0uNjgyLDEuMTc0QTE0Ljc1NCwxNC43NTQsMCwwLDAsMjYuMywxNy43ODFaXCIgc3R5bGU9XCJmaWxsOiMwZjIzYzNcIi8+PHBhdGggZD1cIk0zLjY4Nyw4LjRjLjE3OS0uMTg4LS4wNDEtMS41MjcuMzI0LTEuNTQ4LjI2Mi0uMDE1LjU1MywxLjc0MS42MjcsMS45NjhhOS4yLDkuMiwwLDAsMCwxLjEyNywyLjMyOSw3LjUyOSw3LjUyOSwwLDAsMCw0LjAxNiwyLjk3OCw0LjU1LDQuNTUsMCwwLDAsMi4zNjYuMmMuOTMxLS4yMDgsMS44Mi0uNTc3LDIuNzU3LS43NjUsMS4zNS0uMjcsMy4zNDItLjM1Miw0LjQzOC42NDcuNy42NDEuMzc2Ljc2LjA0MywxLjQyMWEyLjQ0NSwyLjQ0NSwwLDAsMCwuMTc4LDIuNTYyYy4yMzUuMzQyLDEuMDMzLjgyNy42NzUsMS4wOTQtLjU2Ny40MjQtMS4yNzctLjQ1Mi0xLjYzNi0uNzc2LTEuNC0xLjI2NC0yLjcxMS0xLjMxMy00LjQ5Mi0xLjA3NGE4Ljk4Nyw4Ljk4NywwLDAsMS00Ljg4My0uNzA4QTkuNDY5LDkuNDY5LDAsMCwxLDMuNjg3LDguNFpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE5Ljk0MSwzMGEzLjYxNSwzLjYxNSwwLDAsMS0yLjMyNS0uODE3Yy40NjktLjA5MiwxLjAyMS4wMjUsMS41MDgtLjA0NGE5LjcsOS43LDAsMCwwLDEuNzU0LS40M0ExMC41MzcsMTAuNTM3LDAsMCwwLDIzLjksMjcuMTU1YTYuNTUsNi41NSwwLDAsMCwyLjc1Ny01LjIxNGMuMTQ5LS4wODguMzE2LDEuMDM0LjMxOSwxLjA5MWE1Ljc4OSw1Ljc4OSwwLDAsMS0uMTksMS43MjcsNi44NjcsNi44NjcsMCwwLDEtMS40MjMsMi43NzRBNy4yODYsNy4yODYsMCwwLDEsMTkuOTQxLDMwWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTguOTYyLDE5LjEwOWE1Ljc2LDUuNzYsMCwwLDEtMi4wNS44NTksMTMuMzgsMTMuMzgsMCwwLDEtMi4yMjQuNTQ5LDguODYxLDguODYxLDAsMCwxLTQuNDM1LS41MSw5LjkzOSw5LjkzOSwwLDAsMS0zLjg0OS0yLjRDNi4wNTIsMTcuMjQsNC4zLDE1LjE5LDQuODU2LDE0LjU1N2MuMjQ4LS4yODIuODc1Ljg0NiwxLC45OTJhNSw1LDAsMCwwLDEuMzU3LDEuMTEsMTAuOTE3LDEwLjkxNywwLDAsMCw0LjAzNSwxLjQ1Niw2LjY5Myw2LjY5MywwLDAsMCwyLjM0LS4wOTQsMTIuNzQzLDEyLjc0MywwLDAsMSwxLjY5NC0uNDg1LDQsNCwwLDAsMSwyLjExMy40NTdDMTcuNzM5LDE4LjE2MywxOC45MTgsMTguNzM2LDE4Ljk2MiwxOS4xMDlaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yOC4zMTMsMTUuMDc4YTE5LjI3NywxOS4yNzcsMCwwLDEtLjQ1MywzLjc3NGMtLjE3Ni0uMjQyLjAxNi0xLjQ3LDAtMS43OTJhNi4wMzIsNi4wMzIsMCwwLDAtLjM4NC0yLjA4N0E0LjkyNSw0LjkyNSwwLDAsMCwyNi4xLDEzLjMxMmExNC43MjgsMTQuNzI4LDAsMCwxLTEuMjctMS41MzZjLTEuODM3LTIuMzgyLTMuMjQ1LTUuMjExLTIuOS04LjMuMDM0LS4zMDguMDY5LTEuNDQ4LjQxMS0xLjQ0NS4xNTIsMCwuMjY2LDEuNTYxLjI5LDEuNzE4YTEyLjUyNywxMi41MjcsMCwwLDAsMS4yMjQsNC4xMTZjLjY3LDEuMjIyLDEuOTQ3LDIuMDIzLDIuODI1LDMuMUE2LjU3OSw2LjU3OSwwLDAsMSwyOC4zMTMsMTUuMDc4WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTUuNywyNi45MzVhMTAuODQ1LDEwLjg0NSwwLDAsMCw2LjQzNi0uNjg3LDYuOTQxLDYuOTQxLDAsMCwwLDQuMjc4LTQuNDE4Yy4zMTkuMi0uMDQ4LDEuNTI5LS4xMjgsMS43ODFhNS43MjYsNS43MjYsMCwwLDEtMS4wMSwxLjgxMyw4LjkzMyw4LjkzMywwLDAsMS0zLjI1NywyLjUxNEMyMC4zMTYsMjguNzEsMTYuMzU3LDI5LjU5LDE1LjcsMjYuOTM1WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTkuMTUxLDE5LjM3NmMuMzY3LDIuMTA3LTIuOTU3LDMuMTI0LTQuNDc4LDMuMjEzLTEuODU5LjExLTQuOTI5LS4yOTItNi4wNi0yLjAzMS0uNjczLTEuMDM1Ljc4MS0uMDksMS4xODguMDU4YTguNjYzLDguNjYzLDAsMCwwLDMuMDYuNSwxMS42LDExLjYsMCwwLDAsMy4zMDUtLjUsMTMuNzI1LDEzLjcyNSwwLDAsMCwxLjUzMy0uNTc2QzE4LDE5LjkwOCwxOC44MjMsMTkuMzQ5LDE5LjE1MSwxOS4zNzZaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yNC4xNDIsMjMuNDZjLjQtLjk0NS0xLjg4My0xLjU3OC0yLjQ0NS0xLjg1OGE0Ljg1Nyw0Ljg1NywwLDAsMS0xLjMxNS0uODY3Yy0uMTgxLS4xODEtLjg3Mi0uOTItLjgwNy0xLjIxOWE0LjkxMiw0LjkxMiwwLDAsMSwxLjA4Ny0uMTc1LDUuOTMsNS45MywwLDAsMSwuODU1LjU4OCwxMC4zMjMsMTAuMzIzLDAsMCwwLC45NjQuNUExNS42MTUsMTUuNjE1LDAsMCwwLDI0LjYsMjEuMmMuMzA4LjA5LDEuNTQ5LjIwOCwxLjcyNy40MjhDMjYuMjg3LDIxLjkyNCwyNC4zNTcsMjMuNjQ5LDI0LjE0MiwyMy40NlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTI2LjEsMjIuMTcyYy4yNjUuNDMtMS4wOCwxLjgzMS0xLjM2MywyLjEwNWE5LjM0LDkuMzQsMCwwLDEtMi41NjYsMS43MjgsNy43NDgsNy43NDgsMCwwLDEtMi41Ni43NTNjLS42NzkuMDU4LTEuOTY2LS4xMjQtMi4xNDEtLjk3OWE2Ljk1MSw2Ljk1MSwwLDAsMSwxLjE3Ny0uMDg2Yy40NjItLjA1OS45MjEtLjE0OSwxLjM3Ni0uMjQ2YTEzLjA2NSwxMy4wNjUsMCwwLDAsMi4xODQtLjY0NSwxMS41MDYsMTEuNTA2LDAsMCwwLDIuMDg0LTEuMTEsMTAuODcyLDEwLjg3MiwwLDAsMCwxLjA3OC0uODIyQzI1LjQ3NCwyMi43ODEsMjUuOTg2LDIyLjE2OCwyNi4xLDIyLjE3MlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE4Ljc1OCwxMS45NjVjLS4xLTEuMzA4LDIuNjEyLTEuMywzLjI3MS0xLjA5MmE1Ljk3Niw1Ljk3NiwwLDAsMSwyLjk4MiwyLjQ3NWMtMS4wODIuOC0yLjQ0OS4wOTQtMy4zLS42NTRhNC4zMjQsNC4zMjQsMCwwLDAtMS40ODEtMS4wMjlDMTkuNDIxLDExLjQsMTkuNDEyLDExLjc1OSwxOC43NTgsMTEuOTY1WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjUuNzgzLDEzLjM0MWMtLjQ0NC0uMDI5LS4zMTYuMDcxLS42NDctLjIxMi0uMzU4LS4zMDctLjYxNC0uNzk1LS45NDUtMS4xNDEtLjUzNC0uNTU4LTEuMjQyLS44OTUtMS43MjMtMS40ODVhNy4yNjksNy4yNjksMCwwLDEtMS42MjQtNC44NDhjLjAxOC0xLjQ4OS40MDcuMTg3LjU1MS42NzVhMTIuMjc2LDEyLjI3NiwwLDAsMCwxLjEyNiwyLjcwOCw0Ni4wNTUsNDYuMDU1LDAsMCwwLDMuNCw0LjMyMUMyNS44ODIsMTMuMzYxLDI1LjgyNCwxMy4zMzgsMjUuNzgzLDEzLjM0MVpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTIwLjA2OCwxNC43NTZjLjAzMy0uNjI1LS45MTEtLjc5Mi0xLjIxMS0xLjQyLS4xNjQtLjM0My0uMjExLS41NjkuMDI5LS43LjA4Mi0uMDQ1LjM4My4wMTIuNS0uMDIuMjcxLS4wNzYuMzM1LS4yNzMuNTgxLS40QTEuMTkzLDEuMTkzLDAsMCwxLDIxLjYsMTMuMjM3LDEuODIxLDEuODIxLDAsMCwxLDIwLjA2OCwxNC43NTZaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yMC41LDE0Ljc0NWExLjkzMSwxLjkzMSwwLDAsMCwxLjMyMy0xLjdjLjUyNC4xMzkuOTI4LjY1OCwxLjUyMS43NzFhMi41ODQsMi41ODQsMCwwLDAsMS4wMjktLjAxN2MuMjA3LS4wNDUuNTQtLjI3NC43MjEtLjI1OS0uMDMzLjE2My0uNDY0LjU0Ni0uNTY1LjcxN2E0LjI0Miw0LjI0MiwwLDAsMC0uMzg4LjljLS4yMjkuNzQxLS4wNjEuNzM5LS43MDkuMzExYTQuMjg0LDQuMjg0LDAsMCwwLTEuOTU3LS43MkMyMS4yMDksMTQuNzIyLDIwLjU5NCwxNC43NjcsMjAuNSwxNC43NDVaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xOS45MDUsMjAuNzM0YTIuMDA4LDIuMDA4LDAsMCwxLTEuNCwxLjcxMmMtLjIwNS4wOTEtMi4wMTguNzMzLTIuMDMyLjM0OC0uMDA3LS4yLDEuNjI0LS45NTQsMS44MDktMS4xMWEzLjM1NSwzLjM1NSwwLDAsMCwuODY3LTEuMDcxYy4wNTUtLjExMi4yMzItLjkyNS4yNzEtLjk0M0MxOS42NDQsMTkuNTY0LDE5LjkwOCwyMC42LDE5LjkwNSwyMC43MzRaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xMS4zNzMsMTIuNTMyYTEwLjYyNSwxMC42MjUsMCwwLDEsMy43MS0uOTE0LDEwLjI4MiwxMC4yODIsMCwwLDEsMS44NjUuMDI0Yy4zNjYuMDM5LDEuNDY5LjA1NCwxLjc0LjM0M2EuMjU1LjI1NSwwLDAsMS0uMjczLjE3M2MtLjAzNy4wNzcuMjUxLjM3MS4zLjQyNS0uMDM0LjAzNC0xLjQ0NS0uNC0xLjU3Mi0uNDI0YTEwLjYzMiwxMC42MzIsMCwwLDAtMi4yODItLjEzNCwxNiwxNiwwLDAsMC0xLjg0MS4xOTRBNi4yMjQsNi4yMjQsMCwwLDEsMTEuMzczLDEyLjUzMlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTIyLjUxMiwxMC43MzFhMS44ODgsMS44ODgsMCwwLDEtMS41MTctLjZjLS4yNDctLjM0OS0uNzM3LTEuNjkyLS4zODUtMi4wMjEuMjA5LS4yLjM4NC42NjIuNDg0Ljg0NkExMC44MjIsMTAuODIyLDAsMCwwLDIyLjUxMiwxMC43MzFaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0yNy43ODgsMTkuMmExOS4yMTIsMTkuMjEyLDAsMCwxLS43NDksMy4zMTNjLS4xNzMtLjA3Ny0uMjc1LS43NzgtLjU2Mi0uOTVhNC4wNyw0LjA3LDAsMCwwLC43Ni0xLjE1NEMyNy4zODksMjAuMTA3LDI3LjU0LDE5LjM2MywyNy43ODgsMTkuMlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz48cGF0aCBkPVwiTTE5Ljk4MSwxMS44NDNjLS4xMzIuMjY4LS45MzIsMS4xLTEuMTE4LjQ4MUMxOC43NTYsMTEuOTY4LDE5LjczOSwxMS40ODMsMTkuOTgxLDExLjg0M1ptLS43NDcuNDVjLjIyOC4wMDYuMDEyLS4yNDguMDEyLS4yNjZDMTkuMjQ1LDExLjk4NCwxOC44NzgsMTIuMjkzLDE5LjIzNCwxMi4yOTNaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+YCxcblx0XCJBTFwiOiBgPHBhdGggZD1cIk0xMS42MTYsNy45ODZBMS41NTksMS41NTksMCwwLDAsMTAuMTYsN0gxMC4xYTEuNTU4LDEuNTU4LDAsMCwwLTEuNDU2Ljk4NkwyLDI1SDUuODA2bDEuMDE1LTIuODM0aDYuNjIxTDE0LjQ1NywyNWgzLjhaTTcuOTQ0LDE4Ljk1NmwyLjE4OC02LjExMSwyLjE4OCw2LjExNlpcIiBzdHlsZT1cImZpbGw6IzJlYTk4ZVwiLz48cGF0aCBkPVwiTTIzLjgyOSwyMS42NzFWNy4xMjlIMjAuM1YyMi43NDdBMi4zNDYsMi4zNDYsMCwwLDAsMjIuNTcsMjVIMzBWMjEuNjcyWlwiIHN0eWxlPVwiZmlsbDojMmVhOThlXCIvPmAsXG5cdFwiQU5UTFI0XCI6IGA8cGF0aCBkPVwiTTE0LjE3Nyw3LjI3OGEyLjA4LDIuMDgsMCwwLDEsMy4wNDEtLjhBMy41NzEsMy41NzEsMCwwLDEsMTguMiw4LjAyMmMxLjM1NiwzLjEyMiwyLjksNi4xNjUsNC4xMTksOS4zNDUuNjQ1LDEuNSwxLjQyOSwyLjkzOCwxLjk5NCw0LjQ2OGExLjQ1NSwxLjQ1NSwwLDAsMS0yLjI1OCwxLjM3NmMtMi44LTEuNTcyLTUuNjI4LTMuMDk0LTguMzg1LTQuNzMxLDIuMDA5LjAwOCw0LjAxOC0uMDA4LDYuMDI1LjAxM2ExOS43MDcsMTkuNzA3LDAsMCwwLTEuMjg4LTIuOTE4Yy0uNzgxLTEuODU4LTEuNi0zLjctMi4zNTgtNS41NjVhOS43ODMsOS43ODMsMCwwLDAtMS4wMzIsMi4xMjVjLTEuMywzLjE4Mi0yLjg3LDYuMjQxLTQuMTM2LDkuNDM1LS4yODEuNTktLjQyNCwxLjM0NC0xLjAzNSwxLjY5YTEuNDQ3LDEuNDQ3LDAsMCwxLTIuMDk0LS43MzhjLS4yNDEtLjYxLjE1MS0xLjIuMzgyLTEuNzQzLjc3OS0xLjcyNSwxLjY0NS0zLjQxMywyLjI4My01LjJDMTEuNjUsMTIuOCwxMi45MTYsMTAuMDQxLDE0LjE3Nyw3LjI3OFpcIiBzdHlsZT1cImZpbGw6I2ZlZmVmZVwiLz48cGF0aCBkPVwiTTEzLjgxNywyLjJBMTMuOTIzLDEzLjkyMywwLDAsMSwyOS41MjYsMTIuNTQ5YTEzLjczMywxMy43MzMsMCwwLDEtMi4wODIsMTEuNTE5QTE0LjA3NCwxNC4wNzQsMCwwLDEsNy43MzgsMjcuMjkzYTEzLjg1MiwxMy44NTIsMCwwLDEtNS42MTUtOS40ODNBMTQuMTUyLDE0LjE1MiwwLDAsMSwzLjQ1MSw5Ljg1LDEzLjk2MSwxMy45NjEsMCwwLDEsMTMuODE3LDIuMm0uMzU5LDUuMDhjLTEuMjYxLDIuNzYyLTIuNTI2LDUuNTI1LTMuNzYyLDguMy0uNjM4LDEuNzg2LTEuNSwzLjQ3My0yLjI4Myw1LjItLjIzMS41NDItLjYyMywxLjEzMy0uMzgyLDEuNzQzYTEuNDQ3LDEuNDQ3LDAsMCwwLDIuMDk0LjczOGMuNjEtLjM0Ny43NTMtMS4xLDEuMDM1LTEuNjksMS4yNjYtMy4xOTQsMi44MzMtNi4yNTMsNC4xMzYtOS40MzVhOS43ODMsOS43ODMsMCwwLDEsMS4wMzItMi4xMjVjLjc1NiwxLjg2OCwxLjU3NywzLjcwNywyLjM1OCw1LjU2NWExOS43MDcsMTkuNzA3LDAsMCwxLDEuMjg4LDIuOTE4Yy0yLjAwNy0uMDItNC4wMTYtLjAwNS02LjAyNS0uMDEzLDIuNzU3LDEuNjM3LDUuNTg4LDMuMTU5LDguMzg1LDQuNzMxYTEuNDU1LDEuNDU1LDAsMCwwLDIuMjU4LTEuMzc2Yy0uNTY1LTEuNTI5LTEuMzQ5LTIuOTcxLTEuOTk0LTQuNDY4LTEuMjItMy4xNzktMi43NjItNi4yMjMtNC4xMTktOS4zNDVhMy41NzEsMy41NzEsMCwwLDAtLjk4Mi0xLjU0NEEyLjA4LDIuMDgsMCwwLDAsMTQuMTc3LDcuMjc4WlwiIHN0eWxlPVwiZmlsbDojZTQ0YTMyXCIvPmAsXG5cdFwiQXBhY2hlIENvbmZpZ3VyYXRpb25cIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi01NjAyLjY4MlwiIHkxPVwiNzY4LjU0MVwiIHgyPVwiLTU1OTguNzI3XCIgeTI9XCI3NjMuOTE3XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC40MjMsIC0wLjkwNiwgLTAuOTA2LCAtMC40MjMsIDMwODIuODUzLCAtNDc0OC41NTEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZjY5OTIzXCIvPjxzdG9wIG9mZnNldD1cIjAuMzEyXCIgc3RvcC1jb2xvcj1cIiNmNzlhMjNcIi8+PHN0b3Agb2Zmc2V0PVwiMC44MzhcIiBzdG9wLWNvbG9yPVwiI2U5NzgyNlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi01NjMxLjk1MlwiIHkxPVwiNzY5LjA1MlwiIHgyPVwiLTU2MDMuNzM3XCIgeTI9XCI3NjkuMDUyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC40MjMsIC0wLjkwNiwgLTAuOTA2LCAtMC40MjMsIDMwODIuODUzLCAtNDc0OC41NTEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4zMjNcIiBzdG9wLWNvbG9yPVwiIzllMjA2NFwiLz48c3RvcCBvZmZzZXQ9XCIwLjYzXCIgc3RvcC1jb2xvcj1cIiNjOTIwMzdcIi8+PHN0b3Agb2Zmc2V0PVwiMC43NTFcIiBzdG9wLWNvbG9yPVwiI2NkMjMzNVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNlOTc4MjZcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItNTYyOC41NDZcIiB5MT1cIjc2Ni4yMjFcIiB4Mj1cIi01NjExLjczM1wiIHkyPVwiNzY2LjIyMVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuNDIzLCAtMC45MDYsIC0wLjkwNiwgLTAuNDIzLCAzMDgyLjg1MywgLTQ3NDguNTUxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzI4MjY2MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjA5NVwiIHN0b3AtY29sb3I9XCIjNjYyZThkXCIvPjxzdG9wIG9mZnNldD1cIjAuNzg4XCIgc3RvcC1jb2xvcj1cIiM5ZjIwNjRcIi8+PHN0b3Agb2Zmc2V0PVwiMC45NDlcIiBzdG9wLWNvbG9yPVwiI2NkMjAzMlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImRcIiB4MT1cIi01NjMwLjM2N1wiIHkxPVwiNzY5LjMxNlwiIHgyPVwiLTU2MDIuMTUyXCIgeTI9XCI3NjkuMzE2XCIgeGxpbms6aHJlZj1cIiNiXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImVcIiB4MT1cIi01NjI4LjMxXCIgeTE9XCI3NjguOTMzXCIgeDI9XCItNTYxMy40ODJcIiB5Mj1cIjc2OC45MzNcIiB4bGluazpocmVmPVwiI2NcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZlwiIHgxPVwiLTU2MzAuMzY3XCIgeTE9XCI3NjYuMzk0XCIgeDI9XCItNTYwMi4xNTJcIiB5Mj1cIjc2Ni4zOTRcIiB4bGluazpocmVmPVwiI2JcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZ1wiIHgxPVwiLTU2MzIuMTE4XCIgeTE9XCI3NjYuNTM5XCIgeDI9XCItNTYwMy45MDJcIiB5Mj1cIjc2Ni41MzlcIiB4bGluazpocmVmPVwiI2JcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiaFwiIHgxPVwiLTU2MzAuMzY3XCIgeTE9XCI3NjUuNTI2XCIgeDI9XCItNTYwMi4xNTJcIiB5Mj1cIjc2NS41MjZcIiB4bGluazpocmVmPVwiI2JcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiaVwiIHgxPVwiLTU2MzAuMzY3XCIgeTE9XCI3NjUuNjI1XCIgeDI9XCItNTYwMi4xNTJcIiB5Mj1cIjc2NS42MjVcIiB4bGluazpocmVmPVwiI2JcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwialwiIHgxPVwiLTU2MTQuNTE2XCIgeTE9XCI3NjUuNjQ1XCIgeDI9XCItNTYwOC4yOFwiIHkyPVwiNzY1LjY0NVwiIHhsaW5rOmhyZWY9XCIjYlwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9hcGFjaGU8L3RpdGxlPjxwYXRoIGQ9XCJNMTkuOTkzLDIuMTMzYTEwLjI2NywxMC4yNjcsMCwwLDAtMi4wNCwyLjA1NmwuOCwxLjUxYTE5LjczMywxOS43MzMsMCwwLDEsMS43MDgtMi4xNDRjLjA0NC0uMDQ5LjA2OC0uMDcyLjA2OC0uMDcybC0uMDY4LjA3MmExNy44NjUsMTcuODY1LDAsMCwwLTEuNiwyLjE3NCwzMC4xLDMwLjEsMCwwLDAsMy4xMTEtLjM4NSwzLjI4OCwzLjI4OCwwLDAsMC0uMy0yLjVTMjAuOSwxLjYsMTkuOTkzLDIuMTMzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTguNjM4LDEwLjc0OWwuMDE4LDAtLjExNS4wMTMtLjAyMS4wMDlaXCIgc3R5bGU9XCJmaWxsOm5vbmVcIi8+PHBhdGggZD1cIk0xNy44MjEsMTMuNDU1Yy0uMDY2LjAxNS0uMTMyLjAyNi0uMi4wMzZDMTcuNjg5LDEzLjQ4MSwxNy43NTYsMTMuNDY5LDE3LjgyMSwxMy40NTVaXCIgc3R5bGU9XCJmaWxsOm5vbmVcIi8+PHBhdGggZD1cIk0xMi4yNywxOS41MjRjLjAwOS0uMDIzLjAxNy0uMDQ1LjAyNS0uMDY4cS4yNjQtLjcuNTIzLTEuMzU3LjI5MS0uNzQxLjU3NS0xLjQzNi4zLS43MzMuNTktMS40MTguMzA1LS43MTguNi0xLjM4NC4yNC0uNTQyLjQ3NC0xLjA0OS4wNzgtLjE2OS4xNTUtLjMzNS4xNTMtLjMyOS4zLS42NDUuMTM4LS4yOTEuMjc0LS41N2MuMDMtLjA2Mi4wNi0uMTIzLjA5LS4xODVsLjAxNS0uMDMtLjEuMDExLS4wNzgtLjE1NGMtLjAwNy4wMTUtLjAxNS4wMy0uMDIzLjA0NXEtLjIxMS40MTgtLjQxNy44NDUtLjExOS4yNDYtLjIzOC40OTUtLjMyOC42ODktLjY0NSwxLjM4OVQxMy43NjYsMTUuMXEtLjMuNy0uNTk0LDEuNHQtLjU2NywxLjM4N3EtLjI4OS43Mi0uNTYyLDEuNDI2LS4wNjIuMTU5LS4xMjMuMzE4LS4yMTkuNTY5LS40MjYsMS4xMjRsLjEyMy4yNDMuMTEtLjAxMi4wMTItLjAzM1ExMi4wMDgsMjAuMjE2LDEyLjI3LDE5LjUyNFpcIiBzdHlsZT1cImZpbGw6bm9uZVwiLz48cGF0aCBkPVwiTTE3LjU3LDEzLjVaXCIgc3R5bGU9XCJmaWxsOm5vbmVcIi8+PHBhdGggZD1cIk0xNy4zMDUsMTQuODE4bC0uMzE1LjA1NWgwbC4xNjEtLjAyNUMxNy4yLDE0LjgzOSwxNy4yNTMsMTQuODI5LDE3LjMwNSwxNC44MThaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmVcIi8+PHBhdGggZD1cIk0xNy4zMDUsMTQuODE4bC0uMzE1LjA1NWgwbC4xNjEtLjAyNUMxNy4yLDE0LjgzOSwxNy4yNTMsMTQuODI5LDE3LjMwNSwxNC44MThaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmU7b3BhY2l0eTowLjM0OTk5OTk5NDAzOTUzNTU7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xNy41NzMsMTMuNWgwbC4wNS0uMDA3Yy4wNjgtLjAxLjEzNS0uMDIyLjItLjAzNmwtLjI0OC4wNDJaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmVcIi8+PHBhdGggZD1cIk0xNy41NzMsMTMuNWgwbC4wNS0uMDA3Yy4wNjgtLjAxLjEzNS0uMDIyLjItLjAzNmwtLjI0OC4wNDJaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmU7b3BhY2l0eTowLjM0OTk5OTk5NDAzOTUzNTU7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xNi4zOTQsOS42cS4zNjUtLjY4Mi43MzktMS4zMzIuMzg4LS42NzQuNzg0LTEuMzA1bC4wNDYtLjA3NXEuMzkyLS42Mi43OS0xLjE5MWwtLjgtMS41MS0uMTgyLjIyNWMtLjIzMS4yODgtLjQ3LjYtLjcxNi45MjUtLjI3Ny4zNy0uNTYyLjc2NC0uODUxLDEuMTc5LS4yNjcuMzgzLS41MzguNzg0LS44MDksMS4yLS4yMzEuMzUzLS40NjIuNzE3LS42OTIsMS4wOWwtLjAyNi4wNDJMMTUuNzE4LDEwLjlRMTYuMDUyLDEwLjI0NCwxNi4zOTQsOS42WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTEuNjUxLDIxLjE5MnEtLjIwNy41NjgtLjQxNSwxLjE1OWwtLjAwNi4wMTctLjA1OS4xNjdjLS4wOTMuMjY2LS4xNzUuNS0uMzYxLDEuMDQ5YTIuMTA3LDIuMTA3LDAsMCwxLC43ODYuOTI2LDEuNjgsMS42OCwwLDAsMC0uNTQ0LTEuMTU0LDMuNjIxLDMuNjIxLDAsMCwwLDMuNDg5LTEuNDIsMi43OTEsMi43OTEsMCwwLDAsLjE2NS0uMzEzLDEuNDUxLDEuNDUxLDAsMCwxLTEuNC41MTNsMCwwLDAsMGE0LjA1OSw0LjA1OSwwLDAsMCwyLjA0Ni0xLjY3MmMuMTExLS4xNzguMjE4LS4zNzIuMzI4LS41ODdhMy4zLDMuMywwLDAsMS0zLjEwOSwxLjAxbC0uODQyLjA5MkMxMS43LDIxLjA1LDExLjY3NywyMS4xMjEsMTEuNjUxLDIxLjE5MlpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTEyLjA0NCwxOS4zMDZxLjI3My0uNzA2LjU2Mi0xLjQyNi4yNzYtLjY5LjU2Ny0xLjM4N3QuNTk0LTEuNHEuMzA4LS43MTEuNjI5LTEuNDE5dC42NDUtMS4zODlxLjExOC0uMjQ4LjIzOC0uNDk1LjIwNy0uNDI2LjQxNy0uODQ1Yy4wMDctLjAxNS4wMTUtLjAzLjAyMy0uMDQ1TDE0LjY3Nyw4Ljg0N2wtLjA1MS4wODNjLS4yNDIuNC0uNDg0LjgtLjcyMSwxLjIxNnMtLjQ3NS44NDQtLjcsMS4yNzZxLS4yOTEuNTQ3LS41NjgsMS4xbC0uMTEuMjI1Yy0uMjI3LjQ2Ny0uNDMyLjkxOC0uNjE3LDEuMzUycS0uMzE1LjczNy0uNTU2LDEuNDA2Yy0uMTA3LjI5My0uMi41NzYtLjI5Mi44NDctLjA3My4yMzItLjE0Mi40NjQtLjIwOC43cS0uMjM0LjgxOC0uNCwxLjYzMUwxMS41LDIwLjc0OHEuMjA4LS41NTQuNDI2LTEuMTI0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMTAuNDM1LDE4Ljc1NWExNi4wNywxNi4wNywwLDAsMC0uMjcyLDEuOTc0YzAsLjAyMywwLC4wNDYtLjAwNS4wNjlhNC4xNSw0LjE1LDAsMCwwLTEuMi0xLjAyOSw1LjgyNSw1LjgyNSwwLDAsMSwxLjE3MiwyLjY5MywyLjY0MiwyLjY0MiwwLDAsMS0xLjMyNS0uMjI2LDIuNjYyLDIuNjYyLDAsMCwwLDEuMTMuNjg2LDMuMjQ3LDMuMjQ3LDAsMCwwLTEuNTcxLjc4MywzLjM1OSwzLjM1OSwwLDAsMSwxLjg2MS0uMzQyQzkuNTEsMjUuMzg5LDguNzkzLDI3LjYyNiw4LjA3NiwzMGEuNjI1LjYyNSwwLDAsMCwuNDI1LS40MTNjLjEyOC0uNDMuOTc2LTMuMjUxLDIuMzA2LTYuOTU5bC4xMTUtLjMxOC4wMzItLjA4OXEuMjExLS41ODMuNDM3LTEuMTlsLjEtLjI3NywwLS4wMDVMMTAuNDUsMTguNjg0QzEwLjQ0NSwxOC43MDcsMTAuNDM5LDE4LjczMSwxMC40MzUsMTguNzU1WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxwYXRoIGQ9XCJNMTUuODgsMTEuMDc4bC0uMDkuMTg1cS0uMTM1LjI3OS0uMjc0LjU3LS4xNS4zMTUtLjMuNjQ1Yy0uMDUyLjExMS0uMS4yMjItLjE1NS4zMzVxLS4yMzQuNTA4LS40NzQsMS4wNDktLjMuNjY2LS42LDEuMzg0LS4yOTEuNjg1LS41OSwxLjQxOC0uMjg0LjctLjU3NSwxLjQzNi0uMjU5LjY2MS0uNTIzLDEuMzU3Yy0uMDA5LjAyMy0uMDE3LjA0NS0uMDI1LjA2OHEtLjI2Mi42OTMtLjUyOSwxLjQyMmwtLjAxMi4wMzMuODQyLS4wOTItLjA1LS4wMDlhNiw2LDAsMCwwLDMuMjEtMS44MDcsNy45ODQsNy45ODQsMCwwLDAsMS4xLTEuNTI0LDEzLjEzOSwxMy4xMzksMCwwLDAsLjcwNi0xLjQ2N2MuMTk1LS40NzIuMzgyLS45ODIuNTYyLTEuNTM2YTMuMDUzLDMuMDUzLDAsMCwxLS43ODguMjc0Yy0uMDUxLjAxMS0uMS4wMjEtLjE1Ni4wM3MtLjEwNy4wMTgtLjE2MS4wMjVoMGEzLjY2OCwzLjY2OCwwLDAsMCwxLjk2Mi0xLjkxMywzLjM0NCwzLjM0NCwwLDAsMS0xLjEzLjQ5NWMtLjA2Ni4wMTUtLjEzMi4wMjYtLjIuMDM2bC0uMDUuMDA3aDBhMy44MjEsMy44MjEsMCwwLDAsLjgzOS0uNDY5Yy4wNTEtLjAzOC4xLS4wNzguMTQ4LS4xMi4wNzMtLjA2My4xNDItLjEyOS4yMDgtLjIuMDQyLS4wNDQuMDgzLS4wOS4xMjMtLjEzOGEzLjI3LDMuMjcsMCwwLDAsLjI2My0uMzYyYy4wMjUtLjA0LjA1LS4wOC4wNzQtLjEyMi4wMzEtLjA2LjA2MS0uMTE5LjA5LS4xNzguMTMxLS4yNjQuMjM2LS41LjMxOS0uNzA2LjA0Mi0uMS4wNzgtLjIuMTA5LS4yODguMDEzLS4wMzUuMDI1LS4wNy4wMzYtLjEuMDMzLS4xLjA2LS4xODcuMDgxLS4yNjVhMi42MDUsMi42MDUsMCwwLDAsLjA2Mi0uMjc1aDBhMS4wMSwxLjAxLDAsMCwxLS4xMDkuMDc1LDMuOTY1LDMuOTY1LDAsMCwxLTEuMTYyLjRsLjc3My0uMDg1LS43NzMuMDg1LS4wMTgsMC0uMTE5LjAxOS4wMjEtLjAwOS0yLjY0NS4yOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48cGF0aCBkPVwiTTE4Ljg1OCw1LjczYy0uMjM1LjM2MS0uNDkyLjc3MS0uNzY4LDEuMjM2bC0uMDQ0LjA3NHEtLjM1OC42LS43NTksMS4zMjctLjM0Ni42MjYtLjcxOSwxLjM0Ny0uMzI2LjYyOS0uNjcyLDEuMzM2bDIuNjQ1LS4yOUEzLjIxNiwzLjIxNiwwLDAsMCwxOS45OSw5LjYyYy4wODktLjEyOC4xNzgtLjI2Mi4yNjctLjQuMjcyLS40MjQuNTM4LS44OTEuNzc2LTEuMzU1YTE0LjA3NCwxNC4wNzQsMCwwLDAsLjU4OC0xLjI5NCw2LjgsNi44LDAsMCwwLC4yMzMtLjdjLjA0OC0uMTg0LjA4Ni0uMzU4LjExNS0uNTI0QTMwLjE1MiwzMC4xNTIsMCwwLDEsMTguODU4LDUuNzNaXCIgc3R5bGU9XCJmaWxsOnVybCgjZylcIi8+PHBhdGggZD1cIk0xNy4xNDksMTQuODQ4Yy0uMDUzLjAwOS0uMTA3LjAxOC0uMTYxLjAyNWgwQzE3LjA0MiwxNC44NjYsMTcuMSwxNC44NTcsMTcuMTQ5LDE0Ljg0OFpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZVwiLz48cGF0aCBkPVwiTTE3LjE0OSwxNC44NDhjLS4wNTMuMDA5LS4xMDcuMDE4LS4xNjEuMDI1aDBDMTcuMDQyLDE0Ljg2NiwxNy4xLDE0Ljg1NywxNy4xNDksMTQuODQ4WlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlO29wYWNpdHk6MC4zNDk5OTk5OTQwMzk1MzU1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTcuMTQ5LDE0Ljg0OGMtLjA1My4wMDktLjEwNy4wMTgtLjE2MS4wMjVoMEMxNy4wNDIsMTQuODY2LDE3LjEsMTQuODU3LDE3LjE0OSwxNC44NDhaXCIgc3R5bGU9XCJmaWxsOnVybCgjaClcIi8+PHBhdGggZD1cIk0xNy41NywxMy41bC4wNS0uMDA3LS4wNS4wMDdaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmVcIi8+PHBhdGggZD1cIk0xNy41NywxMy41bC4wNS0uMDA3LS4wNS4wMDdaXCIgc3R5bGU9XCJmaWxsOiNiZTIwMmU7b3BhY2l0eTowLjM0OTk5OTk5NDAzOTUzNTU7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xNy41NywxMy41bC4wNS0uMDA3LS4wNS4wMDdaXCIgc3R5bGU9XCJmaWxsOnVybCgjaSlcIi8+PHBhdGggZD1cIk0xNy41NzIsMTMuNWgwWlwiIHN0eWxlPVwiZmlsbDojYmUyMDJlXCIvPjxwYXRoIGQ9XCJNMTcuNTcyLDEzLjVoMFpcIiBzdHlsZT1cImZpbGw6I2JlMjAyZTtvcGFjaXR5OjAuMzQ5OTk5OTk0MDM5NTM1NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTE3LjU3MiwxMy41aDBaXCIgc3R5bGU9XCJmaWxsOnVybCgjailcIi8+YCxcblx0XCJBcGV4XCI6IGA8cGF0aCBkPVwiTTEzLjY1Miw4LjMzOEE0LjkwNiw0LjkwNiwwLDAsMSwxNy4yLDYuODE0YTQuOTU3LDQuOTU3LDAsMCwxLDQuMzIsMi41Niw1Ljk3Miw1Ljk3MiwwLDAsMSwyLjQ0Mi0uNTE5LDYuMDg5LDYuMDg5LDAsMSwxLTEuMTg5LDEyLjA2LDQuNDEyLDQuNDEyLDAsMCwxLTUuNzgyLDEuODE2QTUuMDM0LDUuMDM0LDAsMCwxLDcuNjM0LDIyLjVhNC42NDYsNC42NDYsMCwwLDEtLjk2LjEsNC43MzIsNC43MzIsMCwwLDEtMi4zMzctOC44MTIsNS40MzgsNS40MzgsMCwwLDEsOS4zMTUtNS40NTNcIiBzdHlsZT1cImZpbGw6IzBmOWJkN1wiLz48cGF0aCBkPVwiTTI1LjM3NiwzMC45NjZoLS41NjFhNC42NTgsNC42NTgsMCwwLDEtMS4yODQtLjEzNywxLjksMS45LDAsMCwxLS44MTgtLjQ4MiwxLjcyNiwxLjcyNiwwLDAsMS0uNDU1LS44NDMsNi43Nyw2Ljc3LDAsMCwxLS4xMDYtMS40MTMsNS44ODksNS44ODksMCwwLDAtLjA4NC0xLjMzLDEsMSwwLDAsMC0uMy0uNTQ0LDEuMjIzLDEuMjIzLDAsMCwwLS42Ni0uMTc5bC0uMjM2LS4wMTRWMjQuMTQ1bC4yMzYtLjAxNGExLjQ4MiwxLjQ4MiwwLDAsMCwuNTQ5LS4xLjcwNi43MDYsMCwwLDAsLjI3My0uMjY0LDEuMzk0LDEuMzk0LDAsMCwwLC4xODEtLjUyOSw2LjY4Myw2LjY4MywwLDAsMCwuMDQ0LS45MzksOC4xMzIsOC4xMzIsMCwwLDEsLjExMi0xLjY0MywxLjcsMS43LDAsMCwxLC40NDgtLjg0MSwyLjE0NCwyLjE0NCwwLDAsMSwuOTA2LS40OTIsNC41MTQsNC41MTQsMCwwLDEsMS4yLS4xMTZoLjU2MXYxLjloLS4yNWEyLjU4OSwyLjU4OSwwLDAsMC0uNzQzLjA1Ni4yODQuMjg0LDAsMCwwLS4xNDguMTE3LjgzOS44MzksMCwwLDAtLjA1NC4zODZxMCwuMzcyLS4wNTMsMS40MTNhMy43NCwzLjc0LDAsMCwxLS4xNjYsMS4wMDksMS45NDUsMS45NDUsMCwwLDEtLjY5MywxLDIuMDEsMi4wMSwwLDAsMSwuNywxLjA0NCw0LjYyNyw0LjYyNywwLDAsMSwuMTYzLDEuMDc5Yy4wMjcuNjU3LjA0MSwxLjA3NC4wNDEsMS4yNTZhLjg3MS44NzEsMCwwLDAsLjA1Ny40MDhBLjM0My4zNDMsMCwwLDAsMjQuNCwyOWEyLjM4MiwyLjM4MiwwLDAsMCwuNzI4LjA2aC4yNVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTIxLjExOCwyNS43ODhWMjQuMzgyYTEuNzUyLDEuNzUyLDAsMCwwLC42NDUtLjEyOS45MzYuOTM2LDAsMCwwLC4zNzUtLjM1NCwxLjYyMSwxLjYyMSwwLDAsMCwuMjE3LS42MjRBNi44OCw2Ljg4LDAsMCwwLDIyLjQsMjIuM2E4LDgsMCwwLDEsLjEwNS0xLjU4NSwxLjQ1NiwxLjQ1NiwwLDAsMSwuMzgxLS43MjEsMS45LDEuOSwwLDAsMSwuOC0uNDMxLDQuMzM2LDQuMzM2LDAsMCwxLDEuMTI1LS4xMDVoLjMxMXYxLjRhMi44NzYsMi44NzYsMCwwLDAtLjgzNS4wNzMuNTMuNTMsMCwwLDAtLjI3Mi4yMjMsMS4wNzksMS4wNzksMCwwLDAtLjA4OC41MTNxMCwuMzY5LS4wNTMsMS40YTMuNTMxLDMuNTMxLDAsMCwxLS4xNTIuOTQsMS45MTgsMS45MTgsMCwwLDEtLjMxMy41OTUsMi40NywyLjQ3LDAsMCwxLS41ODMuNDg2LDIuMDQ1LDIuMDQ1LDAsMCwxLC41NjUuNDY2LDEuODY5LDEuODY5LDAsMCwxLC4zMzcuNjQ3LDQuNDEsNC40MSwwLDAsMSwuMTUyLDEuMDJxLjA0MS45NzMuMDQxLDEuMjQyYTEuMSwxLjEsMCwwLDAsLjA5NC41MzkuNTg0LjU4NCwwLDAsMCwuMjg0LjIzMSwyLjY0OSwyLjY0OSwwLDAsMCwuODIzLjA3OXYxLjQwNmgtLjMxMUE0LjQ3NCw0LjQ3NCwwLDAsMSwyMy42LDMwLjU5YTEuNjQ0LDEuNjQ0LDAsMCwxLS43MTItLjQxOSwxLjQ3OCwxLjQ3OCwwLDAsMS0uMzktLjcyNCw2LjYyMSw2LjYyMSwwLDAsMS0uMS0xLjM1Niw2LjM3NCw2LjM3NCwwLDAsMC0uMDk0LTEuNCwxLjIzMiwxLjIzMiwwLDAsMC0uMzktLjY3MUExLjQzMSwxLjQzMSwwLDAsMCwyMS4xMTgsMjUuNzg4WlwiIHN0eWxlPVwiZmlsbDojMDA3MmEwXCIvPjxwYXRoIGQ9XCJNMjcuMDExLDMwLjk2NkgyNi40NVYyOS4wNTloLjI1QTIuMzI5LDIuMzI5LDAsMCwwLDI3LjQyNiwyOWEuMzIzLjMyMywwLDAsMCwuMTY1LS4xMjcuODEyLjgxMiwwLDAsMCwuMDU4LS4zNzlxMC0uMzYuMDUtMS4zNzVhMy43MjUsMy43MjUsMCwwLDEsLjE3My0xLjA0NywyLjIyMywyLjIyMywwLDAsMSwuMzg3LS43LDIuMTQ1LDIuMTQ1LDAsMCwxLC4zLS4yOTIsMi4xNDEsMi4xNDEsMCwwLDEtLjQtLjQsMi42MTIsMi42MTIsMCwwLDEtLjQyMS0xLjA5MiwxNy41MjUsMTcuNTI1LDAsMCwxLS4xLTEuODQxLDEuMzU3LDEuMzU3LDAsMCwwLS4wNTMtLjQ3OWMtLjAwOC0uMDE2LS4wMzEtLjA2Mi0uMTM2LS4xMDZhMi41MjQsMi41MjQsMCwwLDAtLjc1Ny0uMDZoLS4yNVYxOS4yaC41NjFhNC43OTMsNC43OTMsMCwwLDEsMS4yODMuMTMzLDEuODQxLDEuODQxLDAsMCwxLC44MTguNDg1LDEuNzgxLDEuNzgxLDAsMCwxLC40NTMuODQzLDYuNiw2LjYsMCwwLDEsLjEwOSwxLjQxNCw2LjM1OSw2LjM1OSwwLDAsMCwuMDc5LDEuMzM2Ljk5Mi45OTIsMCwwLDAsLjMuNTM3LDEuMjI2LDEuMjI2LDAsMCwwLC42NjQuMThsLjIzNi4wMTR2MS44NzlsLS4yMzYuMDE0YTEuNDgyLDEuNDgyLDAsMCwwLS41NDkuMS42ODYuNjg2LDAsMCwwLS4yNy4yNjIsMS40ODQsMS40ODQsMCwwLDAtLjE4Ni41MzQsNi43NDMsNi43NDMsMCwwLDAtLjA0My45MzEsOC4zODMsOC4zODMsMCwwLDEtLjEwOCwxLjY0NCwxLjY5NCwxLjY5NCwwLDAsMS0uNDQ2Ljg0NiwyLjE0MywyLjE0MywwLDAsMS0uOTEzLjQ5MkE0LjUsNC41LDAsMCwxLDI3LjAxMSwzMC45NjZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0zMC43MDgsMjUuNzg4YTEuNzUyLDEuNzUyLDAsMCwwLS42NDUuMTI5LjkxOC45MTgsMCwwLDAtLjM3Mi4zNTQsMS43MjUsMS43MjUsMCwwLDAtLjIyLjYyNCw2LjgyLDYuODIsMCwwLDAtLjA0Ny45NzMsOC4yNyw4LjI3LDAsMCwxLS4xLDEuNTg4LDEuNDM5LDEuNDM5LDAsMCwxLS4zNzguNzI0LDEuOSwxLjksMCwwLDEtLjgwOS40MzEsNC4zMzYsNC4zMzYsMCwwLDEtMS4xMjUuMTA1SDI2LjdWMjkuMzFhMi42NTIsMi42NTIsMCwwLDAsLjgyLS4wNzlBLjU3Mi41NzIsMCwwLDAsMjcuOCwyOSwxLjA1LDEuMDUsMCwwLDAsMjcuOSwyOC41cTAtLjM1Ny4wNS0xLjM2NWEzLjUzLDMuNTMsMCwwLDEsLjE1OC0uOTc2LDEuOTc2LDEuOTc2LDAsMCwxLC4zNDMtLjYyMUEyLjAzOCwyLjAzOCwwLDAsMSwyOSwyNS4wODVhMi40MTYsMi40MTYsMCwwLDEtLjYzMy0uNTUxLDIuMzM5LDIuMzM5LDAsMCwxLS4zNzUtLjk4NCwxNy41NjQsMTcuNTY0LDAsMCwxLS4wOTQtMS44LDEuNTcxLDEuNTcxLDAsMCwwLS4wNzktLjU4Ni40ODcuNDg3LDAsMCwwLS4yNjQtLjIyNiwyLjgsMi44LDAsMCwwLS44NTMtLjA3OXYtMS40aC4zMTFhNC41NzYsNC41NzYsMCwwLDEsMS4yMTMuMTIzLDEuNTg3LDEuNTg3LDAsMCwxLC43MDkuNDE5LDEuNTI5LDEuNTI5LDAsMCwxLC4zOS43MjcsNi40MzYsNi40MzYsMCwwLDEsLjEsMS4zNTYsNi44NDIsNi44NDIsMCwwLDAsLjA4OCwxLjQsMS4yMjMsMS4yMjMsMCwwLDAsLjM5My42NzEsMS40NDcsMS40NDcsMCwwLDAsLjguMjMxWlwiIHN0eWxlPVwiZmlsbDojMDA3MmEwXCIvPmAsXG5cdFwiQVBMXCI6IGA8cGF0aCBkPVwiTTMwLDI4LjI3NSwxNiwyLDIsMjguMjc1SDE0LjE2MlYzMGgzLjY3NlYyOC4yNzVaTTE3LjgzOCwyNC44MjZWMTMuMTYxbDYuMjE1LDExLjY2NVptLTkuODkxLDAsNi4yMTUtMTEuNjY1VjI0LjgyNlpcIiBzdHlsZT1cImZpbGw6I2QyZDJkMlwiLz5gLFxuXHRcIkFwcGxlU2NyaXB0XCI6IGA8cGF0aCBkPVwiTTE3LjE4MSw0LjQzN0E1Ljk5Myw1Ljk5MywwLDAsMSwyMS41NzksMmE1Ljk3OSw1Ljk3OSwwLDAsMS0xLjQ0Nyw0LjQ3Niw0LjcyOSw0LjcyOSwwLDAsMS00LjE3LDEuOTYxQTUuMiw1LjIsMCwwLDEsMTcuMTgxLDQuNDM3WlwiIHN0eWxlPVwiZmlsbDojYThjMmFiXCIvPjxwYXRoIGQ9XCJNMTYuMiwxMC4wMzRjLjk0NiwwLDIuNy0xLjMsNC45ODktMS4zYTYuMjQ5LDYuMjQ5LDAsMCwxLDUuNDg0LDIuOCw2LjA4LDYuMDgsMCwwLDAtMy4wMjgsNS4zLDYuMjM1LDYuMjM1LDAsMCwwLDMuNzcyLDUuN3MtMi42MzcsNy40MjItNi4yLDcuNDIyYy0xLjYzNiwwLTIuOTA4LTEuMS00LjYzMS0xLjEtMS43NTcsMC0zLjUsMS4xNDQtNC42MzUsMS4xNDRDOC43LDMwLDQuNTg3LDIyLjk1OSw0LjU4NywxNy4zYzAtNS41NjgsMy40NzgtOC40ODksNi43NC04LjQ4OUMxMy40NDgsOC44MTEsMTUuMDkzLDEwLjAzNCwxNi4yLDEwLjAzNFpcIiBzdHlsZT1cImZpbGw6I2E4YzJhYlwiLz5gLFxuXHRcIkFyZHVpbm9cIjogYDxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD1cImFcIiBjeD1cIjc2Ny4xNzlcIiBjeT1cIjUxNjkuNTQzXCIgcj1cIjE0Ljk4OVwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC03MTguMTEyIC00OTUzLjkxNykgc2NhbGUoMC45NTUgMC45NjIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMzZiYWMwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzJkOTA5NFwiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2FyZHVpbm88L3RpdGxlPjxwYXRoIGQ9XCJNMjkuNjQ1LDE1LjkyNUExMy43NywxMy43NywwLDEsMSwxNS44NzYsMi4wNTYsMTMuODE5LDEzLjgxOSwwLDAsMSwyOS42NDUsMTUuOTI1WlwiIHN0eWxlPVwic3Ryb2tlOiMwMjc5N2U7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjEzNjcyMjg0NTQ5NjkyNjdweDtmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xMC41ODEsMTEuNjQ4YzIuNDEtLjA3NiwzLjM1OS44MzQsNC42MDUsMi4wNjkuMjg1LjI4Mi41NzkuNTkuOS45MjFsLjkyMi0uOTkxYTYuMjIzLDYuMjIzLDAsMCwxLDMuMjU2LTEuOTNjMS45MzktLjIxMSwzLjExOS0uMTIyLDQuMzExLjgxNGE1LjAyMyw1LjAyMywwLDAsMSwyLjI0NSwzLjksNS42NTMsNS42NTMsMCwwLDEtMy4yNSw1LjE1Niw1Ljk3NSw1Ljk3NSwwLDAsMS0zLjkxMy4xMzUsNy42NTYsNy42NTYsMCwwLDEtMy41NDEtMi45ODdjLTEuNjc4LDIuMTQyLTMuMTg3LDMuMjUzLTUuMjM1LDMuMTU1LTcuNDUyLS4zNTQtNi44NDItMTAuMDc1LS4zLTEwLjI0N1ptMS42NTcsNy45OTRhOS4xOTMsOS4xOTMsMCwwLDAsMi44NTYtMi45Yy0uNzQtMS4yNDMtMi4yMDktMi44MjQtMy40NTUtMy4xMzRhNC4zMjgsNC4zMjgsMCwwLDAtMy4yMjQuNzc3LDMuMzg0LDMuMzg0LDAsMCwwLS43NjIsMy42ODYsMy42NzQsMy42NzQsMCwwLDAsNC41ODUsMS41N1ptLTIuOTgtMy40ODcsMy4yNzguMDA1djEuMjFsLTMuMjgzLjAwNVptMTMuNDQ4LDMuNkEzLjg0MywzLjg0MywwLDAsMCwyNC45MzcsMTdhMy40NTgsMy40NTgsMCwwLDAtMS44NjMtMy4xMDksMy42NDgsMy42NDgsMCwwLDAtNC4yLjcyOCw3LjM2NCw3LjM2NCwwLDAsMC0xLjY0OSwyLjE1MUE4LjkzNiw4LjkzNiwwLDAsMCwxOS4yLDE5LjI1Miw0LjAyMiw0LjAyMiwwLDAsMCwyMi43MDYsMTkuNzU0Wm0tMS45NTUtMi4zNzYtMS4wODgtLjAwOCwwLTEuMjE3LDEuMDkxLDBWMTUuMDc1bDEuMTA3LS4wMDgtLjAwNywxLjA5MywxLjA4NSwwdjEuMTY1bC0xLjAyMS0uMDA4djEuMTJIMjAuNzUzWlwiIHN0eWxlPVwic3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjAuMTIxMDMwOTY0ODA5Mjc0ODJweDtvcGFjaXR5OjAuMTY4MDk5OTk5NDI3Nzk1NDtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTQuOTE3LDE2LjMzN2MwLDUuMzQ4LDcuMzU0LDcuMzQsMTAuOTg3LDEuODk0LDMuNzY1LDUuNjQ3LDEwLjgyNCwzLjI4LDEwLjgyNC0xLjlTMTkuNyw4LjY1NiwxNS45LDE0LjQ0MWMtMy42LTUuNzE5LTEwLjk4Ny0zLjQ1My0xMC45ODcsMS45Wm0xLjkzMSwwYzAtMy44Niw1LjQ1NS01LjA3OCw3Ljk5MiwwLTIuNTg4LDQuODg5LTcuOTkyLDMuODU5LTcuOTkyLDBabTEwLjExOSwwYzIuMjg2LTUuMTc4LDcuODg5LTMuNzUxLDcuODcyLjAwOFMxOS4xODYsMjEuMjc3LDE2Ljk2NywxNi4zMzdaXCIgc3R5bGU9XCJmaWxsOiNmZmY7c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjAuMjQyMDYxOTI5NjE4NTQ5NjRweFwiLz48cmVjdCB4PVwiOC44OThcIiB5PVwiMTUuNzk1XCIgd2lkdGg9XCIzLjIzN1wiIGhlaWdodD1cIjEuMDY3XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjAuNjQ0IDE2Ljg0NiAxOS41NzYgMTYuODQ2IDE5LjU3NiAxNS43MTIgMjAuNjQ0IDE1LjcxMiAyMC42NDQgMTQuNjQ0IDIxLjc3OSAxNC42NDQgMjEuNzc5IDE1LjcxMiAyMi44NDcgMTUuNzEyIDIyLjg0NyAxNi44NDYgMjEuNzc5IDE2Ljg0NiAyMS43NzkgMTcuOTE0IDIwLjY0NCAxNy45MTQgMjAuNjQ0IDE2Ljg0NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiQVJNIEFzc2VtYmx5XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCI4MzYuNjNcIiB5MT1cIjM2LjIwNVwiIHgyPVwiODQzLjgwMlwiIHkyPVwiMTQuNDhcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSg1MjUuOTIyIDMwLjI0OSkgcm90YXRlKDE4MCkgc2NhbGUoMC42MDcgMC42MDcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwLjI3NVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2Fzc2VtYmx5PC90aXRsZT48cGF0aCBkPVwiTTE2LDJjLTEuMjQ2LDMuMDU2LTIsNS4wNTctMy4zOTEsOC4wMjJBMjEuODg0LDIxLjg4NCwwLDAsMCwxNi4yLDEzLjE1NmExNC44NTgsMTQuODU4LDAsMCwxLTQtMi4yODNDMTAuNDMsMTQuNTc5LDcuNjQ2LDE5Ljg1NSwyLDMwYzUuMTg2LTIuOTk0LDkuMDEyLTQuNjQ4LDEyLjY5MS00Ljk2NlYyNC4yaC0uODM0di0uODM3aC44MzRWMjQuMmgxLjY3NVYyMi41MjFIMTQuNjkxdi0uODM0aC0uODM0VjIwLjAxM2guODM0di0uODM0aDEuNjc1di44MzRIMTcuMnYuODM3aC0uODM3di0uODM3SDE0LjY5MXYxLjY3NWgxLjY3NXYuODM0SDE3LjJWMjQuMmgtLjgzN3YuNzgzYzMuOTguMSw4LjAwNiwxLjc3MiwxMy42MzQsNS4wMjEtLjg2My0xLjU4OS0xLjYzNi0zLjAyMS0yLjM3Mi00LjM4NWEyNS41MjYsMjUuNTI2LDAsMCwwLTQuODMzLTMuMzMzQTE0LjQzNiwxNC40MzYsMCwwLDEsMjYuNjUsMjMuOEMxOS4xNyw5Ljg3MiwxOC41NjUsOC4wMiwxNiwyWk0xMC41MTEsMTkuMTc5aDEuNjcxdi44MzRoLjgzN3Y1LjAyMWgtLjgzN1YyMi41MjFIMTAuNTExdjIuNTEySDkuNjczVjIwLjAxM2guODM3Wm0wLC44MzR2MS42NzVoMS42NzFWMjAuMDEzWm03LjUyNi0uODM0aC44Mzd2LjgzNGguODM3di44MzdoLjgzNHYtLjgzN2guODM3di0uODM0aC44Mzd2NS44NTVoLS44MzdWMjAuODVoLS44Mzd2LjgzN2gtLjgzNFYyMC44NWgtLjgzN3Y0LjE4NGgtLjgzN1pcIiBzdHlsZT1cImZpbGw6IzAwMDBiZlwiLz48cGF0aCBkPVwiTTIzLjg4MSwxOC42NDJjLTYuMDY5LTguMjM3LTcuNDc2LTE0Ljg3Ni03LjgzMi0xNi40NjFBMTc1LjIxNywxNzUuMjE3LDAsMCwwLDIzLjg4MSwxOC42NDJaXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1vcGFjaXR5OjAuMTY1NjgwNDY4MDgyNDI4XCIvPjxwYXRoIGQ9XCJNMTYuMDUxLDIuMTIsMTUuNiwzLjIyN2MtLjE1OS4zOTEtLjMxMS43NjUtLjQ2MSwxLjEzMXMtLjMuNzI0LS40NDgsMS4wNzctLjMuNy0uNDQ4LDEuMDUzLS4zLjcwNi0uNDY1LDEuMDY2LS4zMjkuNzI5LS41MDYsMS4xMTEtLjM2Mi43NzgtLjU2MSwxLjE5M2MtLjAyOC4wNTctLjA2MS4xMjMtLjA4OS4xODFBMjEuODcyLDIxLjg3MiwwLDAsMCwxNi4yLDEzLjE1NmExNC44NzksMTQuODc5LDAsMCwxLTMuOTg5LTIuMjc2bC0uMTQuMjg3Yy0uMDY1LjEzMy0uMTQ0LjI4My0uMjEyLjQybC0uMTA2LjIxOWMtLjg3OCwxLjc5My0yLjAwNiwzLjk4NC0zLjUyNCw2LjgyMiwzLjU1MS0yLDcuMzgxLTQuODg3LDE0LjMzOC0yLjQtLjM0OS0uNjYxLS42Ny0xLjI4LS45NzEtMS44NjNzLS41ODEtMS4xMjgtLjg0MS0xLjY0NC0uNS0xLS43MjUtMS40NjMtLjQzMy0uOS0uNjI5LTEuMzEzLS4zOC0uODE4LS41NTQtMS4yLS4zMzktLjc1NC0uNS0xLjExOFMxOC4wNDcsNi45LDE3LjksNi41NDZzLS4yOTEtLjcwOS0uNDM0LTEuMDY2Yy0uMDM2LS4wOTEtLjA3My0uMTg2LS4xMDktLjI3N0MxNi45NDksNC4yNDcsMTYuNTM2LDMuMjU4LDE2LjA1MSwyLjEyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPmAsXG5cdFwiQXNjaWlEb2NcIjogYDxwYXRoIGQ9XCJNMzAsMzBIMlYySDMwWlwiIHN0eWxlPVwiZmlsbDojZTQwMDQ2XCIvPjxwYXRoIGQ9XCJNMjMuNzMxLDI0LjgzYS41ODkuNTg5LDAsMCwxLS43NjMtLjMzN0wxNi43MjQsOS4yNjksMTMuOTMsMTUuOTloMS44MzNhLjU5LjU5LDAsMCwxLS4wMjQsMS4xOEg4LjlhLjU5LjU5LDAsMCwxLC4wMjQtMS4xOGgzLjcyN2wwLS4wMTNMMTYuMTg0LDcuNWEuNTkxLjU5MSwwLDAsMSwuNTMzLS4zNjNoMGEuNTkyLjU5MiwwLDAsMSwuNTU3LjM2Nmw2Ljc4NSwxNi41NDYuMDA5LjAyMUEuNTkuNTksMCwwLDEsMjMuNzMxLDI0LjgzWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTQuNTE2LDE4Ljc5MUg3LjY3OWEuNTkuNTksMCwwLDAtLjAyNCwxLjE4SDExTDkuMzA5LDI0LjA0M2EuNTkuNTksMCwwLDAsMS4wODUuNDY0bDAtLjAxMSwxLjg3NS00LjUwOS4wMDUtLjAxNmgyLjIxNWEuNTkuNTksMCwwLDAsLjAyMy0xLjE4WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiQVNQLk5FVCAoQyMpXCI6IGA8dGl0bGU+ZmlsZV90eXBlX2FzcHg8L3RpdGxlPjxwb2x5Z29uIHBvaW50cz1cIjIyLjc1IDIgNi4zNSAyIDYuMzUgMzAgMjkuNjUgMzAgMjkuNjUgOSAyMi43NSAyXCIgc3R5bGU9XCJmaWxsOiNjNWM1YzVcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjcuMzUgMjcuNyA4Ljc1IDI3LjcgOC43NSA0LjMgMjAuNDUgNC4zIDIwLjQ1IDExLjMgMjcuNDUgMTEuMyAyNy40NSAyNy43IDI3LjM1IDI3LjdcIiBzdHlsZT1cImZpbGw6I2Y1ZjVmNVwiLz48cGF0aCBkPVwiTTEyLjEsMzAuOTk0QTExLjA5NCwxMS4wOTQsMCwxLDEsMjMuMTk0LDE5LjksMTEuMTA2LDExLjEwNiwwLDAsMSwxMi4xLDMwLjk5NFptMC0yMC4zQTkuMiw5LjIsMCwxLDAsMjEuMywxOS45LDkuMjE2LDkuMjE2LDAsMCwwLDEyLjEsMTAuN1pcIiBzdHlsZT1cImZpbGw6IzMzYTlkY1wiLz48cmVjdCB4PVwiMi4wOTlcIiB5PVwiMTkuNDU1XCIgd2lkdGg9XCIyMC4wMDNcIiBoZWlnaHQ9XCIwLjg5XCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGM7c3Ryb2tlOiMzM2E5ZGM7c3Ryb2tlLW1pdGVybGltaXQ6MTBcIi8+PHBhdGggZD1cIk0xMi4zMjUsMTUuNzYzYTMxLjkzLDMxLjkzLDAsMCwxLTguNDg0LTEuMTFsLjI0Mi0uODA3YTMxLjM3NCwzMS4zNzQsMCwwLDAsMTUuOTkyLDBsLjIzOS44MDdBMjguMDc2LDI4LjA3NiwwLDAsMSwxMi4zMjUsMTUuNzYzWlwiIHN0eWxlPVwiZmlsbDojMzNhOWRjO3N0cm9rZTojMzNhOWRjO3N0cm9rZS1taXRlcmxpbWl0OjEwXCIvPjxwYXRoIGQ9XCJNNC4xLDI1LjcyNGwtLjIzOS0uODA3YTMxLjY1MiwzMS42NTIsMCwwLDEsMTYuNDcyLDBsLS4yNDIuODA3QTMxLjM4LDMxLjM4LDAsMCwwLDQuMSwyNS43MjRaXCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGM7c3Ryb2tlOiMzM2E5ZGM7c3Ryb2tlLW1pdGVybGltaXQ6MTBcIi8+PHBhdGggZD1cIk04LjUzNiwyOS4wNTVBMjUuNDM4LDI1LjQzOCwwLDAsMSw4LDEwLjYwOGwuNzc2LjMzMWEyNC41NTgsMjQuNTU4LDAsMCwwLC41MzMsMTcuNzgzWlwiIHN0eWxlPVwiZmlsbDojMzNhOWRjO3N0cm9rZTojMzNhOWRjO3N0cm9rZS1taXRlcmxpbWl0OjEwXCIvPjxwYXRoIGQ9XCJNMTUuNiwyOS4wNTVsLS43NzYtLjMzM2EyNC41NTksMjQuNTU5LDAsMCwwLC41MzEtMTcuNzgzbC43NzYtLjMzMUEyNS40NDMsMjUuNDQzLDAsMCwxLDE1LjYsMjkuMDU1WlwiIHN0eWxlPVwiZmlsbDojMzNhOWRjO3N0cm9rZTojMzNhOWRjO3N0cm9rZS1taXRlcmxpbWl0OjEwXCIvPjxyZWN0IHg9XCIxMS42NTVcIiB5PVwiOS44OThcIiB3aWR0aD1cIjAuODg5XCIgaGVpZ2h0PVwiMjAuMzcxXCIgc3R5bGU9XCJmaWxsOiMzM2E5ZGM7c3Ryb2tlOiMzM2E5ZGM7c3Ryb2tlLW1pdGVybGltaXQ6MTBcIi8+YCxcblx0XCJBdXRvSG90a2V5XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCI1NC42MDRcIiB5MT1cIjE2OC4zODhcIiB4Mj1cIjU0LjYwNFwiIHkyPVwiMTk0Ljg4NVwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC0zOC42MDQgLTE2NS42MzYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZDhkOGQ4XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2EzYTNhM1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjY4Ljc1NlwiIHkxPVwiMjA5LjE1MlwiIHgyPVwiOTEuNjM4XCIgeTI9XCIyMDkuMTUyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTUwLjYwMSAtMTU5LjQ0OSkgc2NhbGUoMC44MzIgMC44MzcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZDdkN2Q3XCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjZTdlN2U3XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2Q3ZDdkN1wiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2F1dG9ob3RrZXk8L3RpdGxlPjxyZWN0IHg9XCIyXCIgeT1cIjIuODI0XCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI2LjM1M1wiIHJ4PVwiMy4wODhcIiByeT1cIjMuMDg4XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yNi44NTYsMjkuMTgxSDUuMTQ0QTMuMTQ4LDMuMTQ4LDAsMCwxLDIsMjYuMDM3VjUuOTYzQTMuMTQ4LDMuMTQ4LDAsMCwxLDUuMTQ0LDIuODE5SDI2Ljg1NkEzLjE0OCwzLjE0OCwwLDAsMSwzMCw1Ljk2M1YyNi4wMzdBMy4xNDgsMy4xNDgsMCwwLDEsMjYuODU2LDI5LjE4MVpNNS4xNDQsMi45NjNhMywzLDAsMCwwLTMsM2gwVjI2LjAzN2EzLDMsMCwwLDAsMywzSDI2Ljg1NmEzLDMsMCwwLDAsMy0zVjUuOTYzYTMsMywwLDAsMC0zLTNaXCIgc3R5bGU9XCJmaWxsOiM4ZDhkOGRcIi8+PHJlY3QgeD1cIjQuMzEzXCIgeT1cIjQuNjQxXCIgd2lkdGg9XCIyMy4xNjlcIiBoZWlnaHQ9XCIyMS45NFwiIHJ4PVwiMi41NzFcIiByeT1cIjIuNTcxXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0yNC45MTEsMjYuNjQxSDYuODg0QTIuNjM0LDIuNjM0LDAsMCwxLDQuMjUzLDI0LjAxVjcuMjEyQTIuNjM0LDIuNjM0LDAsMCwxLDYuODg0LDQuNTgxSDI0LjkxMWEyLjYzNCwyLjYzNCwwLDAsMSwyLjYzMSwyLjYzMXYxNi44QTIuNjM0LDIuNjM0LDAsMCwxLDI0LjkxMSwyNi42NDFaTTYuODg0LDQuN0EyLjUxNCwyLjUxNCwwLDAsMCw0LjM3Myw3LjIxMnYxNi44YTIuNTE0LDIuNTE0LDAsMCwwLDIuNTExLDIuNTExSDI0LjkxMWEyLjUxNCwyLjUxNCwwLDAsMCwyLjUxMS0yLjUxMVY3LjIxMkEyLjUxNCwyLjUxNCwwLDAsMCwyNC45MTEsNC43WlwiIHN0eWxlPVwiZmlsbDojZjhmOGY4XCIvPjxwYXRoIGQ9XCJNNi4xNDUsMjMuOWwyLjM0My02LjFoLjg3bDIuNSw2LjFoLS45MmwtLjcxMi0xLjg0OEg3LjY3M0w3LDIzLjlaTTcuOSwyMS40SDkuOTc0bC0uNjM3LTEuN3EtLjI5MS0uNzctLjQzMy0xLjI2NUE3Ljc3Niw3Ljc3NiwwLDAsMSw4LjU3NiwxOS42WlwiLz48cGF0aCBkPVwiTTEzLjYwNywyMy45VjE3LjhoLjgwN3YyLjVoMy4xNzFWMTcuOGguODA3djYuMWgtLjgwN1YyMS4wMjFoLTMuMTdWMjMuOVpcIi8+PHBhdGggZD1cIk0yMC40NzgsMjMuOVYxNy44aC44MDd2My4wMjVsMy4wMy0zLjAyNWgxLjA5NEwyMi44NSwyMC4yNjcsMjUuNTIyLDIzLjlIMjQuNDU2bC0yLjE3Mi0zLjA4OC0xLC45NzRWMjMuOVpcIi8+YCxcblx0XCJBdXRvSXRcIjogYDxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTZcIiByPVwiMTIuNTUxXCIgc3R5bGU9XCJmaWxsOiM1ZDgzYWNcIi8+PHBhdGggZD1cIk0yLDE2QTE0LDE0LDAsMSwxLDE2LDMwLDE0LDE0LDAsMCwxLDIsMTZaTTE2LDQuNzg5QTExLjIxMSwxMS4yMTEsMCwxLDAsMjcuMjExLDE2LDExLjIxMSwxMS4yMTEsMCwwLDAsMTYsNC43ODlaXCIgc3R5bGU9XCJmaWxsOiNmMGYwZjBcIi8+PHBhdGggZD1cIk0yNC41NzYsMjAuMTU2bC02LjQtOS4yNjRhMy4xMzEsMy4xMzEsMCwwLDAtLjgxOS0uODE5LDIuMzYsMi4zNiwwLDAsMC0yLjQ0Mi4wMjMsMy41NDMsMy41NDMsMCwwLDAtLjgxMi44TDcuNTMzLDIwLjE1NmgzLjc1Mmw0LjgwOC02LjgsMS44MzgsMi43MXEuMjYuMzY4LjU0NC43ODl0LjUuN3EtLjM2OC0uMDMxLS44NjUtLjAzMWgtMy41M2wtMS45MTQsMi42MzRaXCIgc3R5bGU9XCJmaWxsOiNmMGYwZjBcIi8+YCxcblx0XCJBdnJvIElETFwiOiBgPHBhdGggZD1cIk0yLDExLjY0OWguMDI1YTQuNzg1LDQuNzg1LDAsMCwwLDIuOTExLDEuMzM2YzIuMzA4LjIyMSw0LjU5LS40ODUsNi45LS4zMjZhNy4wMyw3LjAzLDAsMCwxLDIuNjguNjY0Yy41LS4zMTkuOTg5LS42NjIsMS40ODYtLjk4OS41LjMyNy45ODQuNjc0LDEuNDg4Ljk4OWE2LjgzNCw2LjgzNCwwLDAsMSwyLjQ4Ny0uNjVjMS45OTUtLjE2NywzLjk2Ny4zMDgsNS45NTcuMzU5YTUuMiw1LjIsMCwwLDAsNC4wMjYtMS4zODNIMzB2LjIzNmMtLjE3OC43NDctLjg4MiwxLjE3Ni0xLjI4NCwxLjc5YTQuOTQ4LDQuOTQ4LDAsMCwxLS43MzEuNzkxLDMuOCwzLjgsMCwwLDEtLjU2NS43NDgsMi41NTEsMi41NTEsMCwwLDAtLjU5NC41NDEsMi4xODEsMi4xODEsMCwwLDEtLjk2Ljc0OSwxLjE0OSwxLjE0OSwwLDAsMS0uNTY1LjU2LDYuNjksNi42OSwwLDAsMS0xLjk0LjE4NGMuNzIzLjU0OCwxLjUsMS4wMiwyLjI0NiwxLjUzNS43ODIuNTEzLDEuNTQsMS4wNjEsMi4zMjYsMS41NjhINC4wODljMS41LTEuMDU4LDMuMDU3LTIuMDM1LDQuNTUtMy4xQTYuOCw2LjgsMCwwLDEsNi43LDE3LjA2NWExLjE1NSwxLjE1NSwwLDAsMS0uNTY5LS41NjIsMi4yOCwyLjI4LDAsMCwxLTEuMDQzLS44NmMtLjI2OC0uMy0uNjctLjQ2Ni0uODUzLS44NDMtLjItLjQzNi0uNjU4LS42NjQtLjkwOS0xLjA2Ny0uNC0uNjQyLTEuMTM3LTEuMDc2LTEuMzI3LTEuODQ2di0uMjM5bTIuOTM5LDguNTI4cTExLjA1OS4wMDksMjIuMTIsMGMtMy42NjgtMi41MS03LjM3Ni00Ljk2MS0xMS4wNTktNy40NDgtMy42ODQsMi40ODctNy4zOTIsNC45NDEtMTEuMDYxLDcuNDQ5TTQuMTY3LDEzLjJhNy44NDIsNy44NDIsMCwwLDAsMi44NC43MzFjMS4xNjMuMTIzLDIuMzQxLjA0NiwzLjUuMjM2YTIuNywyLjcsMCwwLDEsMS42MDcuNzgxYy42NTktLjQ1MiwxLjMzMi0uODg1LDEuOTg3LTEuMzQybC4wMTItLjA2NGE1LjI5NCw1LjI5NCwwLDAsMC0xLjg3Ny0uNWMtMi42OTMtLjMxNi01LjM4Ny43MTItOC4wNjcuMTZtMTMuNjUyLjM1NmMuNjg4LjQ2NiwxLjM4Mi45MjUsMi4wNywxLjM5MmEyLjQ4OCwyLjQ4OCwwLDAsMSwxLjMtLjcxOSwxOS44NTksMTkuODU5LDAsMCwxLDMuMTM3LS4yNDgsOS4xMDUsOS4xMDUsMCwwLDAsMy41LS43NjhjLTIuNTgyLjUtNS4xNjgtLjQwOS03Ljc2MS0uMmE2LjI1Niw2LjI1NiwwLDAsMC0yLjI0NS41NDVNMy4zMzksMTMuMTY2YTcuMjY0LDcuMjY0LDAsMCwwLDIuNzIzLDEuM2MtLjIxOS0uMTUzLS4zNzYtLjQxNi0uNjU3LS40NTdhNy45NTUsNy45NTUsMCwwLDEtMi4wNjYtLjg0NG0yMy4zMzMuODI1Yy0uMzE3LjAyMy0uNS4zLS43MzMuNDczYTcuMjMyLDcuMjMyLDAsMCwwLDIuNzI0LTEuMyw4LjEwNiw4LjEwNiwwLDAsMS0xLjk5MS44MjRtLTIyLjUuMTI2YTUuMTIxLDUuMTIxLDAsMCwwLDIuNTg5LDEuMWMtLjExNS0uMTI4LS4yMDktLjMxMi0uNC0uMzM0YTEwLjQ1OSwxMC40NTksMCwwLDEtMi4xOS0uNzcxbTIxLjQ2Ny43NjhjLS4xODkuMDIyLS4yODQuMi0uMzk0LjMzNmE1LjE4Nyw1LjE4NywwLDAsMCwyLjYtMS4xMDksMTAuNDc3LDEwLjQ3NywwLDAsMS0yLjIuNzczTTYuMywxNC4yMDZhMy4yNDMsMy4yNDMsMCwwLDAsMi40NDUuMzUyYy0uMS0uMDgtLjE4MS0uMjE1LS4zMjUtLjIwNnEtMS4wNjMtLjA0LTIuMTItLjE0Nm0xNy4zNTEuMTM5Yy0uMTcxLS4wMTktLjI5MS4xLS40MDYuMjExYTMuMTA4LDMuMTA4LDAsMCwwLDIuNDItLjM1MnEtMSwuMTEyLTIuMDE0LjE0MW0tMTYuNzQxLjUzOGEzLjY2OSwzLjY2OSwwLDAsMCwyLjQ4Mi4zMTksMS4xMDcsMS4xMDcsMCwwLDAtLjI4MS0uMzc2LDUuMTU4LDUuMTU4LDAsMCwxLTIuMi4wNTdtMTUuNy4zMThhMy42NzgsMy42NzgsMCwwLDAsMi40ODctLjMxOSw1LjEyNyw1LjEyNywwLDAsMS0yLjItLjA1NywxLjEsMS4xLDAsMCwwLS4yODMuMzc2TTQuODM4LDE0Ljk3N2E0LjExLDQuMTEsMCwwLDAsMi4xMzMuODQxYy0uMDU3LS4wODQtLjExNC0uMTY4LS4xNzEtLjI1NGE2Ljk0OCw2Ljk0OCwwLDAsMS0xLjk2Mi0uNTg3bTIwLjM2MS41ODktLjE2OS4yNTNhNC4xNDEsNC4xNDEsMCwwLDAsMi4xMzYtLjg0Myw3LjAxNSw3LjAxNSwwLDAsMS0xLjk2Ny41OW0tMTguMS0uMTNhLjguOCwwLDAsMCwuNTM0LjMxLDcuNTc5LDcuNTc5LDAsMCwwLDIuMDM3LS4wNzNjLS4wMDktLjAzLS4wMjctLjA5LS4wMzYtLjEyLS40NTctLjA1MS0uOTIzLjA3NC0xLjM4NS4wNDdBNy4wNTQsNy4wNTQsMCwwLDEsNy4xLDE1LjQzN20xNi4xOTEuMTUxYTYuMjgsNi4yOCwwLDAsMC0uOTEzLS4wNDFsLS4wNDIuMTI2YTcuNDE2LDcuNDE2LDAsMCwwLDIuMDQ1LjA3Mi43LjcsMCwwLDAsLjUyMi0uMzMxLDQuMzQ5LDQuMzQ5LDAsMCwxLTEuNjEzLjE3NG0tMTcuNTIuMzI3YTMuMTIsMy4xMiwwLDAsMCwxLjc1NC40ODFjLS4wNjUtLjI0LS4zMzQtLjItLjUyMy0uMjM2LS40MTktLjA0MS0uODE2LS4xODYtMS4yMzEtLjI0Nk0yNSwxNi4xNjNjLS4xODguMDQxLS40NTItLjAwNi0uNTIxLjIzMmEyLjg3NCwyLjg3NCwwLDAsMCwxLjczMi0uNDgyYy0uNC4wNzktLjguMjA3LTEuMjExLjI1MU03LjczNSwxNi4xMTlhMSwxLDAsMCwwLC43ODkuMjc1LDkuMzMxLDkuMzMxLDAsMCwwLDEuMzI1LS4xNThjLS4wMjEtLjA5My0uMDA5LS4yNzgtLjE2My0uMjI4YTkuOTgzLDkuOTgzLDAsMCwxLTEuOTUxLjExMW0xNC40MTUuMTE4YTguMTU3LDguMTU3LDAsMCwwLDEuNDEyLjE1NC45LjksMCwwLDAsLjctLjI3NCw5LjM4Nyw5LjM4NywwLDAsMS0xLjkzNC0uMTFjLS4xNi0uMDYtLjE1NS4xMzItLjE3Ni4yM20tMTUuNDM4LjQ0YTEuOTYyLDEuOTYyLDAsMCwwLDEuMy4xODFsLS4wOTEtLjEyNmMtLjQuMDA2LS44MDctLjAyMi0xLjIwOS0uMDU1bTEuNjE1LjA0M2ExLjAzLDEuMDMsMCwwLDAsLjcxNi4yOTRjLjE3OS0uMTI1LjM1OC0uMjUyLjUzMS0uMzg2YTUuNzQ3LDUuNzQ3LDAsMCwxLTEuMjQ3LjA5Mm0xNC4xLS4wOTNjLjIzNy4xNDQuNDY3LjQ3Ny43ODIuMzQ1LjE2Ni0uMDUuMzY5LS4wODkuNDYxLS4yNTdhNS4yNzEsNS4yNzEsMCwwLDEtMS4yNDMtLjA4OG0xLjcxMy4yNjNhMi4wMDcsMi4wMDcsMCwwLDAsMS4xNDUtLjIxMywxMC4yNjksMTAuMjY5LDAsMCwxLTEuMTQ0LjA0OUMyMy45OTMsMTYuNjY3LDIzLjk4NCwxNi45NjEsMjQuMTM4LDE2Ljg5WlwiIHN0eWxlPVwiZmlsbDojMDA0MGZmXCIvPjxwYXRoIGQ9XCJNNy40MzUsMTguODg2UTExLjcxOSwxNi4wMTMsMTYsMTMuMTM3bDkuMyw2LjI0NGMuMjIxLjE0Ny40MzkuMy42NDguNDY0cS05Ljk0Ny0uMDEtMTkuODk0LDBjLjQ0My0uMzQ0LjkyLS42NCwxLjM4My0uOTU4bTguMjU1LTUuMDY2Yy0uNDU3LDEuODU5LS45MDcsMy43MTktMS4zNzUsNS41NzYuNTIuMDE1LDEuMDQxLjAxMiwxLjU2MiwwcS0uMDEzLTIuODQxLDAtNS42OGwtLjE4NC4xbS0yLjUsMS42ODRjLjI1NS44NTkuNDgsMS43MjguNzYzLDIuNTc5LjI4OS0xLjIzOC42LTIuNDcxLjktMy43MDctLjU1LjM4Ni0xLjExNC43NS0xLjY2OCwxLjEyOW0zLjM1Ny0uODczYy0uMDA2LjY4MiwwLDEuMzY0LDAsMi4wNDZhMi4xLDIuMSwwLDAsMCwxLjAxNC0uMjU0Yy4xOTMtLjE0NS4xLS40MDkuMDExLS41ODZhNC4yNzYsNC4yNzYsMCwwLDAtMS4wMjQtMS4yMDdNMTguMzI3LDE2LjRjLS4xLjU0NC0uNjY2Ljc5Mi0xLjE1MS45LjQ3NC43Ljk2LDEuMzg5LDEuNDE2LDIuMS40NjkuMDI0Ljk0LjAxMSwxLjQxMS4wMDlhMS42MzEsMS42MzEsMCwwLDEsLjE2LTIuOTc2Yy0uODM0LS42LTEuNy0xLjE0LTIuNTQ0LTEuNzI3LjM0OS41LjgzMSwxLjAzNy43MDgsMS43bS02LjgyMi4yNDJjLjI2Ny45MjEuNTI5LDEuODQ1Ljc5NCwyLjc2Ny40NCwwLC44OC4wMDgsMS4zMjEtLjAwNy0uMzM5LTEuMTYxLS42ODUtMi4zMTktMS4wMDktMy40ODQtLjM4NS4yMTUtLjczNy40ODItMS4xLjcyNG04LjguNDUyYS45NDYuOTQ2LDAsMCwwLC4wNTcsMS43Yy41MzMuMDkuODU1LS41MzMuNzc5LS45OS0uMDI2LS40LS40LS44NjEtLjgzNi0uNzE0TTcuNCwxOS40cTEuMzI0LjAxOCwyLjY1LDBjLjI1Ni0uNy40MTMtMS40NjguNjI5LTIuMi0xLjEuNzE1LTIuMTg3LDEuNDYxLTMuMjc5LDIuMTk0bTE0LjM3Ny0xLjlhMS42MTYsMS42MTYsMCwwLDEtLjg3NiwxLjljMS4yMzMuMDE4LDIuNDY1LjAxNSwzLjcsMC0uOTM0LS42NDQtMS44ODMtMS4yNjYtMi44MjItMS45bS01LjIyMy4xMTVjLS4wMS42LDAsMS4yLDAsMS44LjQxNSwwLC44MzEsMCwxLjI0OCwwLS40MTktLjYtLjgtMS4yMTktMS4yNDMtMS43OTRtLTUuNTQ2Ljk0MWguMzQ2Yy0uMDU1LS4xODctLjEwOC0uMzc2LS4xNjYtLjU2MmEzLjc1MSwzLjc1MSwwLDAsMC0uMTgxLjU2M20tLjE4LjY5M2MtLjAxNS4wNC0uMDQ1LjExOS0uMDYxLjE1OS4yNzUtLjAyNi41OS4wNzEuODQyLS4wNUMxMS40NTMsMTkuMTEyLDExLjA3NCwxOS4yNzUsMTAuODI2LDE5LjI0NFpcIiBzdHlsZT1cImZpbGw6IzAwNDBmZlwiLz5gLFxuXHRcIkFXS1wiOiBgPHBhdGggZD1cIk0yNi45MjUsMjcuNzM3QzIzLjQzMSwyNi4xLDI0LjYwNiwxNC41ODgsMTMuODEsOC4zMTksMTQuMDg5LDUuNzkyLDE0Ljc1OC0uNSw3Ljk2MSwzLDYuODQ1LDMuMTI4LDQuOTA3LDIuMzMxLDQsNC44MzF2LjExNEMxNi45MTgsMy45LjA4OCwxMC41MywxNi43NSwyNS44NDRjLS4zNzMuMTc2LS42NzQtLjMyNS0xLjk3LjFsLS4wMTQuMDE2Yy0xLjcyMiwxLjEzNSwxLjkzMy43NjgsNC4xNTQsMS4yNzQtMS42MTEuNDE3LTUuNTk0LTEuMTM3LTYuMywxLjY0NS44NzctLjM3LDEsLjMyOSwxLjA3NiwxLjA3N0EyNi4yNzcsMjYuMjc3LDAsMCwxLDIyLjM3OSwyNy41YzEuMS4yODUsNC4xMTgsMi4wNDksNS4xMjIuNTUxQzI3LjUxOSwyNy45MywyNy4yMjEsMjcuODc2LDI2LjkyNSwyNy43MzdaXCIvPjxwYXRoIGQ9XCJNMTAuNDQ2LDIuOTdsLS4xMjEuMDg4YS4yNjYuMjY2LDAsMCwwLS4wMTEuMzc3LjIxMS4yMTEsMCwwLDAsLjA0NS4wMzkuNDE2LjQxNiwwLDAsMCwuNTIxLS4wNjMuMjYzLjI2MywwLDAsMCwuMDc4LS4zNjRsLS4wMS0uMDE0Yy0uMDc2LS4xNDMtLjE2My0uMTc3LS4zNC0uMTI3QzEwLjU1MywyLjkyNSwxMC41LDIuOTQ2LDEwLjQ0NiwyLjk3WlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTgsMjYuMzY4Yy4xNTEtLjA0MS4zMTgtLjgyOC4xNzQtLjk0OUE2LjI5LDYuMjksMCwwLDAsMTkuNCwyNi40ODVjMS4wMjMsMS4wMDcsMi42NjUtLjAzMiwzLjQ4Mi43NTlhMTAuNzM2LDEwLjczNiwwLDAsMCwxLjk1NywxLjAyN2MtLjEzOS0uMTUxLS4wMjktLjE0NC4xNzktLjAxMS0uMTMtLjMzOC00LjQyMS01LjE1Ni01LjIyNi03LjE4LjA5NS4yOTMtMS42MDgtLjgyNC0yLjA3Ni0xLjQxOS0uMDI4LjA1Ni0uMDkyLS4yNTEtLjIyOC0uNDM0LS4wNDEuMDUtLjItLjQzMy0uMy0uNzI4LjAzNy4xODctLjQ2Mi0uNS0uNjUtLjgxOC0uMDU2LjA5LS43MTkuMzcyLS44MDkuMjg2LS43MjktLjQsMi41MjksNC4wNjYuMTIyLDIuNTU5LjY3Ni42ODMuNjE0LjQtMS4wOTUtLjg1Mi4zNjQuNDUyLS4zMTcuMzEyLTEuNTUzLTEuNTIzLjE4Ni4yLS4yMTgtLjU3Ni0uMjE4LS41NzZhMi42OTIsMi42OTIsMCwwLDAtLjEzMy0uNDgzYy0uMDU2LS4zMi0uMjQxLS43MjMtLjEyLS42NS0xLjQ0NC0xLjU1NiwxLjMxNC0zLjMuNzE5LTMuNjcxLS4xMTEsMC0uMDI3LjAxNy0uMTUxLS4xMDYtLjA5LDAtLjQ2OC4yODUtLjU4Ny0uMjM0LjAwNi4xMzItLjAzNC40MDYtLjE1My0uMS0uMDIzLjA1Mi4wMTUuMS0uMDMuMTQ1LS4yMjUtLjU3Ni0uNzcyLTEuNi0xLjIxNy0yLjUzOS0uMTU4LjE1NS0uMTM4LS4wNzYtLjE5My0xLjA5Mi4wNTMuMTQ0LS4yMjUsMS45MjEtLjIuMTMtLjEyOC4wMDcuMTA4LDEuMjU4LS4zNDMuMjEtLjE0MS4wNS0uMzA1LS4zNjMtLjM0MS0xLjE3OC0uMDQ4LjYyMy0uMjkuMTg3LS41LS45MjMtLjI2OS41MDgtMS42LDEuNzQzLS4zMzMsNy42MjItLjA1My0uMzEzLjE4Ni4zNDEuNzU1LDIuNDI3LjAyMS0uMDM5LS4wMjItLjA4My4wMzgtLjEzMWE2LjMyNCw2LjMyNCwwLDAsMCwuNjc3LDEuMzY1Yy41NDQuNjU4Ljk5NSwyLjA3NC44LDEuMjc3YTExLjg2NywxMS44NjcsMCwwLDAsMi41NTQsMy4yNDlBMzQuNDIzLDM0LjQyMywwLDAsMCwxOCwyNi4zNjhaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xMC44MjMsMi41NTdhLjI5MS4yOTEsMCwwLDAtLjA1MS0uMDIyYy0uMjIxLS4wNC0uNDI5LjE1My0uNjU0LjAzMi0uMTQ1LjA4NS0uMjU3LS4wMzYtLjM3NS0uMDczYS4yMjQuMjI0LDAsMCwwLS4yLjAxNCw1LjgyMyw1LjgyMywwLDAsMC0uODE0LjU4MiwxLjAzNywxLjAzNywwLDAsMC0uMjczLjQ0OWMtLjAyMS4wNDgtLjAzNy4xMjYuMDUuMTM3YTIuMywyLjMsMCwwLDAsLjY4Mi4wNDVjLjE3Ny0uMDI4LjI3Ny0uMTUyLjQxOC0uMjIxYTEuMiwxLjIsMCwwLDAsLjU5Mi0uNjhjLjA2NC0uMTc1LjE2MS0uMTY3LjI4LS4yUzEwLjcsMi42MiwxMC44MjMsMi41NTdaXCIgc3R5bGU9XCJmaWxsOiNkMmQyZDJcIi8+PHBhdGggZD1cIk0xMC4zMjUsMy4wNThsLjEyMS0uMDg4YS4xMTcuMTE3LDAsMCwxLC4xMi4wNjRjLjA0NC4xLjEwNi4xMTIuMTkzLjA0Ny4wMzMtLjAyNS4wNzEtLjA1OC4xMTgtLjAyN2EuMTE5LjExOSwwLDAsMSwuMDQxLjEyOC4yNzYuMjc2LDAsMCwxLS4xODcuMjQ4LjI2Ni4yNjYsMCwwLDEtLjMtLjAzQzEwLjM0MSwzLjMwOCwxMC4yNiwzLjIsMTAuMzI1LDMuMDU4WlwiLz5gLFxuXHRcIkJhdGNoXCI6IGA8cGF0aCBkPVwiTTI5LjQsMjcuNkgyLjVWNC41SDI5LjRabS0yNS45LTFIMjguNFY1LjVIMy41WlwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxwb2x5Z29uIHBvaW50cz1cIjYuMDc3IDE5LjMxNiA1LjUyMiAxOC40ODQgMTAuMzY2IDE1LjI1NSA1LjQ3OSAxMS4xODQgNi4xMiAxMC40MTYgMTIuMDM1IDE1LjM0NCA2LjA3NyAxOS4zMTZcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cmVjdCB4PVwiMTIuN1wiIHk9XCIxOC4yXCIgd2lkdGg9XCI3LjhcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHJlY3QgeD1cIjIuNVwiIHk9XCI1LjVcIiB3aWR0aD1cIjI2LjlcIiBoZWlnaHQ9XCIxLjlcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz5gLFxuXHRcIkMjXCI6IGA8dGl0bGU+ZmlsZV90eXBlX2NzaGFycDwvdGl0bGU+PHBhdGggZD1cIk0xOS43OTIsNy4wNzFoMi41NTNWOS42MjRIMjQuOVY3LjA3MWgyLjU1MlY5LjYyNEgzMHYyLjU1MmgtMi41NXYyLjU1MUgzMFYxNy4yOEgyNy40NDl2Mi41NTJIMjQuOXYtMi41NWwtMi41NSwwLDAsMi41NTJIMTkuNzkzdi0yLjU1bC0yLjU1MywwVjE0LjcyNWgyLjU1M1YxMi4xNzlIMTcuMjRWOS42MjJoMi41NTRabTIuNTUzLDcuNjU4SDI0LjlWMTIuMTc2SDIyLjM0NVpcIiBzdHlsZT1cImZpbGw6IzM2ODgzMlwiLz48cGF0aCBkPVwiTTE0LjY4OSwyNC4wMTNhMTAuMiwxMC4yLDAsMCwxLTQuNjUzLjkxNSw3LjYsNy42LDAsMCwxLTUuODktMi4zMzZBOC44MzksOC44MzksMCwwLDEsMiwxNi4zNjcsOS40MzYsOS40MzYsMCwwLDEsNC40MTIsOS42NDhhOC4xODEsOC4xODEsMCwwLDEsNi4yNTktMi41NzcsMTEuMSwxMS4xLDAsMCwxLDQuMDE4LjYzOHYzLjc0NWE2LjgxLDYuODEsMCwwLDAtMy43MjMtMS4wMzYsNC43OTMsNC43OTMsMCwwLDAtMy43LDEuNTI5LDUuODc5LDUuODc5LDAsMCwwLTEuNDA3LDQuMTQyLDUuNzc0LDUuNzc0LDAsMCwwLDEuMzI4LDMuOTkyLDQuNTUxLDQuNTUxLDAsMCwwLDMuNTc1LDEuNDg3LDcuMjg4LDcuMjg4LDAsMCwwLDMuOTI3LTEuMTA4WlwiIHN0eWxlPVwiZmlsbDojMzY4ODMyXCIvPmAsXG5cdFwiQ1wiOiBgPHRpdGxlPmZpbGVfdHlwZV9jPC90aXRsZT48cGF0aCBkPVwiTTEwLjY3NiwxNS45NzNhMTAuMDUyLDEwLjA1MiwwLDAsMCwxLjE3NSw1LjE1MSw1LjQ0Niw1LjQ0NiwwLDAsMCw2LjMwNiwyLjQwOCw0LjI4NCw0LjI4NCwwLDAsMCwzLjA5LTMuNmMuMTA3LS42LjEwOS0uNjEuMTA5LS42MSwxLjczNy4yNTEsNC41MzcuNjU4LDYuMjc0LjkwNmwtLjExLjQ0YTExLjI1NiwxMS4yNTYsMCwwLDEtMi43LDUuMzksOS40MzksOS40MzksMCwwLDEtNS4zNjYsMi42ODgsMTQuNjEsMTQuNjEsMCwwLDEtOC4yNzctLjgxOUExMC4xNTEsMTAuMTUxLDAsMCwxLDUuNCwyMS42ODdhMTYuMjI1LDE2LjIyNSwwLDAsMSwuMDE5LTExLjQ1LDEwLjUzOCwxMC41MzgsMCwwLDEsOC45NjMtNy4wNTQsMTMuMzUzLDEzLjM1MywwLDAsMSw2LjY2Ni41NTUsOS41NzEsOS41NzEsMCwwLDEsNi4xNjcsNi45Yy4wOTQuMzUyLjExNC40MTcuMTE0LjQxNy0xLjkzMi4zNTEtNC4zMTkuOC02LjIzOCwxLjIxNS0uMzYyLTEuOTE1LTEuMjY1LTMuNDI4LTMuMi0zLjlhNS4yNjMsNS4yNjMsMCwwLDAtNi42MTYsMy41NywxMC40OSwxMC40OSwwLDAsMC0uMzg1LDEuNDM5QTEyLjMxLDEyLjMxLDAsMCwwLDEwLjY3NiwxNS45NzNaXCIgc3R5bGU9XCJmaWxsOiMwMDVmOTFcIi8+YCxcblx0XCJDKytcIjogYDx0aXRsZT5maWxlX3R5cGVfY3BwPC90aXRsZT48cGF0aCBkPVwiTTE0Ljc0MiwyNC4wNDdhMTAuMjQyLDEwLjI0MiwwLDAsMS00LjY3My45MTlBNy42MjgsNy42MjgsMCwwLDEsNC4xNTUsMjIuNjIsOC44NzYsOC44NzYsMCwwLDEsMiwxNi4zNjksOS40NzYsOS40NzYsMCwwLDEsNC40MjIsOS42MjFhOC4yMTYsOC4yMTYsMCwwLDEsNi4yODUtMi41ODgsMTEuMTUxLDExLjE1MSwwLDAsMSw0LjAzNS42NDF2My43NjFBNi44MzksNi44MzksMCwwLDAsMTEsMTAuMzk1LDQuODEzLDQuODEzLDAsMCwwLDcuMjg4LDExLjkzYTUuOSw1LjksMCwwLDAtMS40MTMsNC4xNTlBNS44LDUuOCwwLDAsMCw3LjIwOSwyMC4xYTQuNTcsNC41NywwLDAsMCwzLjU5LDEuNDkzLDcuMzE5LDcuMzE5LDAsMCwwLDMuOTQzLTEuMTEzWlwiIHN0eWxlPVwiZmlsbDojOTg0YzkzXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE3LjExMiAxNC44MjkgMTcuMTEyIDEyLjQ4NSAxOS40NTYgMTIuNDg1IDE5LjQ1NiAxNC44MjkgMjEuOCAxNC44MjkgMjEuOCAxNy4xNzIgMTkuNDU2IDE3LjE3MiAxOS40NTYgMTkuNTE1IDE3LjExMiAxOS41MTUgMTcuMTEyIDE3LjE3MiAxNC43NyAxNy4xNzIgMTQuNzcgMTQuODI4IDE3LjExMiAxNC44MjlcIiBzdHlsZT1cImZpbGw6Izk4NGM5M1wiLz48cG9seWdvbiBwb2ludHM9XCIyNS4zMTMgMTQuODI5IDI1LjMxMyAxMi40ODUgMjcuNjU3IDEyLjQ4NSAyNy42NTcgMTQuODI5IDMwIDE0LjgyOSAzMCAxNy4xNzIgMjcuNjU3IDE3LjE3MiAyNy42NTcgMTkuNTE1IDI1LjMxMyAxOS41MTUgMjUuMzEzIDE3LjE3MiAyMi45NzEgMTcuMTcyIDIyLjk3MSAxNC44MjggMjUuMzEzIDE0LjgyOVwiIHN0eWxlPVwiZmlsbDojOTg0YzkzXCIvPmAsXG5cdFwiQ2xvanVyZVwiOiBgPHBhdGggZD1cIk0xNiwyQTE0LDE0LDAsMSwwLDMwLDE2LDE0LjAxNiwxNC4wMTYsMCwwLDAsMTYsMlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTUuNDg4LDE2LjI1MmMtLjEyNi4yNzMtLjI2NS41NzktLjQwOC45QTIyLjk2MywyMi45NjMsMCwwLDAsMTMuOCwyMC42MDVhNS4xODEsNS4xODEsMCwwLDAtLjExOSwxLjE1NWMwLC4xNzQuMDA5LjM1Ni4wMjQuNTQyYTYuNjU4LDYuNjU4LDAsMCwwLDQuNDEzLjA2NywzLjk2NiwzLjk2NiwwLDAsMS0uNDQtLjQ2NmMtLjktMS4xNDYtMS40LTIuODI3LTIuMTk0LTUuNjUyXCIgc3R5bGU9XCJmaWxsOiM5MWRjNDdcIi8+PHBhdGggZD1cIk0xMi4xNjksMTAuNTU2YTYuNjc3LDYuNjc3LDAsMCwwLS4wNzcsMTAuODgxYy40MTEtMS43MSwxLjQ0LTMuMjc2LDIuOTgzLTYuNDE1LS4wOTItLjI1Mi0uMi0uNTI3LS4zMTMtLjgxN2ExMC4yMDcsMTAuMjA3LDAsMCwwLTEuNi0yLjg4Miw0LjQzOSw0LjQzOSwwLDAsMC0xLS43NjdcIiBzdHlsZT1cImZpbGw6IzkxZGM0N1wiLz48cGF0aCBkPVwiTTIxLjg0LDIzLjdhMTAuODc3LDEwLjg3NywwLDAsMS0yLjI1Ny0uNDcxQTguMDM2LDguMDM2LDAsMCwxLDEwLjcxNiw5Ljk4MmE1LjksNS45LDAsMCwwLTEuNC0uMTcxYy0yLjM1OC4wMjItNC44NDgsMS4zMjctNS44ODQsNC44NTJhNi42MDYsNi42MDYsMCwwLDAtLjA3NCwxLjM2MSwxMi42NDksMTIuNjQ5LDAsMCwwLDIzLDcuMjc0LDE0LjczNywxNC43MzcsMCwwLDEtMy40NDguNDU5QTguODgxLDguODgxLDAsMCwxLDIxLjg0LDIzLjdcIiBzdHlsZT1cImZpbGw6IzYzYjEzMlwiLz48cGF0aCBkPVwiTTE5LjQ2MywyMS4yNDRhMy41MywzLjUzLDAsMCwwLC41LjE3MkE2LjY5LDYuNjksMCwwLDAsMjIuNywxNi4wMjNoMGE2LjY4MSw2LjY4MSwwLDAsMC04Ljc5LTYuMzQ4YzEuMzU4LDEuNTQ4LDIuMDExLDMuNzYxLDIuNjQzLDYuMTgxdjBzLjIuNjczLjU0NywxLjU2MmExNS40MzQsMTUuNDM0LDAsMCwwLDEuMzYzLDIuNzg4LDIuOTI0LDIuOTI0LDAsMCwwLDEsMS4wMzZcIiBzdHlsZT1cImZpbGw6IzkwYjRmZVwiLz48cGF0aCBkPVwiTTE2LjAxMywzLjM3MkExMi42MzIsMTIuNjMyLDAsMCwwLDUuNzMxLDguNjU2YTYuNDI1LDYuNDI1LDAsMCwxLDMuNDgtMS4wMDksNi44LDYuOCwwLDAsMSwzLjE4Mi43NzJjLjEzNC4wNzcuMjYxLjE2LjM4Ni4yNDZhOC4wMzgsOC4wMzgsMCwwLDEsMTEuMjczLDcuMzU4aDBhOC4wMTMsOC4wMTMsMCwwLDEtMi4zOTEsNS43MTksOS44NzEsOS44NzEsMCwwLDAsMS4xNDMuMDY0LDYuMjQsNi4yNCwwLDAsMCw0LjA1MS0xLjI2Myw1LjM0OCw1LjM0OCwwLDAsMCwxLjctMi45MDZBMTIuNjMyLDEyLjYzMiwwLDAsMCwxNi4wMTMsMy4zNzJcIiBzdHlsZT1cImZpbGw6IzU4ODFkOFwiLz5gLFxuXHRcIkNNYWtlXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCI5Ljk1NVwiIHkxPVwiOS4wOTZcIiB4Mj1cIjE2LjY4XCIgeTI9XCIyMy4zMjRcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgMzIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMTAxMWExXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzY5NjllMVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIjE2LjIzMVwiIHkxPVwiMTkuNjU1XCIgeDI9XCIyNS42MThcIiB5Mj1cIjMuNzgyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDMyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2I0MGUwZVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZjU5NTlcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCIyMS42NjNcIiB5MT1cIjQuODIzXCIgeDI9XCI4LjM4MVwiIHkyPVwiNS45MzhcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgMzIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMDFhMzAwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzAxZGYwMFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImRcIiB4MT1cIjE0LjY0M1wiIHkxPVwiOC4zNjhcIiB4Mj1cIjE0LjQ3MlwiIHkyPVwiMTQuMTQ1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDMyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzg0ODQ4NFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNkMmQyZDJcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9jbWFrZTwvdGl0bGU+PHBhdGggZD1cIk0xNy4yNTcsMTYuOTE5LDIuMjQ2LDI5Ljc0OSwxNS45OTQsMi4yODNaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yLjI2MiwyOS43NjhsLS4wMzgtLjAzTDE2LjAxMiwyLjE5M2wuMDA4LjA4OEwxNy4yODMsMTYuOTNsLS4wMS4wMDhaTTE1Ljk3NywyLjM3NCwyLjMyNCwyOS42NDksMTcuMjMsMTYuOTA4WlwiLz48cGF0aCBkPVwiTTE3Ljk1MiwyNC45MzEsMTYsMi4yOCwyOS43NjcsMjkuNzUxWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMjkuODE4LDI5LjhsLS4wNjEtLjAyNUwxNy45MjksMjQuOTQ4bDAtLjAxNUwxNS45NzUsMi4yODJsLjA0Ny0uMDEzWk0xNy45NzYsMjQuOTEzLDI5LjcxNSwyOS43LDE2LjAzNiwyLjQwOFpcIi8+PHBhdGggZD1cIk0xMS4xNiwyMi4wOTRsMTguNjIxLDcuNjU0SDIuMjVaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0yOS43ODEsMjkuNzczSDIuMTgzbC4wNTEtLjA0NCw4LjkyMS03LjY2NS4wMTQuMDA2LDE4LjYyMiw3LjY1NVptLTI3LjQ2NC0uMDVIMjkuNjU0bC0xOC40ODktNy42WlwiLz48cGF0aCBkPVwiTTExLjE4OSwyMi4xMTJsNi4wNTktNS4xNjguODQzLDcuOThaXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0xOC4xNDksMjVsLS4wNzctLjAzMi02Ljk3OC0yLjg0Miw2LjE5NC01LjI4My4wMS4wOTRabS02Ljg2NS0yLjksNi43NDgsMi43NDktLjgyNC03LjhaXCIvPjxwYXRoIGQ9XCJNMjkuNywyOS45MTFIMi4yODVhLjIyMS4yMjEsMCwwLDEtLjE4Mi0uMDg4LjIyMi4yMjIsMCwwLDEsLjAyMi0uMkwxNS44NjQsMi4xODdhLjE2OS4xNjksMCwwLDEsLjE0LS4xaDBhLjE1NC4xNTQsMCwwLDEsLjEzLjA4NUwyOS44NjcsMjkuNjA3YS4yMzguMjM4LDAsMCwxLC4wMi4yMjZBLjIxMS4yMTEsMCwwLDEsMjkuNywyOS45MTFabS0yNy40NjgtLjE2YS40ODQuNDg0LDAsMCwwLC4wNTcuMDExaDI3LjRsLjA3My0uMDA5YS4yMjEuMjIxLDAsMCwwLS4wMjgtLjA3N0wxNiwyLjI0OCwxNiwyLjI2LDIuMjYxLDI5LjY4NGEuMjc5LjI3OSwwLDAsMC0uMDI1LjA2N1pcIi8+YCxcblx0XCJDT0JPTFwiOiBgPHBhdGggZD1cIk0yMi4yNCw2LjU0NmE0LjQ0OSw0LjQ0OSwwLDAsMCwxLjc2NS0yLjUyMiw0LjYzNiw0LjYzNiwwLDAsMS0uMDE4LDIuMTU3Yy0uMjIzLjU4Mi0uNTY3LDEuMTA3LS44MzQsMS42NjlhMjEuNzcyLDIxLjc3MiwwLDAsMSw0LjU1OS0yLjkzOEMyNy4yMyw2LjQsMjUuODkxLDcuMywyNC45MDcsOC40NDJjLjE5LjQwOS4yOC45ODkuOCwxLjEwOWE1LjAzNiw1LjAzNiwwLDAsMCwyLjUuMTU1Yy45MTItLjMxMywxLjM0NS0xLjI1OCwxLjgtMi4wMzVWOS4xNGExNS43MzgsMTUuNzM4LDAsMCwxLS41ODIsMS43NDhjLjIuNTQ3LjQwOSwxLjA5Mi41ODIsMS42NDd2Ljk1MmMtLjIxNC4zNjgtLjQ0Mi43MjYtLjY2MywxLjA4OWE1LjI5Myw1LjI5MywwLDAsMC0xLjA2OC0xLjE2Miw0LjAzLDQuMDMsMCwwLDAtMS44NTEtLjEyNSwzLjIxMiwzLjIxMiwwLDAsMCwyLjQxMywxLjQ3Yy0uMzU5LjM3LS42NjMuOTEyLTEuMjMuOTY5LTEuNjQxLjI0Ny0zLjIwNy0uNTA1LTQuODM5LS41LS4yODIuMDItLjcwNy4wMjQtLjc4NS4zNzIsMCwuNzM1LjIxNywxLjQ1My4xOSwyLjE4OC0uMDU5LDEuMjU4LS41MTIsMi40NjYtLjUyOSwzLjcyNmExMy43ODUsMTMuNzg1LDAsMCwwLC44MzgsMy40NDhjLS41MjMtLjA3Ny0xLjA0NC0uMTY2LTEuNTYyLS4yNi0uMS4yMDgtLjE4NC40Mi0uMjYuNjM0QTQuNTE0LDQuNTE0LDAsMCwwLDIxLjgsMjYuNTMxYy0uMDYxLjEyNy0uMTgyLjM4MS0uMjQxLjUwOGwtLjU3My4xMzhjLS4xMzEuMjQ3LS4yNjMuNDkyLS40LjczOWE0LjQyMSw0LjQyMSwwLDAsMC0yLjIuMDYxYy0uNDY2LS4xODYtLjkyOC0uMzc2LTEuMzg5LS41NjdhNS45MzksNS45MzksMCwwLDAsLjQwNy0yLjMxNWMtLjI4Mi0uOTgyLTEuNi0uOTg0LTItMS44NzdhNi4yMzMsNi4yMzMsMCwwLDEtMS4wMjItMi44NTFjLS44MjMtLjQzMy0xLjQ1NS0xLjIyMS0yLjQtMS40LS4wNDguNDA5LS4wODMuODItLjE1MywxLjIyN0E2LjAxNSw2LjAxNSwwLDAsMSwxMC40ODEsMjIuNmMuMDM5LjQyMi4wNzkuODQyLjEyLDEuMjY1LjM0Ni4zMjQuNjkxLjY0OCwxLjAzMy45NzRhOS43NTIsOS43NTIsMCwwLDEtMS40MjYuNzEzLDExLjExNCwxMS4xMTQsMCwwLDEtMS42ODcuMDc3Yy0uMjU4LS4yNTQtLjUxOC0uNTA4LS43NzctLjc2NGE0Ljg3MSw0Ljg3MSwwLDAsMCwuMTE0LTIuNjA4Yy4xNzEtLjQuMzI2LS44MTIuNDc1LTEuMjIxYTUuNTY1LDUuNTY1LDAsMCwxLTMuMDEuMjA2LDUuMTIsNS4xMiwwLDAsMS0zLjI5LTQuMzMsMy44NTksMy44NTksMCwwLDEsMS40MDctMy4yNjhBNi40MSw2LjQxLDAsMCwwLDMuMiwxNi4yNTlhMy4wMzgsMy4wMzgsMCwwLDAsMi41LDIuNDY2LDMuNDYyLDMuNDYyLDAsMCwwLDEuOTYtLjY0Myw3LjQ4LDcuNDgsMCwwLDEsLjM2My00LjEzMyw1LjUyNCw1LjUyNCwwLDAsMSwzLjU4Ni0yLjY2LDQuMjM1LDQuMjM1LDAsMCwwLDIuMDExLTEuNTY2LDEwLjY3LDEwLjY3LDAsMCwxLDEuNTI5LTEuMzNjLS4yMjgtLjIxOS0uNDUzLS40NC0uNjgtLjY1OUEyLjE1NCwyLjE1NCwwLDAsMCwxNS45LDYuMDIzYzEuMjg0LS4zLDIuNTUxLS42NjEsMy44Mi0xLjAxMWEzLjc5MywzLjc5MywwLDAsMCwxLjQxNS42MDZjLjMxNy4zNDYuNDk0LDEuMTU3LDEuMS45MjhNMTguNDU4LDE5LjkwOGMuMDQyLjc2OC0uMDQ4LDEuNjY1LjY3NCwyLjE1NSwwLS43NTUtLjA0Ni0xLjUwNy0uMS0yLjI2WlwiIHN0eWxlPVwiZmlsbDojMDA1Y2E1XCIvPmAsXG5cdFwiQ29mZmVlU2NyaXB0XCI6IGA8cGF0aCBkPVwiTTEzLjExNCw1LjcyOGMuMDI1LjE1My0uMDUxLjI4LS4zMDYuNDA4YTMuNDU3LDMuNDU3LDAsMCwwLTEuNjMtLjIyOWMtLjYzNy4wNTEtMS4xNzIuMjU1LTEuMS42ODguMS40MzMuNzEzLjY4OCwxLjgwOC41ODYsMi42NzQtLjIyOSwyLjY0OS0yLjAzOCw2LjU3MS0yLjM5NCwzLjA1Ni0uMjgsNC43NjMuNjYyLDQuOTkyLDEuODA4LjE3OC44OTEtLjU2LDEuNzU3LTIuNzc2LDEuOTM2LTEuOTYxLjE3OC0zLjEwNy0uMzU3LTMuMjA5LS44OTEtLjA1MS0uMjguMS0uNjg4LDEuMDQ0LS43OS4xLjQzMy42MzcuODkxLDEuOTEuNzY0QzIxLjM0MSw3LjUzNiwyMi4xLDcuMiwyMiw2LjdjLS4xLS41MzUtMS4wNy0uODQtMi42LS43MTMtMy4xMDcuMjgtMy44NzEsMS45ODctNi41MiwyLjIxNkMxMSw4LjM3Niw5LjQ3Miw3LjY4OSw5LjI2OCw2LjY3Yy0uMDc2LS4zODItLjA3Ni0xLjI3MywxLjkxLTEuNDUyLDEuMDE5LS4wNzYsMS44MzQuMSwxLjkzNi41MDlaTTMuMTgxLDE2LjM3NEE1LjI3OSw1LjI3OSwwLDAsMCwyLjAxLDE5Ljk5YTQuMjA2LDQuMjA2LDAsMCwwLDEuNjU1LDMuMDU2LDQsNCwwLDAsMCwzLjM2Mi43OSwxMS40MzQsMTEuNDM0LDAsMCwwLDEuNS0uNDg0LDQuMjM4LDQuMjM4LDAsMCwxLTIuNzUxLTEuMDE5LDQuMTMsNC4xMywwLDAsMS0xLjczMi0yLjgyN0EzLjc5LDMuNzksMCwwLDEsNC42NTgsMTYuNSwzLjk3NywzLjk3NywwLDAsMSw3LjQwOSwxNWE0LjgwNiw0LjgwNiwwLDAsMSwzLjIwOS45NDIsNi45NSw2Ljk1LDAsMCwwLS44NjYtLjg2Niw0LjEsNC4xLDAsMCwwLTMuNDY0LS42ODgsNS4yLDUuMiwwLDAsMC0zLjEwNywxLjk4N1pNMTYuODMzLDEwLjQ5QTQwLjgzNyw0MC44MzcsMCwwLDEsOC41LDkuN0M2LjIzNyw5LjE0LDUuMDQsOC41MjksNS4wNCw3Ljc0YzAtLjMzMS4xNTMtLjYxMS42MTEtLjk0Mi0xLjQyNi41Ni0yLjE5LDEuMDE5LTIuMTksMS43MzIuMDc2Ljc5LDEuMzUsMS41NzksMy45NDgsMi4xOWEzOS40NDMsMzkuNDQzLDAsMCwwLDkuMzQ3Ljk0MkEzOC45OTMsMzguOTkzLDAsMCwwLDI2LjEsMTAuNzJjMi42LS42MTEsMy44NDYtMS40MjYsMy44NDYtMi4xOSwwLS41Ni0uNTYtMS4xLTEuNTc5LTEuNWEuODYyLjg2MiwwLDAsMSwuNDA4LjY4OGMwLC43OS0xLjE3MiwxLjQyNi0zLjU0LDEuOTYxQTM5LjMyNCwzOS4zMjQsMCwwLDEsMTYuODMzLDEwLjQ5Wm05LjM3MywyLjE5YTQyLjMxNSw0Mi4zMTUsMCwwLDEtOS4zNDcuOTQyLDQ0LjE0NCw0NC4xNDQsMCwwLDEtOS40MjQtLjk0MmMtMi4xOS0uNTYtMy4zNjItMS4xNzItMy43NjktMS44MDhhMjMuMTg2LDIzLjE4NiwwLDAsMCwyLjYsNy42NDFjLjk0MiwxLjQyNiwxLjg4NSwyLjY3NCwyLjgyNyw0LjAyNGE5Ljg4Myw5Ljg4MywwLDAsMSwuODY2LDIuMzY5LDQuNTU5LDQuNTU5LDAsMCwwLDIuNiwxLjczMiwxMC42MTEsMTAuNjExLDAsMCwwLDQuMTc3LjYxMWguMTUzYTExLjgzOSwxMS44MzksMCwwLDAsNC4zLS42MTEsNC44NjksNC44NjksMCwwLDAsMi41MjEtMS43MzJoLjA3NmE5LjU5Miw5LjU5MiwwLDAsMSwuNzktMi4zNjljLjk0Mi0xLjM1LDEuODg1LTIuNiwyLjgyNy00LjAyNEEyNC42MiwyNC42MiwwLDAsMCwzMCwxMC44NzJDMjkuNDkxLDExLjU4NSwyOC4zMTksMTIuMiwyNi4yMDUsMTIuNjgxWlwiIHN0eWxlPVwiZmlsbDojNmY0ZTM3XCIvPmAsXG5cdFwiQ3J5c3RhbFwiOiBgPHBhdGggZD1cIk0yOS45NDEsMTkuODE2LDE5LjgsMjkuOTI4Yy0uMDI4LjAyOC0uMDg1LjAyOC0uMTY5LjAyOEw1LjgsMjYuMjY3Yy0uMDI4LDAtLjA4NC0uMDI4LS4xMTMtLjExM0wyLDEyLjM1MmEuNDE5LjQxOSwwLDAsMSwuMDI4LS4xNjlMMTIuMTY4LDIuMDcyYy4wMjgtLjAyOC4wODQtLjAyOC4xNjktLjAyOGwxMy44MywzLjcxOGMuMDI4LDAsLjA4NC4wMjguMTEzLjExM2wzLjY5LDEzLjhDMzAuMDI2LDE5LjczMiwzMCwxOS43ODgsMjkuOTQxLDE5LjgxNlpNMTYuMzkzLDguODMyLDIuODE3LDEyLjQ5M3EtLjA0MiwwLDAsLjA4NEwxMi43NiwyMi41MmMuMDI4LjAyOC4wMjgsMCwuMDg0LDBMMTYuNTA2LDguOTcyQzE2LjQ0OSw4LjgzMiwxNi4zOTMsOC44MzIsMTYuMzkzLDguODMyWlwiIHN0eWxlPVwiZmlsbDojYzhjOGM4XCIvPmAsXG5cdFwiQ1NTXCI6IGA8cG9seWdvbiBwb2ludHM9XCI1LjkwMiAyNy4yMDEgMy42NTYgMiAyOC4zNDQgMiAyNi4wOTUgMjcuMTk3IDE1Ljk4NSAzMCA1LjkwMiAyNy4yMDFcIiBzdHlsZT1cImZpbGw6IzE1NzJiNlwiLz48cG9seWdvbiBwb2ludHM9XCIxNiAyNy44NTggMjQuMTcgMjUuNTkzIDI2LjA5MiA0LjA2MSAxNiA0LjA2MSAxNiAyNy44NThcIiBzdHlsZT1cImZpbGw6IzMzYTlkY1wiLz48cG9seWdvbiBwb2ludHM9XCIxNiAxMy4xOTEgMjAuMDkgMTMuMTkxIDIwLjM3MiAxMC4wMjYgMTYgMTAuMDI2IDE2IDYuOTM1IDE2LjAxMSA2LjkzNSAyMy43NSA2LjkzNSAyMy42NzYgNy43NjQgMjIuOTE3IDE2LjI4MiAxNiAxNi4yODIgMTYgMTMuMTkxXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuMDE5IDIxLjIxOCAxNi4wMDUgMjEuMjIyIDEyLjU2MyAyMC4yOTIgMTIuMzQzIDE3LjgyNyAxMC42NyAxNy44MjcgOS4yNCAxNy44MjcgOS42NzMgMjIuNjggMTYuMDA0IDI0LjQzOCAxNi4wMTkgMjQuNDM0IDE2LjAxOSAyMS4yMThcIiBzdHlsZT1cImZpbGw6I2ViZWJlYlwiLz48cG9seWdvbiBwb2ludHM9XCIxOS44MjcgMTYuMTUxIDE5LjQ1NSAyMC4yOSAxNi4wMDggMjEuMjIgMTYuMDA4IDI0LjQzNiAyMi4zNDQgMjIuNjggMjIuMzkxIDIyLjE1OCAyMi45MjggMTYuMTUxIDE5LjgyNyAxNi4xNTFcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIxNi4wMTEgNi45MzUgMTYuMDExIDguODU1IDE2LjAxMSAxMC4wMTggMTYuMDExIDEwLjAyNiA4LjU1NSAxMC4wMjYgOC41NTUgMTAuMDI2IDguNTQ1IDEwLjAyNiA4LjQ4MyA5LjMzMSA4LjM0MiA3Ljc2NCA4LjI2OCA2LjkzNSAxNi4wMTEgNi45MzVcIiBzdHlsZT1cImZpbGw6I2ViZWJlYlwiLz48cG9seWdvbiBwb2ludHM9XCIxNiAxMy4xOTEgMTYgMTUuMTExIDE2IDE2LjI3NCAxNiAxNi4yODIgMTIuNjExIDE2LjI4MiAxMi42MTEgMTYuMjgyIDEyLjYwMSAxNi4yODIgMTIuNTM5IDE1LjU4NyAxMi4zOTkgMTQuMDIgMTIuMzI1IDEzLjE5MSAxNiAxMy4xOTFcIiBzdHlsZT1cImZpbGw6I2ViZWJlYlwiLz5gLFxuXHRcIkNTVlwiOiBgPHBhdGggZD1cIk0yMi4wMzgsMkg2LjM3NWExLjc1NSwxLjc1NSwwLDAsMC0xLjc1LDEuNzV2MjQuNUExLjc1NSwxLjc1NSwwLDAsMCw2LjM3NSwzMGgxOS4yNWExLjc1NSwxLjc1NSwwLDAsMCwxLjc1LTEuNzVWNi44NTZabS41MjUsMi44NDQsMS42NjMsMS41MzFIMjIuNTYzWk02LjM3NSwyOC4yNVYzLjc1SDIwLjgxM1Y4LjEyNWg0LjgxM1YyOC4yNVpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cmVjdCB4PVwiOC4xMjVcIiB5PVwiMTUuMDk3XCIgd2lkdGg9XCIxMy4wNzZcIiBoZWlnaHQ9XCIxLjc1XCIgc3R5bGU9XCJmaWxsOiM4MjllYzJcIi8+PHJlY3QgeD1cIjguMTI1XCIgeT1cIjI0LjQzOVwiIHdpZHRoPVwiOS43NjJcIiBoZWlnaHQ9XCIxLjc1XCIgc3R5bGU9XCJmaWxsOiM4MjllYzJcIi8+PHJlY3QgeD1cIjguMTI1XCIgeT1cIjE5Ljc2M1wiIHdpZHRoPVwiMTUuNzVcIiBoZWlnaHQ9XCIxLjc1XCIgc3R5bGU9XCJmaWxsOiM4MjllYzJcIi8+PHJlY3QgeD1cIjguMTI1XCIgeT1cIjEwLjIzXCIgd2lkdGg9XCIxNS43NVwiIGhlaWdodD1cIjEuNzVcIiBzdHlsZT1cImZpbGw6IzgyOWVjMlwiLz5gLFxuXHRcIkRcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE4NS40NTVcIiB5MT1cIjE2MDEuNjQxXCIgeDI9XCIxODEuOTU1XCIgeTI9XCIxNjMwLjIyNFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC02Mi41MjMgLTY2Ni42NDYpIHNjYWxlKDAuNDI3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiMTc2LjEzNlwiIHkxPVwiMTYwMC41XCIgeDI9XCIxNzIuNjM2XCIgeTI9XCIxNjI5LjA4M1wiIHhsaW5rOmhyZWY9XCIjYVwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9kbGFuZzwvdGl0bGU+PHBhdGggZD1cIk0zLjk3OCwxNS40NjIsMy45NjksOC41MDlBLjU4OC41ODgsMCwwLDEsNC41LDcuOTQ3YS42NTguNjU4LDAsMCwxLC4wNzYsMGw2LjA3NC0uMDA5YTE1LjcsMTUuNywwLDAsMSw2LjA2Ny45NSw4LjksOC45LDAsMCwxLDIuMjQ0LDEuMzU5LDQuNDY5LDQuNDY5LDAsMCwxLDIuOTQ2LTEuMDgzLDQuMTEsNC4xMSwwLDAsMSw0LjI3NiwzLjkyQTQuMTEsNC4xMSwwLDAsMSwyMS45MDcsMTdjLS4wODksMC0uMTc3LS4wMDgtLjI2NS0uMDEyYTYuNjE3LDYuNjE3LDAsMCwxLS4yMzIuOTUzLDg1LjM4Myw4NS4zODMsMCwwLDEsOC41OSwyLjZWMkgyVjE1LjRRMi45OTIsMTUuNDIsMy45NzgsMTUuNDYyWm0yMi44LTcuOTQ0YTEuMzIsMS4zMiwwLDAsMSwxLjM3NCwxLjI1OSwxLjM3OSwxLjM3OSwwLDAsMS0yLjc0NywwQTEuMzIsMS4zMiwwLDAsMSwyNi43OCw3LjUxN1pcIiBzdHlsZT1cImZpbGw6I2IwMzkzMVwiLz48cGF0aCBkPVwiTTE3Ljg2MSwxNS43ODdhNC4xMTQsNC4xMTQsMCwwLDAtMS43NDgtMy40NTgsNS44MTQsNS44MTQsMCwwLDAtMS41MDgtLjgyMiw3LjM1NCw3LjM1NCwwLDAsMC0xLjYyOS0uNDM4LDIxLjYyOSwyMS42MjksMCwwLDAtMi41ODgtLjFsLTIuNjE5LDAsLjAwNiw0LjczN2E4OC44MjcsODguODI3LDAsMCwxLDkuOTEsMS40MDhBNC45MTksNC45MTksMCwwLDAsMTcuODYxLDE1Ljc4N1pcIiBzdHlsZT1cImZpbGw6I2IwMzkzMVwiLz48cGF0aCBkPVwiTTIwLjk5MywxOC45NzlhNy45MDYsNy45MDYsMCwwLDEtMi4xMjgsMi41ODIsOS43MzksOS43MzksMCwwLDEtMy4yNTYsMS43MSwxMS41NTgsMTEuNTU4LDAsMCwxLTEuOTcxLjQ3MmgtLjAxNWEzMS44NTcsMzEuODU3LDAsMCwxLTMuMzI2LjExMWwtNS42MjUuMDIyYS42MTYuNjE2LDAsMCwxLS42ODYtLjY4MWwtLjAxLTcuNzM0UTIuOTkyLDE1LjQyLDIsMTUuNFYzMEgzMFYyMC41NDRhODUuMzgzLDg1LjM4MywwLDAsMC04LjU5LTIuNkE2Ljk4NSw2Ljk4NSwwLDAsMSwyMC45OTMsMTguOTc5WlwiIHN0eWxlPVwiZmlsbDojYjAzOTMxXCIvPjxwYXRoIGQ9XCJNMjAuOTkzLDE4Ljk3OWE3LjkwNiw3LjkwNiwwLDAsMS0yLjEyOCwyLjU4Miw5LjczOSw5LjczOSwwLDAsMS0zLjI1NiwxLjcxLDExLjU1OCwxMS41NTgsMCwwLDEtMS45NzEuNDcyaC0uMDE1YTMxLjg1NywzMS44NTcsMCwwLDEtMy4zMjYuMTExbC01LjYyNS4wMjJhLjYxNi42MTYsMCwwLDEtLjY4Ni0uNjgxbC0uMDEtNy43MzRRMi45OTIsMTUuNDIsMiwxNS40VjMwSDMwVjIwLjU0NGE4NS4zODMsODUuMzgzLDAsMCwwLTguNTktMi42QTYuOTg1LDYuOTg1LDAsMCwxLDIwLjk5MywxOC45NzlaXCIgc3R5bGU9XCJvcGFjaXR5OjAuMzAwMDAwMDExOTIwOTI5O2lzb2xhdGlvbjppc29sYXRlO2ZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTEwLjQ3NywyMC44MzVhMTYuMDE0LDE2LjAxNCwwLDAsMCwyLjg3Ny0uMiw3LjYzMyw3LjYzMywwLDAsMCwxLjYyOC0uNSw1LjYyOCw1LjYyOCwwLDAsMCwxLjE4Ny0uNzQ4LDQuNDU3LDQuNDU3LDAsMCwwLDEuNTE4LTIuMjcxLDg4LjY5MSw4OC42OTEsMCwwLDAtOS45MS0xLjQwOGwuMDA2LDUuMTMzWlwiIHN0eWxlPVwiZmlsbDojYjAzOTMxXCIvPjxwYXRoIGQ9XCJNMTAuNDc3LDIwLjgzNWExNi4wMTQsMTYuMDE0LDAsMCwwLDIuODc3LS4yLDcuNjMzLDcuNjMzLDAsMCwwLDEuNjI4LS41LDUuNjI4LDUuNjI4LDAsMCwwLDEuMTg3LS43NDgsNC40NTcsNC40NTcsMCwwLDAsMS41MTgtMi4yNzEsODguNjkxLDg4LjY5MSwwLDAsMC05LjkxLTEuNDA4bC4wMDYsNS4xMzNaXCIgc3R5bGU9XCJvcGFjaXR5OjAuMzAwMDAwMDExOTIwOTI5O2lzb2xhdGlvbjppc29sYXRlO2ZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTIwLjM4MywxMS43NDZhNi45OTMsNi45OTMsMCwwLDEsMS4zNiw0LjE0OCw2LjYxOCw2LjYxOCwwLDAsMS0uMSwxLjFjLjA4OCwwLC4xNzYuMDEyLjI2NS4wMTJhNC4xMSw0LjExLDAsMCwwLDQuMjc2LTMuOTIsNC4xMSw0LjExLDAsMCwwLTQuMjc2LTMuOTIsNC40Nyw0LjQ3LDAsMCwwLTIuOTQ2LDEuMDgzQTguMTIzLDguMTIzLDAsMCwxLDIwLjM4MywxMS43NDZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PGVsbGlwc2UgY3g9XCIyNi43OFwiIGN5PVwiOC43NzdcIiByeD1cIjEuMzc0XCIgcnk9XCIxLjI1OVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNNC42NzMsMjMuODc3bDUuNjI1LS4wMjJhMzEuODcxLDMxLjg3MSwwLDAsMCwzLjMyNi0uMTExaC4wMTVhMTEuNDksMTEuNDksMCwwLDAsMS45NzEtLjQ3Miw5LjczOSw5LjczOSwwLDAsMCwzLjI1Ni0xLjcxLDcuOTA2LDcuOTA2LDAsMCwwLDIuMTI4LTIuNTgyLDYuOTg1LDYuOTg1LDAsMCwwLC40MTctMS4wMzQsNy4wNTYsNy4wNTYsMCwwLDAsLjMzMi0yLjA1MSw2Ljk5Miw2Ljk5MiwwLDAsMC0xLjM2LTQuMTQ4LDguMSw4LjEsMCwwLDAtMS40MjEtMS41LDguODc4LDguODc4LDAsMCwwLTIuMjQ0LTEuMzU5LDE1LjY4NiwxNS42ODYsMCwwLDAtNi4wNjctLjk1bC02LjA3NC4wMDlhLjY1OC42NTgsMCwwLDAtLjA3NiwwLC41ODguNTg4LDAsMCwwLS41MzIuNTYybC4wMDksNi45NTIuMDEsNy43MzRBLjYxNi42MTYsMCwwLDAsNC42NzMsMjMuODc3Wm0zLjEtMTIuOTA4LDIuNjE5LDBhMjEuNjIzLDIxLjYyMywwLDAsMSwyLjU4OC4xLDcuMzU0LDcuMzU0LDAsMCwxLDEuNjI5LjQzOCw1LjgxNCw1LjgxNCwwLDAsMSwxLjUwOC44MjIsNC4xMTYsNC4xMTYsMCwwLDEsMS43NDgsMy40NTgsNC45MDUsNC45MDUsMCwwLDEtLjE3NSwxLjMyNyw0LjQ1Nyw0LjQ1NywwLDAsMS0xLjUxOCwyLjI3MSw1LjYxMyw1LjYxMywwLDAsMS0xLjE4Ny43NDgsNy42NjYsNy42NjYsMCwwLDEtMS42MjguNSwxNi4wMDksMTYuMDA5LDAsMCwxLTIuODc3LjJsLTIuNjk0LDAtLjAwNi01LjEzM1pcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIkRhcnRcIjogYDxwYXRoIGQ9XCJNMTYuNzM5LDIuMDM3YTEuMzE0LDEuMzE0LDAsMCwwLS45MTYuMzc3bC0uMDEzLjAxTDcuMjIsNy4zODlsOC41NjYsOC41NjZ2LjAwNmwxMC4zLDEwLjMsMS45NjMtMy41MzZMMjAuOTY4LDUuNzI4bC0zLjMtMy4zYTEuMzA3LDEuMzA3LDAsMCwwLS45MjctLjM4OFpcIiBzdHlsZT1cImZpbGw6IzY2YzNmYVwiLz48cGF0aCBkPVwiTTcuMjUsNy4zNSwyLjI4OCwxNS45MzFsLS4wMS4wMTNhMS4zMjIsMS4zMjIsMCwwLDAtLjM3OC45MTksMS4zLDEuMywwLDAsMCwuMzg3LjkyNEw2LjQsMjEuOWwxNi4wODQsNi4zMjcsMy42MzYtMi4wMi0uMS0uMS0uMDI1LDAtMTAuMDgzLTEwLjFIMTUuOUw3LjI1LDcuMzVaXCIgc3R5bGU9XCJmaWxsOiMyMTU4OTZcIi8+PHBhdGggZD1cIk03LjE5Miw3LjM2Mmw4Ljc2NCw4Ljc3M2guMDEzbDEwLjA4NywxMC4xLDMuODM5LS43MzJMMjkuOSwxNC4xNGwtNC4wNTQtMy45NzNhNi41MjEsNi41MjEsMCwwLDAtMy42MjQtMS42MTZsMC0uMDQ0TDcuMTkyLDcuMzYyWlwiIHN0eWxlPVwiZmlsbDojMjM1OTk3XCIvPjxwYXRoIGQ9XCJNNy4yNTYsNy40MTFsOC43NjgsOC43Njh2LjAxM0wyNi4xMTYsMjYuMjg0bC0uNzM0LDMuODM5SDE0LjAyMmwtMy45NzEtNC4wNTZhNi41MjIsNi41MjIsMCwwLDEtMS42MTQtMy42MjVsLS4wNDQsMEw3LjI1Niw3LjQxMVpcIiBzdHlsZT1cImZpbGw6IzU4YjZmMFwiLz5gLFxuXHRcIkRoYWxsXCI6IGA8cGF0aCBkPVwiTTE2LDIuMDdBMTMuOTMsMTMuOTMsMCwxLDEsMiwxNiwxMy45MywxMy45MywwLDAsMSwxNiwyLjA3Wk0xMy4yOCwyMi4zMmExLjQ5LDEuNDksMCwxLDEtMSwxLjgzQTEuNDksMS40OSwwLDAsMSwxMy4yOCwyMi4zMlptOC0xNS42OGEuNTMuNTMsMCwwLDEsLjM4LjY2LjUyLjUyLDAsMCwxLS42NS4zOGwtLjUtLjEzYTQyLjY3LDQyLjY3LDAsMCwwLS4zNyw3LjA3QzE4LjA2LDE2LjQ1LDE0LjM5LDIyLDE0LjM5LDIybDEuOTMtNy4xOGExLDEsMCwwLDAsLjg5LS42NS45MS45MSwwLDAsMC0xLjc1LS40NywxLDEsMCwwLDAsLjQ1LDFMMTQsMjEuODVhNjguMzgsNjguMzgsMCwwLDAtMS4zNC05LjI1LDM0LjI4LDM0LjI4LDAsMCwwLDMuMjEtNi4zMWwtLjUtLjEzQS41NS41NSwwLDAsMSwxNSw1LjVhLjUzLjUzLDAsMCwxLC42Ni0uMzhsNS42OCwxLjUyWlwiIHN0eWxlPVwiZmlsbDojYjdiN2I3O2ZpbGwtcnVsZTpldmVub2RkXCIvPmAsXG5cdFwiRGlmZlwiOiBgPHJlY3QgeD1cIjYuOTc1XCIgeT1cIjNcIiB3aWR0aD1cIjE4LjA1XCIgaGVpZ2h0PVwiNi4wMTdcIiBzdHlsZT1cImZpbGw6I2MwMDAwMFwiLz48cGF0aCBkPVwiTTEyLjk5MiwxMC45NXY2LjAxN0g2Ljk3NXY2LjAxN2g2LjAxN1YyOWg2LjAxN1YyMi45ODNoNi4wMTdWMTYuOTY3SDE5LjAwOFYxMC45NVpcIiBzdHlsZT1cImZpbGw6Z3JlZW5cIi8+YCxcblx0XCJEamFuZ28vSmluamEyXCI6IGA8ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9XCJhXCIgY3g9XCIxNlwiIGN5PVwiLTExOS4yODNcIiByPVwiMTMuNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0wLjk0NSwgMCwgLTk2LjczNSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM1NzU3NTdcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMmYyZjJmXCIvPjwvcmFkaWFsR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfamluamE8L3RpdGxlPjxwYXRoIGQ9XCJNMjkuMzQsMy4yNDFhMzguMjcxLDM4LjI3MSwwLDAsMS05LjQ1MSwzLjA0Yy00LjI0MS41NS0xMi4zMjksMS4xLTEzLjkzNS43MTJBMjMuMywyMy4zLDAsMCwxLDMuMiw2LjE1MWwuMzM0LDEuMTMyTDIuNSw4LjE4OGwuMTgzLjMyMy40MjQuMDMyLDEuMy4xNjIuMTgzLjU4Mi43MjcuMDY2LjM2NCwxLjIyOHMxLjU0NC4xMywyLC4xMywxLjM2My0uMDY0LDEuMzYzLS4wNjRsLjAzLjQ4NS4zMzQuMDY0di41NWwtLjcyOC42NDguMTgzLjAzMnYuMjI1YTE1LjgxNiwxNS44MTYsMCwwLDEtMi4zLjAzNGMtLjY2Ni0uMS0uNzg4LS4xLS43ODgtLjFsLS4wNi4wNjQtLjAzLjI5MWguMTUxbC4wNiwxLjI2MiwzLjM2My0uMTMtLjI0Myw0LjM2NS0uMDMuNTQ5LTIuODQ4LS4xNjItLjAzLTEuMTY0aC42MzVsLjA2MS0uNDUzLjU3NS0uMTMuMDkxLS4xMjgtMi4xNTEtLjUxOC0xLjYzNi40ODUuMjczLjIyN2guMjczbC4wMy4zODkuNTc1LjAzMlYxOC43bC0uNjM1LjE2Mi4xMjEuMjU3LjE1MS4xdi44NzNoLjM5NHY0LjA0MWwtLjYzNy4xLjA5MSwxLjE2NC4zOTMuMDY2LS4wNiwyLjY1MSwxLjcyNy4wMzItLjM2NC0yLjYxOSwyLjYwNS0uMDY0LS4xODEsMS40MjItLjI0MywxLDIuNjM1LjAzMi4wMy0yLjU4NiwxLjgxNy0uMTYyLS4wOSwxLjY0OS0uMDYxLjk2OWgxLjU0NmwtLjA2MS0yLjY1MS4yMTMuMDM0LjA2LTEuMjYyaC0uMjQzbC0uMDktLjUxOEwxMy44LDIxLjlsLjA2LTEuNzEzaC4zMzNWMTkuMTQ5bC0uNDI0LjAzMi4wNjEtMS4yMi40OTMtLjA0OS4wMjMtLjQuMjgtLjA0MS4yODctLjIxOEwxMy4xODcsMTYuOWwtMS43MTIuMzc5LjE2Ny4yNzQuMTgxLS4wMTUuMjExLS4wMDguMDM5LjUuNDc3LS4wMjMuMDA5LDEuMDgyLTIuMDUzLS4wNDcuMDY5LTEuMTU2LjA2Ny0xLjA1MVYxNS40NTVMMTAuNywxNGw0LjExMS0uMjEsNC44OTItLjI4Mi4wNDYuOTI5LS4xNzQsMi4yMzFMMTkuNSwxOC43NDRsLTEuOC0uMDMyLS4wMDktMS40NTUuNjY3LS4wMjQuMDMtLjQxMS4yNzMtLjA0MS0uMDE0LS4wODEuMjczLS4wMTUuMTUxLS4yTDE3LjAzNCwxNiwxNSwxNi40NGwuMTQ0LjI1MS4yMjctLjAxN3YuMTE0aC4yOHYuNDZsLjYuMDA4LS4wMDcsMS4yNzdoLS42MDVsLS4wMDkuMjkxLjIxMy4wMjQtLjAyMywxLjEwOC40NDcuMDI0LS4wNTMsNC4zOS0uNTkxLjEyLjAwNy4yMWguMjA2djEuMTI0aC4zNGwtLjA5LDEuNTM2TDE1Ljk3NCwyOC43bDIuMTUxLjA1Ni0uMDY5LTEuMTY0LS4xNTgtLjk2OS0uMDMxLS44NDEsMS44MjYtLjAzMi0uMDUzLDEuMy0uMDA5LDEuMzc0LDEuMDMxLjA4MSwxLjQtLjA1Ni40NC0uMTMtLjI0My0uNzM2LS4wNi0xLjE1Ni0uMTE0LS44MjQsMS43NDItLjA2NC0uMDc2LDEuMDEtLjAwNywxLjU4NS43LjA2NC42OS0uMDE1LjMzMy0uMTA1LS4yLTEuNUwyNS4yLDI1LjQ0NWwuMy0uMDMyTDI1LjUsMjQuNGwuMDgzLS4wMTctLjAxNC0uMjE4aC0uMzQxbC0uMDY5LS43NDRMMjUuMTMsMjAuMmwuMjU3LS4wMDhWMTkuMTMzbC4xMDcuMDE3di0uMjFsLS4zOC0uMDM0LjAwOS0xLjIyOC42MzUtLjA1Ni0uMDM3LS40MTMuMjgtLjAyNC0uMDE2LS4wODEuMzcxLS4xODYtMS44ODYtLjM3OS0xLjkxNi4zODkuMTIxLjIyNi4zLS4wMjQuMDE2LjFoLjI1bC4wMTQuNDg1LjYyMS0uMDA4LjA1MywxLjE4OC0yLjItLjAxNy0uMjU3LTEuNzg2LS4yMDYtLjk0Ni0uMTY2LTEuNy4xLS45OTMsNC4zNzctLjMzMi4wMTQtMS40NzkuMjItLjA1Ni0uMDE0LS4yMjUtLjE2Ny0uMXMtMi4zOTMuMzU1LTMuMTUxLjQzNmwtLjM3MS4wNC0uMDIzLS4yNzQtLjkwNS0uNDc0LjAxMS0uNTUyLjMxMS0uMDA5LjAyMy0uNzU5YTI0LjgwNywyNC44MDcsMCwwLDAsMi41NDQtLjI4M2MuNjg5LS4xNjIsMS42NjYtLjMyMywxLjY2Ni0uMzIzTDI2LjIsNy44MDlsLjkxNy0uMjY3LjA3Ni0uMjEsMi4wNzQtLjU3NC4yMzYtLjE5NC0uNzg4LTEuNzIyLjA3Ni0uMzg5LjQtLjIxLjI4OC0uODgxWk0xOS4zNzQsOS44bC0uMDExLjYyNi40Ny4wMi0uMDMuNTk0LS45MjEuNi0uMDU3LjE3NC4zNzEsMCwwLC4xNDYtMi44MTQuMTM3LjAxOS0uNDE2LjEyOC0uMjA3LjAwOS0uMTMzLDAtLjI4Ni4wOC0uMTkuMDMtLjE1NHYtLjExbC4xMjEtLjQ4NVptLTUuODg1LjUzMy0uMDY5LjQyMS4yMi4yNTktLjAxNC40NTMuMi4zMTUtLjA1My4zNzIuMTUxLjIxOC0yLjg3MS4xMTMtLjAwNy0uMS4zMzMtLjA0MS4wMTYtLjEyMi0uNzI3LS4zOTUtLjAzOS0uNjMxLjM0OC0uMDE3LjAzLS42OFptNC4yNDksOS43LDEuNzQyLjExM0wxOS40MiwyMi41bC4yMjcsMS45MjNMMTcuOCwyNC4zNTRabS0xMS42NjMuMSwyLjc4OC4xNDVMOC42MiwyMS45djEuMzU5bC4yLjc1OS0yLjcyNy4xM1ptMTcuODQzLjAxNXY0LjAxbC0xLjc3Mi4xMy0uMDYxLTIuMTE4LS4yLTEuOTczWk0xMC41LDIwLjI0bDIuMDYuMDA4LjAyMSwzLjcxOEwxMC42NTcsMjRsLS4xLTEuMjA1LS4wMDctMS4yWlwiIHN0eWxlPVwic3Ryb2tlOnJlZDtzdHJva2Utd2lkdGg6MC41cHg7ZmlsbDp1cmwoI2EpXCIvPmAsXG5cdFwiRG9ja2VyXCI6IGA8cGF0aCBkPVwiTTE2LjU0LDEyLjY2M0gxOS40djIuOTI0aDEuNDQ2YTYuMjcyLDYuMjcyLDAsMCwwLDEuOTg4LS4zMzMsNS4wOTEsNS4wOTEsMCwwLDAsLjk2Ni0uNDM2LDMuNTg0LDMuNTg0LDAsMCwxLS42Ny0xLjg0OSwzLjkwNywzLjkwNywwLDAsMSwuNy0yLjc1M2wuMy0uMzQ4LjM1OC4yODhhNC41NTgsNC41NTgsMCwwLDEsMS43OTUsMi44OTIsNC4zNzUsNC4zNzUsMCwwLDEsMy4zMTkuMzA5bC4zOTMuMjI2LS4yMDcuNGE0LjE0MSw0LjE0MSwwLDAsMS00LjE1NywxLjk4M2MtMi40OCw2LjE2OC03Ljg3MSw5LjA4OC0xNC40MDksOS4wODgtMy4zNzgsMC02LjQ3Ni0xLjI2My04LjI0MS00LjI1OWwtLjAyOS0uMDQ5TDIuNywyMC4yMjdhOC4zMTYsOC4zMTYsMCwwLDEtLjY1OS00LjIwOGwuMDQtLjQzM0g0LjUyNlYxMi42NjNINy4zODdWOS44aDUuNzIxVjYuOTQySDE2LjU0djUuNzIxWlwiIHN0eWxlPVwiZmlsbDojMDA5NmU2XCIvPjxwYXRoIGQ9XCJNMTIuMDA2LDI0LjU2N2E2LjAyMiw2LjAyMiwwLDAsMS0zLjE0LTMuMDg5LDEwLjMyOSwxMC4zMjksMCwwLDEtMi4yNjQuMzQzcS0uNS4wMjgtMS4wNDUuMDI4LS42MzIsMC0xLjMzMS0uMDM3YTkuMDUxLDkuMDUxLDAsMCwwLDcsMi43NjlRMTEuNjE4LDI0LjU4MSwxMi4wMDYsMjQuNTY3WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNNy4wOCwxMy4zNDZoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3SDYuN1YxMy4zNDZabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzY4LDBoLjJ2Mi4wNjdoLS4yVjEzLjM0NlpNNSwxMy4xNEg3LjQ4MnYyLjQ3OUg1Wm0yLjg1OS0yLjg2MWgyLjQ4djIuNDc5SDcuODYzWm0yLjA3Ny4yMDdoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJWMTAuNDg2Wm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzY4LDBoLjJ2Mi4wNjZoLS4yWm0tLjIwNywyLjY1M2gyLjQ4djIuNDhINy44NjNWMTMuMTRabTIuMDc3LjIwN2guMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlYxMy4zNDZabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNjgsMGguMnYyLjA2N2gtLjJabTIuNjU0LS4yMDdIMTMuMnYyLjQ4aC0yLjQ4VjEzLjE0Wm0yLjA3Ni4yMDdIMTN2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNjgsMGguMnYyLjA2N2gtLjJabS0uMjA2LTMuMDY3SDEzLjJ2Mi40NzloLTIuNDhWMTAuMjc5Wm0yLjA3Ni4yMDdIMTN2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNjgsMGguMnYyLjA2NmgtLjJabTIuNjU0LDIuNjUzaDIuNDc5djIuNDhoLTIuNDhWMTMuMTRabTIuMDc2LjIwN2guMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM2OCwwaC4xOTJ2Mi4wNjdoLS4yVjEzLjM0NlptLS4yMDYtMy4wNjdoMi40Nzl2Mi40NzloLTIuNDhWMTAuMjc5Wm0yLjA3Ni4yMDdoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNzYsMGguMnYyLjA2NmgtLjJabS0uMzc2LDBoLjJ2Mi4wNjZoLS4yWm0tLjM3NiwwaC4ydjIuMDY2aC0uMlptLS4zNjgsMGguMTkydjIuMDY2aC0uMlYxMC40ODZabS0uMjA2LTMuMDY3aDIuNDc5VjkuOWgtMi40OFY3LjQxOVptMi4wNzYuMjA2aC4yVjkuNjkxaC0uMlptLS4zNzYsMGguMlY5LjY5MWgtLjJabS0uMzc2LDBoLjJWOS42OTFoLS4yWm0tLjM3NiwwaC4yVjkuNjkxaC0uMlptLS4zNzYsMGguMlY5LjY5MWgtLjJabS0uMzY4LDBoLjE5MlY5LjY5MWgtLjJWNy42MjVabTIuNjU0LDUuNTE0aDIuNDc5djIuNDhoLTIuNDhWMTMuMTRabTIuMDc2LjIwN2guMTk1djIuMDY3aC0uMlYxMy4zNDZabS0uMzc2LDBoLjIwNnYyLjA2N2gtLjIwNlptLS4zNzYsMGguMnYyLjA2N2gtLjJabS0uMzc2LDBoLjJ2Mi4wNjdoLS4yWm0tLjM3NiwwaC4ydjIuMDY3aC0uMjA1VjEzLjM0NlptLS4zNjgsMGguMnYyLjA2N2gtLjE5NFYxMy4zNDZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xMC4xODgsMTkuNjM4YS42ODQuNjg0LDAsMSwxLS42ODQuNjg0QS42ODQuNjg0LDAsMCwxLDEwLjE4OCwxOS42MzhabTAsLjE5NGEuNDg5LjQ4OSwwLDAsMSwuMTc3LjAzMy4yLjIsMCwxLDAsLjI3NS4yNjkuNDkuNDksMCwxLDEtLjQ1My0uM1pcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIkRPVCAoR3JhcGh2aXopXCI6IGA8cG9seWdvbiBwb2ludHM9XCIyMy45NDIgMzAgMTIuNjc5IDMwIDEuNDE3IDMwIDEuNDE3IDE2IDEuNDE3IDIgMTIuNjc5IDIgMjMuOTQyIDIgMjMuOTQyIDE2IDIzLjk0MiAzMFwiIHN0eWxlPVwiZmlsbDojZTZlNmU2XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIzLjIwMlwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiNy40MlwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTEuNjM4XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxNS44NTZcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjIwLjA3NFwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjQuMjkzXCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyOC41MTFcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjJcIiB5PVwiMy4yMDJcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuNTczXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjYuMjE4XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxMC40MzZcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjE0LjY1NVwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTguODczXCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyMy4wOTFcIiB5PVwiMy4yMDJcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuNTczXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PGcgc3R5bGU9XCJvcGFjaXR5OjAuNVwiPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyNy40NTZcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjI2LjQwMlwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjUuMzQ3XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIyMy4yMzhcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjIyLjE4NFwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMjEuMTI5XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxOS4wMlwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTcuOTY1XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxNi45MTFcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjE0LjgwMlwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiMTMuNzQ3XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCIxMi42OTNcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjEwLjU4M1wiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiOS41MjlcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjguNDc0XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIyLjEzMlwiIHk9XCI2LjM2NVwiIHdpZHRoPVwiMjEuMTM1XCIgaGVpZ2h0PVwiMC4yNjRcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMi4xMzJcIiB5PVwiNS4zMTFcIiB3aWR0aD1cIjIxLjEzNVwiIGhlaWdodD1cIjAuMjY0XCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjIuMTMyXCIgeT1cIjQuMjU2XCIgd2lkdGg9XCIyMS4xMzVcIiBoZWlnaHQ9XCIwLjI2NFwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjwvZz48ZyBzdHlsZT1cIm9wYWNpdHk6MC41XCI+PHJlY3QgeD1cIjIyLjAzNlwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMjAuOTgyXCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxOS45MjdcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjE3LjgxOFwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTYuNzY0XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCIxNS43MDlcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjEzLjZcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjEyLjU0NVwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiMTEuNDkxXCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCI5LjM4MlwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiOC4zMjdcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjcuMjczXCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjxyZWN0IHg9XCI1LjE2NFwiIHk9XCIzLjMzM1wiIHdpZHRoPVwiMC4yNjRcIiBoZWlnaHQ9XCIyNS4zMzFcIiBzdHlsZT1cImZpbGw6IzRlZDFmOFwiLz48cmVjdCB4PVwiNC4xMDlcIiB5PVwiMy4zMzNcIiB3aWR0aD1cIjAuMjY0XCIgaGVpZ2h0PVwiMjUuMzMxXCIgc3R5bGU9XCJmaWxsOiM0ZWQxZjhcIi8+PHJlY3QgeD1cIjMuMDU1XCIgeT1cIjMuMzMzXCIgd2lkdGg9XCIwLjI2NFwiIGhlaWdodD1cIjI1LjMzMVwiIHN0eWxlPVwiZmlsbDojNGVkMWY4XCIvPjwvZz48cGF0aCBkPVwiTTEzLDguOTc2Yy0yLjMwOCwwLTQuMTMxLTEuMjc0LTQuMTkzLTIuOTY5aDBhMi43NzUsMi43NzUsMCwwLDEsMS4yNTMtMi4zMiw1LjMsNS4zLDAsMCwxLDIuOTQzLS45NjMsNS4yOTQsNS4yOTQsMCwwLDEsMy4wMDYuNzQzLDIuNzc1LDIuNzc1LDAsMCwxLDEuNDIxLDIuMjIxYy4wNjUsMS43NTItMS43NzksMy4xOTQtNC4yLDMuMjgzQzEzLjE1OCw4Ljk3NCwxMy4wOCw4Ljk3NiwxMyw4Ljk3NlptLjIzMi01LjJxLS4wOTUsMC0uMTksMGE0LjIzOCw0LjIzOCwwLDAsMC0yLjM1NC43NTYsMS43NjEsMS43NjEsMCwwLDAtLjgyOCwxLjQzNUM5LjksNy4wOSwxMS40MjgsNy45NzgsMTMuMiw3LjkxN3MzLjIyMy0xLjA2OSwzLjE4MS0yLjE5MWExLjc2MSwxLjc2MSwwLDAsMC0uOTMyLTEuMzY5QTQuMTY1LDQuMTY1LDAsMCwwLDEzLjIzNCwzLjc3M1pcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTYuNCwyOS4yODFBNS4yMzgsNS4yMzgsMCwwLDEsMy42LDI4LjUxOWEyLjc3NSwyLjc3NSwwLDAsMS0xLjQxLTIuMjI5Yy0uMDU2LTEuNzUyLDEuOC0zLjE4NSw0LjIxMy0zLjI2MnM0LjM1NiwxLjIzNiw0LjQxMiwyLjk4OEEyLjc3NSwyLjc3NSwwLDAsMSw5LjU0OCwyOC4zM2E1LjMsNS4zLDAsMCwxLTIuOTQ4Ljk0OFE2LjUsMjkuMjgxLDYuNCwyOS4yODFabS4xODYtNS4yLS4xNTYsMGMtMS43NjYuMDU2LTMuMjI5LDEuMDUyLTMuMTkzLDIuMTc0YTEuNzYxLDEuNzYxLDAsMCwwLC45MjQsMS4zNzQsNC4yMzUsNC4yMzUsMCwwLDAsMi40LjU5Myw0LjIzNSw0LjIzNSwwLDAsMCwyLjM1Ny0uNzQ0LDEuNzYxLDEuNzYxLDAsMCwwLC44MzUtMS40M0M5LjcyNCwyNC45NjEsOC4yOSwyNC4wOCw2LjU5MSwyNC4wOFpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTE5LjI2MSwyOS4yNmE1LjIzOCw1LjIzOCwwLDAsMS0yLjgwNy0uNzYyLDIuNzc1LDIuNzc1LDAsMCwxLTEuNDEtMi4yMjloMGMtLjA1NS0xLjc1MiwxLjgtMy4xODUsNC4yMTMtMy4yNjJhNS4zLDUuMywwLDAsMSwzLC43NTlBMi42LDIuNiwwLDAsMSwyMi40LDI4LjMxYTUuMyw1LjMsMCwwLDEtMi45NDguOTQ4UTE5LjM1OCwyOS4yNiwxOS4yNjEsMjkuMjZaTTE2LjEsMjYuMjM2YTEuNzYxLDEuNzYxLDAsMCwwLC45MjQsMS4zNzQsNC41Nyw0LjU3LDAsMCwwLDQuNzU3LS4xNTEsMS41NTgsMS41NTgsMCwwLDAtLjA4OS0yLjgsNC4yMjYsNC4yMjYsMCwwLDAtMi40LS41OTNjLTEuNzY2LjA1Ni0zLjIyOCwxLjA1Mi0zLjE5MywyLjE3NFpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTYuMiwyMy40NzdBMjcuNCwyNy40LDAsMCwxLDkuNzY5LDguOTg2bC42ODcuMzkxQTI2LjYwOSwyNi42MDksMCwwLDAsNi45ODYsMjMuNDVaXCIgc3R5bGU9XCJmaWxsOiM2NTY1NjVcIi8+PHBhdGggZD1cIk0xMC44NTMsNy45NTdhNy4xNzEsNy4xNzEsMCwwLDAtLjA3NSwyLjMybC0uNzU4LS45My0xLjE3OC0uMjNBNy4xNjUsNy4xNjUsMCwwLDAsMTAuODUzLDcuOTU3WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTkuODU0LDIzLjQ3N2wtLjc5LS4wMjdhMjYuNTksMjYuNTksMCwwLDAtLjkxNS03Ljg4NCwyNi42MjQsMjYuNjI0LDAsMCwwLTIuNTU0LTYuMTg5bC42ODctLjM5MWEyNy40MjMsMjcuNDIzLDAsMCwxLDIuNjMsNi4zNzNBMjcuMzcyLDI3LjM3MiwwLDAsMSwxOS44NTQsMjMuNDc3WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTUuMiw3Ljk1N2E3LjE3MSw3LjE3MSwwLDAsMCwyLjAxMSwxLjE1OWwtMS4xNzguMjMtLjc1OC45M0E3LjE2NSw3LjE2NSwwLDAsMCwxNS4yLDcuOTU3WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxyZWN0IHg9XCIxMS4zNDhcIiB5PVwiOS45NDVcIiB3aWR0aD1cIjMuNTE1XCIgaGVpZ2h0PVwiMC43OTFcIiB0cmFuc2Zvcm09XCJtYXRyaXgoMC4wMTYsIC0xLCAxLCAwLjAxNiwgMi41NTcsIDIzLjI3OSlcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTEzLjA1NCwxMy41MjlhNy4xNzEsNy4xNzEsMCwwLDAtMS4xLTIuMDQ2bDEuMTIyLjQyNiwxLjEzNS0uMzlBNy4xNjUsNy4xNjUsMCwwLDAsMTMuMDU0LDEzLjUyOVpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cmVjdCB4PVwiNy44MDlcIiB5PVwiMjAuMDgxXCIgd2lkdGg9XCI0Ljc1N1wiIGhlaWdodD1cIjAuNzkxXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0xMi41NiAxOC4xMDgpIHJvdGF0ZSgtNTcuNjAzKVwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNOC4xNDcsMjMuNjk0YTcuMTcxLDcuMTcxLDAsMCwwLC4xMzMtMi4zMTdsLjczNC45NDksMS4xNzEuMjZBNy4xNjUsNy4xNjUsMCwwLDAsOC4xNDcsMjMuNjk0WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxyZWN0IHg9XCIxNS40MThcIiB5PVwiMTguMDUxXCIgd2lkdGg9XCIwLjc5MVwiIGhlaWdodD1cIjQuOTE5XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC04LjI1NyAxMC45NTEpIHJvdGF0ZSgtMzAuNzA4KVwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTcuOCwyMy44NTZhNy4xNzEsNy4xNzEsMCwwLDAtMi4wMDYtMS4xNjhsMS4xNzktLjIyNS43NjItLjkyN0E3LjE2NSw3LjE2NSwwLDAsMCwxNy44LDIzLjg1NlpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTEzLjAyNCwxOS4xMjVhNS4yMzgsNS4yMzgsMCwwLDEtMi44MDctLjc2MiwyLjc3NSwyLjc3NSwwLDAsMS0xLjQxLTIuMjI5LDIuNzc1LDIuNzc1LDAsMCwxLDEuMjY2LTIuMzE0LDUuMyw1LjMsMCwwLDEsMi45NDgtLjk0OCw2LjcxMiw2LjcxMiwwLDAsMSwyLjEzNC4zMTNsLS4zMzEsMWE1LjY2OCw1LjY2OCwwLDAsMC0xLjc2OS0uMjYxLDQuMjM4LDQuMjM4LDAsMCwwLTIuMzU4Ljc0NCwxLjc2MSwxLjc2MSwwLDAsMC0uODM1LDEuNDMsMS43NjEsMS43NjEsMCwwLDAsLjkyNCwxLjM3NCw0LjI0Miw0LjI0MiwwLDAsMCwyLjQuNTkzLDUuNyw1LjcsMCwwLDAsMS42NzgtLjM3OGwuMzc4Ljk4NWE2Ljg0NCw2Ljg0NCwwLDAsMS0yLjAyMi40NDhRMTMuMTIxLDE5LjEyNSwxMy4wMjQsMTkuMTI1WlwiIHN0eWxlPVwiZmlsbDojNjU2NTY1XCIvPjxwYXRoIGQ9XCJNMTUuNDM1LDEyLjg3NmE0LjMzOCw0LjMzOCwwLDAsMC0uOTg0LDEuNjIyLDIuMDY0LDIuMDY0LDAsMCwxLS4wMTYsMi44MDYsNC40LDQuNCwwLDAsMCwuOTgyLDEuNiwzLjkzMiwzLjkzMiwwLDAsMCwuMDc4LTUuOTg2QzE1LjQ3NiwxMi45LDE1LjQ1NCwxMi44OTMsMTUuNDM1LDEyLjg3NlpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTE5LjUyNSwxNS4yNzhhMjcuOTMxLDI3LjkzMSwwLDAsMC0xLjI2My0zLjc0Miw0LjM3Niw0LjM3NiwwLDAsMC0xLjc3Ny41MTcsMjYuMDYzLDI2LjA2MywwLDAsMSwxLjI1MywzLjY4NSwyNi4wMzgsMjYuMDM4LDAsMCwxLC43MzQsNC41MzQsNC4zNDcsNC4zNDcsMCwwLDAsMS44MjUtLjM1MUEyNy45LDI3LjksMCwwLDAsMTkuNTI1LDE1LjI3OFpcIiBzdHlsZT1cImZpbGw6IzY1NjU2NVwiLz48cGF0aCBkPVwiTTE2LjE1MywxMi4yMjlBNC40MzcsNC40MzcsMCwxLDAsMjIuMywxMy41LDQuNDM3LDQuNDM3LDAsMCwwLDE2LjE1MywxMi4yMjlabTQuODEyLDcuMzMyYTQuMzQ2LDQuMzQ2LDAsMSwxLDEuMjQ5LTYuMDE4QTQuMzQ2LDQuMzQ2LDAsMCwxLDIwLjk2NSwxOS41NjFaXCIgc3R5bGU9XCJmaWxsOiMyYzI5MjhcIi8+PHBhdGggZD1cIk0yMi4wMTUsMTkuMTg2YS44MjIuODIyLDAsMCwwLS4xOTItLjIwOSw0LjM0Nyw0LjM0NywwLDAsMS0uMzMzLjMxOSw0LjUyMiw0LjUyMiwwLDAsMS0uNDQ2LjMzNyw0LjczLDQuNzMsMCwwLDEtLjk0LjQ3Ny42NjkuNjY5LDAsMCwwLC4wMzEuMS42NC42NCwwLDAsMCwuMDQ3LjA5NGwuNDg3LjhMMjIuNSwxOS45ODRaXCIgc3R5bGU9XCJmaWxsOiMyODI4MjhcIi8+PHJlY3QgeD1cIjIwLjc5M1wiIHk9XCIyMC43ODRcIiB3aWR0aD1cIjIuMTQ3XCIgaGVpZ2h0PVwiMC40NFwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtNy43NCAxNC40NjUpIHJvdGF0ZSgtMzEuMzk0KVwiIHN0eWxlPVwiZmlsbDojMjgyODI4XCIvPjxyZWN0IHg9XCIyMi44NjhcIiB5PVwiMjAuOTZcIiB3aWR0aD1cIjIuMTQ3XCIgaGVpZ2h0PVwiNi44ODdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTkuMjA3IDE2LjA0NCkgcm90YXRlKC0zMS4zOTQpXCIgc3R5bGU9XCJmaWxsOiMyODI4MjhcIi8+PHBhdGggZD1cIk0yNy4wNTQsMjcuNDQzbC0uMjM2LS4zODctMS44MzMsMS4xMTkuMjM2LjM4N2EuOTI0LjkyNCwwLDAsMCwxLjI3OS4xNTlsLjExLS4wNjdBLjkyNC45MjQsMCwwLDAsMjcuMDU0LDI3LjQ0M1pcIiBzdHlsZT1cImZpbGw6IzI4MjgyOFwiLz48cGF0aCBkPVwiTTIwLjY4LDE0Ljg0NWEuMzE1LjMxNSwwLDAsMSwuMzM4LjAyNywxLjA3OCwxLjA3OCwwLDAsMSwuMjk0LjU3OCwxLjEsMS4xLDAsMCwxLC4wMjkuNjU0LjMyNy4zMjcsMCwwLDEtLjI3OC4yLjQ2OC40NjgsMCwwLDEtLjM3LS4xLjkyMi45MjIsMCwwLDEtLjI2Mi0uNS45NTUuOTU1LDAsMCwxLS4wMS0uNTg1QS40NjYuNDY2LDAsMCwxLDIwLjY4LDE0Ljg0NVptLjA2LjIyN2EuMTQ5LjE0OSwwLDAsMC0uMDc0LjA2My4yNDcuMjQ3LDAsMCwwLS4wMjcuMTMyLDEuNjI2LDEuNjI2LDAsMCwwLC4wNjQuMzU1LDEuNTkyLDEuNTkyLDAsMCwwLC4xMTIuMzI5LjI2OC4yNjgsMCwwLDAsLjA5NC4xMS4xNDIuMTQyLDAsMCwwLC4wOTQuMDE1LjEyMS4xMjEsMCwwLDAsLjA3OC0uMDQ4LjIxMS4yMTEsMCwwLDAsLjAyOC0uMTI4LDIuNjQzLDIuNjQzLDAsMCwwLS4xODYtLjcyMi4yMzUuMjM1LDAsMCwwLS4wOTMtLjEwN0EuMTE2LjExNiwwLDAsMCwyMC43MzksMTUuMDcyWlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjEuNjk0LDE0LjRhLjMuMywwLDAsMSwuMzQ2LjA1NywxLjQ5MywxLjQ5MywwLDAsMSwuMzI1LjcsMS41MjEsMS41MjEsMCwwLDEsLjA2Ljc3MS4zMS4zMSwwLDAsMS0uMjcuMjI4LjQ0Ni40NDYsMCwwLDEtLjM3OS0uMTM3LDEuMzEsMS4zMSwwLDAsMS0uMjkyLS42MTcsMS4zNDEsMS4zNDEsMCwwLDEtLjA0MS0uN0EuNDQxLjQ0MSwwLDAsMSwyMS42OTQsMTQuNFptLjA3Mi4yNzNhLjEzNi4xMzYsMCwwLDAtLjA3Mi4wNjkuMzE1LjMxNSwwLDAsMC0uMDIxLjE1NSwyLjM1MSwyLjM1MSwwLDAsMCwuMDg0LjQyNywyLjMxLDIuMzEsMCwwLDAsLjEzMS40LjM0Ny4zNDcsMCwwLDAsLjEuMTM1LjEzLjEzLDAsMCwwLC4xLjAyMS4xMS4xMSwwLDAsMCwuMDc2LS4wNTQuMjc1LjI3NSwwLDAsMCwuMDIyLS4xNSwzLjc3MywzLjc3MywwLDAsMC0uMjI0LS44NjIuMzExLjMxMSwwLDAsMC0uMS0uMTMyQS4xLjEsMCwwLDAsMjEuNzY2LDE0LjY3NFpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTIzLjQ3MiwxNS45MzRsLS4yNjkuMDM4LS4zNzktMS40MzlhLjk1NS45NTUsMCwwLDEtLjI1Ny4zOTJsLS4wODctLjMzMWEuODQxLjg0MSwwLDAsMCwuMTY5LS4yNi44NzQuODc0LDAsMCwwLC4wNzUtLjM4M2wuMi0uMDg5WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjQuNDU1LDE1Ljc5NGwtLjI2OS4wMzgtLjQyOS0xLjYyNWExLDEsMCwwLDEtLjI0Ny40MjlsLS4xLS4zNzZhLjg3NC44NzQsMCwwLDAsLjE2Mi0uMjg0LDEuMDI4LDEuMDI4LDAsMCwwLC4wNjQtLjQyNGwuMi0uMDg5WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjQuNjM2LDEzLjExN2MuMTI3LS4wNTUuMjQ5LS4wMDguMzY5LjE0NGEzLjExLDMuMTEsMCwwLDEsLjQxNiwxLjAzNCwzLjE0MywzLjE0MywwLDAsMSwuMTUxLDEuMTFjLS4wMjkuMTktLjExMS4yOTQtLjI0Ny4zMTJzLS4yNzItLjA1OS0uNC0uMjMxYTIuODU1LDIuODU1LDAsMCwxLS4zODEtLjk1LDIuODcxLDIuODcxLDAsMCwxLS4xMzItMS4wMzlBLjQzNy40MzcsMCwwLDEsMjQuNjM2LDEzLjExN1ptLjEwNy40YS4xMjQuMTI0LDAsMCwwLS4wNjcuMDg4LjU4NC41ODQsMCwwLDAsMCwuMjIxLDUuMjE4LDUuMjE4LDAsMCwwLC4xMzkuNjM1LDUuMTUzLDUuMTUzLDAsMCwwLC4xODQuNi42Ni42NiwwLDAsMCwuMTIuMjA4LjExOC4xMTgsMCwwLDAsLjEuMDQuMS4xLDAsMCwwLC4wNzEtLjA3Mi41MjguNTI4LDAsMCwwLDAtLjIxNiw1LjQ0Miw1LjQ0MiwwLDAsMC0uMTQ0LS42NTMsNS40NDcsNS40NDcsMCwwLDAtLjE4OS0uNjE5LjYxMi42MTIsMCwwLDAtLjExOS0uMjA1QS4wOTMuMDkzLDAsMCwwLDI0Ljc0MywxMy41MjJaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNi42MzgsMTUuNDg4bC0uMjY5LjAzOC0uNTQtMi4wMzlBMS4xNTEsMS4xNTEsMCwwLDEsMjUuNiwxNGwtLjEyNi0uNDc1YS45OS45OSwwLDAsMCwuMTQ4LS4zMzcsMS40MzYsMS40MzYsMCwwLDAsLjAzOS0uNTE1bC4yLS4wODhaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNi42NjYsMTIuMjM2Yy4xMjctLjA1NS4yNTUuMDEyLjM4NS4yYTQuNTg0LDQuNTg0LDAsMCwxLC40NzgsMS4yNjgsNC42Miw0LjYyLDAsMCwxLC4yMTMsMS4zNDNjLS4wMTguMjI5LS4xLjM1Mi0uMjMyLjM3cy0uMjc4LS4wODEtLjQyMS0uM2E0LjI4NCw0LjI4NCwwLDAsMS0uNDQzLTEuMTc5LDQuMjgzLDQuMjgzLDAsMCwxLS4xOTQtMS4yNzJDMjYuNDY4LDEyLjQzOCwyNi41MzksMTIuMjkxLDI2LjY2NiwxMi4yMzZabS4xMzEuNXEtLjA0Ni4wMTgtLjA2NC4xYS44MjkuODI5LDAsMCwwLC4wMDkuMjY2LDcuODU2LDcuODU2LDAsMCwwLC4xNzguNzc5cS4xNDMuNTQxLjIyMS43MzhhLjk0Ny45NDcsMCwwLDAsLjEzNC4yNTguMTE5LjExOSwwLDAsMCwuMS4wNTJxLjA0OC0uMDA5LjA2OC0uMDg1YS43NjIuNzYyLDAsMCwwLS4wMDgtLjI2Miw4LjExNyw4LjExNywwLDAsMC0uMTgyLS44cS0uMTQ4LS41NTctLjIyNy0uNzU3YS44OTIuODkyLDAsMCwwLS4xMzMtLjI1NlEyNi44NDMsMTIuNzE0LDI2LjgsMTIuNzMyWlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjcuNjgxLDExLjhjLjEyNy0uMDU1LjI1Ny4wMjMuMzkzLjIzNGE1LjQzMSw1LjQzMSwwLDAsMSwuNTA5LDEuMzg1LDUuNDY3LDUuNDY3LDAsMCwxLC4yNDQsMS40NmMtLjAxMy4yNDktLjA4OC4zODEtLjIyNC40cy0uMjgxLS4wOTItLjQzLS4zMjhhNS4xMSw1LjExLDAsMCwxLS40NzMtMS4yOTQsNS4xLDUuMSwwLDAsMS0uMjI1LTEuMzg4QzI3LjQ4NiwxMi4wMDgsMjcuNTU1LDExLjg1MSwyNy42ODEsMTEuOFptLjE0NC41NDJxLS4wNDYuMDE4LS4wNjIuMTA2YS45Ny45NywwLDAsMCwuMDE1LjI4OXEuMDQuMjU5LjIuODUxdC4yNC44MDdhMS4xMTIsMS4xMTIsMCwwLDAsLjE0LjI4NHEuMDU3LjA2Ny4xMDYuMDU5dC4wNjYtLjA5MWEuOS45LDAsMCwwLS4wMTQtLjI4NHEtLjA0LS4yNi0uMi0uODY3dC0uMjQ1LS44MjdhMS4wNTMsMS4wNTMsMCwwLDAtLjE0LS4yODFRMjcuODcxLDEyLjMyLDI3LjgyNSwxMi4zMzhaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yOS45MTUsMTUuMDM0bC0uMjcuMDM3LS43MDYtMi42NjFhMS40NzgsMS40NzgsMCwwLDEtLjE5Mi42MzZsLS4xNjYtLjYyNUExLjI0OCwxLjI0OCwwLDAsMCwyOC43MDgsMTJhMi4yMTQsMi4yMTQsMCwwLDAsMC0uNjUzbC4yLS4wODhaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yOS43MTIsMTAuOTIxYy4xMjctLjA1NC4yNjMuMDQzLjQwOS4yOTRhNy4zNDUsNy4zNDUsMCwwLDEsLjU3MiwxLjYxOUE3LjM4Miw3LjM4MiwwLDAsMSwzMSwxNC41MjdjMCwuMjg4LS4wNzIuNDQtLjIwOS40NThzLS4yODYtLjExNC0uNDQ3LS4zOTNhNi45ODQsNi45ODQsMCwwLDEtLjUzNS0xLjUyNCw2Ljk0NCw2Ljk0NCwwLDAsMS0uMjg3LTEuNjIxQzI5LjUyMywxMS4xNTEsMjkuNTg2LDEwLjk3NSwyOS43MTIsMTAuOTIxWm0uMTY4LjYzM3EtLjA0Ni4wMTgtLjA1OS4xMTlhMS4yODcsMS4yODcsMCwwLDAsLjAyNy4zMzRxLjA1MS4zLjIzNS45OTR0LjI3Ny45NDZhMS40ODQsMS40ODQsMCwwLDAsLjE1NC4zMzRxLjA2LjA4LjEwOS4wNzF0LjA2My0uMWExLjIsMS4yLDAsMCwwLS4wMjYtLjMzcS0uMDUxLS4zLS4yMzktMS4wMTF0LS4yODItLjk2NWExLjQyLDEuNDIsMCwwLDAtLjE1My0uMzMyUTI5LjkyNiwxMS41MzYsMjkuODgsMTEuNTUzWlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjEuMTY3LDE2LjM2MmEuNDIyLjQyMiwwLDAsMSwuMzE4LjE4NSwxLjAwNSwxLjAwNSwwLDAsMS0uMjc3LDEuMDMuNDIuNDIsMCwwLDEtLjM2NiwwLC41OS41OSwwLDAsMS0uMzExLS4yNjEuODA4LjgwOCwwLDAsMSwuMjU0LS44OTNBLjU2MS41NjEsMCwwLDEsMjEuMTY3LDE2LjM2MlptLS4wNTEuMTg5YS4xNzUuMTc1LDAsMCwwLS4xOTIuMDg3LDEuNDg3LDEuNDg3LDAsMCwwLS4xNTUuNTY3LjIxNi4yMTYsMCwwLDAsLjAzOS4xMjQuMTkxLjE5MSwwLDAsMCwuMDg0LjA1OC4xNDUuMTQ1LDAsMCwwLC4xODgtLjA2OSwxLjY2NiwxLjY2NiwwLDAsMCwuMTY0LS42LjE4OS4xODksMCwwLDAtLjA0LS4xMjFBLjE2My4xNjMsMCwwLDAsMjEuMTE3LDE2LjU1MVpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTIyLjM3NiwxNi41NDhhLjM4Mi4zODIsMCwwLDEsLjMxMS4yMTIsMS4wMjQsMS4wMjQsMCwwLDEtLjAxOS42NiwxLjAyMiwxLjAyMiwwLDAsMS0uMzE1LjU4MS4zOC4zOCwwLDAsMS0uMzczLjAyNS41MzMuNTMzLDAsMCwxLS4zLS4yOSwxLjE4OSwxLjE4OSwwLDAsMSwuMzA5LTEuMUEuNS41LDAsMCwxLDIyLjM3NiwxNi41NDhabS0uMDYyLjIzYS4xNjcuMTY3LDAsMCwwLS4xLjAxMy4yMzUuMjM1LDAsMCwwLS4xLjEsMi4yMTksMi4yMTksMCwwLDAtLjE4OS42OTQuMjY5LjI2OSwwLDAsMCwuMDMzLjE0Ny4xNjcuMTY3LDAsMCwwLC4wODMuMDY0LjE0My4xNDMsMCwwLDAsLjEsMCwuMjA2LjIwNiwwLDAsMCwuMDk0LS4xLDIuNDM2LDIuNDM2LDAsMCwwLC4yLS43MjcuMjQuMjQsMCwwLDAtLjAzNC0uMTQ0QS4xNDEuMTQxLDAsMCwwLDIyLjMxNCwxNi43NzhaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yMy4zNywxOC41NDFsLS4yODEtLjExLjMyOC0xLjIyNWExLDEsMCwwLDEtLjQ0Mi4xNTJsLjA3NS0uMjgxYS44ODEuODgxLDAsMCwwLC4yOTItLjEuNjguNjgsMCwwLDAsLjI1OS0uMjM4bC4yNDIuMDM3WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjQuNzkzLDE2LjkxOWEuMzQ4LjM0OCwwLDAsMSwuMy4yNjYsMS43NTEsMS43NTEsMCwwLDEtLjA3NS44NywxLjc0OSwxLjc0OSwwLDAsMS0uMzcxLjc5MS4zNDUuMzQ1LDAsMCwxLS4zODguMDc4LjQ4OC40ODgsMCwwLDEtLjI4OC0uMzQ4LDEuNTg3LDEuNTg3LDAsMCwxLC4wNjctLjc5LDEuNTc3LDEuNTc3LDAsMCwxLC4zNTQtLjcyN0EuNDU3LjQ1NywwLDAsMSwyNC43OTMsMTYuOTE5Wm0tLjA4NC4zMTJhLjE0My4xNDMsMCwwLDAtLjEwNy4wMjUuMzUzLjM1MywwLDAsMC0uMTA2LjE0MSw0LjEyNiw0LjEyNiwwLDAsMC0uMjU3Ljk0OC40MDguNDA4LDAsMCwwLC4wMjEuMTkyLjE0My4xNDMsMCwwLDAsLjA4LjA3NS4xMi4xMiwwLDAsMCwuMS0uMDExLjMxOC4zMTgsMCwwLDAsLjEwNS0uMTM3LDQuNDE4LDQuNDE4LDAsMCwwLC4yNjYtLjk4MS4zNzQuMzc0LDAsMCwwLS4wMjItLjE4OUEuMTE5LjExOSwwLDAsMCwyNC43MSwxNy4yMzFaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0yNS42NDksMTkuNDNsLS4yODEtLjExLjQyOC0xLjZhMS4wMzMsMS4wMzMsMCwwLDEtLjQ2Mi4yMjdsLjEtLjM3MWEuOS45LDAsMCwwLC4zLS4xNTEuOTMuOTMsMCwwLDAsLjI4MS0uMzIxbC4yNDIuMDM3WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjcuMjExLDE3LjI5MWEuMzQ0LjM0NCwwLDAsMSwuMjgyLjMxOSwyLjY5MiwyLjY5MiwwLDAsMS0uMTMxLDEuMDgsMi42OSwyLjY5LDAsMCwxLS40MjcsMSwuMzQuMzQsMCwwLDEtLjQuMTMuNDg3LjQ4NywwLDAsMS0uMjczLS40MDUsMi40OTQsMi40OTQsMCwwLDEsLjEyMi0xLDIuNDcsMi40NywwLDAsMSwuNDEtLjkzN0EuNDUxLjQ1MSwwLDAsMSwyNy4yMTEsMTcuMjkxWm0tLjEwNi4zOTRhLjEzMy4xMzMsMCwwLDAtLjExLjAzNi41MDkuNTA5LDAsMCwwLS4xMTcuMTgyLDYuNjIyLDYuNjIyLDAsMCwwLS4zMjUsMS4yLjU5MS41OTEsMCwwLDAsLjAwOS4yMzcuMTMzLjEzMywwLDAsMCwuMDc3LjA4Ni4xMS4xMSwwLDAsMCwuMTA3LS4wMjMuNDY1LjQ2NSwwLDAsMCwuMTE2LS4xNzgsNC42MzksNC42MzksMCwwLDAsLjItLjYxOSw0LjY1OCw0LjY1OCwwLDAsMCwuMTM2LS42MTUuNTUyLjU1MiwwLDAsMC0uMDEtLjIzNUEuMTEuMTEsMCwwLDAsMjcuMTA1LDE3LjY4NVpcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz48cGF0aCBkPVwiTTI3LjkyNywyMC4zMmwtLjI4MS0uMTEuNTI4LTEuOTcxYTEuMTM0LDEuMTM0LDAsMCwxLS40ODIuM2wuMTIzLS40NmEuOTcyLjk3MiwwLDAsMCwuMzE3LS4yLDEuMjQ4LDEuMjQ4LDAsMCwwLC4zLS40bC4yNDIuMDM3WlwiIHN0eWxlPVwiZmlsbDojMDBmZjgwXCIvPjxwYXRoIGQ9XCJNMjguOTUzLDIwLjcyMWwtLjI4MS0uMTEuNTczLTIuMTM5YTEuMiwxLjIsMCwwLDEtLjQ5MS4zMzZsLjEzNC0uNWExLjAyLDEuMDIsMCwwLDAsLjMyMy0uMjIsMS40MTMsMS40MTMsMCwwLDAsLjMxNC0uNDRsLjI0Mi4wMzdaXCIgc3R5bGU9XCJmaWxsOiMwMGZmODBcIi8+PHBhdGggZD1cIk0zMC43MTcsMTcuODNjLjE1MS4wMjMuMjM4LjE1NS4yNjIuNGE0LjQzNiw0LjQzNiwwLDAsMS0uMjEzLDEuMzg1LDQuNDM0LDQuNDM0LDAsMCwxLS41MDksMS4zMDdjLS4xNC4xOTUtLjI4LjI2My0uNDIyLjIwN3MtLjIyNi0uMjItLjI1LS40ODlhNC4xOTQsNC4xOTQsMCwwLDEsLjItMS4zLDQuMTQzLDQuMTQzLDAsMCwxLC40OTItMS4yNDFDMzAuNDIsMTcuOSwzMC41NjYsMTcuODA3LDMwLjcxNywxNy44M1ptLS4xMzcuNTEzYS4xMzIuMTMyLDAsMCwwLS4xMTUuMDUzLjguOCwwLDAsMC0uMTMzLjI0MSw3LjU4Nyw3LjU4NywwLDAsMC0uMjQ0Ljc5MSw3LjUzOSw3LjUzOSwwLDAsMC0uMTguNzc5LjkzLjkzLDAsMCwwLS4wMDkuMy4xMzEuMTMxLDAsMCwwLC4wNzMuMS4xMDguMTA4LDAsMCwwLC4xMTEtLjAzOS43NDIuNzQyLDAsMCwwLC4xMzItLjIzNyw3LjgsNy44LDAsMCwwLC4yNDgtLjgwNiw3LjgzNSw3LjgzNSwwLDAsMCwuMTg1LS44Ljg4NC44ODQsMCwwLDAsLjAwOC0uM1EzMC42MzMsMTguMzUzLDMwLjU4LDE4LjM0M1pcIiBzdHlsZT1cImZpbGw6IzAwZmY4MFwiLz5gLFxuXHRcIkVkaXRvckNvbmZpZ1wiOiBgPHBhdGggZD1cIk04LjcwOSwxOC4zNTFhMS4yNjcsMS4yNjcsMCwwLDAsLjUzMi0xLjM3OUM4LjY5MiwxNy4yMDcsOC43MTgsMTcuNzQ5LDguNzA5LDE4LjM1MVpcIiBzdHlsZT1cImZpbGw6I2UzZTNmOFwiLz48cGF0aCBkPVwiTTE0LjkyNCwxOS44NTJhLjg3MS44NzEsMCwwLDAsLjYyLTEuMTM1QTEuNDMsMS40MywwLDAsMCwxNC45MjQsMTkuODUyWlwiIHN0eWxlPVwiZmlsbDojZTNlM2Y4XCIvPjxwYXRoIGQ9XCJNMi43MTMsMjcuMDc5YTEuNTM4LDEuNTM4LDAsMCwwLC41MjQsMS4zNTNjMS40MTQuNzk0LDYuMzcyLjE3NSw4LjA1Ni0uMmExNC45OTQsMTQuOTk0LDAsMCwwLDIuNDI2LTEuMjEzLDIyLjY0MywyMi42NDMsMCwwLDAsNC43MTMtMi41NTdjMS4wODItLjc5NCwyLjgtMy4wMjksMi45ODUtNC4zNjRsLTEuNDc1LS4zMzJjLS4wMzUsMS41LS4zNzUsMS44NDItMS43MTEsMi4xOTFhMTAuNjYyLDEwLjY2MiwwLDAsMS0zLjU3LjE0LDMuMzYyLDMuMzYyLDAsMCwxLTIuMzEzLTEuNTYyYy0xLjA2NS0xLjQxNC4yMzYtMi40LTEuNDQ5LTIuNS0xLjc3MiwyLjE3My00LjkuNjExLTYuMjY3LjM5M2EzMC4wNjYsMzAuMDY2LDAsMCwwLTEuOTM4LDcuNiwyLjc0OCwyLjc0OCwwLDAsMSwyLjEzOC4zMjNjMi42ODgsMS4wMzkuMzQsMS45NTUtLjczMywxLjY4NUMzLjM2OCwyNy44NjQsMy4xNDEsMjcuMzg0LDIuNzEzLDI3LjA3OVpcIiBzdHlsZT1cImZpbGw6I2ZkZmRmZFwiLz48cGF0aCBkPVwiTTYuMjMxLDE0LjUzN2ExMS41MzksMTEuNTM5LDAsMCwxLDIuOTg1LDEuMTI2YzEuNTEuNzUxLDEuNzgxLjY0NiwxLjkyLDEuNjkzLjAxNy4xOTItLjAxNy4zLjUzMi40NzEuOTI1LjI4OC0uNTMyLS4yMjcsMS45NDYtLjIxOEExNi42NCwxNi42NCwwLDAsMSwxOS41NTksMTguOWMuNDU0LjI4OC4zNjcuNjU1LDEuOS42MTFhMTguNzY3LDE4Ljc2NywwLDAsMC0xLjItNi4xNjJjLS44NjQtMi4wMDctMi4wMDctMi4zMTMtNC4zMzgtMy4wNjQtMS4zNjItLjQzNi01LjM1OS0uOTE2LTYuNi0uMTQ4LTEuMTYxLjcyNC0xLjM3OSwxLjU4OS0yLjQ2MSwzLjEwN0E1LjM2Niw1LjM2NiwwLDAsMCw2LjIzMSwxNC41MzdaXCIgc3R5bGU9XCJmaWxsOiNmZGZkZmRcIi8+PHBhdGggZD1cIk0xNS44NCwxOC4yNDZjLjg3My4zNTgtLjA0NCwyLjY3MS0xLjI1NywyLjExMi0uMzkzLTEuMTA4LjU0MS0xLjczNy43OTQtMi4yMzRhOC41MSw4LjUxLDAsMCwwLTIuNDYxLS4xNDhjLS41NzYuMjE4LS43MDcsMS40NDktLjQxLDIuMDI1LDEuNCwyLjc0MSw3LjU2NywyLjE1Niw2LjkxMy4wMjYtLjI2Mi0uODY0LS41MDYtMS0xLjM4OC0xLjNBNi44ODUsNi44ODUsMCwwLDAsMTUuODQsMTguMjQ2WlwiIHN0eWxlPVwiZmlsbDojZmRmZGZkXCIvPjxwYXRoIGQ9XCJNNC44NjksMTcuOTQxYy43LjY3MiwyLjI3OC43NzcsMy4zLjgyOUM4LjMsMTcuNDE3LDguNDEzLDE2LjQsOS41LDE2LjQ4M2ExLjYsMS42LDAsMCwxLS4zMDUsMi4xMywxLjM4NiwxLjM4NiwwLDAsMCwxLjM2Mi0xLjc2MywxNC41NDIsMTQuNTQyLDAsMCwwLTQuNDYtMS44OTRBOS41MDYsOS41MDYsMCwwLDAsNC44NjksMTcuOTQxWlwiIHN0eWxlPVwiZmlsbDojZmRmZGZkXCIvPjxwYXRoIGQ9XCJNMy4yMjgsMjYuNTgxYy41NzYtLjA1MiwyLjA3Ny4zODQsMi4yLjg3M0M0LjQ5NCwyNy41NjgsMy4zMDcsMjcuNDgsMy4yMjgsMjYuNTgxWm0tLjUxNS41Yy40MjguMzA1LjY1NS43ODYsMS4zODguOTYsMS4wNzQuMjcxLDMuNDIxLS42NDYuNzMzLTEuNjg1QTIuNzQ4LDIuNzQ4LDAsMCwwLDIuNywyNi4wMzJhMzAuMDY2LDMwLjA2NiwwLDAsMSwxLjkzOC03LjZjMS4zNy4yMTgsNC40OTUsMS43ODEsNi4yNjctLjM5MywxLjY4NS4xLjM4NCwxLjA4MiwxLjQ0OSwyLjVBMy4zNjIsMy4zNjIsMCwwLDAsMTQuNjYyLDIyLjFhMTAuNjYyLDEwLjY2MiwwLDAsMCwzLjU3LS4xNGMxLjMzNS0uMzQ5LDEuNjc2LS42OSwxLjcxMS0yLjE5MWwxLjQ3NS4zMzJjLS4xODMsMS4zMzUtMS45LDMuNTctMi45ODUsNC4zNjRhMjIuNjQzLDIyLjY0MywwLDAsMS00LjcxMywyLjU1NywxNC45OTQsMTQuOTk0LDAsMCwxLTIuNDI2LDEuMjEzYy0xLjY4NS4zNzUtNi42NDIsMS04LjA1Ni4yQTEuNTM4LDEuNTM4LDAsMCwxLDIuNzEzLDI3LjA3OVptMTIuMjExLTcuMjI3YTEuNDMsMS40MywwLDAsMSwuNjItMS4xMzVBLjg3MS44NzEsMCwwLDEsMTQuOTI0LDE5Ljg1MlptLjkxNi0xLjYwNmE2Ljg4NSw2Ljg4NSwwLDAsMSwyLjE5MS40OGMuODgyLjMsMS4xMjYuNDM2LDEuMzg4LDEuMy42NTUsMi4xMy01LjUxNiwyLjcxNC02LjkxMy0uMDI2LS4zLS41NzYtLjE2Ni0xLjgwNy40MS0yLjAyNWE4LjUxLDguNTEsMCwwLDEsMi40NjEuMTQ4Yy0uMjUzLjUtMS4xODcsMS4xMjYtLjc5NCwyLjIzNEMxNS44LDIwLjkxNywxNi43MTMsMTguNiwxNS44NCwxOC4yNDZabS03LjEzMS4xYy4wMDktLjYtLjAxNy0xLjE0My41MzItMS4zNzlBMS4yNjcsMS4yNjcsMCwwLDEsOC43MDksMTguMzUxWm0tMy44NC0uNDFhOS41MDYsOS41MDYsMCwwLDEsMS4yMjItMi45ODUsMTQuNTQyLDE0LjU0MiwwLDAsMSw0LjQ2LDEuODk0QTEuMzg2LDEuMzg2LDAsMCwxLDkuMTksMTguNjEzYTEuNiwxLjYsMCwwLDAsLjMwNS0yLjEzYy0xLjA4Mi0uMDc5LTEuMi45MzQtMS4zMjcsMi4yODdDNy4xNDcsMTguNzE3LDUuNTY3LDE4LjYxMyw0Ljg2OSwxNy45NDFaTTQsMTcuMjQyYy0uMzIzLS44OS0uMzIzLTIuMjc4LDEuMDQ3LTIuMzkybC0uNywxLjk0NkM0LjE2MiwxNy4yMTYsNC4xNjIsMTcuMTIsNCwxNy4yNDJabTIuMjM0LTIuNzA2YTUuMzY2LDUuMzY2LDAsMCwxLC42MjgtMS4yOTJjMS4wODItMS41MTksMS4zLTIuMzgzLDIuNDYxLTMuMTA3LDEuMjM5LS43NjgsNS4yMzctLjI4OCw2LjYuMTQ4LDIuMzMuNzUxLDMuNDc0LDEuMDU2LDQuMzM4LDMuMDY0YTE4Ljc2NywxOC43NjcsMCwwLDEsMS4yLDYuMTYyYy0xLjUzNi4wNDQtMS40NDktLjMyMy0xLjktLjYxMWExNi42NCwxNi42NCwwLDAsMC01Ljk0NC0xLjI5MmMtMi40NzktLjAwOS0xLjAyMS41MDYtMS45NDYuMjE4LS41NS0uMTc1LS41MTUtLjI3OS0uNTMyLS40NzEtLjE0LTEuMDQ3LS40MS0uOTQzLTEuOTItMS42OTNBMTEuNTM5LDExLjUzOSwwLDAsMCw2LjIzMSwxNC41MzdabTE1LjQ0OS0uNDI4Yy0uMTY2LS41NS4xNC0uNTE1LjY3Mi0uODlhOS4wMjEsOS4wMjEsMCwwLDEsLjkyNS0uNjU1YzEuNDA1LS43ODYsNC4wMjQtLjkxNiw1LjE0MS4wMTdBMi40NzksMi40NzksMCwwLDEsMjkuNSwxNC42NWE1LjgzOCw1LjgzOCwwLDAsMS0yLjYxOCwzLjgzMiw1LjIxMyw1LjIxMywwLDAsMS00Ljc4MywxLjJjLS4xNTctLjM4NC0uMDM1LTIuODE5LS4yMTgtMy43MTgtLjE2Ni0uOC0uMDc5LS44OS4zODQtMS4zNywxLjM2Mi0xLjQxNCw0LjMxMi0yLjQ0NCw1Ljk4OC0xLjIzMS43MDcuNTI0LjUwNi43MjQuODczLDEuMTI2LjQ1NC0uNDg5LS4zOTMtMi4xMy0zLjUxNy0yLjAyNUMyMy40ODYsMTIuNTI5LDIyLjU3LDE0LjE4NywyMS42OCwxNC4xMDlaTTguOTcxLDkuMTQzYTguMDk0LDguMDk0LDAsMCwxLDIuMjc4LTQuNkMxMi42LDMuNSwxNC4wMTYsMi41MDksMTYuMDk0LDMuNjg3Yy41MTUuMjg4LjQ4OS40MzYuNTQxLDEuMTUyYTMuMzEyLDMuMzEyLDAsMCwxLS4xOTIsMS41Yy0xLjM3OSw0LjQ1MS0yLjUzMSwxLjg5NC02Ljk0OCwyLjk1YTYuMzc0LDYuMzc0LDAsMCwxLDIuMTIxLTMuNDEzYzEuMi0xLjE2MSwyLjA2LTEuOTExLDMuODU4LTEuNjY3YTEuODQyLDEuODQyLDAsMCwxLS4wNTIsMi4zMjJjLS44LDEuMjkyLTEsMS4yMTMtLjg4MiwyLjA5NS42MjgtLjE1Ny44Mi0uNzY4LDEuMTA4LTEuMzc5LDEuNzU0LTMuNjY2LS43OTQtNC4xMTEtMi4zNTctMy40MzlBMTAuMzcyLDEwLjM3MiwwLDAsMCw5Ljc2Niw3LjU1NGMtLjEyMi4yNDQtLjI1My41NTktLjM2Ny44MjlabTYuOTEzLjE4M0MxNi4wNjcsOC4yMzUsMTcuMTUsNy45NjQsMTcuMTUsNC42YzAtMS40NDktMS43ODEtMi43NDktNC4xMTEtMS43ODEtMiwuODItMi4zLDEuNDQ5LTMuMzY5LDMuMDU1LTEsMS41MTktLjk2OSwzLjE4Ni0xLjgzMyw0LjU5MS0uMjUzLjQtLjQ4LjU0MS0uNzU5Ljk0My0uMi4zLS4zNDkuNjcyLS41NSwxLjAyMUExMi45NCwxMi45NCwwLDAsMCw1LjM2NywxNC40Yy0xLjA0Ny4wMjYtMS45MjkuMDQ0LTIuMDM0LDEuMTI2LS4xNCwxLjQ4NC41NTksMS44NS41NTksMi40MDktLjAwOS42LTIuNDUzLDYuNjc3LTEuNzcyLDEwLjMuMTkyLDEsLjg0NywxLDEuODk0LDEuMTI2YTE3LjkzLDE3LjkzLDAsMCwwLDguMDU2LS43MDdsNC4xLTEuOTY0YTE4Ljg1LDE4Ljg1LDAsMCwwLDMuNTYxLTIuNSwxMi4zODMsMTIuMzgzLDAsMCwwLDEuMzA5LTEuNzE5LDMuMjEzLDMuMjEzLDAsMCwwLC44LTIuMjA4LDguNDczLDguNDczLDAsMCwxLDIuOTg1LDFjLS4wNjEuNi0uMzU4LjMxNC0uMzU4Ljg1NWExLjM1NSwxLjM1NSwwLDAsMCwxLjA0Ny0uODljLS4zNTgtLjUyNC0uNzMzLS40MzYtMS4yNDgtLjg1NWE4LjIxMiw4LjIxMiwwLDAsMSwxLjcxOS0uNzA3YzEuMjIyLS41MDYsMy4zMDgtMi4wNDIsMy44MjMtMy40MzlhNC40NDksNC40NDksMCwwLDAtLjU1OS0zLjczNiw1LjQ0NCw1LjQ0NCwwLDAsMC0zLjY0OC0xLjE2MWMtMS41OCwwLTMuMjEyLDEuMTM1LTQuNDg2LDEuNjIzLS40ODktLjQyOC0uNTI0LS45MTYtLjg4Mi0xLjM4OEExMi4yODEsMTIuMjgxLDAsMCwwLDE1Ljg4NCw5LjMyNlpcIiBzdHlsZT1cImZpbGw6IzAyMDIwMlwiLz48cGF0aCBkPVwiTTIxLjY4LDE0LjEwOWMuODkuMDc5LDEuODA3LTEuNTgsMy45MjgtMS42NSwzLjEyNS0uMSwzLjk3MSwxLjUzNiwzLjUxNywyLjAyNS0uMzY3LS40LS4xNjYtLjYtLjg3My0xLjEyNi0xLjY3Ni0xLjIxMy00LjYyNi0uMTgzLTUuOTg4LDEuMjMxLS40NjMuNDgtLjU1LjU2Ny0uMzg0LDEuMzcuMTgzLjkuMDYxLDMuMzM0LjIxOCwzLjcxOGE1LjIxMyw1LjIxMywwLDAsMCw0Ljc4My0xLjJBNS44MzgsNS44MzgsMCwwLDAsMjkuNSwxNC42NWEyLjQ3OSwyLjQ3OSwwLDAsMC0xLjA4Mi0yLjA2OWMtMS4xMTctLjkzNC0zLjczNi0uOC01LjE0MS0uMDE3YTkuMDIxLDkuMDIxLDAsMCwwLS45MjUuNjU1QzIxLjgxOSwxMy41OTQsMjEuNTE0LDEzLjU1OSwyMS42OCwxNC4xMDlaXCIgc3R5bGU9XCJmaWxsOiNmZGYyZjJcIi8+PHBhdGggZD1cIk04Ljk3MSw5LjE0Myw5LjQsOC4zODNjLjExMy0uMjcxLjI0NC0uNTg1LjM2Ny0uODI5QTEwLjM3MiwxMC4zNzIsMCwwLDEsMTMuMjkyLDMuODFjMS41NjItLjY3Miw0LjExMS0uMjI3LDIuMzU3LDMuNDM5LS4yODguNjExLS40OCwxLjIyMi0xLjEwOCwxLjM3OS0uMTIyLS44ODIuMDc5LS44Ljg4Mi0yLjA5NWExLjg0MiwxLjg0MiwwLDAsMCwuMDUyLTIuMzIyYy0xLjgtLjI0NC0yLjY2Mi41MDYtMy44NTgsMS42NjdBNi4zNzQsNi4zNzQsMCwwLDAsOS41LDkuMjkxYzQuNDE2LTEuMDU2LDUuNTY5LDEuNSw2Ljk0OC0yLjk1YTMuMzEyLDMuMzEyLDAsMCwwLC4xOTItMS41Yy0uMDUyLS43MTYtLjAyNi0uODY0LS41NDEtMS4xNTItMi4wNzctMS4xNzgtMy40OTEtLjE5Mi00Ljg0NC44NTVBOC4wOTQsOC4wOTQsMCwwLDAsOC45NzEsOS4xNDNaXCIgc3R5bGU9XCJmaWxsOiNmZWYzZjNcIi8+PHBhdGggZD1cIk00LDE3LjI0MmMuMTY2LS4xMjIuMTY2LS4wMjYuMzQ5LS40NDVsLjctMS45NDZDMy42NzMsMTQuOTY0LDMuNjczLDE2LjM1Miw0LDE3LjI0MlpcIiBzdHlsZT1cImZpbGw6I2VmZWZlZlwiLz48cGF0aCBkPVwiTTUuNDI4LDI3LjQ1NGMtLjEyMi0uNDg5LTEuNjIzLS45MjUtMi4yLS44NzNDMy4zMDcsMjcuNDgsNC40OTQsMjcuNTY4LDUuNDI4LDI3LjQ1NFpcIiBzdHlsZT1cImZpbGw6I2ZhZjFmMVwiLz5gLFxuXHRcIkVKU1wiOiBgPHBhdGggZD1cIk0yLDE3LjY3MlYxNC4zMjhsMTEuODYtNi4yVjExLjJMNS4xLDE1LjkzOWw4Ljc2Miw0LjgzNXYzLjFabTI3LjgxNC04Ljg4TDE5LjQ2NSwyMy4yMjlIMTUuOTEyTDI2LjI4MSw4Ljc5MVpNMjYuOTQ3LDIxLjVhLjc5NC43OTQsMCwwLDAsLjYxOS0uMjc4LDEuMDYxLDEuMDYxLDAsMCwwLC4yNDgtLjczMiwxLjE0MSwxLjE0MSwwLDAsMC0uMjQ4LS43NTMuNzY4Ljc2OCwwLDAsMC0xLjIxNywwLDEuMTQxLDEuMTQxLDAsMCwwLS4yNDguNzUzLDEuMDksMS4wOSwwLDAsMCwuMjM3LjczMkEuNzYzLjc2MywwLDAsMCwyNi45NDcsMjEuNVptMi4xODYsMS4wNDJhMy4yMzcsMy4yMzcsMCwwLDEtNC4zNTItLjAxLDIuODY0LDIuODY0LDAsMCwxLDAtNC4xLDMuMjIzLDMuMjIzLDAsMCwxLDQuMzUyLDBBMi43NzMsMi43NzMsMCwwLDEsMzAsMjAuNDg2LDIuNzQsMi43NCwwLDAsMSwyOS4xMzQsMjIuNTM4Wk0xOC44MjEsMTMuMDYxYS43OTQuNzk0LDAsMCwwLC42MTktLjI3OCwxLjA2MSwxLjA2MSwwLDAsMCwuMjQ4LS43MzIsMS4xNDEsMS4xNDEsMCwwLDAtLjI0OC0uNzUzLjc2OS43NjksMCwwLDAtMS4yMTcsMCwxLjE0MSwxLjE0MSwwLDAsMC0uMjQ4Ljc1MywxLjA5LDEuMDksMCwwLDAsLjIzNy43MzJBLjc2My43NjMsMCwwLDAsMTguODIxLDEzLjA2MVpNMjEuMDA3LDE0LjFhMy4yMzcsMy4yMzcsMCwwLDEtNC4zNTItLjAxLDIuODY0LDIuODY0LDAsMCwxLDAtNC4xLDMuMjIzLDMuMjIzLDAsMCwxLDQuMzUyLDAsMi43NzMsMi43NzMsMCwwLDEsLjg2NiwyLjA2M0EyLjc0LDIuNzQsMCwwLDEsMjEuMDA3LDE0LjFaXCIgc3R5bGU9XCJmaWxsOiM5MGE5M2FcIi8+YCxcblx0XCJFbGl4aXJcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjE3LjI0OVwiIHkxPVwiLTMzNS41OTdcIiB4Mj1cIjE0Ljk3M1wiIHkyPVwiLTMwOS45OTRcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgLTMwNilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwXCIvPjxzdG9wIG9mZnNldD1cIjAuMDFcIiBzdG9wLWNvbG9yPVwiI2Y3ZjZmOFwiIHN0b3Atb3BhY2l0eT1cIjAuMDRcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wOVwiIHN0b3AtY29sb3I9XCIjYWE5Y2IzXCIgc3RvcC1vcGFjaXR5PVwiMC4zOVwiLz48c3RvcCBvZmZzZXQ9XCIwLjJcIiBzdG9wLWNvbG9yPVwiIzZmNTY3ZVwiIHN0b3Atb3BhY2l0eT1cIjAuNjZcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMlwiIHN0b3AtY29sb3I9XCIjNDUyNDU5XCIgc3RvcC1vcGFjaXR5PVwiMC44NlwiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzJkMDg0M1wiIHN0b3Atb3BhY2l0eT1cIjAuOTdcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMjYwMDNkXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfZWxpeGlyPC90aXRsZT48cGF0aCBkPVwiTTE3LjgsOC41OTFjMi4wNzksNC41ODQsNy42NCw2LjUsNy4xNDEsMTIuNDc0LS41ODIsNy4wMTctNS41NTEsOC43ODQtOC4zMTYsOC45MDlhOC44MTUsOC44MTUsMCwwLDEtOS40LTcuNDg1QzUuNjE4LDE1LjA0NiwxMi42NTUsMy42MzIsMTYuNzA5LDJBMTUuMDgzLDE1LjA4MywwLDAsMCwxNy44LDguNTkxWm0tLjE2NiwxOC44NTdhLjQyMy40MjMsMCwwLDAtLjA1Ny0uMzI3Yy0uNTkzLTEuMS01LjgxLTEuNjQ1LTYuOTA3LTEuNzUyYTguMjcyLDguMjcyLDAsMCwwLDEuNjM1LDEuMyw3Ljc2Niw3Ljc2NiwwLDAsMCwyLjgxNCwxLjA0MUMxNS45MjIsMjcuODMxLDE3LjQ2NywyNy45MzMsMTcuNjM1LDI3LjQ0N1pcIiBzdHlsZT1cImZpbGw6IzdjNjQ4ZlwiLz48ZyBzdHlsZT1cIm9wYWNpdHk6MC4yNVwiPjxwYXRoIGQ9XCJNMTguMjQ4LDEwLjYxOGM0LjQ3LDQuODIzLDYuNDQ1LDQuOTc5LDYuMjM3LDEwLjQ3OC0uMjQ5LDYuNDc2LTQuNTQzLDguMTkxLTcuMDU4LDguNDItNC4yLjU1MS03LjQ5NS0xLjUyOC04LjM1OC01LjY4NkM3LjMxMiwxNy4wNjMsMTIuOTc4LDYuMDIzLDE2LjYzNyw0LjM2QTE1LjMyMywxNS4zMjMsMCwwLDAsMTguMjU4LDEwLjZaXCIgc3R5bGU9XCJmaWxsOiMyNjAwM2RcIi8+PC9nPjxnIHN0eWxlPVwib3BhY2l0eTowLjc1XCI+PHBhdGggZD1cIk0xNy4zODUsOS45MjFDMjAuMzY5LDE0LDI0LjMxOSwxMy43LDI1LDE5LjY0MWMuMDk0LDYuOTIzLTMuNiw5LjI4My02LjIzNyw5Ljk0OC00LjUsMS4yNzktOC41MTQtLjY0NS0xMC4wOTQtNS0zLjAzNS03LDIuNjUxLTE4LjUxNCw2LjMxLTIwLjkxNWExNS4wODMsMTUuMDgzLDAsMCwwLDIuMzcsNi4yMzdaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PC9nPmAsXG5cdFwiRWxtXCI6IGA8cGF0aCBkPVwiTTE2LDE2Ljc2OCwyLjc2OCwzMEgyOS4yMzJaXCIgc3R5bGU9XCJmaWxsOiM1ZmI0Y2JcIi8+PHBhdGggZD1cIk0yNC4xMywyMy4zNjIsMzAsMjkuMjMyVjE3LjQ5MlpcIiBzdHlsZT1cImZpbGw6I2VlYTQwMFwiLz48cGF0aCBkPVwiTTE1LjIzMiwxNiwyLDIuNzY4VjI5LjIzMlpcIiBzdHlsZT1cImZpbGw6IzU5NjI3N1wiLz48cGF0aCBkPVwiTTMwLDE0LjQ0OFYySDE3LjU1MlpcIiBzdHlsZT1cImZpbGw6IzVmYjRjYlwiLz48cGF0aCBkPVwiTTIzLjM5Miw5LjM3Nmw2LjU5NCw2LjU5NC02LjYyNCw2LjYyNEwxNi43NjgsMTZaTTIuNzY4LDIsOC44NjMsOC4xSDIyLjExMUwxNi4wMTYsMlpcIiBzdHlsZT1cImZpbGw6IzhjZDYzNlwiLz48cGF0aCBkPVwiTTE2LDE1LjIzMmw2LjA1MS02LjA1MUg5Ljk0OVpcIiBzdHlsZT1cImZpbGw6I2VlYTQwMFwiLz5gLFxuXHRcIkVSQlwiOiBgPHBhdGggZD1cIk03LjI1LDI0Ljc1aDE3LjVMMTIuNSwxMi41LDcuMjUsMTcuNzVaTTIsMzBIMzBWMkgxNkwyLDE2Wm0yNS4zNzUtMi42MjVINC42MjV2LTEwLjVsMTIuMjUtMTIuMjVoMTAuNVpcIiBzdHlsZT1cImZpbGw6IzkyMWExZVwiLz5gLFxuXHRcIkVybGFuZ1wiOiBgPHBhdGggZD1cIk02LjM4OCwyMy44NjdhMTEuMDEyLDExLjAxMiwwLDAsMS0zLjQ0MS04LjIzNCwxMC43NjUsMTAuNzY1LDAsMCwxLDIuODY0LTcuNUgydjE1LjczWm0yMC4wNjYsMGExNi40NCwxNi40NCwwLDAsMCwyLjUzNy0zLjEzNmwtNC4yMTgtMS44NzNhOC4zMDYsOC4zMDYsMCwwLDEtNi42NDEsNC4xMmMtNC4zNTktLjAxNC02LjA3Mi0zLjMyOS02LjA2My03LjU4NEgyOC4zNmE2LjQ2NSw2LjQ2NSwwLDAsMCwwLS45MzUsOS4wNTcsOS4wNTcsMCwwLDAtMi4wMjktNi4zMjZIMzB2MTUuNzNIMjYuNDU2Wk0xMi4zMzIsMTEuNzQyYTMuNzIzLDMuNzIzLDAsMCwxLDMuOS0zLjIzLDMuMjksMy4yOSwwLDAsMSwzLjUzMiwzLjIzWlwiIHN0eWxlPVwiZmlsbDojYTIwMDNlXCIvPmAsXG5cdFwiRiNcIjogYDxwYXRoIGQ9XCJNMiwxNiwxNS4yODgsMi43MTJWOS4zNTZMOC42NDQsMTZsNi42NDQsNi42NDR2Ni42NDRaXCIgc3R5bGU9XCJmaWxsOiMzNzhiYmFcIi8+PHBhdGggZD1cIk0xMC41NDIsMTZsNC43NDYtNC43NDZ2OS40OTJaXCIgc3R5bGU9XCJmaWxsOiMzNzhiYmFcIi8+PHBhdGggZD1cIk0zMCwxNiwxNi4yMzcsMi43MTJWOS4zNTZMMjIuODgxLDE2bC02LjY0NCw2LjY0NHY2LjY0NFpcIiBzdHlsZT1cImZpbGw6IzMwYjlkYlwiLz5gLFxuXHRcIkZpcmVzdG9yZSBzZWN1cml0eSBydWxlc1wiOiBgPHBhdGggZD1cIk01LjgsMjQuNmwuMTctLjIzN0wxMy45OSw5LjE0OWwuMDE3LS4xNjEtMy41MzUtNi42NGEuNjU2LjY1NiwwLDAsMC0xLjIyNy4yMDdaXCIgc3R5bGU9XCJmaWxsOiNmZmMyNGFcIi8+PHBhdGggZD1cIk01LjksMjQuNDJsLjEyOC0uMjVMMTMuOTY1LDkuMTE0LDEwLjQzOSwyLjQ0OGEuNi42LDAsMCwwLTEuMTMzLjIwNlpcIiBzdHlsZT1cImZpbGw6I2ZmYTcxMlwiLz48cGF0aCBkPVwiTTE2LjU4NCwxNC4wMWwyLjYzMi0yLjdMMTYuNTgzLDYuMjg5YS42NzguNjc4LDAsMCwwLTEuMTk1LDBMMTMuOTgxLDguOTcxVjkuMlpcIiBzdHlsZT1cImZpbGw6I2Y0YmQ2MlwiLz48cGF0aCBkPVwiTTE2LjUzNywxMy45LDE5LjEsMTEuMjgsMTYuNTM3LDYuNGEuNTg5LjU4OSwwLDAsMC0xLjA3NC0uMDQ3TDE0LjA0OSw5LjA4MmwtLjA0Mi4xMzlaXCIgc3R5bGU9XCJmaWxsOiNmZmE1MGVcIi8+PHBvbHlnb24gcG9pbnRzPVwiNS44MDIgMjQuNjAxIDUuODc5IDI0LjUyMyA2LjE1OCAyNC40MSAxNi40MTggMTQuMTg4IDE2LjU0OCAxMy44MzQgMTMuOTg5IDguOTU2IDUuODAyIDI0LjYwMVwiIHN0eWxlPVwiZmlsbDojZjY4MjBjXCIvPjxwYXRoIGQ9XCJNMTYuOTEyLDI5Ljc1NiwyNi4yLDI0LjU3NywyMy41NDYsOC4yNDZBLjYzNS42MzUsMCwwLDAsMjIuNDcxLDcuOUw1LjgsMjQuNmw5LjIzMyw1LjE1NWExLjkyNywxLjkyNywwLDAsMCwxLjg3OCwwXCIgc3R5bGU9XCJmaWxsOiNmZGUwNjhcIi8+PHBhdGggZD1cIk0yNi4xMTUsMjQuNTM0LDIzLjQ4Myw4LjMyNmEuNTU3LjU1NywwLDAsMC0uOTY3LS4zNTNMNS45LDI0LjU2OWw5LjEzMSw1LjFhMS45MTIsMS45MTIsMCwwLDAsMS44NjMsMFpcIiBzdHlsZT1cImZpbGw6I2ZjY2EzZlwiLz48cGF0aCBkPVwiTTE2LjkxMiwyOS42YTEuOTI3LDEuOTI3LDAsMCwxLTEuODc4LDBMNS44NzYsMjQuNTIyLDUuOCwyNC42bDkuMjMzLDUuMTU1YTEuOTI3LDEuOTI3LDAsMCwwLDEuODc4LDBMMjYuMiwyNC41NzdsLS4wMjMtLjE0WlwiIHN0eWxlPVwiZmlsbDojZWVhYjM3XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIzLjIwMSAxMyAxNS40MDUgMTYuNTM0IDE1LjQwNSAyNy42MDMgMjEuNjI1IDI0Ljc4NSAyMS42MjUgMzEgMzEgMjYuNzQzIDMxIDE2LjUzNCAyMy4yMDEgMTNcIiBzdHlsZT1cImZpbGw6IzI1MjUyNVwiLz48cG9seWdvbiBwb2ludHM9XCIyMy4yMDEgMTQuNzMgMTYuOTg1IDE3LjU0OSAxNi45ODUgMjAuMzI3IDIzLjIwMSAxNy41MDcgMjkuNDIxIDIwLjMyNyAyOS40MjEgMTcuNTQ5IDIzLjIwMSAxNC43M1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIzLjIwMSAxOS41NjQgMTYuOTg1IDIyLjM4MSAxNi45ODUgMjUuMTU4IDIzLjIwMSAyMi4zMzcgMjkuNDIxIDI1LjE1OCAyOS40MjEgMjIuMzgxIDIzLjIwMSAxOS41NjRcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cG9seWdvbiBwb2ludHM9XCIyOC42MDYgMjYuMDk4IDI1LjU1MSAyNC43MTIgMjMuMjAxIDI1Ljc3OCAyMy4yMDEgMjguNTQ4IDI4LjYwNiAyNi4wOThcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIkZsb3dcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIi02Ny45MDdcIiB5MT1cIi0zMDguNTUxXCIgeDI9XCItNjcuODU3XCIgeTI9XCItMzA4LjU2NFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDg3LjgyMiwgMCwgMCwgLTg4LjUzMywgNTk4NC41MzIsIC0yNzI5MC42MTcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZkNDQxXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2ZmYjA0N1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi02Ny42NzRcIiB5MT1cIi0zMTAuMTIxXCIgeDI9XCItNjcuNjQ3XCIgeTI9XCItMzEwLjA2M1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDg3LjgyMiwgMCwgMCwgLTg4LjUzMywgNTk2NC42NjcsIC0yNzQ0MylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmQ3NTRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZiNTMyXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiLTY3LjAyOVwiIHkxPVwiLTMxMC45MVwiIHgyPVwiLTY3LjAyOVwiIHkyPVwiLTMxMC44NlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDg3LjgyMiwgMCwgMCwgLTg4LjUzMywgNTkwMi44LCAtMjc1MTguNzMzKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZDY0MlwiLz48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmQ0NDFcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZiNTMyXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiLTY2LjI1MlwiIHkxPVwiLTMxMC4zNzdcIiB4Mj1cIi02Ni4zMlwiIHkyPVwiLTMxMC4zNjJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxMDYuMTk4LCAwLCAwLCAtODguNTUxLCA3MDQ4LjQyOCwgLTI3NDc0LjE2NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmQ0NDFcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZhODI5XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfZmxvdzwvdGl0bGU+PHBhdGggZD1cIk0yMy40MjYsMjkuNDFWMjIuMTcyaC03LjE4bDcuMTgsNy4yMzhcIiBzdHlsZT1cImZpbGw6I2ZmZGY1MTtmaWxsLW9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzFcIi8+PHBhdGggZD1cIk0yNC4yMzEsMjUuMzA2VjE3LjQ3N0gxNi40NjZsNy43NjYsNy44MjlcIiBzdHlsZT1cImZpbGw6I2ZmODkwMDtmaWxsLW9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzFcIi8+PHBhdGggZD1cIk0xOS41MTUsMjIuMTcxVjMwaDcuNzY2bC03Ljc2Ni03LjgyOVwiIHN0eWxlPVwiZmlsbC1vcGFjaXR5OjAuNjk5OTk5OTg4MDc5MDcxO2ZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTIyLjYwOCwxOFYxMS44MDlIMTYuNDY2TDIyLjYwOCwxOFwiIHN0eWxlPVwiZmlsbDojZmZkZjRmO2ZpbGwtb3BhY2l0eTowLjY5OTk5OTk4ODA3OTA3MVwiLz48cGF0aCBkPVwiTTI1LjUyNCwxNi41MjVWOC43SDE3Ljc1OWw3Ljc2Niw3LjgyOVwiIHN0eWxlPVwiZmlsbC1vcGFjaXR5OjAuNzk5OTk5OTUyMzE2Mjg0O2ZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTEyLjI4OCwyVjkuODI5aDcuNzY2TDEyLjI4OCwyXCIgc3R5bGU9XCJmaWxsLW9wYWNpdHk6MC44MDAwMDAwMTE5MjA5Mjk7ZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNMTQuMTEsMTQuMjYyVjYuNDMzSDQuNzE5bDcuNzMyLDcuODMsMS42NTksMFwiIHN0eWxlPVwiZmlsbC1vcGFjaXR5OjAuODc5OTk5OTk1MjMxNjI4O2ZpbGw6dXJsKCNkKVwiLz48cGF0aCBkPVwiTTE0LjExLDI5Ljk1OFYyMC40ODdINC43MTlsOS4zOTEsOS40NzFcIiBzdHlsZT1cImZpbGw6I2ZmYjcwMDtmaWxsLW9wYWNpdHk6MC42OTk5OTk5ODgwNzkwNzFcIi8+PHBhdGggZD1cIk0xNC4xMTIsMjIuMTE0VjE0LjI4NUg2LjM0Nmw3Ljc2Niw3LjgyOVwiIHN0eWxlPVwiZmlsbDojZmZiNzAwO2ZpbGwtb3BhY2l0eTowLjVcIi8+PHBhdGggZD1cIk0xNi40NjUsMTEuODA5djcuODI5aDcuNzY2bC03Ljc2Ni03LjgyOVwiIHN0eWxlPVwiZmlsbDojZmZjZDI1O2ZpbGwtb3BhY2l0eTowLjY5OTk5OTk4ODA3OTA3MVwiLz48cGF0aCBkPVwiTTE0LjA5MiwxMi42OTFWNC44NjJINi4zMjZsNy43NjYsNy44MjlcIiBzdHlsZT1cImZpbGw6I2ZmODkwMDtmaWxsLW9wYWNpdHk6MC43MDAwMDAwNDc2ODM3MTZcIi8+PHBhdGggZD1cIk0xNi4yNDYsMjIuMTcxVjMwaDcuNzY2bC03Ljc2Ni03LjgyOVwiIHN0eWxlPVwiZmlsbDojZmY4OTAwO2ZpbGwtb3BhY2l0eTowLjY5OTk5OTk4ODA3OTA3MVwiLz48cG9seWdvbiBwb2ludHM9XCIyMS4xMjIgMjIuMTcyIDE4LjYwOSAxOS42MzggMTYuNDY1IDE5LjYzOCAxNi40NjYgMTEuODA5IDIwLjg0NyAxMS44MDkgMTguODgyIDkuODI5IDE0LjA5MiA5LjgyOSAxNC4xMSAxNC4yNjIgMTQuMTEgMjAuNDg3IDE0LjExIDMwIDE2LjI0NiAzMCAxNi4yNDYgMjIuMTcyIDIxLjEyMiAyMi4xNzJcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIkZvcnRyYW5cIjogYDxnIGlkPVwiZzM3NjhcIj48cmVjdCBpZD1cInJlY3Q4ODFcIiB4PVwiMi4zNFwiIHk9XCIyLjM0XCIgd2lkdGg9XCIyNy4zM1wiIGhlaWdodD1cIjI3LjMzXCIgcng9XCI1LjA4XCIgc3R5bGU9XCJmaWxsOiM3MzRmOTZcIi8+PHBhdGggaWQ9XCJwYXRoMTQxMlwiIGQ9XCJNNi4wNiwyNS41YzAtMS4wOSwwLTEuMTkuMS0xLjE5bDEuMjUtLjA2YzEsMCwxLjE4LS4wNiwxLjQyLS4xOWEuNzQuNzQsMCwwLDAsLjM5LS4zN2MuMTItLjIzLjEyLS4yOS4xMi03LjcyLDAtNywwLTcuNS0uMS03LjY3YTEuMDYsMS4wNiwwLDAsMC0uNjMtLjUsMTAuMjMsMTAuMjMsMCwwLDAtMS4zOC0uMWwtMS4xNywwVjUuMzJIMjUuOTR2OC44MkgyNC44OWE4LjU2LDguNTYsMCwwLDEtMS4yLS4wNWMtLjE0LDAtLjE1LS4wNS0uMjItLjk1YTEyLjczLDEyLjczLDAsMCwwLS4zNS0yLjQzLDMuMjIsMy4yMiwwLDAsMC0yLjYzLTIuODFjLS41Ny0uMS0zLjEtLjItNS4xOS0uMkgxMy44N3Y2LjYzbC43NSwwQTYuMzMsNi4zMywwLDAsMCwxNi40OSwxNGExLjg4LDEuODgsMCwwLDAsLjg5LS45MSw1Ljg2LDUuODYsMCwwLDAsLjM5LTEuNzVjMC0uMzMuMDgtLjY2LjEtLjczczAtLjEzLDEuMTgtLjEzSDIwLjJWMjEuMDZIMTcuODVsMC0uNjFhNy44NSw3Ljg1LDAsMCwwLS41NC0yLjY2Yy0uMzYtLjY4LTEuMDUtMS0yLjQ1LTEuMDhsLS43Ni0uMDctLjIsMCwwLDMuMzRjMCwzLjUxLDAsMy42NS4zLDMuOTRzLjQzLjMyLDMuMjIuNDJjLjA1LDAsLjA3LjI4LjA3LDEuMTl2MS4xOEg2LjA2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjwvZz5gLFxuXHRcIkZyZWVNYXJrZXIgVGVtcGxhdGUgTGFuZ3VhZ2VcIjogYDxwYXRoIGQ9XCJNMjQuMDIzLDIwLjksMjUuNDA4LDIzbDQuNjE1LTdMMjUuNDA4LDlsLTEuMzg1LDIuMUwyNy4yNTUsMTZaXCIgc3R5bGU9XCJmaWxsOiMwMDUwYjJcIi8+PHBhdGggZD1cIk03Ljk3NywxMS4xLDYuNTkyLDksMS45NzcsMTZsNC42MTUsNywxLjM4NS0yLjFMNC43NDUsMTZaXCIgc3R5bGU9XCJmaWxsOiMwMDUwYjJcIi8+PHBhdGggZD1cIk0xMy4wMzUsOWgyLjhsLS40OTQsMi44aDIuOEwxOC42MzUsOWgyLjhsLS40OTQsMi44aDIuOGwtLjQ5NSwyLjhoLTIuOGwtLjQ5MywyLjhoMi44bC0uNDk0LDIuOGgtMi44TDE4Ljk2NywyM2gtMi44bC40OTMtMi44LTIuOCwwTDEzLjM3NSwyM0gxMC41NjdsLjQ5My0yLjgtMi44LDAsLjQ5NC0yLjhoMi44bC40OTMtMi43OTNoLTIuOEw5Ljc0MSwxMS44aDIuOFptMS4zMTksOC40aDIuOGwuNDk0LTIuOGgtMi44WlwiIHN0eWxlPVwiZmlsbDojMDA1MGIyXCIvPmAsXG5cdFwiR2FtZU1ha2VyIExhbmd1YWdlXCI6IGA8cGF0aCBkPVwiTTE0LjIxNiwyNC4xNjdoLS45ODlhMy4yNCwzLjI0LDAsMCwxLTIuODExLTEuNjQ5TDYuNjY3LDE2bDQuNjgxLTguMTY3SDE2LjJsLTQuMzQsOC4xNzYuMDU3LjAzMkwxMy45MzYsMTkuNUgxNi44MlpNOC40NTUsMTAuNTM1bC0xLjI3LTIuMjFhMSwxLDAsMCwwLS44NTktLjQ5MkgybDQsNi45OTJaTTIxLjU0LDkuNDgyYTMuMjM5LDMuMjM5LDAsMCwwLTIuODEyLTEuNjQ5SDE3LjUyM0wxNS4wNDUsMTIuNUgxOC4wMkwyMC4wODMsMTZsLTQuNTMxLDguMTY3aDUuMDU2TDI1LjMzMywxNlpNMjYsMTcuMTcybC0yLjQ3LDQuMjcsMS4yODMsMi4yMzNhMSwxLDAsMCwwLC44NTkuNDkySDMwWlwiIHN0eWxlPVwiZmlsbDojOGJjMzRhXCIvPmAsXG5cdFwiRy1jb2RlXCI6IGA8cGF0aCBkPVwiTTE3LjMzMywxNi4zNTZoMEwxNy4zMDksMjAuOGwtMi4xLTEuMDE4LjAyMy00LjQzN2gwbDEwLjU1OC0zLjAzOCwyLjEwNiwxLjAxM1pcIiBzdHlsZT1cImZpbGw6IzhlMDAwMFwiLz48cGF0aCBkPVwiTTI0LjQ5MiwxOC41NzZhMTQuOTA5LDE0LjkwOSwwLDAsMS0xLjM0MywzLjA3NCw3Ljg2LDcuODYsMCwwLDEtMS4zOSwxLjgyOSw2LjgsNi44LDAsMCwxLTEuNywxLjMyNCw3LjQwNSw3LjQwNSwwLDAsMS0yLjAwNi44NTUsNiw2LDAsMCwxLTMuMDcyLjIzQTQuNjY4LDQuNjY4LDAsMCwxLDEyLjQ0LDI0LjY0YTUuMzIyLDUuMzIyLDAsMCwxLS42MzYtLjYyOWwtLjUwOC0uMjQ0YTQuNzE3LDQuNzE3LDAsMCwwLC40NTcuMTgxLDUuNTIsNS41MiwwLDAsMS0xLjAxNS0xLjc1OCw4LjEzNSw4LjEzNSwwLDAsMS0uNDMtMS41MzNjLS4wMjMtLjEzMS0uMDQzLS4yMzktLjA2MS0uMzRhNy4yOTIsNy4yOTIsMCwwLDAsLjM3NywxLjM1NCw1LjgzNiw1LjgzNiwwLDAsMCwxLjYxNCwyLjMxOWMuMDYuMDU0LjEyNy4xLjE5LjE0OC4wNC4wMDguMDc4LjAyMi4xMTkuMDI5YTYuNDU0LDYuNDU0LDAsMCwwLDIuOTI4LS4yMTksOC40LDguNCwwLDAsMCwxLjkxLS44MDcsNy42NTgsNy42NTgsMCwwLDAsMS41ODktMS4yMjcsOC42NjIsOC42NjIsMCwwLDAsMS4yOS0xLjY5LDEyLjY2NywxMi42NjcsMCwwLDAsMS4wMTktMi4xOTRMMjMuMywxOWMuMDU2LS4xNTMuMDkxLS4yNTQuMDkxLS4yNTRaXCIgc3R5bGU9XCJmaWxsOiM4ZTAwMDBcIi8+PHBhdGggZD1cIk0yNC41MjQsNC4wMTNhMTEuNiwxMS42LDAsMCwwLTYuNTg4LTEuOTk0LDEzLjgsMTMuOCwwLDAsMC05LjM3Myw0Ljg0QTE4LjI0MywxOC4yNDMsMCwwLDAsNCwxOC44Yy4wMjEsMy44NTEsMS40ODEsNy44MDYsNS4xMTIsOS41NzVhMTMuNTYzLDEzLjU2MywwLDAsMCw0LjE1OSwxLjU2NCwxMi4xMTQsMTIuMTE0LDAsMCwwLDYuODY5LTEuNTI5Yy0yLjczNCwxLjMzMy02LjEyLDEuOTkzLTguODk0LjQtMi42ODktMS41NDMtMy45ODMtNC43MjQtNC4yMjEtNy43LS41MTItNi40LDMuMS0xMy42NCw5LjEzMi0xNi4yODEsMy41MTItMS41MzcsNy4zMDctMS41ODUsMTAuMjM5LDEuMUMyNi43MjcsNS4yNDQsMjUsNC4zMDUsMjQuNTI0LDQuMDEzWm0tMTQuMzU5LDI0LjgtLjEzOC0uMDkzWlwiIHN0eWxlPVwiZmlsbDojOGUwMDAwXCIvPjxwYXRoIGQ9XCJNMjIuNTI5LDI2Ljc4OGMtMy4wNDQsMi41ODItNy45Miw0LjE0OS0xMS41NTQsMS44NTdDNy4yNCwyNi4yODksNi41MywyMS4wODksNy4yMTIsMTcuMDgzYTE3LjIxOCwxNy4yMTgsMCwwLDEsNi43LTEwLjk3YzMuNzcxLTIuNjM2LDguODgtMy40OSwxMi40ODktLjE4MmwtMi4yNywzLjI5MWMtMi41MS0yLjM1NS02LjMtMS45NTYtOC45NDUtLjA1MkExMi40MzQsMTIuNDM0LDAsMCwwLDEwLjUsMTYuMmMtLjY2MiwyLjYyMy0uNSw2LjAxMSwxLjUsOC4wNDcsMi4wODgsMi4xMjksNS4xMTIsMi4xMTYsNy42NTYuOEExMC4zMzQsMTAuMzM0LDAsMCwwLDI0LjUsMTguNjM2TDE3LjMwNywyMC44bC4wMjItNC40MzhMMjcuODksMTMuMzE5bC4xLjgwNmgwQTE2LjYyNSwxNi42MjUsMCwwLDEsMjIuNTI5LDI2Ljc4OFpcIiBzdHlsZT1cImZpbGw6I2JhMDAwMFwiLz5gLFxuXHRcIkdEU2NyaXB0XCI6IGA8cGF0aCBkPVwiTTI4LjE2NiwyMS4wMjl2MS42NTJhLjM3NC4zNzQsMCwwLDEtLjI2LjM1N2wtMi42Ljg0MWEuMzY3LjM2NywwLDAsMS0uMzM1LS4wNTQuMzc0LjM3NCwwLDAsMS0uMTU1LS4zdi0xLjhsLTIuNDM4LjQ2NFYyNC4wMmEuMzc1LjM3NSwwLDAsMS0uMzI1LjM3MWwtMy41MjUuNDgzYy0uMDE2LDAtLjAzNCwwLS4wNTEsMEEuMzc0LjM3NCwwLDAsMSwxOC4xLDI0LjVWMjIuNTU3bC0xLjgxOS4wMDhoLS4yNjdsLTEuODE5LS4wMDhWMjQuNWEuMzc1LjM3NSwwLDAsMS0uMzc1LjM3NmMtLjAxNywwLS4wMzQsMC0uMDUyLDBsLTMuNTI1LS40ODNhLjM3NS4zNzUsMCwwLDEtLjMyNC0uMzcxVjIyLjE4NGwtMi40MzktLjQ2NHYxLjhhLjM3NC4zNzQsMCwwLDEtLjE1NC4zLjM3LjM3LDAsMCwxLS4zMzYuMDU0bC0yLjYtLjg0MWEuMzc0LjM3NCwwLDAsMS0uMjU5LS4zNTdWMjEuMDI5bC0xLjYwOC0uNTQxYTQuNTU4LDQuNTU4LDAsMCwwLS4xMjQsMS4wNGMwLDQuMzE3LDYuMDgyLDcuNjUsMTMuNiw3LjY3NGguMDE5YzcuNTE3LS4wMjQsMTMuNi0zLjM1NiwxMy42LTcuNjc0YTQuNTQsNC41NCwwLDAsMC0uMS0uOTVaXCIgZmlsbD1cIiM0NzhjYmZcIi8+PHBhdGggZD1cIk0zLjcxMSwxMy4zNzNWMjAuMWwuOTA3LjMwNmEuMzc0LjM3NCwwLDAsMSwuMjU2LjM1NXYxLjY1bDEuODU1LjZWMjEuMjY3YS4zNzYuMzc2LDAsMCwxLC40NDUtLjM2OWwzLjE4OS42MDlhLjM3NC4zNzQsMCwwLDEsLjMwNS4zNjh2MS44MThsMi43NzUuMzc5di0xLjg5YS4zNzQuMzc0LDAsMCwxLC4zNzYtLjM3NWgwbDIuMzI3LjAwOSwyLjMyNi0uMDA5YS4zNzQuMzc0LDAsMCwxLC4zNzcuMzc1djEuODlsMi43NzUtLjM3OVYyMS44NzRhLjM3My4zNzMsMCwwLDEsLjMtLjM2OGwzLjE4OS0uNjA5YS4zNzcuMzc3LDAsMCwxLC40NDYuMzY5djEuNzQxbDEuODU1LS42VjIwLjc2YS4zNzQuMzc0LDAsMCwxLC4yNTUtLjM1NWwuNjE4LS4yMDhWMTMuMzczaC4wMTdBMjYuNzkyLDI2Ljc5MiwwLDAsMCwzMCwxMC45MzFhMTkuMDIsMTkuMDIsMCwwLDAtMi41MDktMy4yODhBMjQuNTA3LDI0LjUwNywwLDAsMCwyNSw5LjA5MWExMy4wMSwxMy4wMSwwLDAsMC0xLjI3OS0xLjA1MiwxNS4zNjUsMTUuMzY1LDAsMCwwLTEuMzc1LS44OTQsMjguMzUzLDI4LjM1MywwLDAsMCwuMjMyLTMuMDcxQTE1Ljk2OCwxNS45NjgsMCwwLDAsMTguODQ3LDIuOGEyNi40NCwyNi40NCwwLDAsMC0xLjM4NSwyLjcsOS40Niw5LjQ2LDAsMCwwLTEuNDUzLS4xMTZoLS4wMThhOS40NTcsOS40NTcsMCwwLDAtMS40NTQuMTE2LDI2LjI3NSwyNi4yNzUsMCwwLDAtMS4zODUtMi43QTE1Ljk2MSwxNS45NjEsMCwwLDAsOS40MjIsNC4wNzVhMjguMTQyLDI4LjE0MiwwLDAsMCwuMjMyLDMuMDcxLDE1LjMxMiwxNS4zMTIsMCwwLDAtMS4zNzYuODk0QTEzLjA2LDEzLjA2LDAsMCwwLDcsOS4wOTFhMjQuNTUzLDI0LjU1MywwLDAsMC0yLjQ5LTEuNDQ4QTE5LjAyLDE5LjAyLDAsMCwwLDIsMTAuOTMxYTI2Ljc5MiwyNi43OTIsMCwwLDAsMS42OTQsMi40NDNaXCIgZmlsbD1cIiM0NzhjYmZcIi8+PHBhdGggZD1cIm0xMi40NjIgMTYuNmEyLjczOSAyLjczOSAwIDEgMS0yLjc0LTIuNzM4IDIuNzM5IDIuNzM5IDAgMCAxIDIuNzQgMi43MzhcIiBmaWxsPVwiI2ZmZlwiLz48cGF0aCBkPVwibTExLjggMTYuNzY0YTEuODE5IDEuODE5IDAgMSAxLTEuODE5LTEuODE5IDEuODE3IDEuODE3IDAgMCAxIDEuODE5IDEuODE5XCIgZmlsbD1cIiM0MTQwNDJcIi8+PHBhdGggZD1cIk0xNi4xNjYsMTkuNTlhLjg0NC44NDQsMCwwLDEtLjg4Mi0uOFYxNi4yNjdhLjg4Ni44ODYsMCwwLDEsMS43NjQsMHYyLjUyMmEuODQ1Ljg0NSwwLDAsMS0uODgzLjhcIiBmaWxsPVwiI2ZmZlwiLz48cGF0aCBkPVwibTE5Ljg3MSAxNi42YTIuNzM5IDIuNzM5IDAgMSAwIDIuNzQtMi43MzggMi43MzkgMi43MzkgMCAwIDAtMi43NCAyLjczOFwiIGZpbGw9XCIjZmZmXCIvPjxwYXRoIGQ9XCJtMjAuNTMxIDE2Ljc2NGExLjgxOCAxLjgxOCAwIDEgMCAxLjgxNy0xLjgxOSAxLjgxNyAxLjgxNyAwIDAgMC0xLjgxNyAxLjgxOVwiIGZpbGw9XCIjNDE0MDQyXCIvPmAsXG5cdFwiR2l0XCI6IGA8cGF0aCBkPVwiTTI5LjQ3MiwxNC43NTMsMTcuMjQ3LDIuNTI4YTEuOCwxLjgsMCwwLDAtMi41NSwwTDEyLjE1OCw1LjA2N2wzLjIyLDMuMjJhMi4xNDEsMi4xNDEsMCwwLDEsMi43MTIsMi43M2wzLjEsMy4xYTIuMTQzLDIuMTQzLDAsMSwxLTEuMjg1LDEuMjFsLTIuODk1LTIuODk1djcuNjE3YTIuMTQxLDIuMTQxLDAsMSwxLTEuNzY0LS4wNjJWMTIuM2EyLjE0NiwyLjE0NiwwLDAsMS0xLjE2NS0yLjgxNEwxMC45MTEsNi4zMTQsMi41MjgsMTQuN2ExLjgsMS44LDAsMCwwLDAsMi41NTFMMTQuNzUzLDI5LjQ3MmExLjgsMS44LDAsMCwwLDIuNTUsMEwyOS40NzIsMTcuM2ExLjgsMS44LDAsMCwwLDAtMi41NTFcIiBzdHlsZT1cImZpbGw6I2RkNGMzNVwiLz48cGF0aCBkPVwiTTEyLjE1OCw1LjA2N2wzLjIyLDMuMjJhMi4xNDEsMi4xNDEsMCwwLDEsMi43MTIsMi43M2wzLjEsMy4xYTIuMTQzLDIuMTQzLDAsMSwxLTEuMjg1LDEuMjFsLTIuODk1LTIuODk1djcuNjE3YTIuMTQxLDIuMTQxLDAsMSwxLTEuNzY0LS4wNjJWMTIuM2EyLjE0NiwyLjE0NiwwLDAsMS0xLjE2NS0yLjgxNEwxMC45MTEsNi4zMTRcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIkdMU0xcIjogYDxwYXRoIGQ9XCJNNy43NzksMTguOTIzQTIuMzMzLDIuMzMzLDAsMCwxLDUuNCwxNy4xNmMuMzA2LDEuNDYyLDEuOTYxLDIuODkyLDcuMTgzLDMuNTI5YTE0LjIyOCwxNC4yMjgsMCwwLDAsOS4yMzItMS42MTJzLjczMy0uMzIyLjI5My4xNzZjMCwwLTMuMTA3LDIuODczLTkuMiwyLjlTMS45NywxOS4xMDcsMiwxNmMtLjAyOS0zLjEwNyw0LjgwNi02LjE4NSwxMC45LTYuMTU1czkuMiwyLjksOS4yLDIuOWMuNDQuNS0uMjkzLjE3Ni0uMjkzLjE3Ni0xLjA4NC0uNy00LjI4Ni0yLjA4OS05LjIzMi0xLjYxMi00Ljg2Ni40NjktNi40NTMsMi4xMjItNi45ODEsMy4yMzVhMy4yNTQsMy4yNTQsMCwwLDAtLjMxOCwxLjI0LDIuNDI0LDIuNDI0LDAsMCwxLDIuNS0yLjMxNkEyLjUwNywyLjUwNywwLDAsMSwxMC4zLDE2LjE5NSwyLjUwNiwyLjUwNiwwLDAsMSw3Ljc3OSwxOC45MlptMTkuNjQ3LTEuMDc0SDMwdi45MzdIMjYuMzQ0VjEzLjYwOWgxLjA4MnY0LjI0Wk0yMy40NTQsMTZoMi4xNjN2Mi43OTFIMjQuOWwtLjEwOC0uNjQ5YTEuOSwxLjksMCwwLDEtMS42MTQuNzg2LDIuNDE0LDIuNDE0LDAsMCwxLTIuMzc5LTIuNzExLDIuNDg1LDIuNDg1LDAsMCwxLDIuNTMxLTIuNzRBMi4wNTMsMi4wNTMsMCwwLDEsMjUuNiwxNS4yMTdIMjQuNTE1YTEuMTM2LDEuMTM2LDAsMCwwLTEuMTMyLS44NTFjLS43NzEsMC0xLjQ4NS41MzQtMS40ODUsMS44NiwwLDEuNDEzLjc3MSwxLjc4MSwxLjUwNiwxLjc4MWExLjI4LDEuMjgsMCwwLDAsMS4yNTQtMS4xMzloLTEuMlYxNlpNNy43ODEsMTQuMWExLjg2LDEuODYsMCwwLDAtMS44LDIuMTA1LDEuODYsMS44NiwwLDAsMCwxLjgsMi4xMDUsMS44NiwxLjg2LDAsMCwwLDEuOC0yLjEwNUExLjg2LDEuODYsMCwwLDAsNy43ODEsMTQuMVptMi45MTEsMS4zODNoLjUyNXYuNDY4aC4wMTNhMS4xMiwxLjEyLDAsMCwxLC45ODctLjU2MywxLjU2NSwxLjU2NSwwLDAsMSwxLjUwNiwxLjY3NywxLjY3NSwxLjY3NSwwLDAsMS0xLjU4MywxLjgyNCwxLDEsMCwwLDEtLjg4LS40NDNoLS4wMTNWMjAuMWgtLjU1N1YxNS40NzlaTTEyLjEsMTguNGMuNjA4LDAsMS4wMTktLjUyNywxLjAxOS0xLjI1NCwwLS40MjQtLjE3MS0xLjI2NC0xLjAzMi0xLjI2NC0uOCwwLS44OTMuODY3LS44OTMsMS40MDYsMCwuODguNTUxLDEuMTE0LjkwNSwxLjExNFptNS0uNjUyYTEuMzc4LDEuMzc4LDAsMCwxLTEuNDg4LDEuMTMzLDEuNDg3LDEuNDg3LDAsMCwxLTEuNDgyLTEuNjU4YzAtMS4wMjUuNDk0LTEuODQyLDEuNTg4LTEuODQyLjk1NiwwLDEuNDI0Ljc2LDEuNDI0LDEuOTMxSDE0LjcyMWMwLC42OS4zMjMsMS4wODkuOTYyLDEuMDg5YS44NDEuODQxLDAsMCwwLC44NTQtLjY1MkgxNy4xWm0tLjU5LS44OGMtLjAzMi0uNTEzLS4yNDctLjk4Ny0uOTI0LS45ODdhLjk3Mi45NzIsMCwwLDAtLjkxOC45ODdoMS44NDJabTMuNzEzLDEuOTE3aC0uNTU3VjE2Ljc1MWMwLS41NzYtLjE2NS0uODY3LS43MDktLjg2Ny0uMzE3LDAtLjg3NC4yLS44NzQsMS4xdjEuOGgtLjU1N1YxNS40NzloLjUyNXYuNDY4aC4wMTNhMS4yLDEuMiwwLDAsMSwxLS41NjMsMS4wNDYsMS4wNDYsMCwwLDEsMS4xNTgsMS4xNTJ2Mi4yNTNcIiBzdHlsZT1cImZpbGw6IzQzODZiNVwiLz5gLFxuXHRcIkdvIG1vZHVsZVwiOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNTQuNSAyMjVcIj48dGl0bGU+ZmlsZV90eXBlX2dvX3BhY2thZ2U8L3RpdGxlPjxwYXRoIGQ9XCJNNjEuOTQ5LDEzLjA2OGMxNi4wNi0uMTQ3LDMyLjE0MywwLDQ4LjIxMS0uMDYyLTMuODEsMTYuNDA4LTcuNDY2LDMyLjg2Mi0xMS4yNjEsNDkuMjc3SDI1LjU0OGMtMi4zMTksMC00LjYzNy4wNzctNi45NTYtLjA5M0MzMyw0NS43NzUsNDcuNTY2LDI5LjUsNjEuOTQ5LDEzLjA2OFpcIiBzdHlsZT1cImZpbGw6I2YyZTZjOVwiLz48cGF0aCBkPVwiTTE0My41MDksMTMuMDE0aDQ4LjA3MmMxNC40MzcsMTYuNDMxLDI5LjAxMywzMi43MjMsNDMuNDExLDQ5LjE3Ny05LjI3NC4xOTMtMTguNTQ5LDAtMjcuODIzLjA4NUgxNTQuNjU0QzE1MS4wMDYsNDUuODM3LDE0Ny4xMTEsMjkuNDYsMTQzLjUwOSwxMy4wMTRaXCIgc3R5bGU9XCJmaWxsOiNmMmU2YzlcIi8+PHBhdGggZD1cIk0xMTAuMTYsMTMuMDE0aDMzLjM0OWMzLjYsMTYuNDQ2LDcuNDg5LDMyLjgyMywxMS4xNiw0OS4yNTRIOTguOUMxMDIuNjk0LDQ1Ljg2OCwxMDYuMzUsMjkuNDIyLDExMC4xNiwxMy4wMTRaXCIgc3R5bGU9XCJmaWxsOiNlZmM3NWVcIi8+PHBhdGggZD1cIk0xOC41OTIsNjIuMTgzYzIuMzE5LjE3LDQuNjM3LjA4NSw2Ljk1Ni4wOTNIOTguOXEwLDI2LjAyNi4wNTQsNTIuMDUyYTE4Ljg1NywxOC44NTcsMCwwLDAsMS45NzkuMTM5aDUyLjExNGExNC42OTMsMTQuNjkzLDAsMCwwLDEuNTQ2LS4xMDhjLjE0Ny0xNy4zNjYsMC0zNC43MzIuMDctNTIuMWg1Mi41MTZjOS4yNzQtLjA0NiwxOC41NDkuMTA4LDI3LjgyMy0uMDg1VjIxMi42MkgxOC42UTE4LjU5MiwxMzcuNDA1LDE4LjU5Miw2Mi4xODNaXCIgc3R5bGU9XCJmaWxsOiNlN2JmNTVcIi8+PHBhdGggZD1cIk05OC45LDYyLjI5MWg1NS43NjljLS4wNjIsMTcuMzY2LjA4NSwzNC43MzItLjA3LDUyLjEtLjUxOC4wNTQtMS4wMzYuMDkzLTEuNTQ2LjEwOEgxMDAuOTRhMTguODU3LDE4Ljg1NywwLDAsMS0xLjk3MS0uMTMxQzk4Ljg2MSw5Ni45OTMsOTguOTY5LDc5LjYzNCw5OC45LDYyLjI5MVpcIiBzdHlsZT1cImZpbGw6I2RiYjU1MVwiLz48cmVjdCB4PVwiMzQuMzg5XCIgeT1cIjE2My42ODJcIiB3aWR0aD1cIjcyLjQxN1wiIGhlaWdodD1cIjI3Ljg4NVwiIHN0eWxlPVwiZmlsbDojZjJmMmYyXCIvPjxwYXRoIGQ9XCJNNjEuNDIyLDEzNy4wODVjLS4zODgsMC0uNDg3LS4xOTQtLjI5MS0uNDg3bDIuMDQxLTIuNjI1YTEuMzkzLDEuMzkzLDAsMCwxLDEuMDY5LS40ODdoMzQuN2MuMzg4LDAsLjQ4Ny4yOTEuMjkxLjU4NEw5Ny41ODIsMTM2LjZhMS40ODEsMS40ODEsMCwwLDEtLjk3Mi41ODRaXCIgc3R5bGU9XCJmaWxsOiNjZTMyNjJcIi8+PHBhdGggZD1cIk00Ni43NCwxNDYuMDI4Yy0uMzg4LDAtLjQ4Ny0uMTk0LS4yOTEtLjQ4N2wyLjA0MS0yLjYyNWExLjM5MywxLjM5MywwLDAsMSwxLjA2OS0uNDg3SDkzLjg5YS40NDcuNDQ3LDAsMCwxLC40ODcuNTg0bC0uNzc4LDIuMzMzYS44NS44NSwwLDAsMS0uODc1LjU4NFpcIiBzdHlsZT1cImZpbGw6I2NlMzI2MlwiLz48cGF0aCBkPVwiTTcwLjI2NCwxNTQuOTcxYy0uMzg4LDAtLjQ4Ny0uMjkxLS4yOTEtLjU4NGwxLjM1Ny0yLjQzYTEuMjg5LDEuMjg5LDAsMCwxLC45NzItLjU4NEg5MS43NDdjLjM4OCwwLC41ODQuMjkxLjU4NC42ODFsLS4xOTQsMi4zMzNhLjczMS43MzEsMCwwLDEtLjY4MS42ODFaXCIgc3R5bGU9XCJmaWxsOiNjZTMyNjJcIi8+PHBhdGggZD1cIk0xNzEuMTYzLDEzNS4zMzVjLTYuMTI0LDEuNTU2LTEwLjMsMi43MjItMTYuMzMsNC4yOC0xLjQ2Mi4zODgtMS41NTYuNDg3LTIuODE5LS45NzJhMTMuMDExLDEzLjAxMSwwLDAsMC00LjU2OS0zLjY5NGMtNi4xMjQtMy4wMTMtMTIuMDU0LTIuMTM4LTE3LjU5NCwxLjQ2MmEyMC42NzEsMjAuNjcxLDAsMCwwLTkuOTE4LDE4LjQ2OSwxNS4yNDIsMTUuMjQyLDAsMCwwLDEzLjEyMywxNS4yNjFjNi42MS44NzUsMTIuMTUxLTEuNDYyLDE2LjUyNS02LjQxNS44NzUtMS4wNjksMS42NTMtMi4yMzYsMi42MjUtMy42SDEzMy40NDZjLTIuMDQxLDAtMi41MjgtMS4yNjMtMS44NDctMi45MTYsMS4yNjMtMy4wMTMsMy42LTguMDY4LDQuOTU4LTEwLjZhMi42MjUsMi42MjUsMCwwLDEsMi40My0xLjU1NmgzNS4zODRjLS4xOTQsMi42MjUtLjE5NCw1LjI0OS0uNTg0LDcuODc0YTQxLjQ1Niw0MS40NTYsMCwwLDEtNy45NjcsMTkuMDQyYy02Ljk5NSw5LjIzNC0xNi4xMzYsMTQuOTctMjcuNywxNi41MjUtOS41MjYsMS4yNjMtMTguMzc0LS41ODQtMjYuMTQ4LTYuNDE1QTMwLjUzMywzMC41MzMsMCwwLDEsOTkuNjI1LDE2MC41MWMtMS4yNjMtMTAuNiwxLjg0Ny0yMC4xMjIsOC4yNjItMjguNDgxQTQzLjEzNyw0My4xMzcsMCwwLDEsMTM1LjEsMTE1LjIxMmM5LjEzNy0xLjY1MywxNy44ODYtLjU4NCwyNS43Niw0Ljc2M0EzMC40NzEsMzAuNDcxLDAsMCwxLDE3Mi4xNCwxMzMuNjhDMTcyLjcxOSwxMzQuNTU4LDE3Mi4zMywxMzUuMDQ0LDE3MS4xNjMsMTM1LjMzNVpcIiBzdHlsZT1cImZpbGw6I2NlMzI2MlwiLz48cGF0aCBkPVwiTTIwMy4zMzgsMTg5LjA5Yy04Ljg0Ni0uMTk0LTE2LjkxMy0yLjcyMi0yMy43MTktOC41NTRhMzAuNDg1LDMwLjQ4NSwwLDAsMS0xMC41LTE4Ljc2MWMtMS43NS0xMC45ODQsMS4yNjMtMjAuNyw3Ljg3NC0yOS4zNTYsNy4xLTkuMzMxLDE1LjY1MS0xNC4xOTIsMjcuMjE4LTE2LjIzMyw5LjkxOC0xLjc1LDE5LjI0Ny0uNzc4LDI3LjcsNC45NTgsNy42OCw1LjI0OSwxMi40NDIsMTIuMzQ1LDEzLjcwNiwyMS42NzYsMS42NTMsMTMuMTIzLTIuMTM4LDIzLjgxNi0xMS4xNzksMzIuOTUzYTQ0LjU0Miw0NC41NDIsMCwwLDEtMjMuMzI5LDEyLjQ0MkMyMDguNDksMTg4LjcsMjA1Ljg2NiwxODguOCwyMDMuMzM4LDE4OS4wOVptMjMuMTM1LTM5LjI3MWEyNy45NzgsMjcuOTc4LDAsMCwwLS4yOTEtMy4yMDgsMTYuMDEzLDE2LjAxMywwLDAsMC0xOC4zNzUtMTMuMjM1cS0uNzM0LjExOS0xLjQ1NC4zMDZjLTkuMDQsMi4wNDEtMTQuODczLDcuNzc3LTE3LjAxMSwxNi45MTNhMTYuMDA5LDE2LjAwOSwwLDAsMCw4Ljk0MywxOC4zNzQsMTcuODIsMTcuODIsMCwwLDAsMTUuODQ1LS41ODRjNy42NzktMy45ODUsMTEuODU5LTEwLjIwNiwxMi4zNDgtMTguNTY2WlwiIHN0eWxlPVwiZmlsbDojY2UzMjYyXCIvPjwvc3ZnPmAsXG5cdFwiR29cIjogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjU0LjUgMjI1XCI+PHRpdGxlPmZpbGVfdHlwZV9nbzwvdGl0bGU+PHBhdGggZD1cIk0tNDYuOTI2LDg5Yy0uNjIxLDAtLjc3Ny0uMzExLS40NjYtLjc3N2wzLjI2Mi00LjE5NGEyLjIyNSwyLjIyNSwwLDAsMSwxLjcwOC0uNzc3SDEzLjAyNmMuNjIxLDAsLjc3Ny40NjYuNDY2LjkzMmwtMi42NCw0LjAzOGEyLjM2NywyLjM2NywwLDAsMS0xLjU1My45MzJaXCIgc3R5bGU9XCJmaWxsOiMwMGFjZDdcIi8+PHBhdGggZD1cIk0tNzAuMzc5LDEwMy4yODVjLS42MjEsMC0uNzc3LS4zMTEtLjQ2Ni0uNzc3bDMuMjYyLTQuMTk0YTIuMjI1LDIuMjI1LDAsMCwxLDEuNzA4LS43NzdINC45NWEuNzE0LjcxNCwwLDAsMSwuNzc3LjkzMkw0LjQ4NCwxMDIuMmExLjM1OCwxLjM1OCwwLDAsMS0xLjQuOTMyWlwiIHN0eWxlPVwiZmlsbDojMDBhY2Q3XCIvPjxwYXRoIGQ9XCJNLTMyLjc5MiwxMTcuNTc0Yy0uNjIxLDAtLjc3Ny0uNDY2LS40NjYtLjkzMmwyLjE3NC0zLjg4M2EyLjA2LDIuMDYsMCwwLDEsMS41NTMtLjkzMkgxLjUzM2MuNjIxLDAsLjkzMi40NjYuOTMyLDEuMDg3bC0uMzExLDMuNzI4YTEuMTY3LDEuMTY3LDAsMCwxLTEuMDg3LDEuMDg3WlwiIHN0eWxlPVwiZmlsbDojMDBhY2Q3XCIvPjxwYXRoIGQ9XCJNMTI4LjQyNiw4Ni4yYy05Ljc4NSwyLjQ4NS0xNi40NjQsNC4zNDktMjYuMDkzLDYuODM0LTIuMzMuNjIxLTIuNDg1Ljc3Ny00LjUtMS41NTMtMi4zMy0yLjY0LTQuMDM4LTQuMzQ5LTcuMy01LjktOS43ODUtNC44MTUtMTkuMjU5LTMuNDE3LTI4LjExMiwyLjMzLTEwLjU2MSw2LjgzNC0xNiwxNi45MjktMTUuODQyLDI5LjUxLjE1NSwxMi40MjUsOC43LDIyLjY3NiwyMC45NjgsMjQuMzg1LDEwLjU2MSwxLjQsMTkuNDE0LTIuMzMsMjYuNC0xMC4yNTEsMS40LTEuNzA4LDIuNjQtMy41NzIsNC4xOTQtNS43NDdINjguMTYzYy0zLjI2MiwwLTQuMDM4LTIuMDE5LTIuOTUxLTQuNjU5LDIuMDE5LTQuODE1LDUuNzQ3LTEyLjg5MSw3LjkyMS0xNi45MjlhNC4xOTQsNC4xOTQsMCwwLDEsMy44ODMtMi40ODVoNTYuNTM1Yy0uMzExLDQuMTk0LS4zMTEsOC4zODctLjkzMiwxMi41ODFhNjYuMjM5LDY2LjIzOSwwLDAsMS0xMi43MzYsMzAuNDQyQzEwOC43LDE1OS41MSw5NC4xLDE2OC42NzMsNzUuNjE4LDE3MS4xNThjLTE1LjIyMSwyLjAxOS0yOS4zNTUtLjkzMi00MS43OC0xMC4yNTFhNDguNzg1LDQ4Ljc4NSwwLDAsMS0xOS43MjUtMzQuNDhjLTIuMDE5LTE2LjkyOSwyLjk1MS0zMi4xNSwxMy4yLTQ1LjUwOEMzOC4zNDIsNjYuNDc1LDUyLjk0Miw1Ny4zMTIsNzAuOCw1NC4wNWMxNC42LTIuNjQsMjguNTc4LS45MzIsNDEuMTU5LDcuNjFhNDguNjg2LDQ4LjY4NiwwLDAsMSwxOC4wMTcsMjEuOUMxMzAuOTExLDg0Ljk1OCwxMzAuMjg5LDg1LjczNSwxMjguNDI2LDg2LjJaXCIgc3R5bGU9XCJmaWxsOiMwMGFjZDdcIi8+PHBhdGggZD1cIk0xNzkuODM1LDE3Mi4wOWMtMTQuMTM0LS4zMTEtMjcuMDI1LTQuMzQ5LTM3LjktMTMuNjY4YTQ4LjcxMSw0OC43MTEsMCwwLDEtMTYuNzc0LTI5Ljk3NmMtMi44LTE3LjU1MSwyLjAxOS0zMy4wODIsMTIuNTgxLTQ2LjkwNSwxMS4zMzgtMTQuOTEsMjUuMDA2LTIyLjY3Niw0My40ODgtMjUuOTM4LDE1Ljg0Mi0yLjgsMzAuNzUzLTEuMjQzLDQ0LjI2NSw3LjkyMSwxMi4yNyw4LjM4NywxOS44OCwxOS43MjUsMjEuOSwzNC42MzUsMi42NCwyMC45NjgtMy40MTcsMzguMDUyLTE3Ljg2MSw1Mi42NTJhNzEuMTcsNzEuMTcsMCwwLDEtMzcuMjc2LDE5Ljg4QzE4OC4wNjcsMTcxLjQ2OSwxODMuODc0LDE3MS42MjQsMTc5LjgzNSwxNzIuMDlaTTIxNi44LDEwOS4zNDNhNDQuNyw0NC43LDAsMCwwLS40NjYtNS4xMjVjLTIuOC0xNS4zNzYtMTYuOTI5LTI0LjA3NC0zMS42ODQtMjAuNjU3LTE0LjQ0NCwzLjI2Mi0yMy43NjMsMTIuNDI1LTI3LjE4LDI3LjAyNWEyNS41NzksMjUuNTc5LDAsMCwwLDE0LjI4OSwyOS4zNTVjOC41NDIsMy43MjgsMTcuMDg1LDMuMjYyLDI1LjMxNy0uOTMyQzIwOS4zNDUsMTMyLjY0LDIxNi4wMjQsMTIyLjcsMjE2LjgsMTA5LjM0M1pcIiBzdHlsZT1cImZpbGw6IzAwYWNkN1wiLz48L3N2Zz5gLFxuXHRcIkdyYWRsZVwiOiBgPHBhdGggZD1cIk0xMy41LDYuOTY1aDcuOTIzbDQsNi44ODdIMjkuOThBMTQuMSwxNC4xLDAsMCwwLDExLjAyNCwyLjkzMkwxMy41LDYuOTY1XCIgc3R5bGU9XCJmaWxsOiMwMDY1MzNcIi8+PHBhdGggZD1cIk0yNS42MjgsMThsLTQuMjA5LDcuMjUySDEwLjgwNkw1LjUsMTYuMTA4LDkuNzM5LDguOCw3LjQsNC45ODFBMTQuMDMsMTQuMDMsMCwxLDAsMzAsMThIMjUuNjI4XCIgc3R5bGU9XCJmaWxsOiM4MmI4MTZcIi8+PHBhdGggZD1cIk0yMS4wNjEsMTUuOTYzYTUuMDI2LDUuMDI2LDAsMSwxLTUuMDI2LTUsNS4wMTMsNS4wMTMsMCwwLDEsNS4wMjYsNVwiIHN0eWxlPVwiZmlsbDojMDA2NTMyXCIvPmAsXG5cdFwiR3JhcGhRTFwiOiBgPHJlY3QgeD1cIi0wLjQzXCIgeT1cIjEyLjUzNFwiIHdpZHRoPVwiMjIuOTAxXCIgaGVpZ2h0PVwiMS4xODdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTUuODU4IDE2LjEwNykgcm90YXRlKC01OS45OTkpXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjQuNTQ1XCIgeT1cIjIxLjE2MlwiIHdpZHRoPVwiMjIuOTAyXCIgaGVpZ2h0PVwiMS4xODdcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiMTAuNDNcIiB5PVwiMTguMDA4XCIgd2lkdGg9XCIxLjE4N1wiIGhlaWdodD1cIjEzLjIyN1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMTUuODEyIDIxLjg1Nykgcm90YXRlKC01OS45OTkpXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjIwLjM4MVwiIHk9XCIwLjc3MVwiIHdpZHRoPVwiMS4xODdcIiBoZWlnaHQ9XCIxMy4yMjdcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoNC4wOTIgMjEuODU2KSByb3RhdGUoLTU5Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiNC40MTJcIiB5PVwiNi43ODdcIiB3aWR0aD1cIjEzLjIyN1wiIGhlaWdodD1cIjEuMTg3XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yLjIxMyA2LjUwMikgcm90YXRlKC0zMC4wMDEpXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjIwLjM4OVwiIHk9XCIxLjY3N1wiIHdpZHRoPVwiMS4xODdcIiBoZWlnaHQ9XCIyMi45MDFcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTMuNzUzIDEyLjI1KSByb3RhdGUoLTMwLjAwMSlcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cmVjdCB4PVwiNS40NTRcIiB5PVwiOS4zODZcIiB3aWR0aD1cIjEuMTg3XCIgaGVpZ2h0PVwiMTMuMjI4XCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHJlY3QgeD1cIjI1LjM2XCIgeT1cIjkuMzg2XCIgd2lkdGg9XCIxLjE4N1wiIGhlaWdodD1cIjEzLjIyOFwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxyZWN0IHg9XCIxNS4yMjJcIiB5PVwiMjQuMDk3XCIgd2lkdGg9XCIxMS41MDRcIiBoZWlnaHQ9XCIxLjAzN1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtOS40OTggMTMuNzg1KSByb3RhdGUoLTMwLjAwMSlcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cGF0aCBkPVwiTTI4LjEyLDIzYTIuNSwyLjUsMCwxLDEtLjkxNS0zLjQxMUEyLjUsMi41LDAsMCwxLDI4LjEyLDIzXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHBhdGggZD1cIk04LjIsMTEuNWEyLjUsMi41LDAsMSwxLS45MTUtMy40MTFBMi41LDIuNSwwLDAsMSw4LjIsMTEuNVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxwYXRoIGQ9XCJNMy44OCwyM2EyLjUsMi41LDAsMSwxLDMuNDExLjkxNUEyLjUsMi41LDAsMCwxLDMuODgsMjNcIiBzdHlsZT1cImZpbGw6I2UxMDA5OFwiLz48cGF0aCBkPVwiTTIzLjgsMTEuNWEyLjUsMi41LDAsMSwxLDMuNDExLjkxNUEyLjUsMi41LDAsMCwxLDIzLjgsMTEuNVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPjxwYXRoIGQ9XCJNMTYsMzBhMi41LDIuNSwwLDEsMSwyLjUtMi41QTIuNDkzLDIuNDkzLDAsMCwxLDE2LDMwXCIgc3R5bGU9XCJmaWxsOiNlMTAwOThcIi8+PHBhdGggZD1cIk0xNiw2Ljk5MWEyLjUsMi41LDAsMSwxLDIuNS0yLjUsMi40OTMsMi40OTMsMCwwLDEtMi41LDIuNVwiIHN0eWxlPVwiZmlsbDojZTEwMDk4XCIvPmAsXG5cdFwiR3Jvb3Z5XCI6IGA8cGF0aCBkPVwiTTcuNDUzLDI5Ljg2NWMwLS4wNzQuNDk0LTEuNzE3LDEuMS0zLjY1MUEyMS44MDgsMjEuODA4LDAsMCwwLDkuNSwyMi42Yy0uMDc5LS4wNTYtLjM1LjA0NS0uNi4yMjQtLjc2NC41MzgtLjkyLjQtMS40OTEtMS4zNTYtLjYxNy0xLjktLjYzOS0yLjA5MS0uMzE3LTIuODEuMjEtLjQ3LjItLjU3OS0uMTQ3LTEuMjc3YTMuNzUsMy43NSwwLDAsMS0uMzc3LTEuMDQ0YzAtLjI2LTEuNDEzLTEuNDM4LTMuNjQ3LTMuMDRBMy44NDUsMy44NDUsMCwwLDEsMiwxMi41YTEwLjQ3NywxMC40NzcsMCwwLDEsMi4zNzgtLjAzOWwyLjM3OC4xLjIzMi0uNzQxYy45ODEtMy4xMywyLjQ2My01Ljk1NywzLjEyMi01Ljk1Ny4xMzcsMCwuNDE2LjI2NS42MTkuNTg4LjMzMS41MjcuMzc2Ljg1My40MzUsMy4xMjZhMjMuMDEzLDIzLjAxMywwLDAsMCwuMTY1LDIuNzM5Yy4wNTUuMTEuMjI4LS4wMzUuMzg1LS4zMjIuMi0uMzY3LjQxMi0uNDY3LjcxLS4zMzVzLjQ4NS4wNDMuNjQ2LS4zNDVjLjI0Mi0uNTgyLDEuNDU1LTQuNTEzLDEuNDU1LTQuNzE3LDAtLjA2OS4yNC0uOS41MzQtMS44NDZzLjYzMS0yLjAzNi43NTEtMi40MjRjLjIxMy0uNjg4LjI0Ni0uNjA3LDEuNTI0LDMuNzI2LDEuMzIsNC40NzQsMi4wMyw2LjEyNCwyLjM4NSw1LjU0NC4yNDgtLjQsMS41NS0uNDI4LDEuOTE0LS4wMzQuMjA3LjIyNC4zMzguMjIxLjQ1My0uMDEuMjM3LS40OC44LS40Ljk1My4xNC4xMTcuNDIzLjE0Ny40MjMuMzIsMGEuODEyLjgxMiwwLDAsMSwuNjkyLS40NjZjLjM4OSwwLC41MzguMTY0LjY2Ni43MzVsLjE2NS43MzUsMi41NTgtLjE4M0ExMS41MjEsMTEuNTIxLDAsMCwxLDMwLDEyLjQ2OGEyMC43OSwyMC43OSwwLDAsMS0yLjMyMSwxLjg4OWMtMS4yNzcuOTYtMi4zNDIsMS43NzUtMi4zNjgsMS44MWExNy42MDcsMTcuNjA3LDAsMCwwLC4xMjgsMS44NjcsMTEuMDc1LDExLjA3NSwwLDAsMS0uNTQ0LDUuNzEzLDQuMzA4LDQuMzA4LDAsMCwxLTEuMDIxLDEuNDljLS4yNzguMTg2LS41MDYuNC0uNTA2LjQ4NnMuMywxLjA3Ny42NiwyLjIxMkE5LjY4Miw5LjY4MiwwLDAsMSwyNC41NjgsMzBjLS4xMDksMC0yLjc1Ny0yLjA3LTYuODc2LTUuMzczYTExLjE0MywxMS4xNDMsMCwwLDAtMS42NDMtMS4xODRjLS4xNzEsMC0xLjY0OSwxLjEzMy01Ljk4NCw0LjU4OC0yLjUxNCwyLTIuNjEyLDIuMDczLTIuNjEyLDEuODM1Wm01LjE1OC00LjcyN2MxLjMzNy0xLjA1MSwyLjY2NC0yLjA3OCwyLjk0Ny0yLjI4Mi40ODgtLjM1MS42NTEtLjI2MywzLjAyMSwxLjYzMSwxLjM3OCwxLjEsMi43MzcsMi4xNzQsMy4wMjEsMi4zODRzLjg2OC42NjYsMS4zLDEuMDEzYy40OTEuNC43NDIuNDkyLjY3NC4yNTYtLjc3LTIuNjM0LS43OTMtMi42NzgtMS4zMjctMi40NzYtLjY0NC4yNDQtMS4wNDMtLjAwNi0xLjI0OS0uNzgzYTEuNzM5LDEuNzM5LDAsMCwxLC4yNC0xLjQ1MSwyLjM3NywyLjM3NywwLDAsMC0uMjIxLTIuNzMxLDQuMjg5LDQuMjg5LDAsMCwxLS42ODYtMS41M2wtLjI0MS0xLjAyMy0uNTE3LjcxYy0uNjM2Ljg3My0xLjQxMS45MTgtMi4wNTkuMTE5bC0uNDc3LS41ODgtLjU1NC43NjJjLS41NTUuNzYzLTEuMTk0Ljg2Mi0xLjg0NC4yODQtLjE3OS0uMTU5LS4yNTgtLjEtLjI1OC4yYTEuMjQsMS4yNCwwLDAsMS0uMzc1Ljc3N2MtLjYxOS41Ny0xLjIyMy40MTktMS42MzMtLjQwOUwxMiwxOS4yNDlsLS4zLjc3NWE3LjAzMiw3LjAzMiwwLDAsMS0uODUzLDEuNDc5LDEzLjg5MSwxMy44OTEsMCwwLDAtMS40NTUsMy42NjNjLS41LDEuNjI3LS45LDMuMDQyLS45LDMuMTQzcy4zODEtLjE0MS44NDctLjUzOCwxLjk0Mi0xLjU4MiwzLjI3OS0yLjYzM1ptMTEuMzQzLTEuMTMxYzEuMDE1LTEuMTU0LDEuMjUtMy4yODguOC03LjI3MS0uMzc1LTMuMzI5LS41NjItNC40MTktLjc4NC00LjU2NS0uMTU0LS4xLS4xNzcuMDEtLjA5MS40MjYuNTYyLDIuNy41OTMsNC4wNTMuMSw0LjQzNC0uMzM3LjI2Mi0uNjk1LS43MTktLjk3Ni0yLjY3NS0uMjE4LTEuNTE1LS40NDUtMi4yLS42MTctMS44NWEzLjM1OSwzLjM1OSwwLDAsMCwuMTYsMS4wNywyNi43MTgsMjYuNzE4LDAsMCwxLC4zOTQsMy4zODEsMjEuNzU3LDIxLjc1NywwLDAsMCwuMzc1LDMuMTUxYy4zMDkuOTg1LjguNzQ3LDEuMTE4LS41NHMuMzUtLjQyNS4wNDQsMS4wNTVjLS4zMTcsMS41MzYtMS4yNiwyLTIuMzUyLDEuMTUtLjE3NS0uMTM2LS4yMzQsMC0uMjM0LjU1NWE0Ljk4OCw0Ljk4OCwwLDAsMS0uMywxLjVsLS4zLjc2NS40MDguMTM5QTIuMjQ3LDIuMjQ3LDAsMCwwLDIzLjk1NCwyNC4wMDdaTTkuMzQ2LDIxLjQ2OGMyLjExOC0xLjIzMiwyLjUtMi42NjgsMS43OTMtNi44MDVhMjEuOTQxLDIxLjk0MSwwLDAsMS0uMy0yLjNjMC0xLjAyOS0uMjU2LS41NTQtLjQ0OC44MzItLjI1NCwxLjgzMi0xLjAxNiwzLjM4OS0xLjY1NywzLjM4My0uNTU3LS4wMDUtLjczOC0uMjEtLjk2OC0xLjA5NC0uNDEzLTEuNTg1LjAzNy00LjAxOCwxLjE4NC02LjQwNi44NC0xLjc0OSwxLjMtMS45MDgsMS4zLS40NDgsMCwyLjI3Ni0uNzc2LDUuNjI1LTEuMTg0LDUuMTE1YTMuODE0LDMuODE0LDAsMCwxLC4wNjUtMi4yYy4yLS43Mi4xNTctMS44MTgtLjA2Ni0xLjgxOC0uMjU5LDAtLjc3MywxLjkxLS44NDEsMy4xMjctLjA2LDEuMDc2LS4wMjIsMS4zMzguMjMxLDEuNjEyLjg4OC45NjIsMi4wNTItMS45NzMsMi4xMTEtNS4zMjMuMDMxLTEuNzU5LS4xMzgtMi4yNTQtLjY3NC0xLjk4Mi0uNzgxLjQtMi44ODMsNS44ODMtMi44ODMsNy41MjMsMCwxLjI4My4zMTksMi4xODYuODgsMi40OTEuOTU0LjUxOSwxLjg3Ni0uNCwyLjUyOS0yLjUzMWwuMjc1LS44OTRWMTQuOTdjMCwxLjc1OS0uNTY3LDIuNjg2LTIuMzU3LDMuODUyYTguODkzLDguODkzLDAsMCwwLS44NTIuNiw5Ljc1OCw5Ljc1OCwwLDAsMCwuODkyLDIuNTM0LDUuMjgzLDUuMjgzLDAsMCwwLC45NjktLjQ4NFptMTIuNzY0LTIuMTg0Yy4yMTMtLjQ3NS4yNS0uOTkyLjItMi44MTctLjA1LTEuOTg2LS4xLTIuMzM3LS40ODYtMy4xNDQtLjY5MS0xLjQ1OC0xLjU0NC0xLjA4Ni0xLjA0NS40NTUuMjY1LjgyLjU4OS42OC40NzUtLjIwNS0uMDkxLS43LjA3OS0uNzIzLjM3NS0uMDQxLjU1NiwxLjI4MS40MTYsMy4wNTUtLjI0MiwzLjA1NS0uNDUsMC0uNTktLjM5LS44ODMtMi40NTlhNi43NTIsNi43NTIsMCwwLDAtLjM2Mi0xLjcxNGMtLjIxNywwLS4zMTQuMzg4LS4xNzkuNzE4YTI4LjIzLDI4LjIzLDAsMCwxLC40NTIsMi44NTljLjQ0MSwzLjUwNywxLjA1Nyw0LjcwNywxLjY5LDMuMjkzWm0tOC4zOC4wNTZhMy4zODUsMy4zODUsMCwwLDAsLjA5NS0xLjMzYy0uMDYtMS4wMDgtLjA5NC0xLjA4MS0uMzY0LS43OS0uMzg3LjQxOS0uOC0uMzc1LS45NDQtMS44LS4xMDctMS4wODItLjE0LTEuMDYxLjY0LS40MTUuMS4wODEuMzQ2LS4xOTQuNTUzLS42MTEuMzc3LS43NjMuNS0xLjY4LjIyOC0xLjY4LS4wODEsMC0uMTQ3LjEzNC0uMTQ3LjMsMCwuNDI5LS40LjM2OC0uNDk0LS4wNzUtLjA1My0uMjU4LS4xNjYtLjE2Ny0uMzY3LjMtLjE2LjM2OS0uMzU2LjY3MS0uNDM0LjY3MXMtLjE4NS0uMy0uMjM3LS42NzFjLS4wOS0uNjQ2LS4xLS42NS0uMy0uMTEzYS45NTEuOTUxLDAsMCwwLS4wMS45NjQsMTguODE4LDE4LjgxOCwwLDAsMSwuNTIxLDMuNzkxYzAsMS4xNzQuOCwyLjEsMS4yNjcsMS40NjNabTIuNjg4LTEuNTU2YTcuMDU1LDcuMDU1LDAsMCwwLC40MTYtNC4yNTljLS4yMzYtMS4xNDEtLjY0NS0xLjU2OC0xLjIyMi0xLjI3NS0uNDI5LjIxOC0xLjA4MiwyLjc0Ni0xLjA4NCw0LjIsMCwyLjI2MiwxLjA2LDMuMDE1LDEuODksMS4zMzdabS0xLjAwNy0xLjc5MmEzLjc3LDMuNzcsMCwwLDEtLjI5LTEuNDE2YzAtLjc0NS4wMjItLjc3Mi4yLS4zLjIyLjU4Ni42MTEuNjg4Ljc2MS4yYTEuMDM1LDEuMDM1LDAsMCwwLS4wNjUtLjY1NmMtLjIzMi0uNDY5LS4yLTEuMTA3LjA0OS0xLjEwNy4yOCwwLC42NzIsMS4xNTQuNjcyLDEuOTgyLDAsLjYwOS0uNjEzLDEuODkzLS45LDEuODkzLS4wNywwLS4yNi0uMjY4LS40MjItLjZaTTE5LjM0OCwxNy43YTYuNDQ3LDYuNDQ3LDAsMCwwLS4xNDEtNC45MThjLS4zNTgtLjc3My0xLjE1My0uOTA2LTEuNDc5LS4yNDhhMTEuNjA3LDExLjYwNywwLDAsMC0uNDg5LDMuODk1QzE3LjQ3NywxOC4zNDgsMTguNzE2LDE5LjEsMTkuMzQ4LDE3LjdaTTE4LjEsMTUuNTI3YTIuNDkyLDIuNDkyLDAsMCwxLS4zMTgtMS41NjVjLjAwOC0uOTA5LjAzMS0uOTkxLjEzNS0uNDcyLjE1My43NjQuNDczLDEuMDUyLjc1My42NzkuMTc0LS4yMzEuMTY2LS4zNDEtLjA1LS42NzYtLjI4OC0uNDQ3LS4zNDQtMS4wNzktLjEtMS4wNzlhNS4wMzcsNS4wMzcsMCwwLDEsMS4wMTcsMi4yNWMwLC40OC0uNTY0LDEuMzI3LS44ODQsMS4zMjdDMTguNTI3LDE1Ljk5MSwxOC4yNzYsMTUuNzgyLDE4LjEsMTUuNTI3Wm04LjY2Mi0xLjMxOCwxLjU0Ny0xLjE3NS0xLjY1OC0uMDEyYy0xLjQ4NC0uMDExLTEuNjU4LjA0My0xLjY1Ni41MWExMS41MzIsMTEuNTMyLDAsMCwwLC4yLDEuODU3Yy4wMTEsMCwuNzE2LS41MzQsMS41NjctMS4xOFpNNi41MzUsMTRsLjE1OC0uOTQ5TDUuMywxMi45NTZjLS43NjQtLjA1Mi0xLjM4OS0uMDEyLTEuMzg5LjA4OGExNC4xLDE0LjEsMCwwLDAsMi40NDcsMS45MzRDNi4zNzEsMTQuOTYxLDYuNDQ4LDE0LjUyMSw2LjUzNSwxNFptOS41MjYtMi45NDFhMS42MjQsMS42MjQsMCwwLDEsLjgxOS42Yy4xOTIuMzQ5LjI3Ni4zMjYuNTczLS4xNjMuMTkxLS4zMTUuNDQtLjU3Mi41NTMtLjU3MnMuMi0uMDY2LjItLjE0NmMwLS4yNzgtMi4xMjItNy4zMDYtMi4yLTcuM3MtMi4yNyw3LjM4Ni0yLjMzNyw3LjkyNWMtLjAyOC4yMjYuMDYuMzA5LjIzMS4yMTkuMTUyLS4wODEuMzYzLjA2My40NjguMzE5LjE3LjQxNS4yNC4zODIuNjQ0LS4zMDYuMzg0LS42NTQuNTQ0LS43NDIsMS4wNDgtLjU3OVpcIiBzdHlsZT1cImZpbGw6IzMzM1wiLz48cGF0aCBkPVwiTTE0LjUsMTIuMTc1YS44NS44NSwwLDAsMS0uMTE1LS4yLjczNy43MzcsMCwwLDAtLjE5NC0uMjkuMjgxLjI4MSwwLDAsMC0uMy0uMDYxYy0uMDg3LjAzNS0uMTExLjAzOS0uMTUuMDI0LS4wNjUtLjAyNi0uMDg5LS4xMDYtLjA3LS4yNDIuMDIzLS4xNjkuMi0uODI1LjU0OC0yLjA1NC43MTEtMi41LDEuNjY2LTUuNjQ2LDEuNzcyLTUuODM5LjAxMi0uMDIxLjAxMi0uMDIxLjAyNCwwLC4wNjMuMTE0LjQzMiwxLjI2Ni45MzcsMi45MjIuNjgyLDIuMjQsMS4yNSw0LjIxLDEuMjUsNC4zMzksMCwuMDc5LS4wNi4xMjctLjE4Ni4xNDctLjE1Ny4wMjYtLjMzOS4yMTItLjU4Ny42YTEuNjc0LDEuNjc0LDAsMCwxLS4yMjYuMzFjLS4wNDguMDQ2LS4wNTIuMDQ4LS4xLjA0OHMtLjA1NiwwLS4xLS4wNDNhLjk1OC45NTgsMCwwLDEtLjEtLjE0NCwxLjI2OCwxLjI2OCwwLDAsMC0uNDE0LS40MjIsMS41MjUsMS41MjUsMCwwLDAtLjczOC0uMjgxLjQzNC40MzQsMCwwLDAtLjQuMTU2LDIuNzE4LDIuNzE4LDAsMCwwLS40MTYuNmMtLjI1Ny40MjUtLjM0OC41MTMtLjQ0MS40MjZaXCIgc3R5bGU9XCJmaWxsOiM2Mzk4YWFcIi8+PHBhdGggZD1cIk02LjI1MiwxNC45MjhhMTkuMDU1LDE5LjA1NSwwLDAsMS0yLjMtMS44MzhjLS4wMzEtLjAzOC0uMDM0LS4wNDQtLjAyNS0uMDU3YTIuNywyLjcsMCwwLDEsMS4xNC0uMDg1Yy4yMy4wMTIsMS42MTkuMSwxLjYyMS4xMDhzLS4zLDEuNzc5LS4zMjEsMS44ODFDNi4zNTcsMTQuOTgxLDYuMzM3LDE0Ljk3OSw2LjI1MiwxNC45MjhaXCIgc3R5bGU9XCJmaWxsOiM2Mzk4YWFcIi8+PHBhdGggZD1cIk0yNS4xNzcsMTUuMzVBMTQuMjM5LDE0LjIzOSwwLDAsMSwyNSwxMy41NmEuNTUzLjU1MywwLDAsMSwuMDQ0LS4yOWMuMDgxLS4xNTEuMjQ1LS4yMDUuNy0uMjMuMjI4LS4wMTMsMS4yODEtLjAxNSwyLjAyNSwwbC41MjEuMDA4TDI3LjAyOSwxNGMtMS4xNDQuODY3LTEuODEsMS4zNjktMS44MzQsMS4zODItLjAwNiwwLS4wMTItLjAwNi0uMDE4LS4wMjdoMFpcIiBzdHlsZT1cImZpbGw6IzYzOThhYVwiLz48cGF0aCBkPVwiTTguNTA2LDI4LjI4MWMwLS4wNzEuMTQ5LS42LjUyNy0xLjg3OC45MDUtMy4wNTcsMS4zMTktNC4xNjUsMS44MjctNC44OTJhNy42NjQsNy42NjQsMCwwLDAsLjk2OS0xLjc5MkwxMiwxOS4yOTJsLjIyNS40NDhjLjM5NC43ODQuNjMyLDEuMDExLDEuMDYyLDEuMDE2YTEuMjM5LDEuMjM5LDAsMCwwLDEuMS0xLjEzN2MwLS4xMjQuMDQ0LS4yNTEuMDg2LS4yNTFhMS4xMTksMS4xMTksMCwwLDEsLjIyNi4xNCwxLjI3MSwxLjI3MSwwLDAsMCwuNjY2LjMuODc5Ljg3OSwwLDAsMCwuNjA5LS4xNDgsMi40NywyLjQ3LDAsMCwwLC43MTEtLjc2NGMuMTg3LS4yNTIuMzQ3LS40NTkuMzU0LS40NTlzLjE0My4xNTkuMy4zNTJhNS4wOTEsNS4wOTEsMCwwLDAsLjQyMi40NjcsMS4wNDksMS4wNDksMCwwLDAsMS41NDktLjA4LDYuMTExLDYuMTExLDAsMCwwLC40NjctLjU3MmMuMTY4LS4yMjguMzA3LS40MS4zMS0uNHMuMDY2LjI2OS4xNDEuNTg0LjE2OS42Ny4yMDkuNzg5YTMuODI2LDMuODI2LDAsMCwwLC42NDIsMS4yMzQsMi4xNywyLjE3LDAsMCwxLC40NjYsMS4yNDYsMy4wNTEsMy4wNTEsMCwwLDEtLjM1MiwxLjQ0NywyLjA3LDIuMDcsMCwwLDAtLjI2Ny45MzQsMi4wMTcsMi4wMTcsMCwwLDAsLjIxMy44NTEuNzczLjc3MywwLDAsMCwxLjA2OS40MTMsMS4zNTEsMS4zNTEsMCwwLDEsLjMxNi0uMDY4Yy4yLDAsLjMxNS4xOTMuNTQyLjg4MS4xNTcuNDc0LjUsMS42MzcuNSwxLjY5NSwwLC4wMy0uMDE2LjA1MS0uMDM5LjA1MWExLjQ4NiwxLjQ4NiwwLDAsMS0uNDA3LS4yMjRjLS4yLS4xNDQtMi42MTItMi4wMjktMy40MDgtMi42NjMtMi4xMjgtMS42OTMtMi44MjgtMi4yMzMtMy4xNzEtMi40NDYtLjM3LS4yMy0uNjIyLS4yODUtLjgyNy0uMTc3LS4yNTQuMTMzLTMuNzI2LDIuODQ3LTUuNzUxLDQuNUExMC44NDYsMTAuODQ2LDAsMCwxLDguNjUsMjguMjUxYy0uMTQ5LjA4My0uMTQzLjA4MS0uMTQzLjAzWlwiIHN0eWxlPVwiZmlsbDojNjM5OGFhXCIvPmAsXG5cdFwiSGFtbFwiOiBgPHBhdGggZD1cIk0xNS4zMTEsMTYuMDQzLDEzLjQsMjkuNzI2YTYuMzIyLDYuMzIyLDAsMCwxLTUuOTU2LTEuMjVsMy4xLTEzLjI2Nkw0LjY5LDMuMzRhOC4wMzEsOC4wMzEsMCwwLDEsMy43OS0uNjQ2bDUuMTQ0LDkuNyw4LjkxNC03LjU4MXMzLDEuMDQxLDMuMjcsMi4wNDFsLTEwLjUsOS4xODRaXCIgc3R5bGU9XCJmaWxsOiNlY2RmYTdcIi8+PHBhdGggZD1cIk0yNy4wMTYsMTcuNDExYTQuMjQ0LDQuMjQ0LDAsMCwwLS41NDEtLjgxMiw1LjcsNS43LDAsMCwwLTEuNDU4LTEuMTg3LDcuMzMxLDcuMzMxLDAsMCwwLTEuNjg3LS43OTFsLS4yMjktLjA2Mi0uMTg3LS4wNjJjLS4xMjUtLjA0Mi0uMjI5LS4xLS4zMzMtLjE0NmExLjI4MiwxLjI4MiwwLDAsMS0uNDU4LS40MTdBMS43NTQsMS43NTQsMCwwLDEsMjIsMTIuNjQyYTIuNTE4LDIuNTE4LDAsMCwxLC4xLS4zNzVjLjA0Mi0uMTI1LjA4My0uMjUuMTI1LS40YTIuNjkxLDIuNjkxLDAsMCwwLC4wNjItLjZsLjEtLjA4MywxLjI1LTEuMDQxYy4yMjktLjE4Ny40NTgtLjQuNjg3LS41ODNhMi4yLDIuMiwwLDAsMSwuMjI5LjE0NnMuNjQ2LjA2MiwxLS45MTZsLS4xODctLjEyNS4xMjUtLjEuMzEyLS4yNzFhLjYxMy42MTMsMCwwLDAsLjIyOS0uMzc1LjUyOS41MjksMCwwLDAtLjQxNy4xMjVsLS4zMzMuMjUtLjIyOS4xNjdMMjIuMTg0LDYuNDc4Yy4xNDYtLjEyNS4yNzEtLjIyOS40MTctLjM1NGwuNi0uNTQxLjA2Mi0uMDYyYy4wNjIuMDQyLjEuMDgzLjE2Ny4xMjUuMTQ2LjEuMzEyLjIwOC40NTguMjkybC45MTYuNWMuMjkyLjE2Ny42LjMzMy45MTYuNDc5YTMuMzIzLDMuMzIzLDAsMCwwLC40NzkuMjA4Yy4wODMuMDIxLjE2Ny4wNjIuMjUuMDgzLjA0MiwwLC4xLjAyMS4xNDYuMDIxaC4xYS4xNTEuMTUxLDAsMCwwLC4xMjUtLjA4M1Y3LjEyM2EuMDc3LjA3NywwLDAsMSwuMDIxLS4wNjJWNi45NzdhLjEwOC4xMDgsMCwwLDAtLjA0Mi0uMDgzYy0uMDIxLS4wNDItLjA2Mi0uMDgzLS4wODMtLjEyNWExLjU5LDEuNTksMCwwLDAtLjE4Ny0uMTg3Yy0uMTI1LS4xMjUtLjI3MS0uMjI5LS40LS4zMzMtLjI3MS0uMjA4LS41NjItLjQtLjg1NC0uNTgzYTcuNTQ1LDcuNTQ1LDAsMCwwLS45LS41LDMuMzIzLDMuMzIzLDAsMCwwLS40NzktLjIwOGMtLjA4My0uMDIxLS4xNjctLjA2Mi0uMjcxLS4wODMtLjA0MiwwLS4xLS4wMjEtLjE2Ny0uMDIxYS4zMS4zMSwwLDAsMC0uMTI1LjAyMS41MjIuNTIyLDAsMCwwLS4xNjcuMSwxLjYsMS42LDAsMCwwLS4zNzUuMjA4bC0uNjI1LjM1NGMtLjE4Ny4xNDYtLjQuMzEyLS41ODMuNDU4bC0uMjA4LS4xNDZzLS44NzUuMDgzLS41ODMuNjQ2bC4wODMuMDgzYy0uODMzLjY4Ny0xLjY0NSwxLjQtMi40NTcsMi4wODMtLjgzMy43MDgtMS42NDUsMS40MTYtMi40NzgsMi4xNDVsLTEuMjI5LDEuMDgzYTEuODc4LDEuODc4LDAsMCwxLS4yMDguMTg3Yy0uMDQyLS4xMjUtLjEtLjIyOS0uMTQ2LS4zMzNsLS4yOTItLjYyNS0uNTYyLTEuMjVjLS4zNzUtLjgzMy0uNzUtMS42NjYtMS4xNDUtMi41TDExLjIwOSw0Ljg5NWwtLjE4Ny0uMzc1aC4yNXMuMDgzLS42ODctLjQxNy0uODEyYTEuNCwxLjQsMCwwLDAtLjIwOC4wMjFjLS4xODctLjM3NS0uMzU0LS43NS0uNTQxLTEuMTI1aDBsLS4wODMtLjMxMkEuMzMuMzMsMCwwLDAsOS45LDIuMWEuMzUyLjM1MiwwLDAsMC0uMS0uMDQyYy0uMDYyLS4wMjEtLjEtLjAyMS0uMTY3LS4wNDJBMS4yODEsMS4yODEsMCwwLDAsOS4zNTUsMmE0LjA1Nyw0LjA1NywwLDAsMC0uNTIxLjA0Miw4Ljc2Nyw4Ljc2NywwLDAsMC0xLjAyLjE4N2MtLjMzMy4wODMtLjY2Ni4xNjctMSwuMjcxYTMuMjcyLDMuMjcyLDAsMCwwLS40NzkuMTg3bC0uMjUuMTI1Yy0uMDQyLjAyMS0uMDgzLjA2Mi0uMTI1LjA4M0w1LjksMi45NThjLS4wMjEuMDIxLS4wMjEuMDQyLS4wNDIuMDYydi4wNjJoMFYzLjFhLjE2NC4xNjQsMCwwLDAsLjEuMTI1Yy4wNDIuMDIxLjA2Mi4wNDIuMDgzLjA0MmExLjMyNywxLjMyNywwLDAsMSwuMTQ2LjA0MiwxLjE4OCwxLjE4OCwwLDAsMCwuMjcxLjAyMSw0LjM4NCw0LjM4NCwwLDAsMCwuNTIxLS4wNDJjLjMzMy0uMDQyLjY4Ny0uMDgzLDEuMDItLjE0NmwxLjAyLS4xNjdjLjE2Ny0uMDIxLjMzMy0uMDYyLjUyMS0uMS4xNDYuMjkyLjI5Mi42LjQzNy45LS45NTguMDgzLTIuNDU3LjIwOC0zLjM5NS4zMTItLjEtLjE4Ny0uMTg3LS4zNTQtLjI5Mi0uNTQxYS4xMjcuMTI3LDAsMCwwLS4xNDYtLjA2Mi4xMDguMTA4LDAsMCwwLS4wNjIuMTQ2Yy4wNjIuMTY3LjEyNS4zMTIuMTg3LjQ3OWExLjE2NywxLjE2NywwLDAsMC0uNS4xMjVBMS44MjgsMS44MjgsMCwwLDAsNi40LDUuNjQ1YTMuNTY3LDMuNTY3LDAsMCwxLC40NTgtLjEyNWwuNDM3LDEsMS4yNSwyLjgzMiwxLjI3LDIuODMyYy40MTcuOTM3Ljg1NCwxLjg3NCwxLjI5MSwyLjgzMmgwYS4wMi4wMiwwLDAsMCwuMDIxLjAyMWwtLjE4Ny42MjUtLjUsMS43NDljLS4zMTIsMS4xNjYtLjYsMi4zNTMtLjksMy41Mkw5LjEwNSwyMi43bC0uNDE3LDEuNzdjLS4yOTIsMS4xODctLjU2MiwyLjM1My0uOSwzLjUyYS4xMjUuMTI1LDAsMCwwLC4wMjEuMDgzLDMuMDc2LDMuMDc2LDAsMCwwLC42LjU2Miw2LjA0OCw2LjA0OCwwLDAsMCwuNjg3LjQxNyw5LjQsOS40LDAsMCwwLDEuNS42LDYuOTcyLDYuOTcyLDAsMCwwLDEuNjI0LjI3MSwzLjcyOCwzLjcyOCwwLDAsMCwuODMzLS4wNDIsNi41NDcsNi41NDcsMCwwLDAsLjgzMy0uMTY3LjI1NC4yNTQsMCwwLDAsLjE2Ny0uMTg3di0uMDIxYy4yMjktMS4xNDUuNDE3LTIuMzEyLjYyNS0zLjQ1N2wuNTgzLTMuNDc4Yy4xODctMS4xNjYuNC0yLjMxMi41ODMtMy40NzguMDIxLS4xMjUuMDQyLS4yNzEuMDYyLS40LjA0Mi4wNDIuMDYyLjEuMS4xNDZhNC4xMzcsNC4xMzcsMCwwLDAsLjcwOC42NDYsNy4yMTIsNy4yMTIsMCwwLDAsMS41ODMuODMzLDExLjc3NCwxMS43NzQsMCwwLDAsMS42NjYuNSwxMC4xODIsMTAuMTgyLDAsMCwwLDEuMS4xODcsMi42MjEsMi42MjEsMCwwLDAtLjI1LDEuMjA4LjExNS4xMTUsMCwwLDAsLjA2Mi4xaC4wMjFhNS4xNjQsNS4xNjQsMCwwLDAsMS4yNy40NzksNC4zMzMsNC4zMzMsMCwwLDAsMS4zNzUuMDYyLDIuNjI3LDIuNjI3LDAsMCwwLDEuMzMzLS41NjIsMi44MjQsMi44MjQsMCwwLDAsLjgxMi0xLjE2NmwuMDIxLS4wMjFWMjEuMWwuMDYyLS41NjJ2LS4wMjFhNS40MjcsNS40MjcsMCwwLDAsLjYyNS0uNDE3LDIuNzEsMi43MSwwLDAsMCwuNjQ2LS43MjksMS44MzMsMS44MzMsMCwwLDAsLjI1LTEsMi41NjMsMi41NjMsMCwwLDAtLjI5Mi0uOTU4Wm0tLjQtMTAuNVptLTEuNDc5LTEuMWE3LjEyLDcuMTIsMCwwLDEsLjgzMy41NDFjLjEyNS4xLjI3MS4xODcuNC4zMTJhMS4yNTcsMS4yNTcsMCwwLDEsLjE2Ny4xNjdsLjA0Mi4wNDJoLS4wNDJjLS4wODMtLjAyMS0uMTQ2LS4wNDItLjIyOS0uMDYyLS4xNDYtLjA2Mi0uMzEyLS4xMjUtLjQ1OC0uMTg3YTcuMTMyLDcuMTMyLDAsMCwxLS44NzUtLjQ3OUE1LjYxLDUuNjEsMCwwLDEsMjQuMiw1LjUyYTIuNSwyLjUsMCwwLDEtLjIyOS0uMjVsLjMxMi4xMjVhNi40LDYuNCwwLDAsMSwuODU0LjQxN1ptLTEuNDE2LS45MTYuMDIxLjAyMXYuMDQyYS4wMi4wMiwwLDAsMC0uMDIxLS4wMjFWNC44OTVaTTguODc2LDIuNTYyYTUuMDIxLDUuMDIxLDAsMCwxLS45MzcuMzMzLDUuMzQ3LDUuMzQ3LDAsMCwxLS45NzkuMTY3LDQuMDEzLDQuMDEzLDAsMCwxLS41LjAyMS43ODEuNzgxLDAsMCwxLS4yMjktLjAyMUg2LjE2OWMuMDIxLDAsLjAyMS0uMDIxLjA0Mi0uMDIxLjA2Mi0uMDQyLjE0Ni0uMDYyLjIwOC0uMS4xNDYtLjA2Mi4zMTItLjEuNDU4LS4xNjcuMzEyLS4wODMuNjQ2LS4xNjcuOTc5LS4yMjlhOC40LDguNCwwLDAsMSwuOTc5LS4xMjVBMS41NzYsMS41NzYsMCwwLDAsOS4xNDcsMi40YTEuNTM2LDEuNTM2LDAsMCwxLS4yNzEuMTY3Wm0xNC40NTMsNy4xLTEuMjkxLDEtMS4yOTEsMS4wMmMtLjM1NC4yOTItLjcwOC41ODMtMS4wNjIuODU0LjAyMS0uMDIxLjA0Mi0uMDYyLjA2Mi0uMDgzLjE2Ny0uMjI5LjMzMy0uNDM3LjUtLjY0Ni4zNTQtLjQxNy42ODctLjg1NCwxLjA2Mi0xLjI1cy43NzEtLjc5MSwxLjE2Ni0xLjE0NWE0Ljg3Miw0Ljg3MiwwLDAsMSwuNjQ2LS41bC4xODctLjEyNWMuMTg3LjE0Ni40LjI5Mi41ODMuNDM3LS4xNjcuMTQ2LS4zNzUuMjkyLS41NjIuNDM3Wk04LjA2NCw3LjFsLjEuMWE1LjYzLDUuNjMsMCwwLDEsLjU4My42NDYsMi4yMSwyLjIxLDAsMCwxLC4zNzUuNzI5LjkyMS45MjEsMCwwLDEtLjA2Mi42MjVsLS4wMjEtLjA2Mkw4LjA2NCw3LjFabTEuMDIsMi4xNjZhLjcyLjcyLDAsMCwwLC4xNDYtLjI1Ljg2Ni44NjYsMCwwLDAsLjA0Mi0uNDU4QTEuNywxLjcsMCwwLDAsOC45LDcuNzI3YTQuMDE1LDQuMDE1LDAsMCwwLS45NzktLjlsLS4yMjktLjQ3OWMtLjE0Ni0uMzEyLS4yOTItLjYyNS0uNDU4LS45MTYuMzEyLS4wODMuNjg3LS4yMDgsMS4xLS4zMTJBMjAuMzEzLDIwLjMxMywwLDAsMSw5LjM1NSw3YTcuOTYzLDcuOTYzLDAsMCwxLC43NzEsMi41NDFjLjAyMS4yMDgsMCwuNDM3LDAsLjY2NnMwLC40NTguMDIxLjY4N2E3LjYwOSw3LjYwOSwwLDAsMCwuMTQ2Ljk1OEw5LjA4NCw5LjI2OFpNMTQsMjYuMjQyYS45LjksMCwwLDEtLjE4Ny4yMDguNC40LDAsMCwxLS4zMzMuMS4zNTguMzU4LDAsMCwxLS4yMjktLjIyOS45ODEuOTgxLDAsMCwxLS4wODMtLjM1NCwyLjI3NSwyLjI3NSwwLDAsMSwuMDQyLS43NSwyLjgxNiwyLjgxNiwwLDAsMSwuMjI5LS43MDgsMS40NzgsMS40NzgsMCwwLDEsLjIwOC0uMjkyLjM0MS4zNDEsMCwwLDEsLjI5Mi0uMTI1Yy4xLDAsLjIwOC4xLjI3MS4yMDhhLjc0Ljc0LDAsMCwxLC4wODMuMTg3bC0uMjUsMS40NzljLS4wMjEuMS0uMDIxLjE4Ny0uMDQyLjI3MVptMS4yMjktNy4xODUtLjM3NSwyLjE4N2EzLjMyOSwzLjMyOSwwLDAsMC0uMS0uNDM3Yy0uMS0uNC0uMjI5LS43NzEtLjM1NC0xLjE0NWExNS41MzcsMTUuNTM3LDAsMCwwLS45NTgtMi4xNjZjLjIyOS43NzEuNSwxLjUuNzcxLDIuMjQ5LjE0Ni4zNzUuMjcxLjc1LjQsMS4xbC4xODcuNTYyYzAsLjAyMS4wMjEuMDYyLjAyMS4wODMtLjA2Mi4zMzMtLjEyNS42NjYtLjE2NywxLjAybC0uMzEyLDEuOWMtLjAyMS0uMDQyLS4wMjEtLjA4My0uMDQyLS4xMjVhLjQ4Ni40ODYsMCwwLDAtLjMxMi0uMjkyLjUyNS41MjUsMCwwLDAtLjQxNy4xMjUsMS45NDQsMS45NDQsMCwwLDAtLjI3MS4zMTIsMi4wMzYsMi4wMzYsMCwwLDAtLjI3MS43NSwyLjEzMSwyLjEzMSwwLDAsMCwwLC44MTIsMS4wMjEsMS4wMjEsMCwwLDAsLjE0Ni40LjQ4Ni40ODYsMCwwLDAsLjMzMy4yNzEuNDI4LjQyOCwwLDAsMCwuMzc1LS4xNjdjLjA0Mi0uMDQyLjA4My0uMS4xMjUtLjE0Ni0uMTQ2Ljk3OS0uMzEyLDEuOTU4LS40NTgsMi45NTdhMi43MjcsMi43MjcsMCwwLDEtLjU2Mi4xMjVjLS4yNS4wNDItLjUuMDYyLS43NS4wODNhNS41MzEsNS41MzEsMCwwLDEtMS41NDEtLjE0Niw3Ljg0Niw3Ljg0NiwwLDAsMS0xLjUtLjQ3OSwzLjYyNSwzLjYyNSwwLDAsMS0xLjIyOS0uODU0Yy4zMTItMS4xNDUuNjY2LTIuMjkxLDEuMDItMy40MzZsLjU0MS0xLjcyOS41MjEtMS43NDljLjM1NC0xLjE2Ni43MDgtMi4zMzMsMS4wNDEtMy41LjE2Ny0uNTgzLjMxMi0xLjE2Ni40NzktMS43NDlhMy42MjYsMy42MjYsMCwwLDAsLjE4Ny0xLjgzM3YtLjAyMWMtLjAyMS0uMDIxLS4wNDItLjAyMS0uMDQyLDBhMy4xMDksMy4xMDksMCwwLDAtLjI1LjI5MmMtLjIyOS0uNTIxLS40NzktMS4wMi0uNzA4LTEuNTQxYTQuNzY1LDQuNzY1LDAsMCwxLS4xNjctLjU4Myw3LjE2NSw3LjE2NSwwLDAsMS0uMjA4LTEuMzEyYy0uMDIxLS4yMjktLjAyMS0uNDM3LS4wMjEtLjY2NnMuMDIxLS40NTgsMC0uNjg3YTcuNjI1LDcuNjI1LDAsMCwwLS44MzMtMi42LDEyLjU4NywxMi41ODcsMCwwLDAtMS4xLTEuODMzYy42ODctLjE4NywxLjQxNi0uMzc1LDItLjQ3OS4wODMuMTg3LjE4Ny4zNTQuMjcxLjU0MUwxMS45MzgsNy42bDEuMjUsMi40MzcuNjI1LDEuMjA4LjMxMi42Yy4wODMuMTI1LjEyNS4yNzEuMjA4LjM3NWwtLjgxMi43NWEuMDY5LjA2OSwwLDAsMCwwLC4xLjA3My4wNzMsMCwwLDAsLjEuMDIxYy40MzctLjMxMi44NzUtLjY0NiwxLjMxMi0uOTc5bDEuMzEyLTFjLjg3NS0uNjY2LDEuNzI5LTEuMzMzLDIuNTgyLTJzMS43MDgtMS4zNTQsMi41NjItMi4wNDFsLjAyMS0uMDIxYTI0LjMxNiwyNC4zMTYsMCwwLDAsMS44NzQsMS42NDUsNi4xNjIsNi4xNjIsMCwwLDAtLjg3NS41NDEsOC45NDMsOC45NDMsMCwwLDAtMS4yMjksMS4xMjUsMTIuMjc5LDEyLjI3OSwwLDAsMC0xLjA0MSwxLjI5MSwxMS43NzgsMTEuNzc4LDAsMCwwLS42NDYsMWMtMS4yNywxLjA0MS0yLjUyLDIuMS0zLjcyOCwzLjIwN2EuMTI4LjEyOCwwLDAsMC0uMDIxLjE0Ni4xMzguMTM4LDAsMCwwLC4xNDYuMDQyLDkuMTM0LDkuMTM0LDAsMCwwLS4zMTIsMS4yNWMtLjEyNS41ODMtLjI1LDEuMTY2LS4zNTQsMS43NDlabTkuMjA1LDIuNzkxYTIuNTI3LDIuNTI3LDAsMCwxLTEuMDIuNDU4LDMuNzY3LDMuNzY3LDAsMCwxLTEuMTg3LjA0Miw3LjM2MSw3LjM2MSwwLDAsMS0xLjE0NS0uMjA4LDIuMDM3LDIuMDM3LDAsMCwxLC4xNjctMS4wNDFjLjE0Ni4wMjEuMjcxLjAyMS40MTcuMDQyYS4xMTQuMTE0LDAsMCwwLC4xMjUtLjA4My4xMjQuMTI0LDAsMCwwLS4wODMtLjE2N2gwYy0uMS0uMDQyLS4xODctLjA2Mi0uMjkyLS4xYTIuNzcxLDIuNzcxLDAsMCwxLC4yOTItLjRjLjEyNS0uMTI1LjI1LS4yNS4zNzUtLjM1NGEzLjk5MiwzLjk5MiwwLDAsMCwuODU0LjQsMi44ODEsMi44ODEsMCwwLDAsMS4xMjUuMSwxLjU1LDEuNTUsMCwwLDAsMS4wMi0uNTQxLDEuNTI0LDEuNTI0LDAsMCwwLC4zNTQtLjkxNi44NS44NSwwLDAsMSwuMDIxLjQsNC41MTEsNC41MTEsMCwwLDEtLjA4My41MjFsLS4wNjIuMzEyTDI1LDIwLjQ5NGEuOTE5LjkxOSwwLDAsMC0uMzMzLjM1NC43NTEuNzUxLDAsMCwwLC40NzksMGMuMDIxLDAsLjAyMS0uMDIxLjA0Mi0uMDIxLS4wMjEuMDYyLS4wMjEuMS0uMDQyLjE2N2EyLjU1MiwyLjU1MiwwLDAsMS0uNzA4Ljg1NFpNMjYuNSwxOS4xMTlhMi4yLDIuMiwwLDAsMS0uNDU4LjYyNSwyLjYzOCwyLjYzOCwwLDAsMS0uMjcxLjIyOSwyLjU4NSwyLjU4NSwwLDAsMC0uMDYyLS41NjIsMS41MzQsMS41MzQsMCwwLDAtLjA4My0uMjkyLjUzMS41MzEsMCwwLDAtLjE4Ny0uMjVoMGMtLjAyMSwwLS4wNDIsMC0uMDQyLjAyMWgwYTEuOTUsMS45NSwwLDAsMS0uNTYyLjc3MSwxLjQyOSwxLjQyOSwwLDAsMS0uODEyLjI5MiwyLjg1NywyLjg1NywwLDAsMS0uOTE2LS4xMjVjLS4zMTItLjA4My0uNjI1LS4xODctLjkzNy0uMjkybC0uMDQyLS4wMjFhLjIuMiwwLDAsMC0uMTg3LjA0MmMtLjE2Ny4yMDgtLjI5Mi40LS40MzcuNi0uMS4xNjctLjE4Ny4zMTItLjI3MS40NzktLjM3NS0uMTQ2LS43MjktLjI3MS0xLjEtLjQxNy0uNTIxLS4yMDgtMS4wNDEtLjQxNy0xLjUyLS42NjZhNy42NDgsNy42NDgsMCwwLDEtMS40LS44MTIsMi45NDksMi45NDksMCwwLDEtLjk3OS0xLjA2MnYtLjAyMWEuNDA5LjQwOSwwLDAsMC0uMTg3LS4xODdjMC0uMDQyLjAyMS0uMS4wMjEtLjE0NmE3LjM3LDcuMzcsMCwwLDAsLjEtMS41MmMxLjY4Ny0xLjE4NywzLjMzMi0yLjQzNyw0Ljk1Ny0zLjcyOGwtLjA2Mi4xODdhMy4yNywzLjI3LDAsMCwwLS4xNDYsMS4wMkEyLjA4OSwyLjA4OSwwLDAsMCwyMi4xMjIsMTUuMWEyLjgyNSwyLjgyNSwwLDAsMCwuNDc5LjE4N2wuMjUuMDYyLjIwOC4wNDJhNi42NDUsNi42NDUsMCwwLDEsMS41NDEuNjI1LDYuMTU2LDYuMTU2LDAsMCwxLDEuMzEyLjk3OSwyLjI3NSwyLjI3NSwwLDAsMSwuNzA4LDEuMzMzLDEuNTEsMS41MSwwLDAsMS0uMTI1Ljc5MVpcIiBzdHlsZT1cImZpbGw6IzNmM2UyOVwiLz48cGF0aCBkPVwiTTEyLjY2NywyMy45MDlhMi4xNjEsMi4xNjEsMCwwLDAtLjM1NC43NzEsMS41NTYsMS41NTYsMCwwLDAtLjA2Mi40MTdsLS4wMjEuNDE3YTQuNTMzLDQuNTMzLDAsMCwwLC4xNDYsMS42NjYsNy42NDcsNy42NDcsMCwwLDAsLjY2NiwxLjUyYy0uMDgzLS4yNzEtLjE4Ny0uNTIxLS4yNzEtLjc3MXMtLjE2Ny0uNTIxLS4yMjktLjc5MWE1Ljg5LDUuODksMCwwLDEtLjEtMS42bC4wMjEtLjQxN2EyLjU1MiwyLjU1MiwwLDAsMSwuMDQyLS40LDMuMTM3LDMuMTM3LDAsMCwxLC4yOTItLjcyOSwyLjk2NywyLjk2NywwLDAsMSwuNTIxLS42MjUsMi41OTEsMi41OTEsMCwwLDEsLjY2Ni0uNDc5LDIuNzYsMi43NiwwLDAsMC0xLjMxMiwxLjAyWlwiIHN0eWxlPVwiZmlsbDojM2YzZTI5XCIvPmAsXG5cdFwiSGFuZGxlYmFyc1wiOiBgPHBhdGggZD1cIk0xMi4zLDEzLjFhNC4yMzgsNC4yMzgsMCwwLDEsMi43MjguOUE0LjU5Miw0LjU5MiwwLDAsMSwxNiwxNS4xMjdhNC4xNDQsNC4xNDQsMCwwLDEsMi4wMzktMS43NDcsNC43NTcsNC43NTcsMCwwLDEsMy4yODYuMDE5LDcuODMzLDcuODMzLDAsMCwxLDIuNDQzLDEuNTU4Yy41NjguNSwxLjA5NCwxLjA1LDEuNjc5LDEuNTMzYTMuNCwzLjQsMCwwLDAsMS4wMTkuNjE0LDEuNDIsMS40MiwwLDAsMCwxLjQ2LS4zNzkuOTY1Ljk2NSwwLDAsMC0uMDU1LTEuMzIzLjU0NS41NDUsMCwwLDAtLjguMTA4LjY1OS42NTksMCwwLDAsLjA1LjY4NiwxLjIyMiwxLjIyMiwwLDAsMS0uNi0uOTI2LDEuMDIyLDEuMDIyLDAsMCwxLC42OTEtMS4wMzIsMi4wMDUsMi4wMDUsMCwwLDEsMi4zMTIuNjYxLDMuMjU4LDMuMjU4LDAsMCwxLC40NCwyLjMwOCwyLjc2MiwyLjc2MiwwLDAsMS0xLjEzNywxLjg3Miw1LjA1MSw1LjA1MSwwLDAsMS0zLjAxMy44LDguNDg4LDguNDg4LDAsMCwxLTIuOTMyLS42M2MtMS41NTgtLjYyNi0zLjAxNi0xLjQ5Mi00LjYyNS0xLjk5MmExMy45NzcsMTMuOTc3LDAsMCwwLTEuNy0uMzYzYy0uNDMuMDA3LS44NjEtLjAxNS0xLjI5LjAxNWE1LjY5Miw1LjY5MiwwLDAsMC0xLjUzNC4zNDljLTEuNjM2LjUwOS0zLjExNiwxLjQtNC43LDIuMDI0YTcuNjI1LDcuNjI1LDAsMCwxLTQuMjQ5LjQ3NCwzLjc0LDMuNzQsMCwwLDEtMi4xMjUtMS4xNEEyLjg1NiwyLjg1NiwwLDAsMSwyLDE2LjY2OGEyLjcyMiwyLjcyMiwwLDAsMSwuNTU1LTEuODc0LDEuOTk0LDEuOTk0LDAsMCwxLDEuNjg3LS42OCwxLjQyNSwxLjQyNSwwLDAsMSwxLjA2My41MiwxLjA0LDEuMDQsMCwwLDEsLjEyMi45MTEsMS40NTcsMS40NTcsMCwwLDEtLjU1Ni42NDQuNjQzLjY0MywwLDAsMCwuMDUxLS42ODEuNTQ3LjU0NywwLDAsMC0uODMxLS4wNzkuOTc1Ljk3NSwwLDAsMC0uMTUxLDEuMTEsMS4zMzEsMS4zMzEsMCwwLDAsMS4wMzIuNjIzLDIuMzMyLDIuMzMyLDAsMCwwLDEuNi0uN0EyOC41MjYsMjguNTI2LDAsMCwxLDkuNCwxNC4wNTMsNS4yNTEsNS4yNTEsMCwwLDEsMTIuMywxMy4xWlwiIHN0eWxlPVwiZmlsbDojYzE5NzcwXCIvPmAsXG5cdFwiSGFza2VsbFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMC45OTZcIiB5MT1cIi0yMDYuMDU3XCIgeDI9XCIwLjk1MVwiIHkyPVwiLTIwNi4wNTdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgyNTkuOTQxLCAwLCAwLCAtMTgzLjQ4NywgLTIzNy45NDEsIC0zNzc5Mi43ODgpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmFiYTA5XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2I0MmMwMVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2hhc2tlbGwyPC90aXRsZT48cGF0aCBkPVwiTTIsMjUuODgyLDguNTg4LDE2LDIsNi4xMThINi45NDFMMTMuNTI5LDE2LDYuOTQxLDI1Ljg4MlptNi41ODgsMEwxNS4xNzcsMTYsOC41ODgsNi4xMThoNC45NDFMMjYuNzA2LDI1Ljg4MkgyMS43NjVsLTQuMTE3LTYuMTc2LTQuMTE4LDYuMTc2Wk0yNC41MSwyMC4xMThsLTIuMi0zLjI5NEgzMHYzLjI5NFptLTMuMjk0LTQuOTQxLTIuMi0zLjI5NEgzMHYzLjI5NFpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuXHRcIkhheGVcIjogYDxwYXRoIGQ9XCJNMTYsNS41LDUuNSwxNiwxNiwyNi41LDI2LjUsMTYsMTYsNS41XCIgc3R5bGU9XCJmaWxsOiNmNjg3MTJcIi8+PHBhdGggZD1cIk0yLDIsMTYsNS41LDUuNSwxNiwyLDJcIiBzdHlsZT1cImZpbGw6I2ZhYjIwYlwiLz48cGF0aCBkPVwiTTMwLDIsMjYuNSwxNiwxNiw1LjUsMzAsMlwiIHN0eWxlPVwiZmlsbDojZjQ3MjE2XCIvPjxwYXRoIGQ9XCJNMzAsMzAsMTYsMjYuNSwyNi41LDE2LDMwLDMwXCIgc3R5bGU9XCJmaWxsOiNmMjVjMTlcIi8+PHBhdGggZD1cIk0yLDMwLDUuNSwxNiwxNiwyNi41LDIsMzBcIiBzdHlsZT1cImZpbGw6I2Y4OWMwZVwiLz48cGF0aCBkPVwiTTE2LDUuNSwyLDJIOWw3LDMuNVwiIHN0eWxlPVwiZmlsbDojZmJjNzA3XCIvPjxwYXRoIGQ9XCJNMTYsNS41LDMwLDJIMjNMMTYsNS41XCIgc3R5bGU9XCJmaWxsOiNmYmM3MDdcIi8+PHBhdGggZD1cIk0xNiwyNi41LDMwLDMwSDIzbC03LTMuNVwiIHN0eWxlPVwiZmlsbDojZjY4NzEyXCIvPjxwYXRoIGQ9XCJNMTYsMjYuNSwyLDMwSDlsNy0zLjVcIiBzdHlsZT1cImZpbGw6I2YyNWMxOVwiLz48cGF0aCBkPVwiTTUuNSwxNiwyLDMwVjIzbDMuNS03XCIgc3R5bGU9XCJmaWxsOiNmZmYyMDBcIi8+PHBhdGggZD1cIk01LjUsMTYsMiwyVjlsMy41LDdcIiBzdHlsZT1cImZpbGw6I2ZmZjIwMFwiLz48cGF0aCBkPVwiTTI2LjUsMTYsMzAsMlY5bC0zLjUsN1wiIHN0eWxlPVwiZmlsbDojZjE0NzFkXCIvPjxwYXRoIGQ9XCJNMjYuNSwxNiwzMCwzMFYyM2wtMy41LTdcIiBzdHlsZT1cImZpbGw6I2YxNDcxZFwiLz5gLFxuXHRcIkhMU0xcIjogYDxwb2x5Z29uIHBvaW50cz1cIjkuNTI1IDIxLjk0NyA3LjU2IDIxLjk0NyA3LjU2IDE3LjEgMy45NTggMTcuMSAzLjk1OCAyMS45NDcgMiAyMS45NDcgMiAxMC4wNDQgMy45NTggMTAuMDQ0IDMuOTU4IDE0Ljc5MiA3LjU2IDE0Ljc5MiA3LjU2IDEwLjA0NCA5LjUyNSAxMC4wNDQgOS41MjUgMjEuOTQ3XCIgc3R5bGU9XCJmaWxsOmJsdWVcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuNjkyIDIxLjk0NyAxMS41MTMgMjEuOTQ3IDExLjUxMyAxMC4wNDQgMTMuNDcyIDEwLjA0NCAxMy40NzIgMTkuNzczIDE2LjY5MiAxOS43NzMgMTYuNjkyIDIxLjk0N1wiIHN0eWxlPVwiZmlsbDpibHVlXCIvPjxwYXRoIGQ9XCJNMTcuNDYyLDIxLjQ5MVYxOC44MzRhMy42NzYsMy42NzYsMCwwLDAsMS4xNDYuOTA5LDIuODA5LDIuODA5LDAsMCwwLDEuMjQ5LjMsMi4wNSwyLjA1LDAsMCwwLC42NDYtLjA5MiwxLjMwOSwxLjMwOSwwLDAsMCwuNDYxLS4yNTIsMS4wMjksMS4wMjksMCwwLDAsLjI3Ni0uMzgyLDEuMjMxLDEuMjMxLDAsMCwwLC4wOTEtLjQ3OCwxLjMsMS4zLDAsMCwwLS4xNDUtLjYyMywxLjkwNywxLjkwNywwLDAsMC0uNC0uNTA2LDQuMDc3LDQuMDc3LDAsMCwwLS42LS40NDhxLS4zNDYtLjIxNS0uNzQ2LS40MzlhNC4wNDUsNC4wNDUsMCwwLDEtMS41MTktMS40MTksMy44ODQsMy44ODQsMCwwLDEtLjUtMi4wMjYsNC4yMzIsNC4yMzIsMCwwLDEsLjI3My0xLjYsMy4wMiwzLjAyLDAsMCwxLC43NDQtMS4xLDIuOTM4LDIuOTM4LDAsMCwxLDEuMDg4LS42MzQsNC4xNjcsNC4xNjcsMCwwLDEsMS4zMS0uMiw1LjgxNiw1LjgxNiwwLDAsMSwxLjIuMTExLDMuOCwzLjgsMCwwLDEsLjk2Ny4zNDV2Mi40ODJhMi44NTksMi44NTksMCwwLDAtLjQ3Ni0uMzY1LDMuMjEyLDMuMjEyLDAsMCwwLS41My0uMjYyQTMuMSwzLjEsMCwwLDAsMjEuNDYsMTJhMi43OTQsMi43OTQsMCwwLDAtLjUxMi0uMDUsMS45OTQsMS45OTQsMCwwLDAtLjYwNi4wODcsMS4zNDcsMS4zNDcsMCwwLDAtLjQ2MS4yNDUsMS4wOTIsMS4wOTIsMCwwLDAtLjI5MS4zNzcsMS4xNDQsMS4xNDQsMCwwLDAtLjEuNDk0LDEuMiwxLjIsMCwwLDAsLjExNS41MzYsMS42NTcsMS42NTcsMCwwLDAsLjMyOC40NDgsMy40NjEsMy40NjEsMCwwLDAsLjUxNS40MTVjLjIuMTM2LjQzLjI3NS42ODYuNDE5YTcuMDk0LDcuMDk0LDAsMCwxLC45MzYuNjM1LDMuNzEyLDMuNzEyLDAsMCwxLC43MTMuNzU5LDMuMjY5LDMuMjY5LDAsMCwxLC40NTUuOTY3LDQuNTczLDQuNTczLDAsMCwxLC4xNTgsMS4yNjYsNC40MzksNC40MzksMCwwLDEtLjI3NywxLjY3MiwyLjg4OCwyLjg4OCwwLDAsMS0uNzQ5LDEuMSwyLjgyMywyLjgyMywwLDAsMS0xLjEuNiw0Ljc0Miw0Ljc0MiwwLDAsMS0xLjMyNS4xODIsNS40NzYsNS40NzYsMCwwLDEtMS4zNjEtLjE2NkEzLjQxLDMuNDEsMCwwLDEsMTcuNDYyLDIxLjQ5MVpcIiBzdHlsZT1cImZpbGw6Ymx1ZVwiLz48cG9seWdvbiBwb2ludHM9XCIzMCAyMS45NDcgMjQuODIyIDIxLjk0NyAyNC44MjIgMTAuMDQ0IDI2Ljc4IDEwLjA0NCAyNi43OCAxOS43NzMgMzAgMTkuNzczIDMwIDIxLjk0N1wiIHN0eWxlPVwiZmlsbDpibHVlXCIvPmAsXG5cdFwiSFRNTFwiOiBgPHBvbHlnb24gcG9pbnRzPVwiNS45MDIgMjcuMjAxIDMuNjU1IDIgMjguMzQ1IDIgMjYuMDk1IDI3LjE5NyAxNS45ODUgMzAgNS45MDIgMjcuMjAxXCIgc3R5bGU9XCJmaWxsOiNlNDRmMjZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYgMjcuODU4IDI0LjE3IDI1LjU5MyAyNi4wOTIgNC4wNjEgMTYgNC4wNjEgMTYgMjcuODU4XCIgc3R5bGU9XCJmaWxsOiNmMTY2MmFcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYgMTMuNDA3IDExLjkxIDEzLjQwNyAxMS42MjggMTAuMjQyIDE2IDEwLjI0MiAxNiA3LjE1MSAxNS45ODkgNy4xNTEgOC4yNSA3LjE1MSA4LjMyNCA3Ljk4MSA5LjA4MyAxNi40OTggMTYgMTYuNDk4IDE2IDEzLjQwN1wiIHN0eWxlPVwiZmlsbDojZWJlYmViXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2IDIxLjQzNCAxNS45ODYgMjEuNDM4IDEyLjU0NCAyMC41MDkgMTIuMzI0IDE4LjA0NCAxMC42NTEgMTguMDQ0IDkuMjIxIDE4LjA0NCA5LjY1NCAyMi44OTYgMTUuOTg2IDI0LjY1NCAxNiAyNC42NSAxNiAyMS40MzRcIiBzdHlsZT1cImZpbGw6I2ViZWJlYlwiLz48cG9seWdvbiBwb2ludHM9XCIxNS45ODkgMTMuNDA3IDE1Ljk4OSAxNi40OTggMTkuNzk1IDE2LjQ5OCAxOS40MzcgMjAuNTA3IDE1Ljk4OSAyMS40MzcgMTUuOTg5IDI0LjY1MyAyMi4zMjYgMjIuODk2IDIyLjM3MiAyMi4zNzQgMjMuMDk4IDE0LjIzNyAyMy4xNzQgMTMuNDA3IDIyLjM0MSAxMy40MDcgMTUuOTg5IDEzLjQwN1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljk4OSA3LjE1MSAxNS45ODkgOS4wNzEgMTUuOTg5IDEwLjIzNSAxNS45ODkgMTAuMjQyIDIzLjQ0NSAxMC4yNDIgMjMuNDQ1IDEwLjI0MiAyMy40NTUgMTAuMjQyIDIzLjUxNyA5LjU0OCAyMy42NTggNy45ODEgMjMuNzMyIDcuMTUxIDE1Ljk4OSA3LjE1MVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiSFRUUFwiOiBgPGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPVwiYVwiIGN4PVwiMTIuMjc4XCIgY3k9XCIyNC41NTdcIiByPVwiMTguMzcxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIC0wLjAwMSwgMzQuMDAxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2QzZTlmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjE1NVwiIHN0b3AtY29sb3I9XCIjZDNlOWZmXCIvPjxzdG9wIG9mZnNldD1cIjAuNzVcIiBzdG9wLWNvbG9yPVwiIzQwNzRhZVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzNjQ4NmNcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJiXCIgY3g9XCIxMC42NTdcIiBjeT1cIjI2Ljc0NlwiIHI9XCIyNi42NlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAtMC4wMDEsIDM0LjAwMSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZmXCIgc3RvcC1vcGFjaXR5PVwiMC4xNjVcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJjXCIgY3g9XCItNDUuMDVcIiBjeT1cIjkuMjg1XCIgcj1cIjQuMTE1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTIxLjk3MSA0MS45NDIpIHJvdGF0ZSgxNDMuNzM0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwXCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiZFwiIGN4PVwiLTQxLjQ1NlwiIGN5PVwiMzIuMTU0XCIgcj1cIjQuMTE1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMy41NzEgODcuMDc1KSByb3RhdGUoMTQzLjczNCkgc2NhbGUoMS4yOTcpXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxyYWRpYWxHcmFkaWVudCBpZD1cImVcIiBjeD1cIi00OC40ODVcIiBjeT1cIjEzLjIzOVwiIHI9XCI0LjExNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKC0yMy4wODQgNTUuNDEzKSByb3RhdGUoMTQzLjczNClcIiB4bGluazpocmVmPVwiI2NcIi8+PHJhZGlhbEdyYWRpZW50IGlkPVwiZlwiIGN4PVwiLTQwLjg4M1wiIGN5PVwiMTYuMDM2XCIgcj1cIjQuMTE1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoLTAuODcsIDAuNjM5LCAtMC42MzgsIC0wLjg3LCAtOS4zNTEsIDQ3LjcwNilcIiB4bGluazpocmVmPVwiI2NcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZ1wiIHgxPVwiLTY2LjUwMlwiIHkxPVwiMi4yMTlcIiB4Mj1cIi02NC42MjZcIiB5Mj1cIjYuNzQ5XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC45MzksIC0wLjg3OSwgLTAuNjgzLCAtMC43MywgODQuODEsIC0zMy42MjgpXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImhcIiB4MT1cIi0yNi43OTFcIiB5MT1cIjM5LjE1OVwiIHgyPVwiLTI0Ljk5OVwiIHkyPVwiNDQuNjgzXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS4xMzEsIDAuNjEzLCAwLjQ3NywgLTAuODc5LCAyMS42NDgsIDY5LjA3MSlcIiB4bGluazpocmVmPVwiI2NcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiaVwiIHgxPVwiLTYzLjM4NFwiIHkxPVwiOC4xNzdcIiB4Mj1cIi02My41N1wiIHkyPVwiNC42OVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuOTE4LCAtMC44NTksIC0wLjY2OCwgLTAuNzEzLCA3Ny44NTcsIC0zNi40OTMpXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImpcIiB4MT1cIi05OS4yNTlcIiB5MT1cIjg5LjU0NVwiIHgyPVwiLTk4LjgyNVwiIHkyPVwiOTMuMDIzXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoLTEuMjgsIC0wLjEyNiwgLTAuMDk4LCAwLjk5NSwgLTEwMS42MzcsIC05My4wMTUpXCIgeGxpbms6aHJlZj1cIiNjXCIvPjxyYWRpYWxHcmFkaWVudCBpZD1cImtcIiBjeD1cIi0yMC43MTJcIiBjeT1cIjU3LjYxXCIgcj1cIjIuODM2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMCwgLTAuODQzLCAtMC43MjEsIDAsIDI2LjYyNSwgLTIxLjY5NilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM3MjlmY2ZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjM2I2MWE2XCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwibFwiIGN4PVwiLTIwLjcxMlwiIGN5PVwiMzkuODU4XCIgcj1cIjIuODM2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjYuNjI1IDYzLjA5Nikgcm90YXRlKDkwKSBzY2FsZSgwLjg0MyAwLjcyMSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM3MjlmY2ZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNTA5ZTJmXCIvPjwvcmFkaWFsR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfaHR0cDwvdGl0bGU+PHBhdGggZD1cIk0yOC4wMjYsMTQuMkExMS44NzcsMTEuODc3LDAsMSwxLDE2LjE0OSwyLjMyNSwxMS44NzgsMTEuODc4LDAsMCwxLDI4LjAyNiwxNC4yWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMTYuMTQ5LDI2LjM4NkExMi4xODMsMTIuMTgzLDAsMSwxLDI4LjMzMywxNC4yLDEyLjIsMTIuMiwwLDAsMSwxNi4xNDksMjYuMzg2Wm0wLTIzLjc1NEExMS41NzEsMTEuNTcxLDAsMSwwLDI3LjcyLDE0LjIsMTEuNTg0LDExLjU4NCwwLDAsMCwxNi4xNDksMi42MzJaXCIgc3R5bGU9XCJmaWxsOiMzOTM5NmNcIi8+PHBhdGggZD1cIk0yNy42OTMsMTIuNDI0aDBsLS4zMjguMzcxYTcsNywwLDAsMC0uNjU2LS42NDRsLS41LjA3NC0uNDYtLjUxOXYuNjQzbC4zOTQuMy4yNjIuMy4zNS0uNGMuMDg4LjE2NS4xNzUuMzMuMjYzLjV2LjQ5NWwtLjM5NC40NDUtLjcyMi41LS41NDYuNTQ1LS4zNS0uNC4xNzUtLjQ0NS0uMzUtLjQtLjU5MS0xLjI2Mi0uNS0uNTY5TDIzLjYsMTIuMWwuMi43MTguMzcxLjQyMWExNy4wNjksMTcuMDY5LDAsMCwwLC43LDEuNzgzLDkuOTc5LDkuOTc5LDAsMCwwLDEuMjY4LS4xdi4zNDdsLS41MjUsMS4yODctLjQ4MS41NDQtLjM5NC44NDNWMTkuMzNsLjEzMi41NDUtLjIxOS4yNDctLjQ4Mi4zLS41LjQyMS40MTYuNDctLjU2OS41LjEwOS4zMjEtLjg1My45NjZIMjIuMmwtLjQ4MS4zaC0uMzA3di0uNGwtLjEzLS43OTNjLS4xNjktLjUtLjM0Ni0uOTkxLS41MjUtMS40ODQsMC0uMzY0LjAyMi0uNzI1LjA0NC0xLjA4OWwuMjE5LS40OTUtLjMwNy0uNTk1LjAyMi0uODE3LS40MTYtLjQ3LjIwOC0uNjgtLjMzOC0uMzg0SDE5LjZsLS4yLS4yMjMtLjU5MS4zNzItLjI0LS4yNzMtLjU0Ny40N0wxNi45MTEsMTUuMjdsLS40MzctMS4wNC4zOTQtLjU5My0uMjE5LS4yNDcuNDgxLTEuMTM5Yy4zOTUtLjQ5MS44MDctLjk2MywxLjIyNS0xLjQzNmwuNzQ0LS4yLjgzMS0uMS41NjkuMTQ5LjgwOS44MTYuMjg0LS4zMjEuMzkzLS4wNDkuNzQ0LjI0N0gyMy4zbC4zOTQtLjM0Ny4xNzUtLjI0Ny0uMzk0LS4yNDctLjY1Ni0uMDQ5YTYuNiw2LjYsMCwwLDAtLjU2OC0uNzQzbC0uMjE5LjEtLjA4OC42NDQtLjM5NC0uNDQ1LS4wODctLjUtLjQzNy0uMzQ2aC0uMTc2bC40MzguNDk1LS4xNzUuNDQ1LS4zNS4xLjIxOS0uNDQ1LS4zOTQtLjItLjM0OS0uNC0uNjU3LjE0OC0uMDg3LjItLjM5NC4yNDgtLjIxOS41NDUtLjU0Ni4yNzItLjI0MS0uMjcySDE3LjgzVjkuNDI4bC41NjktLjNoLjQzN2wtLjA4OC0uMzQ2TDE4LjQsOC40MzhsLjU5LS4xMjQuMzI4LS4zNzEuMjYyLS40NDZoLjQ4MmwtLjEzMi0uMzQ2LjMwNy0uMnYuNGwuNjU2LjE0OC42NTYtLjU0NC4wNDQtLjI0OC41NjgtLjRhNC4zNTMsNC4zNTMsMCwwLDAtLjYxMi4xVjUuOTYzbC4yMTktLjVoLS4yMTlsLS40OC40NDUtLjEzMi4yNDguMTMyLjM0Ny0uMjE5LjU5My0uMzUtLjItLjMwNi0uMzQ2LS40ODIuMzQ2LS4xNzUtLjc5Mi44MzEtLjU0NHYtLjNsLjUyNS0uMzQ2LjgzMS0uMi41NjkuMiwxLjA0OS4yLS4yNjIuM0gyMi41MWwuNTY5LjU5NC40MzctLjQ5NS4xMzMtLjIxOGExNS41MywxNS41MywwLDAsMSwyLjYzNSwzLjE0N0ExMS40NTIsMTEuNDUyLDAsMCwxLDI3LjY5MywxMi40MjRaXCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTE2Ljg2MSw1LjUxN2wtLjA0NC4zLjMwNy4yLjUyNC0uMzQ2LS4yNjItLjMtLjM1LjItLjE3NC0uMDVcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTcuMzQzLDMuNDg4bC0xLjEzOC0uNDQ2LTEuMzEyLjE0OC0xLjYxOS40NDUtLjMwNi4zLDEuMDA2LjY5M3YuNGwtLjM5NC40LjUyNSwxLjA0LjM0OS0uMi40MzgtLjY5M2ExNS4wNTMsMTUuMDUzLDAsMCwwLDEuOTI0LS43NDNsLjUyNS0xLjMzN1wiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xOC41MjQsNy42NDcsMTguMzQ5LDcuMmwtLjMwNy4xLjA4OC41NDQuMzk0LS4yXCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTE4LjcsNy41NDdsLS4wODguNTk1LjQ4MS0uMS4zNS0uMzQ2LS4zMDYtLjNjLS4xLS4yNzQtLjIyMS0uNTI5LS4zNS0uNzkyaC0uMjYydi4zbC4xNzQuMnYuNDQ1XCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTEyLjIyNSwxNi45NTNsLS4zNS0uNjkzLS42NTYtLjE0OC0uMzUtLjk0LS44NzUuMS0uNzQzLS41NDQtLjc4OC42OTN2LjEwOWEzLDMsMCwwLDEtLjc0My0uMjA5bC0uMTc1LS40OTVWMTQuMjhsLS41MjUuMDQ5cS4wNjYtLjUyLjEzMS0xLjAzOUg2Ljg0NWwtLjMwNi40LS4zMDYuMTQ4TDUuOCwxMy41ODdsLS4wNDQtLjU0NS4wODgtLjU5NC42NTYtLjQ5NUg3LjAybC4wODctLjMuNjU2LjE0OC40ODEuNTk1LjA4OC0uOTkxLjgzMS0uNjkzLjMwNi0uNzQzLjYxMi0uMjQ3LjM1LS40OTUuNzg3LS4xNDkuMzk0LS41OTNIMTAuNDMybC43NDQtLjM0N0gxMS43bC43NDQtLjI0OC4wODgtLjMtLjI2My0uMjQ4LS4zMDYtLjEuMDg4LS4zLS4yMTktLjQ0NS0uNTI1LjIuMDg4LS40LS42MTItLjM0N0wxMC4zLDYuOGwuMDQ0LjMtLjQ4MS4yLS4zMDYuNjQzLS4xMzEtLjU5NEw4LjU5NCw3bC0uMTMxLS40NDUsMS4wOTQtLjY0NC40ODEtLjQ0NS4wNDQtLjU0NC0uMjYyLS4xNDktLjM1LS4wNS0uMjE5LjU0NXMtLjM2Ni4wNzItLjQ2LjA5NUExMi41LDEyLjUsMCwwLDAsNC42LDEzLjM3MWE2Ljc4OSw2Ljc4OSwwLDAsMCwuNDA5LjcxMWwuOTE4LjU0NC45MTguMjQ4LjM5NC41LjYxMi40NDUuMzUtLjA0OS4yNjIuMTE4di4wOGwtLjM1Ljk0LS4yNjMuNC4wODguMi0uMjE5Ljc0Mi43ODcsMS40MzYuNzg3LjY5My4zNS40OTVMOS42LDIxLjlsLjI2My41OTNMOS42LDIzLjYzN3MtLjAyMS0uMDA3LjAxMy4xMDdhNS4yNzgsNS4yNzgsMCwwLDAsMS40ODguODA5bC4xNjEtLjEyMy0uMDg3LS4yNDcuMzUtLjM0Ny4xMzEtLjM0Ny41NjktLjIuNDM3LTEuMDg5LS4xMzEtLjMuMzA2LS40NDUuNjU2LS4xNDkuMzUtLjc5Mi0uMDg4LS45OS41MjUtLjc0My4wODgtLjc0M2MtLjcxOC0uMzU2LTEuNDMtLjcyMy0yLjE0My0xLjA4OVwiIHN0eWxlPVwiZmlsbDojMjA0YTg3O2ZpbGwtb3BhY2l0eTowLjcxMzQ1MDMxMjYxNDQ0MDlcIi8+PHBhdGggZD1cIk0xMS4yNjMsNS43MTVsLjQzNy4zaC4zNVY1LjY2NmwtLjQzNy0uMi0uMzUuMjQ3XCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTEwLjEyNiw1LjMxOWwtLjIxOS41NDRoLjQzOGwuMjE5LS41Yy4xODktLjEzMy4zNzYtLjI2OC41NjgtLjRsLjQzOC4xNDkuODc1LjU5NC40MzgtLjQtLjQ4Mi0uMi0uMjE5LS40NDYtLjgzMS0uMS0uMDQ0LS4yNDgtLjM5NC4xLS4xNzUuMzQ2LS4yMTktLjQ0Ni0uMDg3LjIuMDQ0LjUtLjM1LjNcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTEuNyw0LjA4MWwuMjE5LS4yLjQzOC0uMWE2LjksNi45LDAsMCwxLC45MTgtLjM0N2wtLjE3NC0uMy0uNTY1LjA4MS0uMjY3LjI2Ni0uNDQuMDY0LS4zOTEuMTg0LS4xOS4wOTItLjExNi4xNTUuNTY4LjFcIiBzdHlsZT1cImZpbGw6IzIwNGE4NztmaWxsLW9wYWNpdHk6MC43MTM0NTAzMTI2MTQ0NDA5XCIvPjxwYXRoIGQ9XCJNMTIuNDQ0LDguNzg1bC4yNjMtLjQtLjM5NC0uMy4xMzEuNjkzXCIgc3R5bGU9XCJmaWxsOiMyMDRhODc7ZmlsbC1vcGFjaXR5OjAuNzEzNDUwMzEyNjE0NDQwOVwiLz48cGF0aCBkPVwiTTE2LjE0OSwyNS43ODNBMTEuNTgsMTEuNTgsMCwxLDEsMjcuNzI5LDE0LjIsMTEuNTkzLDExLjU5MywwLDAsMSwxNi4xNDksMjUuNzgzWm0wLTIyLjU0OEExMC45NjgsMTAuOTY4LDAsMSwwLDI3LjExNywxNC4yLDEwLjk4LDEwLjk4LDAsMCwwLDE2LjE0OSwzLjIzNVpcIiBzdHlsZT1cIm9wYWNpdHk6MC4zOTU2MDQ0MDE4MjY4NTg1O2lzb2xhdGlvbjppc29sYXRlO2ZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTUuNTQxLDEwLjI0MWE0LjExNSw0LjExNSwwLDEsMCw2LjYzNi00Ljg2NmgwQTQuMTE1LDQuMTE1LDAsMCwwLDUuNTQsMTAuMjRaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk03LjgzNiw4LjU1OGExLjI2OCwxLjI2OCwwLDEsMCwyLjA0Ni0xLjVoMGExLjI2OCwxLjI2OCwwLDAsMC0yLjA0NiwxLjVaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNy45NTIsMjQuOGE1LjMzNyw1LjMzNywwLDEsMCw4LjYwNy02LjMxMnYwQTUuMzM3LDUuMzM3LDAsMCwwLDE3Ljk1LDI0LjhaXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0yMC45MjgsMjIuNjE2YTEuNjQ1LDEuNjQ1LDAsMSwwLDIuNjUzLTEuOTQ2aDBhMS42NDUsMS42NDUsMCwwLDAtMi42NTMsMS45NDZaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk00Ljg1OSwxOC40OTNBNC4xMTUsNC4xMTUsMCwxLDAsMTEuNSwxMy42MjZoMGE0LjExNSw0LjExNSwwLDAsMC02LjYzNiw0Ljg2NlpcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48cGF0aCBkPVwiTTcuMTU0LDE2LjgwOWExLjI2OCwxLjI2OCwwLDEsMCwyLjA0Ni0xLjVoMGExLjI2OCwxLjI2OCwwLDAsMC0yLjA0NiwxLjVaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xMi40MDgsMTAuMjY5QTQuNDQxLDQuNDQxLDAsMSwwLDE5LjU3LDUuMDE2aDBhNC40NDEsNC40NDEsMCwxLDAtNy4xNjIsNS4yNTNaXCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk0xNC44ODUsOC40NTJhMS4zNjksMS4zNjksMCwxLDAsMi4yMDgtMS42MTloMGExLjM2OSwxLjM2OSwwLDEsMC0yLjIwOCwxLjYxOVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTEyLjY4LDI2LjIzOGEzLjgzLDMuODMsMCwwLDEtMi45MDktMS4wODdjLTEuMTMzLTEuMjEtMS4yLTMuMjU1LS4yLTUuNzU3YTIxLjU0MiwyMS41NDIsMCwwLDEsNS4zMDctNy4zMjZDMjAuMDY0LDcuMjE1LDI1Ljk0NSw1LjM1NiwyOC4yNyw3LjgzOWMxLjEzMywxLjIxMSwxLjIsMy4yNTUuMiw1Ljc1N2EyMS41NTMsMjEuNTUzLDAsMCwxLTUuMzA4LDcuMzI2QTIxLjU1MSwyMS41NTEsMCwwLDEsMTUuNSwyNS43MzMsOS4yMjksOS4yMjksMCwwLDEsMTIuNjgsMjYuMjM4Wk0yNS4zNDIsNy4yOGMtMi43LDAtNi42LDEuOTA4LTEwLjEsNS4xODNBMjEsMjEsMCwwLDAsMTAuMDcxLDE5LjZjLS45MjEsMi4zLS44ODcsNC4xMzguMDk0LDUuMTg3czIuODE3LDEuMiw1LjE2OS40MzdhMjEsMjEsMCwwLDAsNy40Ni00LjY5MiwyMSwyMSwwLDAsMCw1LjE3NS03LjEzMmMuOTIxLTIuMy44ODgtNC4xMzgtLjA5NS01LjE4N0EzLjM0LDMuMzQsMCwwLDAsMjUuMzQyLDcuMjhaXCIgc3R5bGU9XCJmaWxsOnVybCgjZylcIi8+PHBhdGggZD1cIk0yMS42ODEsMjIuMDk0YTIwLjYzMywyMC42MzMsMCwwLDEtOS4zMzktMi43NTlDNi4xLDE1Ljk1LDIuNDczLDEwLjk1Nyw0LjA5NCw3Ljk2OGMuNzktMS40NTgsMi43LTIuMTc1LDUuNC0yLjAxMkEyMS41NDIsMjEuNTQyLDAsMCwxLDE4LjEyLDguNjc0YTIxLjU0NSwyMS41NDUsMCwwLDEsNi45ODcsNS43NDZjMS42LDIuMTY3LDIuMDUxLDQuMTYzLDEuMjYxLDUuNjIxQzI1LjYyMiwyMS40MTYsMjMuOTE1LDIyLjA5NCwyMS42ODEsMjIuMDk0Wk04Ljc1OSw2LjQ3NGMtMi4xLDAtMy41NzIuNjEyLTQuMTksMS43NTFDMy4xMTcsMTAuOSw2LjcyLDE1LjY3NCwxMi42LDE4Ljg2czExLjg0MywzLjYsMTMuMjk0LjkyNGMuNjg1LTEuMjYzLjI1MS0zLjA1NC0xLjIyLTUuMDQyYTIxLDIxLDAsMCwwLTYuODEtNS41OTNBMjEsMjEsMCwwLDAsOS40NTksNi41UTkuMSw2LjQ3NCw4Ljc1OSw2LjQ3NFpcIiBzdHlsZT1cImZpbGw6dXJsKCNoKVwiLz48cGF0aCBkPVwiTTEwLDI0LjA3OGEzLjc1NywzLjc1NywwLDAsMS0yLjg1MS0xLjA2NWMtMS4xMS0xLjE4Ny0xLjE4MS0zLjE4OS0uMi01LjYzOWEyMS4wNjIsMjEuMDYyLDAsMCwxLDUuMTg5LTcuMTYzYzUuMDczLTQuNzQ3LDEwLjgzLTYuNTYzLDEzLjEtNC4xMzJoMGMyLjI3NSwyLjQzMS4wODMsOC4wNTMtNC45OSwxMi44YTIxLjA1OSwyMS4wNTksMCwwLDEtNy40OTEsNC43QTkuMDI0LDkuMDI0LDAsMCwxLDEwLDI0LjA3OFpNMjIuMzczLDUuNTUzYy0yLjYzLDAtNi40MzksMS44NjQtOS44NTYsNS4wNjJBMjAuNSwyMC41LDAsMCwwLDcuNDYzLDE3LjU4Yy0uOSwyLjIzOS0uODY2LDQuMDM0LjA5LDUuMDU1czIuNzQ1LDEuMTcyLDUuMDM4LjQyNGEyMC41MTMsMjAuNTEzLDAsMCwwLDcuMjg0LTQuNTgyYzQuNzY2LTQuNDYsNi45OTQtOS44NTMsNC45NjUtMTIuMDJoMEEzLjI1NiwzLjI1NiwwLDAsMCwyMi4zNzMsNS41NTNaXCIgc3R5bGU9XCJmaWxsOnVybCgjaSlcIi8+PHBhdGggZD1cIk0xNy41MTIsMTkuNDEzYy0uODYsMC0xLjc0OC0uMDQzLTIuNjU5LS4xMzNDNy43ODQsMTguNTg0LDIuNTA3LDE1LjM4OCwyLjg0LDEyaDBjLjMzMy0zLjM4Myw2LjEzMy01LjQ5LDEzLjItNC43OTFzMTIuMzQ1LDMuODkyLDEyLjAxMiw3LjI3NUMyNy43NjMsMTcuNDM2LDIzLjMyNCwxOS40MTMsMTcuNTEyLDE5LjQxM1pNMy4zNzgsMTIuMDU3Yy0uMywzLjAzMSw0Ljg3Myw2LjAzLDExLjUyOCw2LjY4NnMxMi4zMTItMS4yNzcsMTIuNjExLTQuMzA4UzIyLjY0NCw4LjQwNiwxNS45ODgsNy43NSwzLjY3Nyw5LjAyNywzLjM3OCwxMi4wNTdaXCIgc3R5bGU9XCJmaWxsOnVybCgjailcIi8+PHBhdGggZD1cIk02LjI1MSwyOS45NjZoNi42NzRWMjAuODA5aDIuOTgxTDkuNTQ4LDExLjQzNCwzLjI5NSwyMC43ODJsMi45NTguMDMxWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2spXCIvPjxwYXRoIGQ9XCJNMTIuOTI0LDMwLjA0NUg2LjI1MWEuMDQ5LjA0OSwwLDAsMS0uMDM5LS4wMjNjLS4wMS0uMDE1LS4wMTYtMy4xMzUtLjAxNi0zLjE1NmwwLTUuOTc1LTIuOS0uMDNhLjA2LjA2LDAsMCwxLS4wNTEtLjA0OC4xLjEsMCwwLDEsLjAxMS0uMDg1TDkuNTA4LDExLjM4YS4wNTYuMDU2LDAsMCwxLC4wNDEtLjAyNS4wNS4wNSwwLDAsMSwuMDQuMDI0bDYuMzU3LDkuMzc1YS4xLjEsMCwwLDEsLjAxMS4wODYuMDU5LjA1OSwwLDAsMS0uMDUxLjA0OEgxMi45OHY5LjA3OEMxMi45OCwzMC4wMSwxMi45NTUsMzAuMDQ1LDEyLjkyNCwzMC4wNDVabS02LjYxOC0uMTU4aDYuNTYyVjIwLjgwOWMwLS4wNDQuMDI1LS4wNzkuMDU2LS4wNzloMi44NUw5LjU0OSwxMS41NDksMy40MjQsMjAuN2wyLjgzLjAzYy4wMzEsMCwuMDU1LjAzNi4wNTUuMDc5WlwiIHN0eWxlPVwiZmlsbDojMTgzODY4XCIvPjxwYXRoIGQ9XCJNMTkuMDUzLDIwLjU4N2wtMi45NTguMDMxLDYuMjU0LDkuMzQ4LDYuMzU3LTkuMzc1SDI1LjcyNFYxMS40MzRIMTkuMDUxWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2wpXCIvPjxwYXRoIGQ9XCJNMjUuNzgsMTEuNDM0djkuMDc4aDIuOTI1YS4wNTkuMDU5LDAsMCwxLC4wNTEuMDQ4LjEuMSwwLDAsMS0uMDExLjA4NmwtNi4zNTcsOS4zNzVhLjA1LjA1LDAsMCwxLS4wNC4wMjQuMDU2LjA1NiwwLDAsMS0uMDQxLS4wMjVsLTYuMjU0LTkuMzQ4YS4xLjEsMCwwLDEtLjAxMS0uMDg1LjA2LjA2LDAsMCwxLC4wNTEtLjA0OGwyLjktLjAzLDAtNS45NzVjMC0uMDIxLjAwNi0zLjE0MS4wMTYtMy4xNTZhLjA0OS4wNDksMCwwLDEsLjAzOS0uMDIzaDYuNjc0QzI1Ljc1NSwxMS4zNTUsMjUuNzgsMTEuMzksMjUuNzgsMTEuNDM0Wm0tNi42NzIsOS4xNTNjMCwuMDQzLS4wMjUuMDc5LS4wNTUuMDc5bC0yLjgzLjAzLDYuMTI1LDkuMTU2LDYuMjI2LTkuMTgxaC0yLjg1Yy0uMDMxLDAtLjA1Ni0uMDM1LS4wNTYtLjA3OVYxMS41MTNIMTkuMTA3WlwiIHN0eWxlPVwiZmlsbDojMTgzODY4XCIvPmAsXG5cdFwiSWRyaXNcIjogYDxwYXRoIGQ9XCJNMTMuMzc2LDYuMmMzLjYsMS4xLDQuNSwyLDUuOCw1LjItLjMtNC0xLjktNS42LTUuOC01LjJaXCIgc3R5bGU9XCJmaWxsOiM4YTA4MTlcIi8+PHBhdGggZD1cIk04LjM3NiwxMi40YzIuMy43LDUsMS4zLDYsNS43LjQtNS41LTIuMi01LjgtNi01LjdaXCIgc3R5bGU9XCJmaWxsOiM4YTA4MTlcIi8+PHBhdGggZD1cIk05Ljk3Niw4LjhjMy41LjcsNS43LDEuNyw3LDYuMi4zLTUuOC0yLjktNi40LTctNi4yWlwiIHN0eWxlPVwiZmlsbDojOGEwODE5XCIvPjxwYXRoIGQ9XCJNMTQuNTc2LDJjMTkuMSwxMi40LTQuMiwxMi43LjgsMjcuMWwzLC45Yy04LjMtMTEuMiwxOC40LTE3LTMuOC0yOFpcIiBzdHlsZT1cImZpbGw6IzhhMDgxOVwiLz5gLFxuXHRcIkluaVwiOiBgPHBhdGggZD1cIk0yMy4yNjUsMjQuMzgxbC45LS44OTRjNC4xNjQuMTM2LDQuMjI4LS4wMSw0LjQxMS0uNDM4bDEuMTQ0LTIuNzg1TDI5LjgwNSwyMGwtLjA5My0uMjMxYy0uMDQ5LS4xMjItLjItLjQ4Ni0yLjgtMi45NjVWMTUuNWMzLTIuODksMi45MzYtMy4wMzgsMi43NjUtMy40NjFMMjguNTM4LDkuMjI1Yy0uMTcxLS40MjItLjIzNi0uNTg3LTQuMzctLjQ3NGwtLjktLjkzYTIwLjE2NiwyMC4xNjYsMCwwLDAtLjE0MS00LjEwNmwtLjExNi0uMjYzLTIuOTc0LTEuM2MtLjQzOC0uMi0uNTkyLS4yNzItMy40LDIuNzg2bC0xLjI2Mi0uMDE5Yy0yLjg5MS0zLjA4Ni0zLjAyOC0zLjAzLTMuNDYxLTIuODU1TDkuMTQ5LDMuMTgyYy0uNDMzLjE3NS0uNTg2LjIzNy0uNDE4LDQuNDM3bC0uODkzLjg5Yy00LjE2Mi0uMTM2LTQuMjI2LjAxMi00LjQwNy40MzhMMi4yODUsMTEuNzMzLDIuMTk1LDEybC4wOTQuMjMyYy4wNDkuMTIuMTk0LjQ4LDIuOCwyLjk2MmwwLDEuM2MtMywyLjg5LTIuOTM1LDMuMDM4LTIuNzYzLDMuNDYybDEuMTM4LDIuODE3Yy4xNzQuNDMxLjIzNi41ODQsNC4zNjkuNDc2bC45LjkzNWEyMC4yNDMsMjAuMjQzLDAsMCwwLC4xMzcsNC4xbC4xMTYuMjY1LDIuOTkzLDEuMzA4Yy40MzUuMTgyLjU4Ni4yNDcsMy4zODYtMi44bDEuMjYyLjAxNmMyLjg5NSwzLjA5LDMuMDQzLDMuMDMsMy40NjYsMi44NTlsMi43NTktMS4xMTVDMjMuMjg4LDI4LjY0NCwyMy40NCwyOC41ODMsMjMuMjY1LDI0LjM4MVpNMTEuNDA3LDE3Ljg1N2E0Ljk1Nyw0Ljk1NywwLDEsMSw2LjQ4OCwyLjgyNEE1LjAxNCw1LjAxNCwwLDAsMSwxMS40MDcsMTcuODU3WlwiIHN0eWxlPVwiZmlsbDojOTliOGM0XCIvPmAsXG5cdFwiSW9cIjogYDxwYXRoIGQ9XCJNMiwyLjg4N0g3LjA3NVY3LjUxSDJabS4wNTIsNi44M0g3LjA0VjI4LjYyNkgyLjA1MlpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTEzLjI3MSwyNi40NTRhOS43OTEsOS43OTEsMCwwLDEtMi42MTYtNy4xNzgsMTAuMTQ4LDEwLjE0OCwwLDAsMSwyLjYxNi03LjM0Myw5LjMyMSw5LjMyMSwwLDAsMSw3LjA0Ny0yLjcyLDkuMzQsOS4zNCwwLDAsMSw3LjA3NSwyLjcyQTEwLjE2OCwxMC4xNjgsMCwwLDEsMzAsMTkuMjc2YTkuODA5LDkuODA5LDAsMCwxLTIuNjA3LDcuMTc4LDkuNDU2LDkuNDU2LDAsMCwxLTcuMDc1LDIuNjU5QTkuNDM2LDkuNDM2LDAsMCwxLDEzLjI3MSwyNi40NTRabTEwLjQzNi0yLjk3MmE2LjcsNi43LDAsMCwwLDEuMTY2LTQuMjU4LDYuOTQzLDYuOTQzLDAsMCwwLTEuMTY2LTQuMzU0LDQuMDQ3LDQuMDQ3LDAsMCwwLTMuMzg5LTEuNDg2LDQuMDIyLDQuMDIyLDAsMCwwLTMuMzgsMS40ODYsNi45OTEsNi45OTEsMCwwLDAtMS4xNTYsNC4zNTQsNi43NDQsNi43NDQsMCwwLDAsMS4xNTYsNC4yNTgsNC4wNTMsNC4wNTMsMCwwLDAsMy4zOCwxLjQ2QTQuMDc4LDQuMDc4LDAsMCwwLDIzLjcwNywyMy40ODJaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+YCxcblx0XCJKYXZhXCI6IGA8cGF0aCBkPVwiTTEyLjMyNSwyMy42NTRzLTEuMDcuNjIyLjc2MS44MzNhMTYuMDIzLDE2LjAyMywwLDAsMCw1LjgtLjI0NiwxMC4wODgsMTAuMDg4LDAsMCwwLDEuNTQxLjc1MmMtNS40ODEsMi4zNDktMTIuNDA1LS4xMzYtOC4xLTEuMzM5XCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+PHBhdGggZD1cIk0xMS42NTYsMjAuNTg4cy0xLjIuODg4LjYzMywxLjA3OGEyMi42MTgsMjIuNjE4LDAsMCwwLDcuNDgxLS4zNTksMy4zMiwzLjMyLDAsMCwwLDEuMTUyLjdjLTYuNjI3LDEuOTM4LTE0LjAwOS4xNTMtOS4yNjYtMS40MjFcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTE3LjMsMTUuMzg4YTIuMDUxLDIuMDUxLDAsMCwxLS4zNTUsMi45NTRzMy40MjktMS43NywxLjg1NC0zLjk4N2MtMS40NzEtMi4wNjctMi42LTMuMDk1LDMuNTA4LTYuNjM2LDAsMC05LjU4NiwyLjM5NC01LjAwNyw3LjY2OVwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMjQuNTUyLDI1LjkyMXMuNzkyLjY1Mi0uODcyLDEuMTU3Yy0zLjE2NC45NTgtMTMuMTY4LDEuMjQ4LTE1Ljk0OC4wMzgtMS0uNDM1Ljg3NC0xLjAzOCwxLjQ2NC0xLjE2NGEzLjgsMy44LDAsMCwxLC45NjYtLjEwOGMtMS4xMTEtLjc4My03LjE4MSwxLjUzNy0zLjA4MywyLjIsMTEuMTc2LDEuODEyLDIwLjM3Mi0uODE2LDE3LjQ3My0yLjEyNFwiIHN0eWxlPVwiZmlsbDojNTM4MmExXCIvPjxwYXRoIGQ9XCJNMTIuODQsMTcuNDEycy01LjA4OSwxLjIwOS0xLjgsMS42NDhhMzguMjI1LDM4LjIyNSwwLDAsMCw2LjczMS0uMDcyYzIuMTA2LS4xNzgsNC4yMjEtLjU1NSw0LjIyMS0uNTU1YTguOTM0LDguOTM0LDAsMCwwLTEuMjguNjg1Yy01LjE2OCwxLjM1OS0xNS4xNTEuNzI3LTEyLjI3Ny0uNjYzYTkuNjI5LDkuNjI5LDAsMCwxLDQuNDA3LTEuMDQyXCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+PHBhdGggZD1cIk0yMS45NjksMjIuNTE1YzUuMjUzLTIuNzMsMi44MjQtNS4zNTMsMS4xMjktNWEzLjkzMiwzLjkzMiwwLDAsMC0uNi4xNjEuOTU3Ljk1NywwLDAsMSwuNDQ5LS4zNDZjMy4zNTQtMS4xNzksNS45MzMsMy40NzgtMS4wODMsNS4zMjJhLjQ1OC40NTgsMCwwLDAsLjEwNi0uMTM4XCIgc3R5bGU9XCJmaWxsOiM1MzgyYTFcIi8+PHBhdGggZD1cIk0xOC44LDJzMi45MDksMi45MS0yLjc1OSw3LjM4NmMtNC41NDYsMy41OS0xLjAzNyw1LjYzNywwLDcuOTc1LTIuNjUzLTIuMzk0LTQuNi00LjUtMy4yOTQtNi40NjNDMTQuNjY0LDguMDE5LDE5Ljk3Niw2LjYyMywxOC44LDJcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz48cGF0aCBkPVwiTTEzLjM1NiwyOS45MTJjNS4wNDIuMzIzLDEyLjc4Ni0uMTc5LDEyLjk2OS0yLjU2NSwwLDAtLjM1My45LTQuMTY3LDEuNjIzYTQxLjQ1OCw0MS40NTgsMCwwLDEtMTIuNzYuMnMuNjQ1LjUzMywzLjk1OS43NDZcIiBzdHlsZT1cImZpbGw6IzUzODJhMVwiLz5gLFxuXHRcIkphdmFTY3JpcHRcIjogYDxyZWN0IHg9XCIyXCIgeT1cIjJcIiB3aWR0aD1cIjI4XCIgaGVpZ2h0PVwiMjhcIiBzdHlsZT1cImZpbGw6I2Y1ZGUxOVwiLz48cGF0aCBkPVwiTTIwLjgwOSwyMy44NzVhMi44NjYsMi44NjYsMCwwLDAsMi42LDEuNmMxLjA5LDAsMS43ODctLjU0NSwxLjc4Ny0xLjMsMC0uOS0uNzE2LTEuMjIyLTEuOTE2LTEuNzQ3bC0uNjU4LS4yODJjLTEuOS0uODA5LTMuMTYtMS44MjItMy4xNi0zLjk2NCwwLTEuOTczLDEuNS0zLjQ3NiwzLjg1My0zLjQ3NmEzLjg4OSwzLjg4OSwwLDAsMSwzLjc0MiwyLjEwN0wyNSwxOC4xMjhBMS43ODksMS43ODksMCwwLDAsMjMuMzExLDE3YTEuMTQ1LDEuMTQ1LDAsMCwwLTEuMjU5LDEuMTI4YzAsLjc4OS40ODksMS4xMDksMS42MTgsMS42bC42NTguMjgyYzIuMjM2Ljk1OSwzLjUsMS45MzYsMy41LDQuMTMzLDAsMi4zNjktMS44NjEsMy42NjctNC4zNiwzLjY2N2E1LjA1NSw1LjA1NSwwLDAsMS00Ljc5NS0yLjY5MVptLTkuMjk1LjIyOGMuNDEzLjczMy43ODksMS4zNTMsMS42OTMsMS4zNTMuODY0LDAsMS40MS0uMzM4LDEuNDEtMS42NTNWMTQuODU2aDIuNjMxdjguOTgyYzAsMi43MjQtMS42LDMuOTY0LTMuOTI5LDMuOTY0YTQuMDg1LDQuMDg1LDAsMCwxLTMuOTQ3LTIuNFpcIi8+YCxcblx0XCJKU09OXCI6IGA8cGF0aCBkPVwiTTQuMDE0LDE0Ljk3NmEyLjUxLDIuNTEsMCwwLDAsMS41NjctLjUxOEEyLjM3NywyLjM3NywwLDAsMCw2LjM4NiwxMy4xLDE1LjI2MSwxNS4yNjEsMCwwLDAsNi42LDEwLjE1NnEuMDEyLTIuMDg1LjA3NS0yLjc0N2E1LjIzNiw1LjIzNiwwLDAsMSwuNDE4LTEuNjg2LDMuMDI1LDMuMDI1LDAsMCwxLC43NTUtMS4wMThBMy4wNDYsMy4wNDYsMCwwLDEsOSw0LjEyNSw2Ljc2Miw2Ljc2MiwwLDAsMSwxMC41NDQsNGguN1Y1Ljk2aC0uMzg3YTIuMzM4LDIuMzM4LDAsMCwwLTEuNzIzLjQ2OEEzLjQsMy40LDAsMCwwLDguNzA5LDguNTJhMzYuMDU0LDM2LjA1NCwwLDAsMS0uMTM3LDQuMTMzLDQuNzM0LDQuNzM0LDAsMCwxLS43NjgsMi4wNkE0LjU2Nyw0LjU2NywwLDAsMSw2LjEsMTZhMy44MDksMy44MDksMCwwLDEsMS45OTIsMS43NTQsOC44NjEsOC44NjEsMCwwLDEsLjYxOCwzLjg2NXEwLDIuNDM1LjA1LDIuOUExLjc1NSwxLjc1NSwwLDAsMCw5LjI2NCwyNS43YTIuNjM5LDIuNjM5LDAsMCwwLDEuNTkyLjMzN2guMzg3VjI4aC0uN2E1LjY1NSw1LjY1NSwwLDAsMS0xLjc3My0uMiwyLjk3LDIuOTcsMCwwLDEtMS4zMjQtLjkzLDMuMzUzLDMuMzUzLDAsMCwxLS42ODEtMS42M0EyNC4xNzUsMjQuMTc1LDAsMCwxLDYuNiwyMi4wMDYsMTYuNDY5LDE2LjQ2OSwwLDAsMCw2LjM4NiwxOC45YTIuNDA4LDIuNDA4LDAsMCwwLS44MDUtMS4zNjEsMi40ODksMi40ODksMCwwLDAtMS41NjctLjUyNFpcIiBzdHlsZT1cImZpbGw6I2Y1ZGUxOVwiLz48cGF0aCBkPVwiTTI3Ljk4NiwxNy4wMTFhMi40ODksMi40ODksMCwwLDAtMS41NjcuNTI0LDIuNDA4LDIuNDA4LDAsMCwwLS44MDUsMS4zNjEsMTYuNDY5LDE2LjQ2OSwwLDAsMC0uMjEyLDMuMTA5LDI0LjE3NSwyNC4xNzUsMCwwLDEtLjE2OSwzLjIzNCwzLjM1MywzLjM1MywwLDAsMS0uNjgxLDEuNjMsMi45NywyLjk3LDAsMCwxLTEuMzI0LjkzLDUuNjU1LDUuNjU1LDAsMCwxLTEuNzczLjJoLS43VjI2LjA0aC4zODdhMi42MzksMi42MzksMCwwLDAsMS41OTItLjMzNywxLjc1NSwxLjc1NSwwLDAsMCwuNTA2LTEuMTg2cS4wNS0uNDYyLjA1LTIuOWE4Ljg2MSw4Ljg2MSwwLDAsMSwuNjE4LTMuODY1QTMuODA5LDMuODA5LDAsMCwxLDI1LjksMTZhNC41NjcsNC41NjcsMCwwLDEtMS43LTEuMjg2LDQuNzM0LDQuNzM0LDAsMCwxLS43NjgtMi4wNiwzNi4wNTQsMzYuMDU0LDAsMCwxLS4xMzctNC4xMzMsMy40LDMuNCwwLDAsMC0uNDI1LTIuMDkyLDIuMzM4LDIuMzM4LDAsMCwwLTEuNzIzLS40NjhoLS4zODdWNGguN0E2Ljc2Miw2Ljc2MiwwLDAsMSwyMyw0LjEyNWEzLjA0NiwzLjA0NiwwLDAsMSwxLjE0OS41ODEsMy4wMjUsMy4wMjUsMCwwLDEsLjc1NSwxLjAxOCw1LjIzNiw1LjIzNiwwLDAsMSwuNDE4LDEuNjg2cS4wNjIuNjYyLjA3NSwyLjc0N2ExNS4yNjEsMTUuMjYxLDAsMCwwLC4yMTIsMi45NDcsMi4zNzcsMi4zNzcsMCwwLDAsLjgwNSwxLjM1NSwyLjUxLDIuNTEsMCwwLDAsMS41NjcuNTE4WlwiIHN0eWxlPVwiZmlsbDojZjVkZTE5XCIvPmAsXG5cdFwiSlNPTjVcIjogYDxwYXRoIGQ9XCJNMTIuODE1LDE1LjE2N2wuNjgtNS42NzZoNi40ODl2MmgtNC40TDE1LjMyOSwxMy43YTIuNCwyLjQsMCwwLDEsLjI1Mi0uMTIyLDIuOTYyLDIuOTYyLDAsMCwxLC4zNzQtLjEzLDIuOSwyLjksMCwwLDEsLjQ1OC0uMTA2LDIuODM0LDIuODM0LDAsMCwxLC41MTItLjA0NiwzLjk4MywzLjk4MywwLDAsMSwxLjQ2Ni4yNTIsMi43MzYsMi43MzYsMCwwLDEsMS4wNzYuNzIzLDMuMTY3LDMuMTY3LDAsMCwxLC42NjQsMS4xNjgsNSw1LDAsMCwxLC4yMjgsMS41ODgsNC4xNTcsNC4xNTcsMCwwLDEtLjIzNiwxLjM4NywzLjMwNywzLjMwNywwLDAsMS0xLjksMi4wMjksNC4zLDQuMywwLDAsMS0xLjcxNS4zMTIsNC43NSw0Ljc1LDAsMCwxLTEuNDU4LS4yMjgsNC4wNTQsNC4wNTQsMCwwLDEtMS4yNTItLjY1NiwzLjM1OSwzLjM1OSwwLDAsMS0uODc4LTEuMDQ2LDIuNzg3LDIuNzg3LDAsMCwxLS4zMi0xLjM4MkgxNS4xOGExLjQ1OCwxLjQ1OCwwLDAsMCwuMzkuOTcsMS4zODMsMS4zODMsMCwwLDAsMS41NTguMjA2LDEuMDg5LDEuMDg5LDAsMCwwLC40LS40MTIsMS43NDksMS43NDksMCwwLDAsLjIwNi0uNjE4LDQuMyw0LjMsMCwwLDAsLjA2Mi0uNzQsMi43MDksMi43MDksMCwwLDAtLjA5Mi0uNzQsMS41MDYsMS41MDYsMCwwLDAtLjI4Mi0uNTU4LDEuMjI5LDEuMjI5LDAsMCwwLS41LS4zNDksMS43OCwxLjc4LDAsMCwwLS43MTgtLjEzLDIuMTIxLDIuMTIxLDAsMCwwLS41LjA1NCwxLjgwNSwxLjgwNSwwLDAsMC0uMzgyLjEzOCwxLjMxOCwxLjMxOCwwLDAsMC0uMjc0LjE5LDEuMjgsMS4yOCwwLDAsMC0uMTkuMmwtMi4wNDgtLjQ4MlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNNS45ODUsMjMuMzQzYTQuNDUsNC40NSwwLDAsMS0xLjMxMS0uNTgsMy4yLDMuMiwwLDAsMS0uODQ4LS44MjQsMy4wMTIsMy4wMTIsMCwwLDEtLjQ1OC0xLjAwOCw0Ljg3OSw0Ljg3OSwwLDAsMS0uMTMtMS4xNDN2LTEuNTVhMi4zLDIuMywwLDAsMC0uMDc2LS42MTgsMS4xODQsMS4xODQsMCwwLDAtLjIyMi0uNDY2Ljk2OS45NjksMCwwLDAtLjM4Mi0uMzA2QTEuMzI0LDEuMzI0LDAsMCwwLDIsMTYuNzQ0VjE1LjAxMmExLjA3NCwxLjA3NCwwLDAsMCwuOTM3LS40LDEuODQxLDEuODQxLDAsMCwwLC4zLTEuMXYtMS41NWE0Ljg3OSw0Ljg3OSwwLDAsMSwuMTMtMS4xNDMsMy4wMzcsMy4wMzcsMCwwLDEsLjQ1OC0xLjAwOEEzLjE3LDMuMTcsMCwwLDEsNC42NzEsOWE0LjQ4Miw0LjQ4MiwwLDAsMSwxLjMxMS0uNThsLjQ4LDEuMzQ0YTEuMjIyLDEuMjIyLDAsMCwwLS40ODguMzI4LDEuNzQyLDEuNzQyLDAsMCwwLS4zMDYuNSwyLjUyNCwyLjUyNCwwLDAsMC0uMTYuNjM0LDUuODI3LDUuODI3LDAsMCwwLS4wNDYuNzR2MS41NUEyLjg0NCwyLjg0NCwwLDAsMSw1LjEyNiwxNC45YTIuMzcsMi4zNywwLDAsMS0xLjA3Ni45ODMsMi4zNTYsMi4zNTYsMCwwLDEsMS4wNzYuOTkyLDIuODA4LDIuODA4LDAsMCwxLC4zMzYsMS4zNzR2MS41NWE1LjgyNyw1LjgyNywwLDAsMCwuMDQ2Ljc0LDIuNTg2LDIuNTg2LDAsMCwwLC4xNi42MzQsMS42ODQsMS42ODQsMCwwLDAsLjMwNi41QTEuMjIyLDEuMjIyLDAsMCwwLDYuNDYyLDIyYzAtLjAwNS0uNDc3LDEuMzQ0LS40NzcsMS4zNDRcIiBzdHlsZT1cImZpbGw6Izk5OVwiLz48cGF0aCBkPVwiTTguMjE1LDE5LjM5M2ExLjI4OSwxLjI4OSwwLDAsMSwuMS0uNTEyLDEuMjEyLDEuMjEyLDAsMCwxLC4yOS0uNCwxLjM3MywxLjM3MywwLDAsMSwuNDUtLjI3NCwxLjYzNywxLjYzNywwLDAsMSwuNTgtLjEsMS41NTUsMS41NTUsMCwwLDEsLjU3Mi4xLDEuMjY5LDEuMjY5LDAsMCwxLC40NS4yNzQsMS4wNzcsMS4wNzcsMCwwLDEsLjI5LjQsMS4yOTQsMS4yOTQsMCwwLDEsMCwxLjAyNCwxLjE1MSwxLjE1MSwwLDAsMS0uMjkuNDEyLDEuMzg4LDEuMzg4LDAsMCwxLS40NS4yNjgsMS42MTMsMS42MTMsMCwwLDEtLjU3Mi4xLDEuNTc4LDEuNTc4LDAsMCwxLS41OC0uMSwxLjQwOSwxLjQwOSwwLDAsMS0uNDUtLjI2OCwxLjIyOSwxLjIyOSwwLDAsMS0uMzktLjkyNG0wLTYuMDg4YTEuMjg5LDEuMjg5LDAsMCwxLC4xLS41MTIsMS4yMTIsMS4yMTIsMCwwLDEsLjI5LS40LDEuMzczLDEuMzczLDAsMCwxLC40NS0uMjc0LDEuNjM3LDEuNjM3LDAsMCwxLC41OC0uMSwxLjU1NSwxLjU1NSwwLDAsMSwuNTcyLjEsMS4yNjksMS4yNjksMCwwLDEsLjQ1LjI3NCwxLjA3NywxLjA3NywwLDAsMSwuMjkuNCwxLjI5NCwxLjI5NCwwLDAsMSwwLDEuMDI0LDEuMTUxLDEuMTUxLDAsMCwxLS4yOS40MTIsMS4zODgsMS4zODgsMCwwLDEtLjQ1LjI2OCwxLjYxMywxLjYxMywwLDAsMS0uNTcyLjEsMS41NzgsMS41NzgsMCwwLDEtLjU4LS4xLDEuNDA5LDEuNDA5LDAsMCwxLS40NS0uMjY4LDEuMjI5LDEuMjI5LDAsMCwxLS4zOS0uOTI0XCIgc3R5bGU9XCJmaWxsOiM5OTlcIi8+PHBhdGggZD1cIk0yNC4yNCwyMC4yOTNhMy42NDgsMy42NDgsMCwwLDEtLjEyMi45MjksNC41MzQsNC41MzQsMCwwLDEtLjMzNi44OTEsNC43MDYsNC43MDYsMCwwLDEtLjUuODA3LDQuMDA1LDQuMDA1LDAsMCwxLS42MS42NjRsLTEuMy0uNjFjLjA4MS0uMTczLjE2OC0uMzQ5LjI2LS41MjZhNC44NDYsNC44NDYsMCwwLDAsLjI2OC0uNTU4LDQuNDQzLDQuNDQzLDAsMCwwLC4yMDYtLjY1NiwzLjQwNiwzLjQwNiwwLDAsMCwuMDg0LS44VjE4LjY1NmgyLjA1OWwtLjAwOCwxLjYzNlwiIHN0eWxlPVwiZmlsbDojOTk5XCIvPjxwYXRoIGQ9XCJNMjUuNTM4LDIxLjk5NGExLjI1MSwxLjI1MSwwLDAsMCwuNDg4LS4zMjgsMS43MDcsMS43MDcsMCwwLDAsLjMwNi0uNSwyLjUyNSwyLjUyNSwwLDAsMCwuMTYtLjYzNCw1LjgyNiw1LjgyNiwwLDAsMCwuMDQ2LS43NHYtMS41NWEyLjg0NCwyLjg0NCwwLDAsMSwuMzM2LTEuMzgyLDIuMzY0LDIuMzY0LDAsMCwxLDEuMDg0LS45ODMsMi4zNjQsMi4zNjQsMCwwLDEtMS4wODQtLjk4MywyLjg0NCwyLjg0NCwwLDAsMS0uMzM2LTEuMzgydi0xLjU1YTUuODI3LDUuODI3LDAsMCwwLS4wNDYtLjc0LDIuNTg2LDIuNTg2LDAsMCwwLS4xNi0uNjM0LDEuNjg0LDEuNjg0LDAsMCwwLS4zMDYtLjUsMS4yMjIsMS4yMjIsMCwwLDAtLjQ4OC0uMzI4bC40OC0xLjMzOEE0LjQ1LDQuNDUsMCwwLDEsMjcuMzI5LDlhMy4wOTIsMy4wOTIsMCwwLDEsLjg0OC44MTUsMi44OTIsMi44OTIsMCwwLDEsLjQ1LDEuMDA4LDQuNjA2LDQuNjA2LDAsMCwxLC4xMzgsMS4xNDN2MS41NWEyLjY1NSwyLjY1NSwwLDAsMCwuMDY4LjYyNiwxLjQ0OCwxLjQ0OCwwLDAsMCwuMjIyLjQ3NCwxLjAzNywxLjAzNywwLDAsMCwuMzgyLjMsMS4zNzYsMS4zNzYsMCwwLDAsLjU2NC4xMDZ2MS43MzFhMS4wNzcsMS4wNzcsMCwwLDAtLjk0Ni40MTIsMS44MjgsMS44MjgsMCwwLDAtLjI5LDEuMDg0djEuNTVhNC42MDYsNC42MDYsMCwwLDEtLjEzOCwxLjE0MywyLjkxNSwyLjkxNSwwLDAsMS0uNDUsMS4wMDgsMy4xNTcsMy4xNTcsMCwwLDEtLjg0OC44MjQsNC40ODIsNC40ODIsMCwwLDEtMS4zMTEuNThsLS40OC0xLjM1MlwiIHN0eWxlPVwiZmlsbDojOTk5XCIvPmAsXG5cdFwiSnVsaWFcIjogYDxwYXRoIGQ9XCJNNy40NDgsMjEuOTgzVjEzLjc3NWwtMi40MzIuNjY5djguNzI5YTIuNjYsMi42NiwwLDAsMS0uMTA2LjkyOS4zMzYuMzM2LDAsMCwxLS4zMDguMjM5LjQwNS40MDUsMCwwLDEtLjIxMi0uMDc0LDEuMjgyLDEuMjgyLDAsMCwxLS4yODctLjMsMi44MTMsMi44MTMsMCwwLDAtLjM3Ny0uNDA5Ljg3NC44NzQsMCwwLDAtLjYxMS0uMjA3LDEuMjIsMS4yMiwwLDAsMC0uODEyLjI1NS43ODkuNzg5LDAsMCwwLS4zLjYyN0EuOTA3LjkwNywwLDAsMCwyLjU0MiwyNWEzLjExNSwzLjExNSwwLDAsMCwxLjU2MS4zMTksNy4wNjUsNy4wNjUsMCwwLDAsMS4zNy0uMTIyLDIuMzYxLDIuMzYxLDAsMCwwLDEuMDU3LS40ODMsMi4yOTIsMi4yOTIsMCwwLDAsLjY4LTEuMDE0LDUuMDk0LDUuMDk0LDAsMCwwLC4yMzktMS43MTVaXCIgc3R5bGU9XCJmaWxsOiMyNTI1MjVcIi8+PHBhdGggZD1cIk0xMC44MjUsMTQuMDA4SDguNHY1LjYxOGEyLjI0MSwyLjI0MSwwLDAsMCwuMjE4Ljk3NywyLjQ4OSwyLjQ4OSwwLDAsMCwuNi44LDIuOSwyLjksMCwwLDAsLjg5Mi41MzYsMy4wNDUsMy4wNDUsMCwwLDAsMS4xLjIsMi41NSwyLjU1LDAsMCwwLDEuMDUxLS4yNDQsNC4zNDcsNC4zNDcsMCwwLDAsMS4wMTktLjY0OHYuNzQzSDE1LjcxVjE0LjAwOEgxMy4yODl2NS43NTZhMi43NjQsMi43NjQsMCwwLDEtLjY0OC43MDYsMS4xMzksMS4xMzksMCwwLDEtLjY0OC4yODEsMS4xNTUsMS4xNTUsMCwwLDEtLjQ1Ny0uMDksMS4yNjMsMS4yNjMsMCwwLDEtLjM3Mi0uMjM5LDEuMDYsMS4wNiwwLDAsMS0uMjUtLjM1NiwxLjA5MSwxLjA5MSwwLDAsMS0uMDktLjQ0MVpcIiBzdHlsZT1cImZpbGw6IzI1MjUyNVwiLz48cGF0aCBkPVwiTTE5LjA3NCwyMS45ODNWMTAuMTMybC0yLjQxMS42NjlWMjEuOTgzWlwiIHN0eWxlPVwiZmlsbDojMjUyNTI1XCIvPjxwYXRoIGQ9XCJNMjAuMDM4LDE0LjQ0NHY3LjU0aDIuNDIxVjEzLjc3NVpcIiBzdHlsZT1cImZpbGw6IzI1MjUyNVwiLz48cGF0aCBkPVwiTTI3LjU2OCwxNy44NjN2Mi4zcS0uMzcyLjI3Ni0uNjc0LjQ1N2ExLjE2NSwxLjE2NSwwLDAsMS0uNi4xODEuNDY4LjQ2OCwwLDAsMS0uMjc2LS4wOSwxLDEsMCwwLDEtLjIzNC0uMjM5LDEuMTM4LDEuMTM4LDAsMCwxLS4xNjUtLjM1NiwxLjU3NiwxLjU3NiwwLDAsMS0uMDU4LS40My45NjguOTY4LDAsMCwxLC4xODEtLjU1MiwyLjMwNiwyLjMwNiwwLDAsMSwuNDczLS41LDQuNTcyLDQuNTcyLDAsMCwxLC42NDgtLjQzLDcuNjEyLDcuNjEyLDAsMCwxLC43MDYtLjM0NVpNMzAsMjEuOTgzVjE2YTIuMDgzLDIuMDgzLDAsMCwwLS4xOTEtLjksMS43NzksMS43NzksMCwwLDAtLjU5NS0uNjksMy4wMDYsMy4wMDYsMCwwLDAtMS4wMjUtLjQ0MSw2LjIyNSw2LjIyNSwwLDAsMC0xLjQ4MS0uMTU0LDUuNzM1LDUuNzM1LDAsMCwwLTEuMzI3LjE0OSw0LjYsNC42LDAsMCwwLTEuMS40LDIuMzczLDIuMzczLDAsMCwwLS43NTkuNjExLDEuMjE2LDEuMjE2LDAsMCwwLS4yODEuNzcuOTU4Ljk1OCwwLDAsMCwuMzE5LjczOCwxLjE3OCwxLjE3OCwwLDAsMCwuODI4LjI5MiwxLjM2NCwxLjM2NCwwLDAsMCwuNTQ3LS4xLjguOCwwLDAsMCwuMzM1LS4yNTUuOTg2Ljk4NiwwLDAsMCwuMTY1LS4zNzIsMS45NzgsMS45NzgsMCwwLDAsLjA0OC0uNDM1LDEuMDMxLDEuMDMxLDAsMCwxLC4yMjMtLjY2OS45NzUuOTc1LDAsMCwxLC44LS4yNzYsMS4wMDgsMS4wMDgsMCwwLDEsLjc4MS4zMTksMS41OTQsMS41OTQsMCwwLDEsLjI5MiwxLjA4M3YuNzg2bC0uMjY1LjA2NHEtLjQ4OC4xNDktLjk4OC4zMTN0LS45NjEuMzYxYTcuODg0LDcuODg0LDAsMCwwLS44NjUuNDMsMy41MTEsMy41MTEsMCwwLDAtLjcwNi41MzEsMi4zMTksMi4zMTksMCwwLDAtLjQ3OC42NjksMS45MTgsMS45MTgsMCwwLDAtLjE3NS44MjgsMi4wMzQsMi4wMzQsMCwwLDAsLjE2NS44MjMsMS44NzYsMS44NzYsMCwwLDAsLjQ3My42NTMsMi4yNTUsMi4yNTUsMCwwLDAsLjc0OS40MzUsMi45MDcsMi45MDcsMCwwLDAsLjk5My4xNTksMy42NzksMy42NzksMCwwLDAsLjctLjA1OCwyLjUwOSwyLjUwOSwwLDAsMCwuNTM2LS4xNjUsMi4yMDksMi4yMDksMCwwLDAsLjQzLS4yNXEuMTkxLS4xNDMuMzkzLS4zMTN2LjYzN1pcIiBzdHlsZT1cImZpbGw6IzI1MjUyNVwiLz48Y2lyY2xlIGN4PVwiNi4yMDRcIiBjeT1cIjExLjY3MlwiIHI9XCIxLjVcIiBzdHlsZT1cImZpbGw6IzY2ODJkZlwiLz48cGF0aCBkPVwiTTYuMiwxMy4yODdhMS42MTUsMS42MTUsMCwxLDEsMS42MTUtMS42MTVBMS42MTcsMS42MTcsMCwwLDEsNi4yLDEzLjI4N1ptMC0zYTEuMzg1LDEuMzg1LDAsMSwwLDEuMzg1LDEuMzg1QTEuMzg2LDEuMzg2LDAsMCwwLDYuMiwxMC4yODdaXCIgc3R5bGU9XCJmaWxsOiM0MDYzZDhcIi8+PGNpcmNsZSBjeD1cIjIxLjQxN1wiIGN5PVwiMTEuNjcyXCIgcj1cIjEuNVwiIHN0eWxlPVwiZmlsbDojZDU2MzVjXCIvPjxwYXRoIGQ9XCJNMjEuNDE3LDEzLjI4N2ExLjYxNSwxLjYxNSwwLDEsMSwxLjYxNS0xLjYxNUExLjYxNywxLjYxNywwLDAsMSwyMS40MTcsMTMuMjg3Wm0wLTNBMS4zODUsMS4zODUsMCwxLDAsMjIuOCwxMS42NzIsMS4zODYsMS4zODYsMCwwLDAsMjEuNDE3LDEwLjI4N1pcIiBzdHlsZT1cImZpbGw6I2NiM2MzM1wiLz48Y2lyY2xlIGN4PVwiMjMuMzg1XCIgY3k9XCI4LjI5N1wiIHI9XCIxLjVcIiBzdHlsZT1cImZpbGw6IzYwYWQ1MVwiLz48cGF0aCBkPVwiTTIzLjM4NSw5LjkxMkExLjYxNSwxLjYxNSwwLDEsMSwyNSw4LjMsMS42MTcsMS42MTcsMCwwLDEsMjMuMzg1LDkuOTEyWm0wLTNBMS4zODUsMS4zODUsMCwxLDAsMjQuNzcsOC4zLDEuMzg2LDEuMzg2LDAsMCwwLDIzLjM4NSw2LjkxMlpcIiBzdHlsZT1cImZpbGw6IzM4OTgyNlwiLz48Y2lyY2xlIGN4PVwiMjUuMzU0XCIgY3k9XCIxMS42NzJcIiByPVwiMS41XCIgc3R5bGU9XCJmaWxsOiNhYTc5YzFcIi8+PHBhdGggZD1cIk0yNS4zNTQsMTMuMjg3YTEuNjE1LDEuNjE1LDAsMSwxLDEuNjE1LTEuNjE1QTEuNjE3LDEuNjE3LDAsMCwxLDI1LjM1NCwxMy4yODdabTAtM2ExLjM4NSwxLjM4NSwwLDEsMCwxLjM4NSwxLjM4NUExLjM4NiwxLjM4NiwwLDAsMCwyNS4zNTQsMTAuMjg3WlwiIHN0eWxlPVwiZmlsbDojOTU1OGIyXCIvPmAsXG5cdFwiS290bGluXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIzMTEuMzM2XCIgeTE9XCIxNDUyLjA2NFwiIHgyPVwiMjgzLjM0MlwiIHkyPVwiMTQ4MC4wNThcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMjgxLjQgLTE0NTApXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZTQ0ODU3XCIvPjxzdG9wIG9mZnNldD1cIjAuNDdcIiBzdG9wLWNvbG9yPVwiIzlkNGI5ZFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM2ZDVmYWFcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9rb3RsaW48L3RpdGxlPjxwYXRoIGQ9XCJNMzAsMzBIMlYySDMwTDE2LDE2WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPmAsXG5cdFwiS3VzdG9cIjogYDxyZWN0IHg9XCIwLjU1XCIgeT1cIjIyLjMzOVwiIHdpZHRoPVwiMTUuNDMzXCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNDM5XCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0xNC4zNjMgMTIuNzk3KSByb3RhdGUoLTQ0Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2I4ZDQzMlwiLz48cmVjdCB4PVwiMS4zNzJcIiB5PVwiMTYuMzgyXCIgd2lkdGg9XCI5Ljg1OVwiIGhlaWdodD1cIjIuNzk2XCIgcng9XCIwLjQzOVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMTAuNzI3IDkuNjYzKSByb3RhdGUoLTQ0Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2I4ZDQzMlwiLz48cmVjdCB4PVwiOS4yMzJcIiB5PVwiMjQuMzAxXCIgd2lkdGg9XCI5Ljg1OVwiIGhlaWdodD1cIjIuNzk2XCIgcng9XCIwLjQzOVwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMTQuMDI0IDE3LjU0MSkgcm90YXRlKC00NC45OTkpXCIgc3R5bGU9XCJmaWxsOiNiOGQ0MzJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMzAgMiAyIDIgMzAgMjkuOTk5IDMwIDJcIiBzdHlsZT1cImZpbGw6IzAwNzhkNFwiLz48cG9seWdvbiBwb2ludHM9XCIxMC4yODIgMTAuMjgyIDIxLjcxOCAyMS43MTggMzAgMTMuNDM2IDMwIDIgMTguNTY0IDIgMTAuMjgyIDEwLjI4MlwiIHN0eWxlPVwiZmlsbDojNTliNGQ5XCIvPjxwb2x5Z29uIHBvaW50cz1cIjMwIDI5Ljk5OSAzMCAyIDE2IDE2IDMwIDI5Ljk5OVwiIHN0eWxlPVwiZmlsbDojZmZmO29wYWNpdHk6MC4yMDAwMDAwMDI5ODAyMzIyNDtpc29sYXRpb246aXNvbGF0ZVwiLz48cmVjdCB4PVwiMTYuMjI2XCIgeT1cIjkuMDAxXCIgd2lkdGg9XCIyLjc5NlwiIGhlaWdodD1cIjIuNzk2XCIgcng9XCIwLjYyMlwiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMi4xOTIgMTUuNTA3KSByb3RhdGUoLTQ0Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiMjAuMThcIiB5PVwiNS4wNDhcIiB3aWR0aD1cIjIuNzk2XCIgaGVpZ2h0PVwiMi43OTZcIiByeD1cIjAuNjIyXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDEuNzYyIDE3LjE0Nikgcm90YXRlKC00NC45OTkpXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjIwLjE4XCIgeT1cIjEyLjk1NVwiIHdpZHRoPVwiMi43OTZcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC42MjJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTMuODI5IDE5LjQ2MSkgcm90YXRlKC00NC45OTkpXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjI0LjEzM1wiIHk9XCI5LjAwMlwiIHdpZHRoPVwiMi43OTZcIiBoZWlnaHQ9XCIyLjc5NlwiIHJ4PVwiMC42MjJcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC4xMjQgMjEuMDk5KSByb3RhdGUoLTQ0Ljk5OSlcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIkxhVGVYXCI6IGA8cGF0aCBkPVwiTTExLjMzMywxMy4xMjJjLS4xMjgtMS41NjItLjI0MS0yLjc1Ni0yLjI4Ny0yLjc1Nkg3LjkxdjguNGgyLjE0NXYuNjExbC0zLjA4My0uMDI5LTMuMDgyLjAyOXYtLjYxMUg2LjAzNHYtOC40SDQuODg0Yy0yLjA0NiwwLTIuMTU5LDEuMjA4LTIuMjg3LDIuNzU2SDJsLjI4NC0zLjM2N2g5LjM2MmwuMjg0LDMuMzY3aC0uNlpcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz48cGF0aCBkPVwiTTE5LjI4OSwyMi41M0gxMC40MVYyMS45MmgxLjUwNlYxMy40NjdIMTAuNDF2LS42MTFoOC42MzdsLjQxMiwzLjM2N2gtLjZjLS4yMTMtMS44MzMtLjY4Mi0yLjc1Ni0yLjg1NS0yLjc1NkgxMy43OTFWMTcuMmguODM4YzEuMzY0LDAsMS41MDUtLjYsMS41MDUtMS42NjJoLjZ2My45MzVoLS42YzAtMS4wOC0uMTQyLTEuNjYyLTEuNTA1LTEuNjYyaC0uODM4djQuMTA2aDIuMjE2YzIuNDcyLDAsMy0xLjEwOCwzLjMtMy4yMjVoLjZaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+PHBhdGggZD1cIk0yNy43MjcsMTkuMTg2Yy0uNTQsMC0xLjk2LDAtMi40MTUuMDI5VjE4LjZoMS4xNzlsLTIuNTU3LTMuNTUyLTIuNTI5LDMuMzgxQTQuMSw0LjEsMCwwLDAsMjIuNywxOC42di42MTFjLS4zNTUtLjAyOS0xLjU3Ni0uMDI5LTIuMDE3LS4wMjktLjQsMC0xLjU0OCwwLTEuODc1LjAyOVYxOC42aC4zODNhNy40NTksNy40NTksMCwwLDAsLjgyNC0uMDQzYy41LS4wNDMuNTQtLjA4NS42NjctLjI1NkwyMy41MzYsMTQuNWwtMy4xNTMtNC40MThIMTlWOS40N2MuMzg0LjAyOCwxLjc5LjAyOCwyLjI3My4wMjguNTgyLDAsMS45MTgsMCwyLjQyOS0uMDI4di42MTFIMjIuNTI4bDIuMTE3LDIuOTU1LDIuMDc0LTIuNzg0YTQuMSw0LjEsMCwwLDAtMS4yOTMtLjE3VjkuNDdjLjM1Ni4wMjgsMS41OTEuMDI4LDIuMDMyLjAyOC40LDAsMS41MzQsMCwxLjg2MS0uMDI4di42MTFoLS4zNjlhNS4yNjQsNS4yNjQsMCwwLDAtLjgzOC4wNDNjLS40NjkuMDQzLS41MjYuMDcxLS42NjcuMjU2bC0yLjQsMy4yMUwyOC42MzYsMTguNkgzMHYuNjExQzI5LjY0NSwxOS4xODYsMjguMTgyLDE5LjE4NiwyNy43MjcsMTkuMTg2WlwiIHN0eWxlPVwiZmlsbDojY2ZjZmNmXCIvPmAsXG5cdFwiTGVzc1wiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTMuNjA5XCIgeTE9XCItNDkyLjY4NVwiIHgyPVwiLTMuNjA5XCIgeTI9XCItNDgwLjI3MVwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDE5LjcxMiA1MDIuODkxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMTVcIiBzdG9wLWNvbG9yPVwiIzJhNGY4NFwiLz48c3RvcCBvZmZzZXQ9XCIwLjM4OFwiIHN0b3AtY29sb3I9XCIjMjk0ZTgyXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzE3MmU0ZVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2xlc3M8L3RpdGxlPjxwYXRoIGQ9XCJNMjguNTU5LDIwLjIyNmEyLjQsMi40LDAsMCwxLTIuMzk0LDIuMzk0SDYuMDRhMi40LDIuNCwwLDAsMS0yLjM5NC0yLjM5NFYxMi42QTIuNCwyLjQsMCwwLDEsNi4wNCwxMC4yMDZIMjYuMTY1QTIuNCwyLjQsMCwwLDEsMjguNTU5LDEyLjZaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yNC4zNDksMTYuMjVhMS45NzIsMS45NzIsMCwwLDEsMS41NzgsMS44OTEsMS42OSwxLjY5LDAsMCwxLS42NTMsMS40LDIuOTM0LDIuOTM0LDAsMCwxLTEuODYyLjU1OSw0LjU1OCw0LjU1OCwwLDAsMS0yLjI0MS0uNjE4LDEuOTg2LDEuOTg2LDAsMCwxLC4xNi0uNjY5LDEuODMsMS44MywwLDAsMSwuMzUtLjU3NiwzLjcsMy43LDAsMCwwLDEuNjQ5LjQ5My45NjUuOTY1LDAsMCwwLC41MS0uMTEyLjMzOS4zMzksMCwwLDAsLjE3OC0uM3EwLS4zNTMtLjU0Ni0uNTI5bC0uNjUzLS4yNDdxLTEuNDgyLS41NC0xLjQ4Mi0xLjc2MmExLjc1MywxLjc1MywwLDAsMSwuNjIzLTEuNDE2LDIuNTg3LDIuNTg3LDAsMCwxLDEuNjc4LS42NDgsNS4wOTQsNS4wOTQsMCwwLDEsMS4xNS4xNDcsNC41NTUsNC41NTUsMCwwLDEsMS4wMzIuNDcyLDEuNjY4LDEuNjY4LDAsMCwxLS4xMy43MjIsMS4yMiwxLjIyLDAsMCwxLS4zOC41NTgsNC4yNjEsNC4yNjEsMCwwLDAtMS42Ni0uNDQ2LjU0NC41NDQsMCwwLDAtLjM2Mi4xMDYuMzM4LjMzOCwwLDAsMC0uMTI0LjI3cTAsLjI4Mi40NTEuNDQ2bC43MzYuMjU5WlwiIHN0eWxlPVwiZmlsbDojZjZmNmY2XCIvPjxwYXRoIGQ9XCJNMTkuMSwxNi4yNWExLjk3MiwxLjk3MiwwLDAsMSwxLjU3NywxLjg5MSwxLjY5MSwxLjY5MSwwLDAsMS0uNjUyLDEuNCwyLjkzNywyLjkzNywwLDAsMS0xLjg2Mi41NTksNC41Niw0LjU2LDAsMCwxLTIuMjQxLS42MTgsMS45ODEsMS45ODEsMCwwLDEsLjE2LS42NjksMS44MjEsMS44MjEsMCwwLDEsLjM1LS41NzYsMy43LDMuNywwLDAsMCwxLjY0OS40OTMuOTYzLjk2MywwLDAsMCwuNTEtLjExMi4zNC4zNCwwLDAsMCwuMTc4LS4zcTAtLjM1My0uNTQ2LS41MjlsLS42NTMtLjI0N3EtMS40ODItLjU0LTEuNDgyLTEuNzYyYTEuNzUyLDEuNzUyLDAsMCwxLC42MjMtMS40MTYsMi41ODUsMi41ODUsMCwwLDEsMS42NzctLjY0OCw1LjA4OCw1LjA4OCwwLDAsMSwxLjE1LjE0Nyw0LjU1Miw0LjU1MiwwLDAsMSwxLjAzMi40NzIsMS42NjgsMS42NjgsMCwwLDEtLjEzLjcyMiwxLjIyLDEuMjIsMCwwLDEtLjM4LjU1OCw0LjI2Myw0LjI2MywwLDAsMC0xLjY2MS0uNDQ2LjU0My41NDMsMCwwLDAtLjM2Mi4xMDYuMzM5LjMzOSwwLDAsMC0uMTI0LjI3cTAsLjI4Mi40NTEuNDQ2bC43MzYuMjU5WlwiIHN0eWxlPVwiZmlsbDojZjZmNmY2XCIvPjxwYXRoIGQ9XCJNMTUuMjY0LDE2LjMzM2EyLjgyMiwyLjgyMiwwLDAsMC0uMTcyLTEsMi4yMzksMi4yMzksMCwwLDAtLjQ5Mi0uNzg3LDIuMjgsMi4yOCwwLDAsMC0uNzc3LS41MTcsMi43MzcsMi43MzcsMCwwLDAtMS4wMjYtLjMxNCwyLjgsMi44LDAsMCwwLTEuMTguMzYxLDIuMjU2LDIuMjU2LDAsMCwwLS44My42NDYsMi43NjUsMi43NjUsMCwwLDAtLjQ4Ny45NjksNC40LDQuNCwwLDAsMC0uMTYsMS4yMTYsNS42ODEsNS42ODEsMCwwLDAsLjEzLDEuMjU3LDIuNjI4LDIuNjI4LDAsMCwwLC40NDUsMSwyLjEwNywyLjEwNywwLDAsMCwuODE4LjY1NywyLjkzNSwyLjkzNSwwLDAsMCwxLjI1MS4yNzcsMy45NTIsMy45NTIsMCwwLDAsMi4zMjQtLjcxMiwxLjg2NSwxLjg2NSwwLDAsMC0uNDg0LTEuMDgxLDYuMTg4LDYuMTg4LDAsMCwxLS44NTcuMjYyLDMuMjA4LDMuMjA4LDAsMCwxLS42NTYuMDc5LDEuMDE3LDEuMDE3LDAsMCwxLS44MTUtLjI5LDEuMTg3LDEuMTg3LDAsMCwxLS4yNzEtLjc3aDMuMDgzQTQuNDQ3LDQuNDQ3LDAsMCwwLDE1LjI2NCwxNi4zMzNabS0zLjI0OC4wODFhMi40MzMsMi40MzMsMCwwLDEsLjIxOC0xLC42MzIuNjMyLDAsMCwxLC41NTktLjI2NC42Ni42NiwwLDAsMSwuNTgyLjI4MiwxLjc0OSwxLjc0OSwwLDAsMSwuMTk0Ljg1NnYuMTNIMTIuMDE2WlwiIHN0eWxlPVwiZmlsbDojZjZmNmY2XCIvPjxwYXRoIGQ9XCJNMjkuMTgsMTcuMmExLjYwNSwxLjYwNSwwLDAsMC0uNTMsMS4yNjV2Mi4wNTFhMS44MSwxLjgxLDAsMCwxLS42ODMsMS41NTcsMi44LDIuOCwwLDAsMS0xLjY1NC41NDlsLS4zNzMsMFYyMS41OTRhMS4yNDEsMS4yNDEsMCwwLDAsLjU5NS0uMzM0LDEuMzY5LDEuMzY5LDAsMCwwLC40MTktMS4wNDdWMTguNTU2YTIuNTQ1LDIuNTQ1LDAsMCwxLC4yNTctMS4zMjMsMi41LDIuNSwwLDAsMSwxLjItLjgzOCwyLjUyOCwyLjUyOCwwLDAsMS0xLjMyNC0xLjE3OSwyLjk1NiwyLjk1NiwwLDAsMS0uMTM1LTEuMTY1VjEyLjUzM2ExLjQ1OCwxLjQ1OCwwLDAsMC0uMzY2LTEuMDU0LDEuMTUyLDEuMTUyLDAsMCwwLS42NDgtLjMxNHYtLjk2Yy40NDUsMCwuNjY5LDAsLjkyOCwwYTEuNjc2LDEuNjc2LDAsMCwxLDEuMDIzLjQ0MiwyLDIsMCwwLDEsLjY3MywxLjAwOSwyLjMzLDIuMzMsMCwwLDEsLjA4Ni43djEuNzU3YTEuODQ2LDEuODQ2LDAsMCwwLC41LDEuMzgzLDIuMTEzLDIuMTEzLDAsMCwwLC44NTQuNDc5di43OTRhMS45NDMsMS45NDMsMCwwLDAtLjgyLjQyNlpcIiBzdHlsZT1cImZpbGw6I2Y2ZjZmNjtzdHJva2U6IzQwNDA0MDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yNXB4XCIvPjxwYXRoIGQ9XCJNNS41OTQsMTAuMjA2SDUuMjZhMS42NzMsMS42NzMsMCwwLDAtMS4wMjMuNDQyLDEuNzEsMS43MSwwLDAsMC0uNjczLDEuMDA5LDMuNTMxLDMuNTMxLDAsMCwwLS4wMzguN3YxLjc1N0ExLjg2NywxLjg2NywwLDAsMSwyLjk4MSwxNS41LDIuODQ3LDIuODQ3LDAsMCwxLDIsMTUuOTc3di43OTNhMi41NTIsMi41NTIsMCwwLDEsLjk0Ny40MjYsMS42MzgsMS42MzgsMCwwLDEsLjU3NywxLjI2NXYyLjA1MUExLjc4MSwxLjc4MSwwLDAsMCw0LjE2LDIyLjA3YTIuOCwyLjgsMCwwLDAsMS42NTQuNTVsLjQyMSwwVjIxLjU5NGExLjQ3LDEuNDcsMCwwLDEtLjY0My0uMzM0LDEuMzU1LDEuMzU1LDAsMCwxLS4zNzEtMS4wNDdWMTguNTU3YTIuNTE2LDIuNTE2LDAsMCwwLS4zMDUtMS4zMjMsMi41LDIuNSwwLDAsMC0xLjItLjgzOCwyLjUyOSwyLjUyOSwwLDAsMCwxLjMyNC0xLjE3OCwyLjg1NywyLjg1NywwLDAsMCwuMTgzLTEuMTY1VjEyLjUzNEExLjQ2MiwxLjQ2MiwwLDAsMSw1LjU0LDExLjQ4YTEuMzEzLDEuMzEzLDAsMCwxLC41NzUtLjI3MWwuNDI4LDBWMTAuMjA2SDUuNTk0WlwiIHN0eWxlPVwiZmlsbDojZjZmNmY2O3N0cm9rZTojNDA0MDQwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjI1cHhcIi8+PHBhdGggZD1cIk05LjUzNywxOC41MjloLS4zMmMtLjM0OCwwLS40NzktLjE4My0uNDc5LS41NTFWMTEuMjE5YTEuMjU2LDEuMjU2LDAsMCwwLS4yNjgtLjg1NmMtLjE1LS4xNjQtLjQxMS0uMTYyLS43ODMtLjE2Mkg2Ljk2NGwtLjA4NSwwdjguMTA2YTEuODc1LDEuODc1LDAsMCwwLC4zNTIsMS4yNCwxLjQ0MSwxLjQ0MSwwLDAsMCwxLjE0NS4zOTMsNy44NTksNy44NTksMCwwLDAsMS4yNjktLjExOCwyLjIzLDIuMjMsMCwwLDAsLjAzNi0uNTA5LDIuMjc4LDIuMjc4LDAsMCwwLS4xNDItLjc4MlpcIiBzdHlsZT1cImZpbGw6I2Y2ZjZmNlwiLz5gLFxuXHRcIkxpcXVpZFwiOiBgPHBhdGggZD1cIk0yOS45ODgsMjIuMzcybC0uNzQ4LjA0OGE1LjIwOSw1LjIwOSwwLDAsMS0yLjk5LS42NzEsNy44LDcuOCwwLDAsMC03LjgsMCw1LjI3NSw1LjI3NSwwLDAsMS01LjMuMDFBNy4yNjIsNy4yNjIsMCwwLDAsOS4yNjMsMjAuN2E3LjIyOSw3LjIyOSwwLDAsMC0zLjk0LDEuMDYsNC43NTEsNC43NTEsMCwwLDEtMi40Ny43bC0uODM4LDBjMCwuODg5LS4wMDksMS43MzktLjAxNSwyLjUxNWwuODYxLDBhNy4yMzcsNy4yMzcsMCwwLDAsMy43NS0xLjA1Miw0Ljc2Myw0Ljc2MywwLDAsMSwyLjY1OS0uNyw0LjgzNSw0LjgzNSwwLDAsMSwyLjYzNC43MTgsNy43OTQsNy43OTQsMCwwLDAsNy44LDAsNS4yODcsNS4yODcsMCwwLDEsNS4zMTksMCw3LjcwOSw3LjcwOSwwLDAsMCw0LjQuOTg5TDMwLDI0Ljg4OEMyOS45OTUsMjQuMSwyOS45OTEsMjMuMjQ5LDI5Ljk4OCwyMi4zNzJaXCIgc3R5bGU9XCJmaWxsOiMwMDQ5OTlcIi8+PHBhdGggZD1cIk0yOS45ODMsMTUuNTgxbC0uNzQzLjA0N2E1LjIyNiw1LjIyNiwwLDAsMS0yLjk5LS42NzEsNy44LDcuOCwwLDAsMC03LjgsMCw1LjI3OCw1LjI3OCwwLDAsMS01LjMuMDFBNy4zMTIsNy4zMTIsMCwwLDAsOS4yNjMsMTMuOTFhNy4zLDcuMywwLDAsMC0zLjk0MSwxLjA2LDQuNzQyLDQuNzQyLDAsMCwxLTIuNDY5LjdsLS44MjgsMGMwLC44NDksMCwxLjY5MywwLDIuNTE1bC44NCwwYTcuMjM3LDcuMjM3LDAsMCwwLDMuNzUtMS4wNTIsNC43LDQuNywwLDAsMSwyLjY1OS0uNyw0LjgsNC44LDAsMCwxLDIuNjM0LjcxOCw3Ljc5NCw3Ljc5NCwwLDAsMCw3LjgsMCw1LjI4Nyw1LjI4NywwLDAsMSw1LjMxOSwwLDcuNzA5LDcuNzA5LDAsMCwwLDQuNC45ODlsLjU2OC0uMDM3QzI5Ljk4MywxNy4yNjksMjkuOTgzLDE2LjQyNCwyOS45ODMsMTUuNTgxWlwiIHN0eWxlPVwiZmlsbDojMDA0OTk5XCIvPjxwYXRoIGQ9XCJNMjkuMjQsOS4xMzdhNS4yNTQsNS4yNTQsMCwwLDEtMi45OS0uNjcxLDcuOCw3LjgsMCwwLDAtNy44LDAsNS4yNzUsNS4yNzUsMCwwLDEtNS4zLjAwOUE3LjE2LDcuMTYsMCwwLDAsOS4yNjMsNy40MmE3LjE1OSw3LjE1OSwwLDAsMC0zLjk0LDEuMDU5LDQuNzM4LDQuNzM4LDAsMCwxLTIuNDY5LjdsLS44MzQsMGMwLC44MiwwLDEuNjY0LDAsMi41MTdsLjgzNiwwYTcuMjM3LDcuMjM3LDAsMCwwLDMuNzUtMS4wNTIsNC43MzgsNC43MzgsMCwwLDEsMi42NTktLjcwNiw0LjgxNCw0LjgxNCwwLDAsMSwyLjYzNC43MTksNy43OTEsNy43OTEsMCwwLDAsNy44LDAsNS4yOTMsNS4yOTMsMCwwLDEsNS4zMTksMCw3LjczMiw3LjczMiwwLDAsMCw0LjQuOTg4bC41NjgtLjAzN2MwLS44NTksMC0xLjcuMDA3LTIuNTE2WlwiIHN0eWxlPVwiZmlsbDojMDA0OTk5XCIvPmAsXG5cdFwiTGlzcFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTkyNS43ODVcIiB5MT1cIi0xMzgzLjA3NVwiIHgyPVwiMjMwMi4zNTFcIiB5Mj1cIi0xODY4LjU1N1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuMDQ4LCAwLCAwLCAtMC4wNDUsIC04Mi41MzksIC01NC42NSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM4MzgxYzVcIi8+PHN0b3Agb2Zmc2V0PVwiMC41NjZcIiBzdG9wLWNvbG9yPVwiIzdlNTViM1wiIHN0b3Atb3BhY2l0eT1cIjAuOTk2XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E1MmVjYlwiIHN0b3Atb3BhY2l0eT1cIjAuOTkyXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiMjIxNC4xODdcIiB5MT1cIi0xNzUwLjIyNVwiIHgyPVwiMTkzMC45NzRcIiB5Mj1cIi0xNDA4LjM0MlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuMDU0LCAwLCAwLCAtMC4wNTQsIC05NS4xODgsIC02OC40ODcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNDExZjVkXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzViMmE4NVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX2VtYWNzPC90aXRsZT48cGF0aCBkPVwiTTI5LjM2MywxNkExMy4zNjQsMTMuMzY0LDAsMSwxLDE2LDIuNSwxMy40MzIsMTMuNDMyLDAsMCwxLDI5LjM2MywxNlpcIiBzdHlsZT1cInN0cm9rZS13aWR0aDowLjc1cHg7ZmlsbDp1cmwoI2EpO3N0cm9rZTp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTEuNDA2LDI1LjQ4M2ExOC4xNTcsMTguMTU3LDAsMCwwLDIuNTg3LS4wNDgsNDEuNzI4LDQxLjcyOCwwLDAsMCw0LjUtLjYzOSwzMC42NzEsMzAuNjcxLDAsMCwwLDMuMTMyLS44MzljMS4xNDItLjQyMSwxLjc2NC0uNzc4LDIuMDQzLTEuMjg0YS42Mi42MiwwLDAsMC0uNDQxLS42OTJjLTEuMzQ3LS41NjUtMi45MDgtLjQ2My02LS41MjgtMy40MjctLjExOC00LjU2Ny0uNjkxLTUuMTc0LTEuMTUzLS41ODItLjQ2OS0uMjktMS43NjUsMi4yMDYtMi45MDdhNTQuMjY2LDU0LjI2NiwwLDAsMSw2LjE4NC0xLjczYy0xLjY1OS0uODItNC43NTMtMi4yNjItNS4zODktMi41NzMtLjU1OC0uMjczLTEuNDUxLS42ODQtMS42NDQtMS4xODItLjIxOS0uNDc4LjUxOC0uODg5LjkzLTEuMDA3YTIwLjMsMjAuMywwLDAsMSw0LjktLjY0Nyw0LjMwOCw0LjMwOCwwLDAsMCwxLS4wNjlBMS43NjcsMS43NjcsMCwwLDAsMjEuODc5LDcuOWEyLjc3NSwyLjc3NSwwLDAsMC0zLjI4Ni0xLjgxQzE3LjIyLDYuMzM4LDEzLjkwOCw3LjMsMTMuOTA4LDcuM2M0LjA5My0uMDM1LDQuNzc5LjAzMyw1LjA4NS40NjEuMTgxLjI1My0uMDgyLjYtMS4xNzQuNzc3LTEuMTg5LjE5NC0zLjY1OS40MjgtMy42NTkuNDI4LTIuMzcuMTQxLTQuMDQuMTUtNC41NCwxLjIxLS4zMjcuNjkzLjM0OSwxLjMuNjQ1LDEuNjg4YTEyLjcyOCwxMi43MjgsMCwwLDAsNC4yMjUsMi43Yy40MzguMjA4LDEuNzIzLjYsMS43MjMuNmExMS41MiwxMS41MiwwLDAsMC04LjEsMi4yODdjLTEuODA3LDEuNjcyLTEuMDA4LDMuNjY1LDIuNjk1LDQuODkxYTEyLjc1NSwxMi43NTUsMCwwLDAsNi41MzQuNzcyYzEuOTIyLS4xLDIuMjI0LS4wNDIsMi4yNDQuMTE2LjAyNy4yMjItMi4xMzQuNzczLTIuNzI0Ljk0NC0xLjUuNDMzLTUuNDM2LDEuMzA3LTUuNDU2LDEuMzEyWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiTGl2ZVNjcmlwdFwiOiBgPHBvbHlnb24gcG9pbnRzPVwiNS41MDQgMi4wMDcgOC45ODYgMiA4Ljk4NiAyMS43NDYgMTAuNzU5IDE5Ljk4NyAxMC43NTkgMy43NTUgMTIuNDk3IDMuNzU1IDEyLjQ5NyAxOC4yNCAxNC4yNTMgMTYuNDg3IDE0LjI1MyAzLjc1NSAxNS45OTcgMy43NTUgMTUuOTk3IDE0LjcyOSAxNy43MzUgMTIuOTYyIDE3LjczNSAzLjc1NSAxOS40NjEgMy43NTUgMTkuNDYxIDExLjIyNSAyMS4yNDUgOS40NjEgMjEuMjQ1IDMuNzU1IDIyLjk3MiAzLjc1NSAyMi45NzIgNy43MjMgMjQuNzM4IDUuOTc1IDI0LjczOSAzLjc1NSAyNi40ODMgMy43NTUgMjYuNDgzIDUuNDgyIDI4LjIwOSA1LjQ4MiAyOC4yMDkgNy4yNjcgMjUuOTExIDcuMjY4IDI0LjE4NCA4Ljk5MyAyOC4yMDkgOC45OTMgMjguMjA5IDEwLjcxOSAyMi40MzggMTAuNzE5IDIwLjY5OCAxMi41MDQgMjguMjA5IDEyLjUwNCAyOC4yMDkgMTQuMjMgMTguOTYxIDE0LjIzIDE3LjIwNSAxNi4wMTQgMjguMjA5IDE2LjAxNCAyOC4yMDkgMTcuNzQxIDE1LjQ1NSAxNy43NDEgMTMuNzE1IDE5LjQ5NiAyOC4yMDkgMTkuNDk2IDI4LjIwOSAyMS4yNTIgMTEuOTggMjEuMjUyIDEwLjI0MiAyMi45NzggMjkuOTgyIDIyLjk3OCAyOS45ODkgMjYuNDg5IDguOTg2IDI2LjQ4OSA4Ljk4NiAzMCA1LjUwNCAzMCA1LjUwNCAyNi40ODkgMi4wMTEgMjYuNDg5IDIuMDExIDIyLjk3OCA1LjUwNCAyMi45NzggNS41MDMgMiA1LjUwNCAyLjAwN1wiIHN0eWxlPVwiZmlsbDojMzE3ZWFjXCIvPmAsXG5cdFwiTG9nIGZpbGVcIjogYDxwYXRoIGQ9XCJNMjkuNCwyNy42SDIuNVY0LjVIMjkuNFptLTI1LjktMUgyOC40VjUuNUgzLjVaXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjIuNVwiIHk9XCI1LjVcIiB3aWR0aD1cIjI2LjlcIiBoZWlnaHQ9XCIxLjlcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMTEuMzMzXCIgeT1cIjkuNVwiIHdpZHRoPVwiOC4xNjdcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjExLjMzM1wiIHk9XCIxMi4wODNcIiB3aWR0aD1cIjEyLjVcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjExLjMzM1wiIHk9XCIxNC43NVwiIHdpZHRoPVwiMTAuNjE3XCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCIxMS4zMzNcIiB5PVwiMTcuNTgzXCIgd2lkdGg9XCIxNC4xNjdcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjExLjMzM1wiIHk9XCIyMC41XCIgd2lkdGg9XCI5LjgzNFwiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiMTEuNVwiIHk9XCIyMy4wODNcIiB3aWR0aD1cIjEyLjE2N1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiNS41XCIgeT1cIjkuNVwiIHdpZHRoPVwiNC4zMzNcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjUuNVwiIHk9XCIxMi4wODNcIiB3aWR0aD1cIjQuMzMzXCIgaGVpZ2h0PVwiMVwiIHN0eWxlPVwiZmlsbDojMDBiZDAyXCIvPjxyZWN0IHg9XCI1LjVcIiB5PVwiMTIuMDgzXCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiNS41XCIgeT1cIjE0LjY2N1wiIHdpZHRoPVwiNC4zMzNcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjUuNVwiIHk9XCIxNy4yNVwiIHdpZHRoPVwiNC4zMzNcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+PHJlY3QgeD1cIjUuNVwiIHk9XCIyMC41XCIgd2lkdGg9XCI0LjMzM1wiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6IzAwYmQwMlwiLz48cmVjdCB4PVwiNS41XCIgeT1cIjIzLjA4M1wiIHdpZHRoPVwiNC4zMzNcIiBoZWlnaHQ9XCIxXCIgc3R5bGU9XCJmaWxsOiMwMGJkMDJcIi8+YCxcblx0XCJMT0xDT0RFXCI6IGA8cGF0aCBkPVwiTTIxLjMsMy43M2EzLjk0LDMuOTQsMCwwLDEsMS4wNDEtLjYyLDguNDM1LDguNDM1LDAsMCwxLC41NTYsMy4zODUsMjQuODY1LDI0Ljg2NSwwLDAsMS0uNjQzLDUuMDE5Yy0uMzY4LS4xOC0uNzM2LS4zNjQtMS4xLS41NTRhMTEuNzU0LDExLjc1NCwwLDAsMCwuMjczLTMuNzQ3LDMuMDgsMy4wOCwwLDAsMC0uMjU1LS44NjUsNS4xNDIsNS4xNDIsMCwwLDAtMi4wMTYsMi4wN2MtLjMxOS0uMjQtLjY1Mi0uNDU5LS45ODUtLjY3NkExNS43MTYsMTUuNzE2LDAsMCwxLDIxLjMsMy43M1pcIiBzdHlsZT1cImZpbGw6I2VkZWRlZFwiLz48cGF0aCBkPVwiTTE5LjQ1MSw4LjZhNC41NzQsNC41NzQsMCwwLDEsMS41MDktMS41NjMsNi42ODUsNi42ODUsMCwwLDEsLjA5LDIuNjcxQzIwLjUxNyw5LjM0MywxOS45NzUsOC45ODcsMTkuNDUxLDguNlpcIiBzdHlsZT1cImZpbGw6I2VkZWRlZFwiLz48cGF0aCBkPVwiTTE2LjQ2MSwxMC4wNzZjLS4wMzgtMS4xMzQtLjAzMS0yLjI2OS0uMDI2LTMuNC0uOS40OTMtMS43NTgsMS4wNzEtMi42NDgsMS41ODktLjQ1My4yNy0uOTA4LjUzNi0xLjM2LjgwOC4yMjQtLjE2My40NTctLjMxMi42OS0uNDYyLS44NjEtMS4yMjQtMS45NzEtMi41LTMuNTMtMi43NDhhMTAuOTY0LDEwLjk2NCwwLDAsMC0uMzY1LDUuMTQ3Yy4zMTgtLjE5NS42MzMtLjQuOTYyLS41NzItLjQ3NC4zMTktLjk2NC42MTUtMS40NDYuOTItLjk1Ny42LTEuOTIyLDEuMTkyLTIuODkyLDEuNzc3YTEuMjMyLDEuMjMyLDAsMCwwLS4zOTEuMzJjLS4xLDEuMzk1LS4zNCw0LjM5Mi0uMzQsNC4zOTItLjI1NCwzLjY2OC0uNTIyLDcuMzM2LS44MjYsMTEsNC4wNjIuMzQzLDguMTE4Ljc0MiwxMi4xNzksMS4wNzZDMTYuNDU4LDIzLjMsMTYuNDcyLDE2LjY5LDE2LjQ2MSwxMC4wNzZaXCIgc3R5bGU9XCJmaWxsOiNlZGVkZWRcIi8+PHBhdGggZD1cIk0yMS4xLDIuOTc3QTUuODg0LDUuODg0LDAsMCwxLDIyLjcwNiwyYTEwLjA2NCwxMC4wNjQsMCwwLDEsLjc3Miw0LjYwNiwyNC41OTEsMjQuNTkxLDAsMCwxLS41MDgsNC40NTljMS4yLjg0NiwyLjQzMywxLjY0NSwzLjYxOCwyLjUwOXEuNDQsNi4zOC45MDcsMTIuNzU4Yy4wNjYuODM5LjA5NCwxLjY4LjIxNiwyLjUxMy0zLjAyOS4yNzktNi4wNTcuNTkxLTkuMDg1Ljg4NmExOS4xMzcsMTkuMTM3LDAsMCwwLTIuMTU4LjI3di0uMDgzYy0uMDEtNi42MTQsMC0xMy4yMjctLjAwNy0xOS44NDEtLjAzOC0xLjEzNC0uMDMxLTIuMjY5LS4wMjYtMy40di0uMWMuNDA2LjI5Mi44MjYuNTYyLDEuMjQzLjgzOUExNi4yNzQsMTYuMjc0LDAsMCwxLDIxLjEsMi45NzdabS4yLjc1MmExNS43MTYsMTUuNzE2LDAsMCwwLTMuMTI4LDQuMDExYy4zMzQuMjE3LjY2Ni40MzcuOTg1LjY3NmE1LjE0Miw1LjE0MiwwLDAsMSwyLjAxNi0yLjA3LDMuMDgsMy4wOCwwLDAsMSwuMjU1Ljg2NSwxMS43NTQsMTEuNzU0LDAsMCwxLS4yNzMsMy43NDdjLjM2NC4xOS43MzEuMzc0LDEuMS41NTRhMjQuODY1LDI0Ljg2NSwwLDAsMCwuNjQzLTUuMDE5LDguNDM1LDguNDM1LDAsMCwwLS41NTYtMy4zODVBMy45NCwzLjk0LDAsMCwwLDIxLjMsMy43M1pNMTkuNDUxLDguNmMuNTI0LjM4MywxLjA2Ni43MzksMS42LDEuMTA4YTYuNjg1LDYuNjg1LDAsMCwwLS4wOS0yLjY3MUE0LjU3NCw0LjU3NCwwLDAsMCwxOS40NTEsOC42WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNOS4yMTksNS4wNjJhMy41ODEsMy41ODEsMCwwLDEsMi4yMDUuNzQ4QTEyLjksMTIuOSwwLDAsMSwxMy43ODgsOC4yNmMtLjQ1My4yNy0uOTA4LjUzNi0xLjM2LjgwOC4yMjQtLjE2My40NTctLjMxMi42OS0uNDYyLS44NjEtMS4yMjQtMS45NzEtMi41LTMuNTMtMi43NDhhMTAuOTY0LDEwLjk2NCwwLDAsMC0uMzY1LDUuMTQ3Yy4zMTgtLjE5NS42MzMtLjQuOTYyLS41NzItLjQ3NC4zMTktLjk2NC42MTUtMS40NDYuOTJBMTQuMSwxNC4xLDAsMCwxLDkuMjE5LDUuMDYyWlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNMTAuNTA3LDguNDc2YTIuNDU1LDIuNDU1LDAsMCwxLDEuNTE3Ljg4bC0uMzYuMkEyLjY5LDIuNjksMCwwLDAsMTAuNzM5LDlhMy4zMTgsMy4zMTgsMCwwLDAtLjE2NSwxLjI4MWwtLjM0NC4xMUE3LjAyMSw3LjAyMSwwLDAsMSwxMC41MDcsOC40NzZaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk0xMi4xMzksMTAuNjkzYS40ODcuNDg3LDAsMCwxLC41NDIuMDEsMS41NTIsMS41NTIsMCwwLDEsLjA2Mi42Yy0uMDM5Ljc4NC4wMjQsMS41NzMtLjA3NiwyLjM1NGExLjAxMywxLjAxMywwLDAsMS0xLjAxMi44ODZjLS4yMzMtLjA1LS4yNzgtLjM0MS0uMjc4LS41NDEsMC0uNjc1LjEtMS4zNDcuMDY2LTIuMDI0QTEuMywxLjMsMCwwLDEsMTIuMTM5LDEwLjY5M1ptLjE1LDEuMDg0YS44OTEuODkxLDAsMCwwLC4yNTEtLjg2NkMxMi4yMTgsMTEuMDYxLDExLjksMTEuNTA3LDEyLjI4OSwxMS43NzdaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk0xNC41LDEzLjcyOGExNy42NzEsMTcuNjcxLDAsMCwxLDEuOTI4LS44MjJjLS4wMjQuMDY0LS4wNjkuMTkxLS4wOTIuMjU1LS42NDkuMzU4LTEuMzYuNi0yLjAyMS45MzhhMTIuMTE4LDEyLjExOCwwLDAsMC0zLjIzOCwyLjI0OEE3LjIsNy4yLDAsMCwxLDEwLDE3LjM4MWE0LjE2Niw0LjE2NiwwLDAsMSwuOTgtMS4yNDZBMTIuNzI3LDEyLjcyNywwLDAsMSwxNC41LDEzLjcyOFpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTcuNjI4LDEzLjIzMWEuOTg5Ljk4OSwwLDAsMSwuNTk0LS4xNTIsMTguMTE0LDE4LjExNCwwLDAsMS0uMSwyLjY1NC43MTMuNzEzLDAsMCwxLS44OTIuNjU4LDIxLjEsMjEuMSwwLDAsMSwuMDgyLTIuMjI2QTEuMzgzLDEuMzgzLDAsMCwxLDcuNjI4LDEzLjIzMVptLjE3OS44MzFjLjI2OC0uMTEyLjMxOS0uNDEzLjQxMi0uNjU0QzcuODIsMTMuMzEyLDcuNzc1LDEzLjc4Myw3LjgwNywxNC4wNjJaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk0xMC44MjMsMTcuMDk0YTEzLjkzNCwxMy45MzQsMCwwLDEsNC42MTItMS45NjhjLS4wMS4wNjgtLjAyOS4yMDYtLjAzOS4yNzRhMTQuMjczLDE0LjI3MywwLDAsMC00LjQ3NSwxLjkxNCwyLjYyNiwyLjYyNiwwLDAsMS0uNjgxLjM0M0MxMC4zLDE3LjM1NiwxMC42LDE3LjI0OSwxMC44MjMsMTcuMDk0WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNNS4yNjQsMTcuNTlBNS4xNDQsNS4xNDQsMCwwLDEsOCwxNy4xYTEuNSwxLjUsMCwwLDEsMS4xNDIuNjY1QTYuODU0LDYuODU0LDAsMCwwLDcuNiwxNy4yNzhhNi45NjcsNi45NjcsMCwwLDAtMi40ODQuNTY0WlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPjxwYXRoIGQ9XCJNMTAuNTc4LDE3LjcyNWE5LjU5LDkuNTksMCwwLDEsMy42MS0uNTY2Yy4yNC4wMjEuMzIxLjIuMzEzLjQyNGEzLjIzOCwzLjIzOCwwLDAsMC0xLjk1Ni0uMDksMjEuNjg4LDIxLjY4OCwwLDAsMC0yLjU1Ny42NThDOS45OTUsMTcuODI5LDEwLjM0NSwxNy44MDksMTAuNTc4LDE3LjcyNVpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTkuMjY4LDE3LjY3NmMuMTQ5LS4xNzYuNTMzLS4zMzIuNjY0LS4wNjJhMS4zLDEuMywwLDAsMS0uNTE2Ljk5M0M5LjI2OCwxOC4zMzcsOC45NzMsMTcuOTUyLDkuMjY4LDE3LjY3NlpcIiBzdHlsZT1cImZpbGw6IzhkMjcwMVwiLz48cGF0aCBkPVwiTTUuNzQ0LDE4LjYyOWE1LjksNS45LDAsMCwxLDMuMTgyLS42MThjLS4xODIuMjM1LS40OTMuMTc4LS43NTEuMjA4YTUuNjYzLDUuNjYzLDAsMCwwLTEuNzIuMzNjLS4zNDQuMTI4LS42NjUuMzEtMS4wMi40MDlBLjYuNiwwLDAsMSw1Ljc0NCwxOC42MjlaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk02LjksMTkuMTE0YTkuNjc2LDkuNjc2LDAsMCwxLDIuMi0uODU0Yy0uMS4zLS40NDEuMzM4LS43LjQ0NGE3LjgzOSw3LjgzOSwwLDAsMC0yLjU2NCwxLjQxNUM1LjkzOCwxOS41ODQsNi40ODgsMTkuMzY5LDYuOSwxOS4xMTRaXCIgc3R5bGU9XCJmaWxsOiM4ZDI3MDFcIi8+PHBhdGggZD1cIk0xMS42MzUsMTkuN2EzLjExLDMuMTEsMCwwLDAsMS45MS0xLjM4M2MuMzQ3LS4xLjI3My4yNzUuMjYuNDk0YTIuMDU2LDIuMDU2LDAsMCwxLS45NSwxLjAzNiwxMi4zNjUsMTIuMzY1LDAsMCwxLTEuODI3LDYuNDE5QTIuMzQyLDIuMzQyLDAsMCwxLDguODc5LDI3LjVhMi4yNTEsMi4yNTEsMCwwLDEtMS41MzUtMS40OSwxMC44OTQsMTAuODk0LDAsMCwxLS42OS00LjY2NWMtLjE1Ny0uMTEyLS4zNjktLjE3OS0uNDYtLjM2Mi0uMTMtLjIuMDExLS40MjUuMDQ3LS42MzEuMTkuMTUxLjM0NS4zOTIuNjA2LjQyYTMuNjE3LDMuNjE3LDAsMCwwLDEuODYzLS40LDEuNTg4LDEuNTg4LDAsMCwwLC43MDktLjY2MiwzLjg4MSwzLjg4MSwwLDAsMCwuNDMxLjI2NkE0LjI4LDQuMjgsMCwwLDAsMTEuNjM1LDE5LjdabS0yLjIuODM1YTQuMTMyLDQuMTMyLDAsMCwxLTIuNDYyLjgwOSwxMS4wNDksMTEuMDQ5LDAsMCwwLC4zNTgsMy41MjYsMy4yMjYsMy4yMjYsMCwwLDEsLjktMS4yODIsMi4wNTUsMi4wNTUsMCwwLDEsMi4zLS4yLDIuMywyLjMsMCwwLDEsLjg4NCwxLjE3MiwxNC42NTksMTQuNjU5LDAsMCwwLDEuMDA1LTQuNDg5QTUuMTY3LDUuMTY3LDAsMCwxLDkuNDM1LDIwLjUzMlptLS4zMjksMy4yNmEyLjI3MywyLjI3MywwLDAsMC0xLjUsMS40MzRjLS4xMjMuMjY5LjEuNTE3LjIyNS43MzguMzMxLjQ2Mi43OTUsMSwxLjQzMS44OTNhMi44NjgsMi44NjgsMCwwLDAsMS43NjktMS42QTEuNiwxLjYsMCwwLDAsOS4xMDYsMjMuNzkyWlwiIHN0eWxlPVwiZmlsbDojOGQyNzAxXCIvPmAsXG5cdFwiTHVhXCI6IGA8cGF0aCBkPVwiTTE2LjUsMzBsLS4wMTEtLjMyMWMuNC0uMDE0LjgtLjA0NSwxLjE5LS4wOTRsLjAzOS4zMTlDMTcuMzEyLDI5Ljk1MiwxNi45LDI5Ljk4NCwxNi41LDMwWm0tMS4yMjItLjAxMWMtLjQtLjAyMS0uODE0LS4wNjEtMS4yMTYtLjExOGwuMDQ1LS4zMThjLjM5My4wNTUuNzkzLjA5NCwxLjE4OC4xMTVaTTE4LjkyLDI5LjdsLS4wNjctLjMxNGMuMzg3LS4wODMuNzc2LS4xODQsMS4xNTUtLjNsLjA5NC4zMDdDMTkuNzE0LDI5LjUxMSwxOS4zMTYsMjkuNjE1LDE4LjkyLDI5LjdabS02LjA2My0uMDUzYy0uNC0uMDkxLS43OTEtLjItMS4xNzctLjMyNmwuMS0uMzA2Yy4zNzcuMTIyLjc2NC4yMywxLjE1LjMxOVptOC40LS42NjUtLjEyMS0uM2MuMzY0LS4xNDguNzI4LS4zMTQsMS4wOC0uNDkzbC4wMDYsMCwuMTQ1LjI4NiwwLDBDMjIsMjguNjYxLDIxLjYyNiwyOC44MzEsMjEuMjUzLDI4Ljk4MlptLTEwLjcxOC0uMDg4Yy0uMzc0LS4xNTgtLjc0NS0uMzM1LTEuMS0uNTI0bC4xNS0uMjg0Yy4zNS4xODYuNzEzLjM1OCwxLjA3OC41MTJabTEyLjg5My0xLjAyMS0uMTctLjI3M2MuMzM3LS4yMS42NjgtLjQzNy45ODQtLjY3NWwuMTkzLjI1N0MyNC4xMTEsMjcuNDI1LDIzLjc3MiwyNy42NTgsMjMuNDI4LDI3Ljg3M1pNOC4zNzksMjcuNzUxYy0uMzQxLS4yMi0uNjc2LS40NTktMS0uNzA4bC4yLS4yNTNjLjMxMi4yNDMuNjQuNDc2Ljk3Mi42OTFabTE3LTEuMzQ2LS4yMTUtLjIzOWMuMjk0LS4yNjUuNTgtLjU0Ni44NTEtLjgzNmwuMjM1LjIxOUMyNS45NzIsMjUuODQ2LDI1LjY3OSwyNi4xMzQsMjUuMzc4LDI2LjRaTTYuNDU0LDI2LjI1MmMtLjMtLjI3Ni0uNTg1LS41NjktLjg1Ni0uODdsLjIzOS0uMjE1Yy4yNjUuMjk0LjU0Ny41OC44MzYuODVaTTI3LjA0MSwyNC42MmwtLjI1My0uMmMuMjQ0LS4zMTIuNDc2LS42MzkuNjkyLS45NzJsLjI3LjE3NUMyNy41MjksMjMuOTY2LDI3LjI5LDI0LjMsMjcuMDQxLDI0LjYyWk00LjgyLDI0LjQzOWMtLjI0NC0uMzI0LS40NzYtLjY2Mi0uNjkyLTEuMDA3bC4yNzItLjE3Yy4yMS4zMzcuNDM4LjY2OC42NzYuOTg0Wm0yMy41NDctMS44NjctLjI4NC0uMTUxYy4xODYtLjM1LjM1OC0uNzEzLjUxMy0xLjA3OGwuMy4xMjVDMjguNzM1LDIxLjg0MywyOC41NTgsMjIuMjE0LDI4LjM2OCwyMi41NzJabS0yNC44NDEtLjItLjAwNi0uMDEyYy0uMTgzLS4zNTktLjM1Mi0uNzI4LS41LTEuMWwuMy0uMTIxYy4xNDcuMzYyLjMxMi43MjQuNDkxLDEuMDc0bC4wMDYuMDEyWk0yOS4zMiwyMC4zMjVsLS4zMDYtLjFjLjEyMi0uMzc3LjIzLS43NjQuMzE5LTEuMTVsLjMxMy4wNzJDMjkuNTU1LDE5LjU0MywyOS40NDYsMTkuOTM5LDI5LjMyLDIwLjMyNVpNMi42MDgsMjAuMTA3Yy0uMTItLjM4OC0uMjIzLS43ODYtLjMwOC0xLjE4MmwuMzE0LS4wNjdjLjA4My4zODcuMTg0Ljc3Ni4zLDEuMTU1Wk0yOS44NywxNy45NDZsLS4zMTgtLjA0NWMuMDU2LS4zOTMuMDk0LS43OTMuMTE1LTEuMTg4bC4zMjEuMDE3QzI5Ljk2NywxNy4xMzUsMjkuOTI3LDE3LjU0NCwyOS44NywxNy45NDZaTTIuMSwxNy43MmMtLjA1LS40LS4wODItLjgxMi0uMS0xLjIxOGwuMzIxLS4wMTFjLjAxNC40LjA0Ni44LjA5NCwxLjE5Wm0yNy41ODItMi4yYy0uMDE0LS40LS4wNDUtLjgtLjA5My0xLjE5bC4zMTktLjAzOWMuMDQ5LjQuMDgyLjgxMy4xLDEuMjE4Wk0yLjMzMSwxNS4zLDIuMDEsMTUuMjhjLjAyMS0uNDA1LjA2MS0uODE0LjExNy0xLjIxNmwuMzE4LjA0NUMyLjM5LDE0LjUsMi4zNTIsMTQuOSwyLjMzMSwxNS4zWm0yNy4wNTctMi4xNDRjLS4wODMtLjM4Ny0uMTg0LS43NzYtLjMtMS4xNTVMMjkuNCwxMS45Yy4xMTkuMzg4LjIyMy43ODYuMzA3LDEuMTgzWk0yLjY2MywxMi45MzRsLS4zMTMtLjA3MmMuMDkxLS40LjItLjc5MS4zMjYtMS4xNzdsLjMwNi4xQzIuODU5LDEyLjE2MSwyLjc1MiwxMi41NDgsMi42NjMsMTIuOTM0Wm0yNi4wMjYtMi4wNjJjLS4xNDktLjM2Ni0uMzE1LS43MzItLjUtMS4wODZsLjI4Ni0uMTQ2Yy4xODUuMzYzLjM1NS43MzYuNTA3LDEuMTExWk0zLjQsMTAuNjY1bC0uMy0uMTI1Yy4xNTgtLjM3NC4zMzQtLjc0NS41MjQtMS4xbC4yODQuMTVDMy43MjQsOS45MzcsMy41NTIsMTAuMywzLjQsMTAuNjY1Wk00LjUxMyw4LjU1N2wtLjI3LS4xNzRjLjIyLS4zNDEuNDU4LS42NzYuNzA3LTFsLjI1NC4yQzQuOTYxLDcuOSw0LjcyOCw4LjIyNCw0LjUxMyw4LjU1N1pNNS45NzcsNi42NzZsLS4yMzUtLjIxOWMuMjc2LS4zLjU2OS0uNTg1Ljg3LS44NTdsLjIxNS4yMzlDNi41MzMsNi4xLDYuMjQ3LDYuMzg2LDUuOTc3LDYuNjc2Wm0xLjc3LTEuNi0uMTkzLS4yNTdjLjMyMy0uMjQ0LjY2Mi0uNDc3LDEuMDA3LS42OTJsLjE3LjI3MkM4LjM5NCw0LjYxNCw4LjA2Myw0Ljg0MSw3Ljc0Nyw1LjA3OVptMTUuNzA1LS41NTgtLjAxOC0uMDEyLjE3NS0uMjcuMDE4LjAxMVptLTEuMDQ3LS42MTZjLS4zNS0uMTg2LS43MTMtLjM1OC0xLjA3OC0uNTEybC4xMjUtLjNjLjM3NC4xNTguNzQ1LjMzNCwxLjEuNTI0Wk05Ljc2OSwzLjgxNWwtLjE0Ni0uMjg2LjAxOC0uMDA5Yy4zNTYtLjE4MS43MjQtLjM0OSwxLjA5My0uNWwuMTIxLjNjLS4zNjEuMTQ3LS43Mi4zMTEtMS4wNjguNDg4Wm0xMC40NC0uODM4Yy0uMzc3LS4xMjItLjc2NC0uMjI5LTEuMTUxLS4zMTdsLjA3Mi0uMzEzYy40LjA5MS43OTIuMiwxLjE3OC4zMjVabS04LjIyOS0uMDYtLjA5NC0uMzA3Yy4zODgtLjExOS43ODYtLjIyMywxLjE4Mi0uMzA4bC4wNjcuMzE0QzEyLjc0NywyLjcsMTIuMzU5LDIuOCwxMS45OCwyLjkxN1ptNS45LS40NzNjLS4zOTMtLjA1NS0uNzkzLS4wOTItMS4xODgtLjExM2wuMDE2LS4zMjFjLjQwNS4wMjEuODE0LjA1OSwxLjIxNi4xMTVabS0zLjU3Mi0uMDI2LS4wNC0uMzE5Yy40LS4wNS44MTItLjA4MywxLjIxOC0uMWwuMDEyLjMyMUMxNS4xMDYsMi4zMzcsMTQuNzA1LDIuMzY5LDE0LjMxMiwyLjQxOFpcIiBzdHlsZT1cImZpbGw6Z3JheVwiLz48Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE1Ljk5OFwiIHI9XCIxMC43MDhcIiBzdHlsZT1cImZpbGw6bmF2eVwiLz48Y2lyY2xlIGN4PVwiMjAuNDM1XCIgY3k9XCIxMS41NjJcIiByPVwiMy4xMzZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48Y2lyY2xlIGN4PVwiMjYuNzA4XCIgY3k9XCI1LjI5XCIgcj1cIjMuMTM3XCIgc3R5bGU9XCJmaWxsOm5hdnlcIi8+PHBhdGggZD1cIk0xMy4xLDIxLjM1MnYtLjc5SDkuNjI5VjE0LjMyNmgtLjl2Ny4wMjZIMTMuMVwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTcuOTE2LDIxLjM1MlYxNi4zaC0uOHYyLjc4NWMwLDEuMDMxLS41NCwxLjcwNi0xLjM3OCwxLjcwNkEuOTUuOTUsMCwwLDEsMTQuNywxOS44VjE2LjNoLS44djMuODE3YzAsLjgzOC42MjYsMS4zNzgsMS42MDksMS4zNzhhMS44NjMsMS44NjMsMCwwLDAsMS42ODctLjkyNXYuNzgxaC43MjNcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTIzLjc5MSwyMS4zMzN2LS42MDdhLjY2NC42NjQsMCwwLDEtLjE3My4wMTljLS4yNzksMC0uNDM0LS4xNDUtLjQzNC0uNFYxNy41MzZjMC0uOS0uNjU1LTEuMzc4LTEuOS0xLjM3OC0xLjIyNCwwLTEuOTc2LjQ3Mi0yLjAyNCwxLjYzOGguODFjLjA2Ny0uNjE3LjQzNC0uOSwxLjE4NS0uOS43MjMsMCwxLjEyOC4yNywxLjEyOC43NTJ2LjIxMmMwLC4zMzctLjIuNDgyLS44MzguNTU5YTUuNzYzLDUuNzYzLDAsMCwwLTEuNjE5LjMwOCwxLjMyNywxLjMyNywwLDAsMC0uODg3LDEuMzExYzAsLjkxNi42MzYsMS40NTUsMS42NTgsMS40NTVhMi4zNjMsMi4zNjMsMCwwLDAsMS43MTUtLjc0Mi44NTUuODU1LDAsMCwwLC44MjkuNjY1LDEuOTY3LDEuOTY3LDAsMCwwLC41NDktLjA4N20tMS40MDctMS43MjVhMS4zNjYsMS4zNjYsMCwwLDEtMS41MTMsMS4xODVjLS42MjYsMC0uOTkzLS4yMjItLjk5My0uNzcxLDAtLjUzLjM1Ny0uNzYxLDEuMjE0LS44ODdhNCw0LDAsMCwwLDEuMjkxLS4yNzl2Ljc1MlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiTWFya2Rvd25cIjogYDxyZWN0IHg9XCIyLjVcIiB5PVwiNy45NTVcIiB3aWR0aD1cIjI3XCIgaGVpZ2h0PVwiMTYuMDkxXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiM3NTU4MzhcIi8+PHBvbHlnb24gcG9pbnRzPVwiNS45MDkgMjAuNjM2IDUuOTA5IDExLjM2NCA4LjYzNiAxMS4zNjQgMTEuMzY0IDE0Ljc3MyAxNC4wOTEgMTEuMzY0IDE2LjgxOCAxMS4zNjQgMTYuODE4IDIwLjYzNiAxNC4wOTEgMjAuNjM2IDE0LjA5MSAxNS4zMTggMTEuMzY0IDE4LjcyNyA4LjYzNiAxNS4zMTggOC42MzYgMjAuNjM2IDUuOTA5IDIwLjYzNlwiIHN0eWxlPVwiZmlsbDojNzU1ODM4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIyLjk1NSAyMC42MzYgMTguODY0IDE2LjEzNiAyMS41OTEgMTYuMTM2IDIxLjU5MSAxMS4zNjQgMjQuMzE4IDExLjM2NCAyNC4zMTggMTYuMTM2IDI3LjA0NSAxNi4xMzYgMjIuOTU1IDIwLjYzNlwiIHN0eWxlPVwiZmlsbDojNzU1ODM4XCIvPmAsXG5cdFwiTUFUTEFCXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxNi44MDNcIiB5MT1cIjE2LjYzMVwiIHgyPVwiMTUuMDEzXCIgeTI9XCIyMi40MTFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgMzIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNTEyXCIvPjxzdG9wIG9mZnNldD1cIjAuMjNcIiBzdG9wLWNvbG9yPVwiIzUyM1wiLz48c3RvcCBvZmZzZXQ9XCIwLjM2XCIgc3RvcC1jb2xvcj1cIiM1MzRcIi8+PHN0b3Agb2Zmc2V0PVwiMC41MVwiIHN0b3AtY29sb3I9XCIjNjQ1XCIvPjxzdG9wIG9mZnNldD1cIjAuNjZcIiBzdG9wLWNvbG9yPVwiIzU2OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjg0XCIgc3RvcC1jb2xvcj1cIiMyOWRcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCIyOS43MVwiIHkxPVwiMTguOTgzXCIgeDI9XCIxMS43MVwiIHkyPVwiMTQuNTYzXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wODFcIiBzdG9wLWNvbG9yPVwiI2MzM1wiLz48c3RvcCBvZmZzZXQ9XCIwLjE4OVwiIHN0b3AtY29sb3I9XCIjZGU1MjM5XCIvPjxzdG9wIG9mZnNldD1cIjAuMzEzXCIgc3RvcC1jb2xvcj1cIiNmMDZlM2VcIi8+PHN0b3Agb2Zmc2V0PVwiMC40MjFcIiBzdG9wLWNvbG9yPVwiI2ZhODA0MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiI2ZlODY0M1wiLz48c3RvcCBvZmZzZXQ9XCIwLjU4XCIgc3RvcC1jb2xvcj1cIiNmYTdmNDJcIi8+PHN0b3Agb2Zmc2V0PVwiMC42OTZcIiBzdG9wLWNvbG9yPVwiI2VmNmMzZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjgzM1wiIHN0b3AtY29sb3I9XCIjZGM0YzM3XCIvPjxzdG9wIG9mZnNldD1cIjAuOTE2XCIgc3RvcC1jb2xvcj1cIiNjZjM2MzNcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9tYXRsYWI8L3RpdGxlPjxwYXRoIGQ9XCJNMiwxNy41NWw3Ljk3LTMuMjJhMjAuNywyMC43LDAsMCwxLDIuNzItMi45NWMuNjYtLjM1LDEuOS0uMTYsNC4xNy0yLjk4LDIuMi0yLjc1LDIuOS01LjEsMy45My01LjEsMS42MywwLDIuODMsMy41Miw0LjY1LDguODVBMTE1LjYyOSwxMTUuNjI5LDAsMCwwLDMwLDI0LjEyYy0xLjktMS43Ny0zLjUyLTMuNjgtNS4zNy0zLjYzLTEuNzIuMDQtMy42MywyLjA4LTUuNzIsNC43LTEuNjYsMi4xLTMuODYsMy41NC00LjcyLDMuNTEsMCwwLTIuMjItNi4yOC00LjA4LTcuM2EyLjY0MSwyLjY0MSwwLDAsMC0yLjM5LjJMMiwxNy41NFpcIiBzdHlsZT1cImZpbGw6IzQ5ZFwiLz48cGF0aCBkPVwiTTE5LjgsNC4wMmMtLjY3LjktMS40OCwyLjU1LTIuOTQsNC4zOC0yLjI3LDIuODItMy41LDIuNjMtNC4xNywyLjk4YTE5LjY3NCwxOS42NzQsMCwwLDAtMi43MiwyLjk1bDMuMywyLjQxYzIuOC0zLjgyLDQuMy03Ljk2LDUuNDctMTAuNjRBMTMuNTc5LDEzLjU3OSwwLDAsMSwxOS44LDQuMDJaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yMC44LDMuM2MtMi4xOCwwLTMuNjcsMTEuNDgtMTEuNzIsMTcuODksMi4yNi0uMzcsNC4yMiw1LjI0LDUuMTIsNy41MSw0LS42OCw3LjItOC4zMywxMC40My04LjIxLDEuODUuMDcsMy40NywxLjg2LDUuMzcsMy42M0MyNS42NiwxNSwyMy42MywzLjMsMjAuOCwzLjNaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+YCxcblx0XCJNQVhTY3JpcHRcIjogYDxwYXRoIGQ9XCJNMTQuNCw3LjU2OCwyMC4yMTIsMkg3LjI3M0w0Ljg0OCw3LjUzNmw5LjU1Ny4wMzJaTTQuODQ4LDcuNTM2bDYuODQ0LDIuNkwxNC40LDcuNTY4bS0uMDEzLDMuNjIyLTIuNy0xLjA1M0w1LjI2MywxNi4xbDYuMjg2LDUuODIzLDIuODA4LTEuMUwxNC40LDcuNTY4bTAsMCwxMi44LDguMzc2TDIwLjIxMiwyTTI3LjIsMTUuOTQ0LDE0LjM5MSwxMS4xOW0tLjAzNSw5LjYzNi0uMDMyLDMuNjg1TTIwLjIyOCwzMGwtOC42NzktOC4wNzNMNC44LDI0LjQ2NCw3LjI1NywzMFptMCwwTDI3LjIsMTUuOTQ0LDE0LjMyNSwyNC41MTJNMjcuMiwxNS45NDQsMTQuMzU3LDIwLjgyNlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMWQxZDFiO3N0cm9rZS1taXRlcmxpbWl0OjIyLjkyNTU4NDc5MzA5MDgyO3N0cm9rZS13aWR0aDowLjAyODM0OTk5OTMzODM4ODQ0M3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE0LjM5MSAxMS4xOSAyNy4yIDE1Ljk0NCAxNC40MDUgNy41NjggMTQuMzkxIDExLjE5IDE0LjM5MSAxMS4xOVwiIHN0eWxlPVwiZmlsbDojMTgxYjE3O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI3LjIgMTUuOTQ0IDE0LjM1NyAyMC44MjYgMTQuMzI1IDI0LjUwOSAxNC4zMjYgMjQuNTExIDI3LjIgMTUuOTQ0IDI3LjIgMTUuOTQ0XCIgc3R5bGU9XCJmaWxsOiMxYTFkMWE7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuNDA1IDcuNTY4IDI3LjIgMTUuOTQ0IDIwLjIxMiAyIDE0LjQwNSA3LjU2OCAxNC40MDUgNy41NjhcIiBzdHlsZT1cImZpbGw6IzAwNWY1ZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyNy4yIDE1Ljk0NCAxNC4zMjYgMjQuNTExIDIwLjIyOCAzMCAyNy4yIDE1Ljk0NCAyNy4yIDE1Ljk0NFwiIHN0eWxlPVwiZmlsbDojMDA0MjQyO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE0LjM1NyAyMC44MjYgMjcuMiAxNS45NDQgMTQuMzkxIDExLjE5IDE0LjM1NyAyMC44MjYgMTQuMzU3IDIwLjgyNlwiIHN0eWxlPVwiZmlsbDojMDA1MTUyO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE0LjM1NyAyMC44MjYgMTQuMzkxIDExLjE5IDExLjY5MiAxMC4xMzcgNS4yNjMgMTYuMTA0IDExLjU0OSAyMS45MjcgMTQuMzU3IDIwLjgyNiAxNC4zNTcgMjAuODI2XCIgc3R5bGU9XCJmaWxsOiMwMDY5NmI7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTEuNjkyIDEwLjEzNyAxNC4zOTEgMTEuMTkgMTQuNDA1IDcuNTY4IDExLjY5MiAxMC4xMzcgMTEuNjkyIDEwLjEzN1wiIHN0eWxlPVwiZmlsbDojMWIyNzI1O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE0LjM1NyAyMC44MjYgMTEuNTQ5IDIxLjkyNyAxNC4zMjUgMjQuNTA5IDE0LjM1NyAyMC44MjYgMTQuMzU3IDIwLjgyNlwiIHN0eWxlPVwiZmlsbDojMWMyNjI0O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE0LjMyNSAyNC41MTIgNC44IDI0LjQ2NCA3LjI1NyAzMCAyMC4yMjggMzAgMTQuMzI2IDI0LjUxMSAxNC4zMjUgMjQuNTEyIDE0LjMyNSAyNC41MTJcIiBzdHlsZT1cImZpbGw6IzAwNjQ2NjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCI0Ljg0OCA3LjUzNiAxNC40MDUgNy41NjggMjAuMjEyIDIgNy4yNzMgMiA0Ljg0OCA3LjUzNiA0Ljg0OCA3LjUzNlwiIHN0eWxlPVwiZmlsbDojMDA3NjdhO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE0LjQwNSA3LjU2OCA0Ljg0OCA3LjUzNiAxMS42OTIgMTAuMTM3IDE0LjQwNSA3LjU2OCAxNC40MDUgNy41NjhcIiBzdHlsZT1cImZpbGw6IzFlMzkzODtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxMS41NDkgMjEuOTI3IDQuOCAyNC40NjQgMTQuMzI1IDI0LjUxMiAxNC4zMjUgMjQuNTA5IDExLjU0OSAyMS45MjcgMTEuNTQ5IDIxLjkyN1wiIHN0eWxlPVwiZmlsbDojMjAzMDJlO2ZpbGwtcnVsZTpldmVub2RkXCIvPmAsXG5cdFwiTUVMXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItNjExLjM0OFwiIHkxPVwiLTY3LjQ4OFwiIHgyPVwiLTYwMC4yNzJcIiB5Mj1cIi02NS4zMzVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLjQzNywgMCwgMCwgLTEuNDM3LCA4OTQuNDE3LCAtODIuMjkyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzBmNjA2N1wiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzA1YWJhY1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM1OGJlYzRcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItNjAzLjU5NFwiIHkxPVwiLTc3LjY5OVwiIHgyPVwiLTYwMi4wMTFcIiB5Mj1cIi01OS42MDRcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLjQzNywgMCwgMCwgLTEuNDM3LCA4OTQuNDE3LCAtODIuMjkyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzExN2M4M1wiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzIxYjViNVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM3ZWQ0ZDRcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItNjEyLjc1N1wiIHkxPVwiLTU5LjkwNlwiIHgyPVwiLTYxNi45MzRcIiB5Mj1cIi03Mi43NlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEuNDM3LCAwLCAwLCAtMS40MzcsIDg5NC40MTcsIC04Mi4yOTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjOWFjY2QzXCIvPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjNzJhZWIzXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzMxN2Q3ZlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImRcIiB4MT1cIi02MjEuODUxXCIgeTE9XCItNzQuNTc5XCIgeDI9XCItNjE0Ljg0XCIgeTI9XCItNzIuMzAxXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMS40MzcsIDAsIDAsIC0xLjQzNywgODk0LjQxNywgLTgyLjI5MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiMyMTYyNmVcIi8+PHN0b3Agb2Zmc2V0PVwiMC41XCIgc3RvcC1jb2xvcj1cIiMxNTdjODRcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjMDNhM2E1XCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZVwiIHgxPVwiLTYxNi4zNjlcIiB5MT1cIi02NC40NjlcIiB4Mj1cIi02MjUuMzRcIiB5Mj1cIi03Mi44MzVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLjQzNywgMCwgMCwgLTEuNDM3LCA4OTQuNDE3LCAtODIuMjkyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzBiN2M4MVwiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzA2OGQ5MFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMxNmIxYjFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJmXCIgeDE9XCItNjA4LjA3MlwiIHkxPVwiLTc0LjY3OFwiIHgyPVwiLTYwMy40ODhcIiB5Mj1cIi03MC45NjZcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLjQzNywgMCwgMCwgLTEuNDM3LCA4OTQuNDE3LCAtODIuMjkyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzBhOGE4ZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzBmN2M4MlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMxYTU5NjRcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJnXCIgeDE9XCItNjAxLjEzNFwiIHkxPVwiLTcwLjExM1wiIHgyPVwiLTYwNi4wMDhcIiB5Mj1cIi02Ny4wNjdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLjQzNywgMCwgMCwgLTEuNDM3LCA4OTQuNDE3LCAtODIuMjkyKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzI1NmE3N1wiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzBkOTQ5OVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMwNmEwYTJcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9tYXlhPC90aXRsZT48cGF0aCBkPVwiTTIxLjYsMy40NjJIMzBMMTguNzY3LDI0LjIxMXMtMS44OTMtNS41LTIuNzA2LTcuNDU5XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yMy42NjksMjkuMTE4SDMwVjMuNDYyQzI5Ljk5NSwxNi44NjksMjQuMzYsMjkuMTE4LDIzLjY2OSwyOS4xMThaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xOC43NjcsMjQuMjExSDEzLjU0MUwyLDMuNDYyYzIuMDQ3LS4yNiw2LjEzNS0uNjExLDguMTYtLjc3NlpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTguNjkzLDE2LjAxOUM2Ljk2LDIyLjg2NiwxLjk5NSwyOS4zMiwyLDI5LjMxNGM1Ljc1MiwwLDYuOTkxLS44MzUsNi45OTEtMS4yNzZWMTYuNTRDOC44OSwxNi4zNyw4Ljc5NCwxNi4xOTQsOC42OTMsMTYuMDE5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMiwzLjQ2MlYyOS4zMTRjMy4xNDctNS4yLDQuOTgxLTguNiw2LjYtMTMuNDVDNC42LDguNzk0LDIsMy40NjIsMiwzLjQ2MlpcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48cG9seWxpbmUgcG9pbnRzPVwiMjMuMjMzIDI4LjEwMiAyMy42NjkgMjkuMTE4IDIzLjY2OSAxNS42NDcgMjMuMjMzIDE2LjM3NVwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNMjMuNjQ3LDE1LjY3M3YxMy40bC4wMTYuMDQzYy40NTIsMCw2LjMzMi0xNC41LDYuMzMyLTI1LjY1NkMyOS45OTUsMy40NjIsMjYuNDA2LDEwLjk0NywyMy42NDcsMTUuNjczWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2cpXCIvPmAsXG5cdFwiTW9uZ29EQlwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTY0NS43MzJcIiB5MT1cIjgzOS4xODhcIiB4Mj1cIi02NTQuNTlcIiB5Mj1cIjgzOS4yNVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KC0wLjk3NywgLTAuMzIzLCAtMC4yOSwgMC44NzcsIC0zNzUuOTQ0LCAtOTI4LjI4NylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjIzMVwiIHN0b3AtY29sb3I9XCIjOTk5ODc1XCIvPjxzdG9wIG9mZnNldD1cIjAuNTYzXCIgc3RvcC1jb2xvcj1cIiM5Yjk5NzdcIi8+PHN0b3Agb2Zmc2V0PVwiMC42ODNcIiBzdG9wLWNvbG9yPVwiI2EwOWY3ZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjc2OFwiIHN0b3AtY29sb3I9XCIjYTlhODg5XCIvPjxzdG9wIG9mZnNldD1cIjAuODM3XCIgc3RvcC1jb2xvcj1cIiNiN2I2OWFcIi8+PHN0b3Agb2Zmc2V0PVwiMC44OTZcIiBzdG9wLWNvbG9yPVwiI2M5YzdiMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk0OFwiIHN0b3AtY29sb3I9XCIjZGVkZGNiXCIvPjxzdG9wIG9mZnNldD1cIjAuOTk0XCIgc3RvcC1jb2xvcj1cIiNmOGY2ZWJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmJmOWVmXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiLTY0NC4yODdcIiB5MT1cIjgyMy40MDVcIiB4Mj1cIi02NTcuMDI4XCIgeTI9XCI4NDUuNDc2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoLTAuOTc3LCAtMC4zMjMsIC0wLjI5LCAwLjg3NywgLTM3NS45NDQsIC05MjguMjg3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzQ4YTU0N1wiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzZjkxNDNcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItNjQzLjM4NlwiIHkxPVwiODM5LjQ4NVwiIHgyPVwiLTY1Mi40MThcIiB5Mj1cIjgzMy40MTdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgtMC45NzcsIC0wLjMyMywgLTAuMjksIDAuODc3LCAtMzc1Ljk0NCwgLTkyOC4yODcpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNDFhMjQ3XCIvPjxzdG9wIG9mZnNldD1cIjAuMzUyXCIgc3RvcC1jb2xvcj1cIiM0YmE3NGJcIi8+PHN0b3Agb2Zmc2V0PVwiMC45NTZcIiBzdG9wLWNvbG9yPVwiIzY3YjU1NFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM2OWI2NTVcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9tb25nbzwvdGl0bGU+PHBhdGggZD1cIk0xNi42MiwzMGwtLjc1MS0uMjQ5cy4xLTMuOC0xLjI3NS00LjA2N2MtLjktMS4wNDguMTMzLTQ0Ljc0MSwzLjQyMy0uMTQ5YTIuNzEyLDIuNzEyLDAsMCwwLTEuMzMzLDEuNTIzQTE0LjEsMTQuMSwwLDAsMCwxNi42MiwzMFpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE3LjAyNiwyNi4zMjlhMTMuMjIzLDEzLjIyMywwLDAsMCw1LTEzLjIyNUMyMC41NTYsNi42MTksMTcuMDc1LDQuNDg3LDE2LjcsMy42NzNhOS43OTIsOS43OTIsMCwwLDEtLjgyNS0xLjZsLjI3NywxOC4wNjlTMTUuNTc4LDI1LjY2NCwxNy4wMjYsMjYuMzI5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTUuNDg3LDI2LjU2OVM5LjM2NiwyMi40LDkuNzIsMTUuMDI1QTE1LjU0LDE1LjU0LDAsMCwxLDE1LjIzOSwzLjM3NywxLjcyNSwxLjcyNSwwLDAsMCwxNS44NDYsMmMuMzgxLjgyLjMxOSwxMi4yNDMuMzU5LDEzLjU3OUMxNi4zNiwyMC43NzYsMTUuOTE2LDI1LjU4OCwxNS40ODcsMjYuNTY5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPmAsXG5cdFwibmdpbnhcIjogYDxwYXRoIGQ9XCJNMTUuOTQ4LDJoLjA2NWExMC40MTgsMTAuNDE4LDAsMCwxLC45NzIuNTI4UTIyLjQxNCw1LjY1LDI3Ljg0Myw4Ljc3NGEuNzkyLjc5MiwwLDAsMSwuNDE0Ljc4OGMtLjAwOCw0LjM4OSwwLDguNzc3LS4wMDUsMTMuMTY0YS44MTMuODEzLDAsMCwxLS4zNTYuNTA3cS01Ljc3MywzLjMyNC0xMS41NDcsNi42NDRhLjU4Ny41ODcsMCwwLDEtLjY1Ny4wMzdROS45MTIsMjYuNiw0LjE0MywyMy4yNzRhLjcuNywwLDAsMS0uNC0uNjY2cTAtNi41ODIsMC0xMy4xNjNhLjY5My42OTMsMCwwLDEsLjM4Ny0uNjdROS41NTIsNS42NTcsMTQuOTc0LDIuNTM1Yy4zMjItLjE4NC42MzgtLjM3OS45NzQtLjUzNVwiIHN0eWxlPVwiZmlsbDojMDE5NjM5XCIvPjxwYXRoIGQ9XCJNOC43NjcsMTAuNTM4cTAsNS40MjksMCwxMC44NTlhMS41MDksMS41MDksMCwwLDAsLjQyNywxLjA4NywxLjY0NywxLjY0NywwLDAsMCwyLjA2LjIwNiwxLjU2NCwxLjU2NCwwLDAsMCwuNjg1LTEuMjkzYzAtMi42Mi0uMDA1LTUuMjQsMC03Ljg2cTMuNTgzLDQuMjksNy4xODEsOC41NjhhMi44MzMsMi44MzMsMCwwLDAsMi42Ljc4MiwxLjU2MSwxLjU2MSwwLDAsMCwxLjI1MS0xLjM3MXEuMDA4LTUuNTQxLDAtMTEuMDgxYTEuNTgyLDEuNTgyLDAsMCwwLTMuMTUyLDBjMCwyLjY2Mi0uMDE2LDUuMzIxLDAsNy45ODItMi4zNDYtMi43NjYtNC42NjMtNS41NTYtNy04LjMzMkEyLjgxNywyLjgxNywwLDAsMCwxMC4xNyw5LjAzMywxLjU3OSwxLjU3OSwwLDAsMCw4Ljc2NywxMC41MzhaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJOaW1cIjogYDxwYXRoIGQ9XCJNMTYuMTExLDYuNDA1cy0xLjA3My44NDctMi4xNjcsMS42OWExNS4zNjEsMTUuMzYxLDAsMCwwLTQuNTI3LjY1MWMtMS4xLS43LTIuMDctMS40NjktMi4wNy0xLjQ2OVM2LjUyLDguNyw2LDkuNTM1YTExLjM4MiwxMS4zODIsMCwwLDAtMi4yMzYsMS40ODJDMi45NjEsMTAuNywyLjAzLDEwLjMxLDIsMTAuM2MxLjA2MywyLjE0NSwxLjc3OCw0LjI5MiwzLjcyMiw1LjU4MywzLjEtNC44ODksMTcuNDgtNC40MzksMjAuNjM5LS4wMjhDMjguNCwxNC43ODcsMjkuMiwxMi41LDMwLDEwLjM4Yy0uMDg4LjAyOS0xLjE4MS4zOTUtMS44ODkuNjY1YTExLjQ4OSwxMS40ODksMCwwLDAtMS45ODYtMS41MWMtLjUzNy0uOTg0LTEuMzE5LTIuMzEzLTEuMzE5LTIuMzEzcy0uOTI3LjY4OS0yLDEuNDRhMjEuMjY1LDIxLjI2NSwwLDAsMC00LjY4MS0uNTEyYy0xLS44MjYtMi4wMTQtMS43NDYtMi4wMTQtMS43NDZaXCIgc3R5bGU9XCJmaWxsOiNmM2Q0MDBcIi8+PHBhdGggZD1cIk0zLjEsMTQuODU0bDIuNTU0LDYuMTg1YzQuNDM1LDUuODUsMTUuNzU5LDYuMjU3LDIwLjcuMTEzLDEuMTY4LTIuNjMzLDIuNzQ1LTYuMzMzLDIuNzQ1LTYuMzMzYTEzLjM3OSwxMy4zNzksMCwwLDEtNC42LDMuODY5LDEyLjIxNywxMi4yMTcsMCwwLDEtMi45ODMuNzkzbC01LjQ2NS0yLjgzMi01LjUsMi43NzVhMTUuNjc5LDE1LjY3OSwwLDAsMS0yLjk4My0uNzY0QTE0LjA3NiwxNC4wNzYsMCwwLDEsMy4xLDE0Ljg1NFpcIiBzdHlsZT1cImZpbGw6I2ZmZTk1M1wiLz5gLFxuXHRcIk5peFwiOiBgPHBhdGggZD1cIk0xMywxMS4xMTUsNi4xODMsMjMuNzYsNC41OSwyMC44N2wxLjgzOS0zLjM4Ny0zLjY1MS0uMDFMMiwxNi4wMjlsLjgtMS40NzcsNS4yLjAxOCwxLjg2OC0zLjQ0N1pcIiBzdHlsZT1cImZpbGw6IzdlYmFlNDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTEzLjUyNywyMS4yMjNoMTMuNjRsLTEuNTQxLDIuOTIyLTMuNjU4LS4wMTEsMS44MTcsMy4zODktLjc3OSwxLjQ0OS0xLjU5MywwLTIuNTg0LTQuODI1LTMuNzIyLS4wMDhaXCIgc3R5bGU9XCJmaWxsOiM3ZWJhZTQ7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0yMS40NjcsMTUuNjgyLDE0LjY0NywzLjAzN2wzLjEzNC0uMDMyTDE5LjYsNi40bDEuODM0LTMuMzc5aDEuNTU3TDIzLjc4Niw0LjUsMjEuMTc0LDkuMzA3bDEuODU0LDMuNDU1WlwiIHN0eWxlPVwiZmlsbDojN2ViYWU0O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTAuNTQyLDE2LjMyNGw2LjgyMSwxMi42NDVMMTQuMjI5LDI5bC0xLjgyMS0zLjQtMS44MzQsMy4zOEg5LjAxNmwtLjgtMS40NzZMMTAuODMxLDIyLjcsOC45NzYsMTkuMjQzWlwiIHN0eWxlPVwiZmlsbDojNTI3N2MzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTguNDY0LDEwLjc1MUg0LjgyM0w2LjM2NSw3LjgyOWwzLjY1OC4wMTFMOC4yMDcsNC40NTEsOC45ODYsM2wxLjU5MiwwLDIuNTg0LDQuODI1LDMuNzIyLjAwOFpcIiBzdHlsZT1cImZpbGw6IzUyNzdjMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE5LDIwLjg4OCwyNS44MTcsOC4yNDRsMS41OTMsMi44OUwyNS41NzEsMTQuNTJsMy42NTEuMDFMMzAsMTUuOTc5bC0uOCwxLjQ3Ny01LjItLjAxOC0xLjg2OCwzLjQ0N1pcIiBzdHlsZT1cImZpbGw6IzUyNzdjMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz5gLFxuXHRcIk5TSVNcIjogYDxwYXRoIGQ9XCJNMjcuNDM1LDE2LjAzNywyMi4wMTIsMjEuNDZsNS40MjMsNS40MjNcIiBzdHlsZT1cImZpbGw6IzAwNTc3YlwiLz48cGF0aCBkPVwiTTI2Ljg4NCwxNS41SDE2LjA0OGw1LjQyMyw1LjQyM1wiIHN0eWxlPVwiZmlsbDojMDA3OWFhXCIvPjxwYXRoIGQ9XCJNMjYuODg0LDE0LjcxMiwyMS40NjEsOS4yODlsLTUuNDIzLDUuNDIzXCIgc3R5bGU9XCJmaWxsOiMwMDk2ZDNcIi8+PHBhdGggZD1cIk0yMC41MjgsOS4xMzFIOS42ODNsNS40MjMsNS40MjNNMjcuNDM1LDMuMzI1LDIyLjAxMiw4Ljc0OGw1LjQyMyw1LjQyM1wiIHN0eWxlPVwiZmlsbDojMDFiMGYwXCIvPjxwYXRoIGQ9XCJNMjAuNTI4LDguMzU2LDE1LjEwNSwyLjkzMyw5LjY4Myw4LjM1NlwiIHN0eWxlPVwiZmlsbDojMjdiY2YzXCIvPjxwYXRoIGQ9XCJNMTQuMTcyLDIuNzc1SDMuMzI3TDguNzQ5LDguMlwiIHN0eWxlPVwiZmlsbDojNGZjOWY1XCIvPjxwYXRoIGQ9XCJNNC41NjgsMTUuOTYzLDkuOTkxLDEwLjU0LDQuNTY4LDUuMTE3XCIgc3R5bGU9XCJmaWxsOiM3OTIwMWJcIi8+PHBhdGggZD1cIk0xMC41NDEsMTEuMDkxLDUuMTE5LDE2LjUxM0gxNS45NjRcIiBzdHlsZT1cImZpbGw6I2E0MmQyNlwiLz48cGF0aCBkPVwiTTUuMTE5LDE3LjI4OGw1LjQyMyw1LjQyMyw1LjQyMy01LjQyM1wiIHN0eWxlPVwiZmlsbDojY2MzODJmXCIvPjxwYXRoIGQ9XCJNNC41NjgsMTcuODI5VjI4LjY3NWw1LjQyMy01LjQyM0w4LjQsMjEuNjY1bTEzLjkxNiwxLjJMMTYuOSwxNy40NDdsLTUuNDIzLDUuNDIzXCIgc3R5bGU9XCJmaWxsOiNmMDQ1M2ZcIi8+PHBhdGggZD1cIk0xMS40NzUsMjMuNjQ0LDE2LjksMjkuMDY3bDUuNDIzLTUuNDIzXCIgc3R5bGU9XCJmaWxsOiNmMjYyNWRcIi8+PHBhdGggZD1cIk0xNy44NCwyOS4yMjVIMjguNjg1TDIzLjI2MywyMy44XCIgc3R5bGU9XCJmaWxsOiNmNDdmN2RcIi8+PHBhdGggZD1cIk0yOS44ODksMjkuMzM3bC0xLjY4LTEuNjhWMi4zOTJhLjM3NC4zNzQsMCwwLDAtLjI0My0uMzU1QS4yNjMuMjYzLDAsMCwwLDI3LjgyNywyYS4zNTkuMzU5LDAsMCwwLS4yNzEuMTEyTDIxLjQ3MSw4LjIsMTUuMzg1LDIuMTEyLDE1LjMsMi4wMzdoLS4wMzdBLjMwNy4zMDcsMCwwLDAsMTUuMTA1LDJIMi40YS40MzQuNDM0LDAsMCwwLS4yODkuMTEyQS4zOC4zOCwwLDAsMCwyLDIuMzkyYS4zNTkuMzU5LDAsMCwwLC4xMTIuMjcxbDEuNjgsMS42OFYyOS42MTdhLjM3NC4zNzQsMCwwLDAsLjI0My4zNTVBLjM4Ny4zODcsMCwwLDAsNC4xODUsMzBhLjM1OS4zNTksMCwwLDAsLjI3MS0uMTEyTDEwLjU0MSwyMy44bDYuMDg1LDYuMDg1LjA4NC4wNzVoLjAzN0EuMjU0LjI1NCwwLDAsMCwxNi45LDMwSDI5LjYwOWEuMzk1LjM5NSwwLDAsMCwuMjgtLjY2M1pNMjcuNDM1LDMuMzI1VjE0LjE3MUwyMi4wMTIsOC43NDhsNS40MjMtNS40MjNaTTkuOTkxLDEwLjU0LDQuNTY4LDE1Ljk2M1Y1LjExN0w5Ljk5MSwxMC41NFpNOS42ODMsOS4xMzFIMjAuNTI4bC01LjQyMyw1LjQyM0w5LjY4Myw5LjEzMVptLjg1OSwxLjk2LDUuNDIzLDUuNDIzSDUuMTE5bDUuNDIzLTUuNDIzWk0xNi45LDE3LjQ0N2w1LjQyMyw1LjQyM0gxMS40NzVMMTYuOSwxNy40NDdaTTE2LjA0OCwxNS41SDI2Ljg5M2wtNS40MjMsNS40MjNMMTYuMDQ4LDE1LjVabTUuOTY0LDUuOTY0LDUuNDIzLTUuNDIzVjI2Ljg4M0wyMi4wMTIsMjEuNDZabTQuODcyLTYuNzQ4SDE2LjA0OGw1LjQyMy01LjQyMyw1LjQxMyw1LjQyM1pNMjAuNTI4LDguMzU2SDkuNjgzbDUuNDIzLTUuNDIzLDUuNDIzLDUuNDIzWk0zLjMyNywyLjc3NUgxNC4xNzJMOC43NDksOC4yWm0xLjI0MSwyNS45VjE3LjgyOUw4LjQsMjEuNjY1bDEuNTg3LDEuNTg3TDQuNTY4LDI4LjY3NVptLjU1MS0xMS4zODdIMTUuOTY0bC01LjQyMyw1LjQyM0w1LjExOSwxNy4yODhaTTE2LjksMjkuMDY3bC01LjQyMy01LjQyM0gyMi4zMkwxNi45LDI5LjA2N1ptLjk0My4xNTlMMjMuMjYzLDIzLjhsNS40MjMsNS40MjNaXCIgc3R5bGU9XCJmaWxsOiM0NjQwNDlcIi8+YCxcblx0XCJPYmplY3QgUGFzY2FsXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxNlwiIHkxPVwiLTAuNDQzXCIgeDI9XCIxNlwiIHkyPVwiMjIuMDQyXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wMjFcIiBzdG9wLWNvbG9yPVwiI2ZmMGMxNVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM5YTBjMGZcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9kZWxwaGk8L3RpdGxlPjxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTZcIiByPVwiMTRcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTI3LjU0NSwxNi4yNDNINC45MjRhLjkxNC45MTQsMCwwLDAtMS4wOTIuODJxLjAzMy40MjkuMS44NDlhMTIuNCwxMi40LDAsMCwwLDI0LjUzMiwwcS4wNzUtLjUuMTA4LTEuMDIxQzI4LjQ3OCwxNi41MjMsMjguMjExLDE2LjIwNywyNy41NDUsMTYuMjQzWlwiIHN0eWxlPVwiZmlsbDojZmY2NDQzXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxOC40OCAxMS42NCAyMy43MDcgNy4yNjYgMTkuNzg3IDUuODggMTYgMTEuMDUzXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjE1LjY4IDExLjAyNiAxOC42NCA1Ljg4IDE0Ljg1MyA1Ljg4IDEzLjMwNyAxMS4yOTNcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiMTMuMDQgMTEuMzczIDEzLjYgNi43MDYgMTAuNTg3IDcuOTYgMTEuMDEzIDEyLjc2XCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjEwLjc0NyAxMyA5Ljc4NyA4Ljc2IDcuNzA3IDEwLjg0IDkuNjUzIDE0LjY4XCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuMzg3IDE1LjA1MyA3LjQ5MyAxMi4zNzYgNi42NCAxNC40NjYgOS4wNCAxNi41MTdcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS4wNCAxNi43NTcgNi42NCAxNS4yMTMgNi40OCAxNy40IDkuMiAxOC4zMzNcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWxpbmUgcG9pbnRzPVwiOS4yMjcgMTguODQ2IDYuNjQgMTguMDQgNy4yMjcgMTkuOCA5LjU0NyAxOS44XCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuNzA3IDIwLjA5MyA3LjcwNyAyMC4zODYgOC42MjcgMjEuNzQ2IDEwLjI2NyAyMVwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMjAuMDIzLDEzLjA4OWE2LjYxLDYuNjEsMCwwLDAtNC41My0yQTYuMjkzLDYuMjkzLDAsMCwwLDExLjMsMjIuMDdsNC45NDEuMTI5LTIuMDgtNC4xNlpcIiBzdHlsZT1cImZpbGw6I2VlZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE2LjUsMjIuMzY2bC01LjI2Ny0uMTM4LS4wNDQtLjAzOWE2LjQ1Myw2LjQ1MywwLDAsMSw0LjMtMTEuMjY0LDYuNzg3LDYuNzg3LDAsMCwxLDQuNjQzLDIuMDVsLjEyMy4xMjMtNS45LDQuOTgyWm0tNS4xNC0uNDU1LDQuNjE2LjEyMUwxMy45NjEsMThsNS44MjUtNC45MTlhNi40Myw2LjQzLDAsMCwwLTQuMjkyLTEuODM1LDYuMTMzLDYuMTMzLDAsMCwwLTQuMTMxLDEwLjY2N1pcIiBzdHlsZT1cImZpbGw6I2VlNGIyZVwiLz48cGF0aCBkPVwiTTEyLjAxMywyMC40OTNjLTQuMTczLTUuODEzLDIuMTA5LTguMTcyLDIuNDc4LTguNDUzLjQ1MS0uMzQ0LTcuNTksMS43ODUtMy4yMjYsOC44OFpcIiBzdHlsZT1cImZpbGw6I2YwNGUzMTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyMC43MiAxMi42IDEzLjUyIDE3LjU2NyAxMy43MzMgMTguNTczIDIxLjQ2NyAxNy4wMjYgMjAuNzIgMTIuNlwiIHN0eWxlPVwiZmlsbDojZWVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTMuNjEsMTguNzYxLDEzLjM0MSwxNy41bDcuNDk1LTUuMTcuODE0LDQuODI4Wm0uMDg5LTEuMTIzLjE1OC43NDdMMjEuMjgzLDE2LjksMjAuNiwxMi44NzRaXCIgc3R5bGU9XCJmaWxsOiNlZTRiMmVcIi8+PHBhdGggZD1cIk0xNS43MjMsMjEuMzE5Yy0zLjkzLS42NjgtNC4yODMuNDI4LTQuMjgzLjQyOEwxMC4yNjcsMjQuNDRzMS4xMi0uOTA3LDUuNDkzLDBsLjc2LTEuMzg4WlwiIHN0eWxlPVwiZmlsbDojZGQwYzEzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTQuMTIyLDIxLjZjLS4wMi0uMi0xLjEtLjMxOS0xLjY3Ny0uMTIzLS43MzIuMjQ5LTEuMjE5LDEuMTQyLTEuMDQ1LDEuMjEzYTEuOTc1LDEuOTc1LDAsMCwxLDEuMTI1LS45ODZDMTMuNDQ3LDIxLjQ5MywxNC4xNDIsMjEuOCwxNC4xMjIsMjEuNlpcIiBzdHlsZT1cImZpbGw6I2ZmNmU0ZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE1LjUyLDE4LjYwNmExMS4xLDExLjEsMCwwLDAsMS41NDcsMS40ODcsNi45LDYuOSwwLDAsMSwyLjcyLDQuMTA3Yy0uMTA3LDEuMDY3LTEuOTczLDEuNzYtMS45NzMsMS43NmwtMy4zMDctNy4xOTRaXCIgc3R5bGU9XCJmaWxsOiNlZWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNy43MywyNi4xNjFsLTMuNDU3LTcuNTIxLDEuMzItLjIwOC4wNTcuMDgxYTEwLjg2OSwxMC44NjksMCwwLDAsMS41MTIsMS40NTEsNyw3LDAsMCwxLDIuNzgyLDQuMjA3bDAsLjAyMiwwLC4wMjJjLS4xMTUsMS4xNTMtMiwxLjg2NC0yLjA3NywxLjg5NFptLTIuOTktNy4yNywzLjE1NSw2Ljg2M2MuNDE0LS4xNzgsMS42My0uNzYzLDEuNzMtMS41NDhhNi43OTMsNi43OTMsMCwwLDAtMi42NDgtMy45ODFsLS4wMS0uMDA3YTExLjk0LDExLjk0LDAsMCwxLTEuNTE3LTEuNDM5WlwiIHN0eWxlPVwiZmlsbDojZWU0YjJlXCIvPjxwYXRoIGQ9XCJNMjgsMTIuNzQyYy4wMjUuMzk0LjAzNC43OTIuMDI1LDEuMTk0YTEzLjk0NiwxMy45NDYsMCwwLDEtMTkuOSwxMi4zQTEyLjg2LDEyLjg2LDAsMCwwLDI4LDEyLjc0MlpcIiBzdHlsZT1cImZpbGw6I2VhZTBkZjtmaWxsLXJ1bGU6ZXZlbm9kZDtvcGFjaXR5OjAuMlwiLz48cGF0aCBkPVwiTTIuMzgzLDEzLjg5M0ExMy45NDEsMTMuOTQxLDAsMCwxLDI1LjcsNS44M3MtNS4wMDksNS45NzktMTAuNTg0LDcuOTA3UzIuMzgzLDEzLjg5MywyLjM4MywxMy44OTNaXCIgc3R5bGU9XCJmaWxsOiNlYWUwZGY7b3BhY2l0eTowLjJcIi8+PHBhdGggZD1cIk0zLjYxOCwxOC42OTRjLS4wNDQtLjM5Mi0uMDcyLS43OS0uMDgzLTEuMTkxQzMuMzI5LDkuODA3LDEwLjAxMiw0LjIsMTcuNzA4LDMuOTkxYTE0LjIsMTQuMiwwLDAsMSw1LjcxOSwxLjQ1OCwxMy4xMjgsMTMuMTI4LDAsMCwwLTcuMTg4LTIuMzY5Yy03LjEuMTktMTMuMzA2LDUuMy0xMy4xMTYsMTIuNEExMi44NzMsMTIuODczLDAsMCwwLDMuNjE4LDE4LjY5NFpcIiBzdHlsZT1cImZpbGw6I2VhZTBkZjtmaWxsLXJ1bGU6ZXZlbm9kZDtvcGFjaXR5OjAuMlwiLz5gLFxuXHRcIk9iamVjdGl2ZS1DXCI6IGA8cGF0aCBkPVwiTTExLjI5LDE1Ljk3NmE4Ljg5Miw4Ljg5MiwwLDAsMCwxLjAzOSw0LjU1Nyw0LjgxOCw0LjgxOCwwLDAsMCw1LjU3OSwyLjEzLDMuNzg5LDMuNzg5LDAsMCwwLDIuNzM0LTMuMTgxYy4wOTUtLjUzNS4xLS41NC4xLS41NCwxLjUzNy4yMjIsNC4wMTQuNTgyLDUuNTUuOGwtLjEuMzg5QTkuOTU4LDkuOTU4LDAsMCwxLDIzLjgsMjQuOWE4LjM1LDguMzUsMCwwLDEtNC43NDcsMi4zNzgsMTIuOTI1LDEyLjkyNSwwLDAsMS03LjMyMi0uNzI1LDguOTgsOC45OCwwLDAsMS01LjEwNi01LjUyNEExNC4zNTMsMTQuMzUzLDAsMCwxLDYuNjQyLDEwLjlhOS4zMjMsOS4zMjMsMCwwLDEsNy45MjktNi4yNCwxMS44MTIsMTEuODEyLDAsMCwxLDUuOS40OTEsOC40NjcsOC40NjcsMCwwLDEsNS40NTYsNi4xYy4wODMuMzExLjEuMzY5LjEuMzY5LTEuNzA5LjMxMS0zLjgyMS43MDUtNS41MTgsMS4wNzVDMjAuMTg2LDExLDE5LjM4Nyw5LjY2NiwxNy42NzgsOS4yNWE0LjY1Niw0LjY1NiwwLDAsMC01Ljg1MywzLjE1OCw5LjI4LDkuMjgsMCwwLDAtLjM0MSwxLjI3M0ExMC44OSwxMC44OSwwLDAsMCwxMS4yOSwxNS45NzZaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMi4wMzMgMzAgMi4wMzMgMiA3Ljk2NyAyIDcuOTY3IDQuMjI3IDQuNzIzIDQuMjI3IDQuNzIzIDI3Ljc3MyA3Ljk2NyAyNy43NzMgNy45NjcgMzAgMi4wMzMgMzBcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cG9seWdvbiBwb2ludHM9XCIyOS45NjcgMjkuOTk5IDI0LjAzMyAyOS45OTkgMjQuMDMzIDI3Ljc3MSAyNy4yNzcgMjcuNzcxIDI3LjI3NyA0LjIyNiAyNC4wMzMgNC4yMjYgMjQuMDMzIDEuOTk5IDI5Ljk2NyAxLjk5OSAyOS45NjcgMjkuOTk5XCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+YCxcblx0XCJPQ2FtbFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTc0NS42MjNcIiB5MT1cIi05Mi43NlwiIHgyPVwiLTc0NS42MjNcIiB5Mj1cIi04NS4xMDhcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSg3NTggMTEzLjI4KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2YyOTEwNFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNlYzY4MTNcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItNzQxLjk5XCIgeTE9XCItMTA5LjQ3N1wiIHgyPVwiLTc0MS45OVwiIHkyPVwiLTg1LjA5OVwiIHhsaW5rOmhyZWY9XCIjYVwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItNzUyLjExMVwiIHkxPVwiLTkzLjkxOFwiIHgyPVwiLTc1Mi4xMTFcIiB5Mj1cIi04NS4yODRcIiB4bGluazpocmVmPVwiI2FcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfb2NhbWw8L3RpdGxlPjxwYXRoIGQ9XCJNMTYuNTcxLDI1LjI0NmE0LjI4LDQuMjgsMCwwLDAtLjAzOS0uNzA5Yy0uMDU5LS4yLS4yLS4yMTctLjMtLjM3NGEzLjUwNywzLjUwNywwLDAsMS0uNTMyLTEuNDc3Yy0uMDItLjQ1My0uMi0uODg2LS4yMTctMS4zMzktLjAyLS4yMTcuMDItLjQ1MywwLS42NjlhMS45NjMsMS45NjMsMCwwLDAtLjAzOS0uMzE1LDEuMTMzLDEuMTMzLDAsMCwwLS4wMzktLjJsLjA1OS0uMTM4YTIuNzIsMi43MiwwLDAsMSwuNjUtLjAzOWMuMjU2LDAsLjUxMi4wMi43NjguMDJhNy45NjEsNy45NjEsMCwwLDAsMS41MzYtLjA1OSwzLjcyMiwzLjcyMiwwLDAsMCwxLjk0OS0uODQ3LDQuOTQ2LDQuOTQ2LDAsMCwwLDEuNTM2LTIuMDA4Yy4xNzctLjM5NC4xNzctMS4wODMuNTUxLTEuNC40MzMtLjM3NCwxLjE4MS0uMzM1LDEuNjkzLS41NzFhMS4xODcsMS4xODcsMCwwLDEsLjgwNy0uMTM4Yy4yMTcuMDM5LjYzLjMxNS43MjktLjA1OS0uMDc5LS4wMzktLjEtLjEzOC0uMTM4LS4xNzcuNDE0LS4wMzksMC0xLS4xNTgtMS4yQTIuMjI1LDIuMjI1LDAsMCwwLDI0LjI1LDEzYTMuNTA5LDMuNTA5LDAsMCwwLTEuNTM2LS4yMTdjLS44ODYuMTc3LS44MjctLjMzNS0xLjMzOS0uMzM1LS42MywwLTEuNzMzLjAzOS0xLjkzLjYzYTEuNTQsMS41NCwwLDAsMS0uMzM1LjUxMmMtLjEzOC4xNzcuMDIuMzU0LS4wMzkuNTcxLS4wNzkuMjE3LS4xNzcuOTg1LS4yNzYsMS4yNi0uMTc3LjQ1My0uMzk0LDEuMDI0LS43ODgsMS4wMjRhMy4xNTIsMy4xNTIsMCwwLDEtMS40MzctLjA3OWMtLjI3Ni0uMS0uNzI5LS4yNTYtLjk0NS0uMzM1LTEuMDI0LS40MzMtMS4yLS45MDYtMS4yLS45MDZhMy4wMjYsMy4wMjYsMCwwLDEtLjUxMi0uODY2Yy0uMTE4LS40MTQtLjMxNS0uNzY4LS4zOTQtMXMtLjMtLjU5MS0uNDUzLS45ODVhMi42NjcsMi42NjcsMCwwLDAtLjcwOS0xLjA2M2MtLjMxNS0uMjc2LS42MS0uNzI5LTEuMjYtLjU5MWExLjY0MSwxLjY0MSwwLDAsMC0uODY2LjMxNWMtLjIxNy4xNzctLjMuNTcxLS40OTIuODg2LS4xMTguMTc3LS4zMTUuNzA5LS41MTIsMS4xNjJhMS45MjksMS45MjksMCwwLDEtLjMzNS42NWMtLjExOC4wNzktLjI1Ni4yLS40MTQuMTM4YS45MjQuOTI0LDAsMCwxLS4zMTUtLjIsNS4zMzQsNS4zMzQsMCwwLDEtLjcwOS0xLjEyMiwxMS4xLDExLjEsMCwwLDAtLjc4OC0xLjI0MSwxLjAxNiwxLjAxNiwwLDAsMC0uOTg1LS41NTFjLTEuMDI0LDAtMS4xLjU3MS0xLjU1NiwxLjQxOGE1LjU3NCw1LjU3NCwwLDAsMS0uNjY5LDEuNGMtLjIzNi4yNTYtLjk0NSwxLjMzOS0xLjQ1NywxLjUxNkgydjcuNjJjLjAzOS0uMS4wNTktLjIuMS0uMjc2LjItLjQxNC42NS0uODA3LjkwNi0xLjIyMWEzLjUsMy41LDAsMCwwLC4zNzQtLjcwOSwzLjc0MywzLjc0MywwLDAsMSwuMjM2LS43MDkuNzk0Ljc5NCwwLDAsMSwuNTcxLS4zMzVjLjM1NC0uMDU5LjY1LjQ5MiwxLjA4My43MDkuMi4wNzksMS4wNjMuMzk0LDEuMzE5LjQ1My40MzMuMS45MDYuMiwxLjMzOS4yNzYuMjM2LjAzOS40NTMuMDc5LjcwOS4xYTcuMyw3LjMsMCwwLDEsMS4wODMuMSwyLjI3NywyLjI3NywwLDAsMC0uODA3LDEuMjIxYy0uMTU4LjQzMy0uMjc2LjkyNS0uNDczLDEuMzM5LS4yMTcuNDczLS42NjkuNjY5LS42MSwxLjIyMWEyLjY2OCwyLjY2OCwwLDAsMSwuMDIuNjg5LDQuMDA5LDQuMDA5LDAsMCwxLS4yMTcuNjg5Yy0uMS4zMTUtLjIxNywxLjM1OS0uMzU0LDEuNjc0bC45MDYtLjExOGgwQTEwLjY5MiwxMC42OTIsMCwwLDAsOC40LDI2LjM4OGEzLjczNywzLjczNywwLDAsMSwuNzI5LTEuMjhjLjMzNS0uMzc0LjMxNS0uODQ3LjUxMi0xLjNhMTIuNDg4LDEyLjQ4OCwwLDAsMSwuNzY4LTEuM2MuNDkyLS44MDcuODA3LTEuODEyLDEuODUxLTIuMDI4YTMuMywzLjMsMCwwLDEsMS4wMjQuNzA5LDQuNDUyLDQuNDUyLDAsMCwxLC44ODYsMS4xLDEyLjg1MSwxMi44NTEsMCwwLDEsLjg4NiwyLjY3OCwxLjIyNywxLjIyNywwLDAsMCwuMzk0LjcwOSw1LjQ2Miw1LjQ2MiwwLDAsMSwuNDMzLjcyOWMuMDc5LjE3Ny4yLjU3MS4zLjc4OGE2LjI2Nyw2LjI2NywwLDAsMSwuMzE1LjgyN2wuODQ3LS4wMmguMDJ2LS4wMkE5Ljc1NCw5Ljc1NCwwLDAsMSwxNi41NzEsMjUuMjQ2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTYuMjE3LDI3LjIzNWMtLjEtLjItLjIxNy0uNjEtLjMtLjc4OGE1LjQ2Miw1LjQ2MiwwLDAsMC0uNDMzLS43MjksMS4xMTksMS4xMTksMCwwLDEtLjM5NC0uNzA5LDEyLjQ4NywxMi40ODcsMCwwLDAtLjg4Ni0yLjY3OCw0LjQ1Miw0LjQ1MiwwLDAsMC0uODg2LTEuMSwzLjMsMy4zLDAsMCwwLTEuMDI0LS43MDljLTEuMDQ0LjItMS4zNTksMS4yMjEtMS44NTEsMi4wMjhhMTIuNDg4LDEyLjQ4OCwwLDAsMC0uNzY4LDEuM2MtLjIuNDMzLS4xNzcuOTI1LS41MTIsMS4zYTMuNDQzLDMuNDQzLDAsMCwwLS43MjksMS4yOGMtLjAzOS4xLS4xMTgsMS4wODMtLjIxNywxLjMxOWgwbDEuNTM2LS4xYzEuNDM3LjEsMS4wMjQuNjUsMy4yNDkuNTMybDMuNTI1LS4xMThoMEE2LjI2Nyw2LjI2NywwLDAsMCwxNi4yMTcsMjcuMjM1WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjYuNDU2LDMuOEg1LjU0NEEzLjUyMSwzLjUyMSwwLDAsMCwyLjAyLDcuMzI4djcuNjc5aDBjLjUxMi0uMTc3LDEuMjIxLTEuMjYsMS40NTctMS41MTZhNS45MTMsNS45MTMsMCwwLDAsLjY2OS0xLjRjLjQ1My0uODI3LjUzMi0xLjQxOCwxLjU1Ni0xLjQxOGExLjAxNiwxLjAxNiwwLDAsMSwuOTg1LjU1MSw5LjU0Nyw5LjU0NywwLDAsMSwuNzg4LDEuMjQxLDQuODQ5LDQuODQ5LDAsMCwwLC43MDksMS4xMjIsMiwyLDAsMCwwLC4zMTUuMmMuMTU4LjA1OS4zLS4wNTkuNDE0LS4xMzhBMS45MjksMS45MjksMCwwLDAsOS4yNDYsMTNjLjItLjQ1My4zOTQtLjk2NS41MTItMS4xNjIuMi0uMzE1LjI3Ni0uNzA5LjQ5Mi0uODg2YTEuNTksMS41OSwwLDAsMSwuODY2LS4zMTVjLjY1LS4xMzguOTQ1LjMxNSwxLjI2LjU5MWEzLjI4NSwzLjI4NSwwLDAsMSwuNzA5LDEuMDYzYy4xNTguMzk0LjM1NC43NjguNDUzLjk4NWE4Ljk0Niw4Ljk0NiwwLDAsMSwuMzk0LDEsMy43MTMsMy43MTMsMCwwLDAsLjUxMi44NjZzLjE3Ny40NzMsMS4yLjkwNmE4Ljc0OSw4Ljc0OSwwLDAsMCwuOTQ1LjMzNSwzLjE1MiwzLjE1MiwwLDAsMCwxLjQzNy4wNzljLjM5NCwwLC42MS0uNTcxLjc4OC0xLjAyNC4xLS4yNzYuMjE3LTEuMDQ0LjI3Ni0xLjI2cy0uMS0uMzc0LjAzOS0uNTcxYy4xNTgtLjIxNy4yNTYtLjIzNi4zMzUtLjUxMi4yLS42MSwxLjMtLjYzLDEuOTMtLjYzLjUzMiwwLC40NTMuNTEyLDEuMzM5LjMzNWEzLjI0MywzLjI0MywwLDAsMSwxLjUzNi4yMTcsMi4yMjUsMi4yMjUsMCwwLDEsMS4xNDIuNTUxYy4xNTguMi41NzEsMS4xNjIuMTU4LDEuMi4wMzkuMDM5LjA3OS4xMzguMTM4LjE3Ny0uMS4zNzQtLjQ5Mi4xLS43MjkuMDU5YTEuMTg3LDEuMTg3LDAsMCwwLS44MDcuMTM4Yy0uNTEyLjIxNy0xLjI0MS4yLTEuNjkzLjU3MS0uMzc0LjMxNS0uMzc0LDEtLjU1MSwxLjRhNS4xNjcsNS4xNjcsMCwwLDEtMS41MzYsMi4wMDgsMy45LDMuOSwwLDAsMS0xLjk0OS44NDcsNy45NjEsNy45NjEsMCwwLDEtMS41MzYuMDU5Yy0uMjU2LS4wMi0uNTEyLS4wMi0uNzY4LS4wMi0uMTU4LDAtLjY2OS0uMDItLjY1LjAzOWwtLjA1OS4xMzhhLjcuNywwLDAsMCwuMDM5LjJjLjAyLjExOC4wMi4yMTcuMDM5LjMxNSwwLC4yMTctLjAyLjQ1MywwLC42NjkuMDIuNDUzLjIuODY2LjIxNywxLjMzOWEzLjI2LDMuMjYsMCwwLDAsLjUzMiwxLjQ3N2MuMS4xNTguMjM2LjE3Ny4zLjM3NGE0LjE2Myw0LjE2MywwLDAsMSwuMDM5LjcwOSw5LjY4NSw5LjY4NSwwLDAsMCwuODI3LDIuNzU3di4wMmgwYy41MTItLjA3OSwxLjA0NC0uMjc2LDEuNzEzLS4zNzQsMS4yNDEtLjE3NywyLjk1NC0uMSw0LjA1Ni0uMiwyLjgtLjI1Niw0LjMxMiwxLjE0Miw2LjgxMy41NzFWNy4zMjhBMy41NTEsMy41NTEsMCwwLDAsMjYuNDU2LDMuOFpNMTYuMDIsMjAuMzQzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNOC40NzgsMjMuNTczYy4yLS40MzMuMzE1LS45MDYuNDczLTEuMzM5YTIuMjc3LDIuMjc3LDAsMCwxLC44MDctMS4yMjEsNy4zLDcuMywwLDAsMC0xLjA4My0uMWMtLjIzNi0uMDItLjQ3My0uMDU5LS43MDktLjEtLjQzMy0uMDc5LS45MjUtLjE3Ny0xLjMzOS0uMjc2LS4yNTYtLjA1OS0xLjE0Mi0uMzc0LTEuMzE5LS40NTMtLjQ1My0uMi0uNzQ4LS43NjgtMS4wODMtLjcwOWEuNzk0Ljc5NCwwLDAsMC0uNTcxLjMzNSwzLjc0MywzLjc0MywwLDAsMC0uMjM2LjcwOWMtLjEuMjM2LS4yNTYuNDczLS4zNzQuNzA5YTEyLjI4OSwxMi4yODksMCwwLDAtLjkyNSwxLjJjLS4wMzkuMS0uMDU5LjItLjEuM3Y0Ljc0NWE1LjQsNS40LDAsMCwxLC43MjkuMTU4LDguNzcsOC43NywwLDAsMCw0LjM3MS4zNTRsLjE3Ny0uMDJoMGMuMTM4LS4zMTUuMjU2LTEuMzU5LjM1NC0xLjY3NGE1LjQ5NCw1LjQ5NCwwLDAsMCwuMjE3LS42ODksMi42NjgsMi42NjgsMCwwLDAtLjAyLS42ODlDNy44MDksMjQuMjQyLDguMjYyLDI0LjA0NSw4LjQ3OCwyMy41NzNaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+YCxcblx0XCJPY3RhdmVcIjogYDxkZWZzIGlkPVwiZGVmczI4NzRcIj4gPHJhZGlhbEdyYWRpZW50IGN4PVwiMTgyLjk4MzdcIiBjeT1cIjM5NS4wNDg3MVwiIHI9XCIxNDguOTUzMDlcIiBmeD1cIjE4Mi45ODM3XCIgZnk9XCIzOTUuMDQ4NzFcIiBpZD1cInJhZGlhbEdyYWRpZW50MzAzM1wiIHhsaW5rOmhyZWY9XCIjbGluZWFyR3JhZGllbnQzNzU1XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMC4yMjkxNDMzNCwtMC4yNDkwMTQ3OSwwLjc2NDM1NzIsMC44MzA2NDI2OCwtMjcyLjg1MzM3LC0xNTkuNjk0ODIpXCIgLz4gPGxpbmVhckdyYWRpZW50IGlkPVwibGluZWFyR3JhZGllbnQzNzU1XCI+IDxzdG9wIGlkPVwic3RvcDM3NTdcIiBzdHlsZT1cInN0b3AtY29sb3I6IzAwOGNiZTtzdG9wLW9wYWNpdHk6MVwiIG9mZnNldD1cIjBcIiAvPiA8c3RvcCBpZD1cInN0b3AzNzU5XCIgc3R5bGU9XCJzdG9wLWNvbG9yOiNiMmZmZmY7c3RvcC1vcGFjaXR5OjFcIiBvZmZzZXQ9XCIxXCIgLz4gPC9saW5lYXJHcmFkaWVudD4gPC9kZWZzPiA8ZyBpZD1cImxheWVyMVwiIHRyYW5zZm9ybT1cInNjYWxlKDAuMTEyOTYpIHRyYW5zbGF0ZSgtMjMzLjM1NTQ0LC0zOTAuNzE4MDIpXCI+IDxnIHRyYW5zZm9ybT1cIm1hdHJpeCg4LjQ1MTk3MjMsMCwwLDguNDUxOTcyMywtMjc4LjQ1MDEyLC00MDMuODI5NzUpXCIgaWQ9XCJnMzAyNVwiPiA8cGF0aCBkPVwibSA2Ni40MzIxMDMsOTcuNDg4Njc5IGMgLTUuMTk1ODQsNS42NDY0MzEgLTMuOTM2NjEsMTYuMTY5MDMxIDIuODExMDcsMjMuNTAxODcxIDYuNzQ3NjgsNy4zMzI4NSAxNi40Mjg5OCw4LjY5OTU1IDIxLjYyNDgzLDMuMDUzMTIgNS4xOTU4NSwtNS42NDY0MyAzLjk0MDIsLTE2LjE2OTQ2IC0yLjgwNzQ5LC0yMy41MDIzIC02Ljc0NzY4LC03LjMzMjg2MSAtMTYuNDMyNTYsLTguNjk5MTMxIC0yMS42Mjg0MSwtMy4wNTI2OTEgeiBtIDQuNzExNDksMi4zNDU1MyBjIDQuMDgyNTYsLTQuNDM2NTkgMTEuNTg5LC0zLjQ3MTUyIDE2Ljc2NzQxLDIuMTU1OTYxIDUuMTc4NDIsNS42Mjc1IDYuMDY2NDcsMTMuNzg0OTEgMS45ODM5MSwxOC4yMjE1IC00LjA4MjU2LDQuNDM2NTggLTExLjU5MDk3LDMuNDczNjkgLTE2Ljc2OTM5LC0yLjE1MzgxIC01LjE3ODQyLC01LjYyNzUgLTYuMDY0NDksLTEzLjc4NzA0IC0xLjk4MTkzLC0xOC4yMjM2NTEgelwiIGlkPVwicGF0aDU4NzRcIiBzdHlsZT1cImZpbGw6dXJsKCNyYWRpYWxHcmFkaWVudDMwMzMpO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lXCIgLz4gPHJlY3Qgd2lkdGg9XCI0LjM0OTg1NFwiIGhlaWdodD1cIjQuMzQ5ODU0XCIgcng9XCIwLjc2OTU4OTY2XCIgcnk9XCIwLjc2OTU4OTY2XCIgeD1cIjg1LjM4MTU2MVwiIHk9XCI5OS40OTM4ODFcIiBpZD1cInJlY3Q1ODc2XCIgc3R5bGU9XCJmaWxsOiNmZjdmMmE7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiNkNDU1MDA7c3Ryb2tlLXdpZHRoOjAuNzQ0MDM3OTk7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmVcIiAvPiA8cmVjdCB3aWR0aD1cIjEwLjI0NTQzNlwiIGhlaWdodD1cIjEwLjI0NTQzNlwiIHJ4PVwiMS44MTI2NTQ1XCIgcnk9XCIxLjgxMjY1NDVcIiB4PVwiNjAuOTI2NTlcIiB5PVwiMTA1LjIyNDVcIiBpZD1cInJlY3Q1ODc4XCIgc3R5bGU9XCJmaWxsOiNmZjdmMmE7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOiNkNDU1MDA7c3Ryb2tlLXdpZHRoOjAuNzQ0MDM3OTk7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmVcIiAvPiA8cmVjdCB3aWR0aD1cIjYuMTg5NzUzMVwiIGhlaWdodD1cIjYuMTg5NzUzMVwiIHJ4PVwiMS4wOTUxMTAyXCIgcnk9XCIxLjA5NTExMDJcIiB4PVwiODcuNDA0NzM5XCIgeT1cIjExOC42MzcwNVwiIGlkPVwicmVjdDU4ODBcIiBzdHlsZT1cImZpbGw6I2ZmN2YyYTtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6I2Q0NTUwMDtzdHJva2Utd2lkdGg6MC43NDQwMzc5OTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZVwiIC8+IDwvZz4gPC9nPmAsXG5cdFwiT3BlbkNMXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIyOS42NjJcIiB5MT1cIjE4LjAyNlwiIHgyPVwiMjEuNDE5XCIgeTI9XCIyMC4yMzRcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cInJlZFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZjZhNmFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCIyNC41ODhcIiB5MT1cIjkuNzQ4XCIgeDI9XCIxOC43NzZcIiB5Mj1cIjE1LjU2XCIgeGxpbms6aHJlZj1cIiNhXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIjE4LjQ2NlwiIHkxPVwiNi42MTlcIiB4Mj1cIjE1LjkyNFwiIHkyPVwiMTMuNjAzXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjY2ZhNDBjXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2VkZDQ4MFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImRcIiB4MT1cIjEzLjE3XCIgeTE9XCI2LjUxXCIgeDI9XCIxMy4xN1wiIHkyPVwiMTIuOTk3XCIgeGxpbms6aHJlZj1cIiNjXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImVcIiB4MT1cIjguODA4XCIgeTE9XCI4LjQ4NlwiIHgyPVwiMTAuOTg4XCIgeTI9XCIxMy4xNjFcIiB4bGluazpocmVmPVwiI2NcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZlwiIHgxPVwiNS41MDVcIiB5MT1cIjExLjQ3N1wiIHgyPVwiOC41NDZcIiB5Mj1cIjE0LjUxOVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzExYTExOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzN2FlM2RcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJnXCIgeDE9XCIzLjYzOVwiIHkxPVwiMTQuMjg1XCIgeDI9XCI2Ljg4M1wiIHkyPVwiMTYuMTU4XCIgeGxpbms6aHJlZj1cIiNmXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImhcIiB4MT1cIjIuMjY1XCIgeTE9XCIxNy43OTlcIiB4Mj1cIjUuMzc5XCIgeTI9XCIxOC45MzNcIiB4bGluazpocmVmPVwiI2ZcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiaVwiIHgxPVwiMlwiIHkxPVwiMjEuNjE0XCIgeDI9XCI0LjgzM1wiIHkyPVwiMjEuNjE0XCIgeGxpbms6aHJlZj1cIiNmXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImpcIiB4MT1cIjIwLjY2MlwiIHkxPVwiMTguOTQ5XCIgeDI9XCIxOC4wMjZcIiB5Mj1cIjE3LjQyOFwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuNVwiIHN0b3AtY29sb3I9XCIjNjQ2NDY0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2NiY2JjYlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImtcIiB4MT1cIjE2LjAyMVwiIHkxPVwiMjUuMjY0XCIgeDI9XCIxNi4wMjFcIiB5Mj1cIjIyLjY5MVwiIHhsaW5rOmhyZWY9XCIjalwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9vcGVuY2w8L3RpdGxlPjxwYXRoIGQ9XCJNMjcuODI4LDEzLjU3NGExNC42NzYsMTQuNjc2LDAsMCwxLC44MzUsMS41NDJBMTQuOTY0LDE0Ljk2NCwwLDAsMSwyOS45MiwyMi45SDIyLjEzM2ExMC4zNzcsMTAuMzc3LDAsMCwwLS45NjctNC40MjRaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0xNy43NTMsMTQuNDNhMTAuMDc0LDEwLjA3NCwwLDAsMSwyLjc3MiwyLjg3OGw2LjI3My01LjJhMTUuNTQsMTUuNTQsMCwwLDAtNC45ODgtNC4xNVpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTE0Ljc4MSwxMy4wODZhOC44MjcsOC44MjcsMCwwLDEsMi4zNzYuOTY2TDIwLjY2Niw3LjQzYTEyLjcsMTIuNywwLDAsMC00LjY0NS0uOTUyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2MpXCIvPjxwYXRoIGQ9XCJNMTQuMzY0LDEzbC42MTItNi40ODhhMTIuNDYsMTIuNDYsMCwwLDAtMy42MTEuODEzbC41MDcsNS42MzhBNy4yMTksNy4yMTksMCwwLDEsMTQuMzY0LDEzXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0xMC45NDgsMTMuMTc5bC0uNjgzLTUuMzczQTE0LjU4OCwxNC41ODgsMCwwLDAsNy43NzMsOS4zNzlsMS43NCw0LjQyYTcuNTE4LDcuNTE4LDAsMCwxLDEuNDM1LS42MTlcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48cGF0aCBkPVwiTTguODYsMTQuMjA2LDYuNDc0LDEwLjUxMWMtLjQ1My40NC0uNzkuODItMS4wMDYsMS4wNzRxLS4yMjcuMjY3LS40MzYuNTM4TDcuNDgsMTUuMzg3YTguODcsOC44NywwLDAsMSwxLjM4LTEuMTgyXCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk03LjA0NiwxNS44NzUsNC4zMzUsMTMuMTEyYTE0LjI1OSwxNC4yNTksMCwwLDAtMS4yNSwyLjQyOWwzLjAwNywxLjcxYTkuODI2LDkuODI2LDAsMCwxLC45NTQtMS4zNzZcIiBzdHlsZT1cImZpbGw6dXJsKCNnKVwiLz48cGF0aCBkPVwiTTUuNTI3LDE4LjM5M2wtMi43Ny0xLjk0NWExNS40NTIsMTUuNDUyLDAsMCwwLS42MywyLjgzbDIuOTA2LjYwN2ExMC4zNDMsMTAuMzQzLDAsMCwxLC40OTQtMS40OTJcIiBzdHlsZT1cImZpbGw6dXJsKCNoKVwiLz48cGF0aCBkPVwiTTQuODMzLDIwLjlhMTAuNjg0LDEwLjY4NCwwLDAsMC0uMSwySDIuMDkzYTE0LjMzMywxNC4zMzMsMCwwLDEtLjA2NC0yLjU3M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNpKVwiLz48cGF0aCBkPVwiTTIyLjU1MSwxMi40NzgsMTQuNzUxLDIzLjFBMS41NDQsMS41NDQsMCwwLDEsMTcuNSwyNC40MjhaXCIgc3R5bGU9XCJmaWxsOnVybCgjailcIi8+PHBhdGggZD1cIk0xNi4wMjEsMjUuNTIyYTEuNTQ0LDEuNTQ0LDAsMSwxLDEuMDkyLS40NTJBMS41MzMsMS41MzMsMCwwLDEsMTYuMDIxLDI1LjUyMlpcIiBzdHlsZT1cImZpbGw6IzY0NjQ2NFwiLz48cGF0aCBkPVwiTTE3LjMwOCwyMy45NzhhMS4yODcsMS4yODcsMCwxLDEtLjM3Ny0uOTFBMS4yODMsMS4yODMsMCwwLDEsMTcuMzA4LDIzLjk3OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNrKVwiLz5gLFxuXHRcIlBhc2NhbFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiMTZcIiB5MT1cIi0wLjQ0M1wiIHgyPVwiMTZcIiB5Mj1cIjIyLjA0MlwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDIxXCIgc3RvcC1jb2xvcj1cIiNmZjBjMTVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOWEwYzBmXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfZGVscGhpPC90aXRsZT48Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcj1cIjE0XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yNy41NDUsMTYuMjQzSDQuOTI0YS45MTQuOTE0LDAsMCwwLTEuMDkyLjgycS4wMzMuNDI5LjEuODQ5YTEyLjQsMTIuNCwwLDAsMCwyNC41MzIsMHEuMDc1LS41LjEwOC0xLjAyMUMyOC40NzgsMTYuNTIzLDI4LjIxMSwxNi4yMDcsMjcuNTQ1LDE2LjI0M1pcIiBzdHlsZT1cImZpbGw6I2ZmNjQ0M1wiLz48cG9seWxpbmUgcG9pbnRzPVwiMTguNDggMTEuNjQgMjMuNzA3IDcuMjY2IDE5Ljc4NyA1Ljg4IDE2IDExLjA1M1wiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxNS42OCAxMS4wMjYgMTguNjQgNS44OCAxNC44NTMgNS44OCAxMy4zMDcgMTEuMjkzXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjEzLjA0IDExLjM3MyAxMy42IDYuNzA2IDEwLjU4NyA3Ljk2IDExLjAxMyAxMi43NlwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCIxMC43NDcgMTMgOS43ODcgOC43NiA3LjcwNyAxMC44NCA5LjY1MyAxNC42OFwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjM4NyAxNS4wNTMgNy40OTMgMTIuMzc2IDYuNjQgMTQuNDY2IDkuMDQgMTYuNTE3XCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuMDQgMTYuNzU3IDYuNjQgMTUuMjEzIDYuNDggMTcuNCA5LjIgMTguMzMzXCIgc3R5bGU9XCJmaWxsOiNmYWU3ZTM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkuMjI3IDE4Ljg0NiA2LjY0IDE4LjA0IDcuMjI3IDE5LjggOS41NDcgMTkuOFwiIHN0eWxlPVwiZmlsbDojZmFlN2UzO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5bGluZSBwb2ludHM9XCI5LjcwNyAyMC4wOTMgNy43MDcgMjAuMzg2IDguNjI3IDIxLjc0NiAxMC4yNjcgMjFcIiBzdHlsZT1cImZpbGw6I2ZhZTdlMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTIwLjAyMywxMy4wODlhNi42MSw2LjYxLDAsMCwwLTQuNTMtMkE2LjI5Myw2LjI5MywwLDAsMCwxMS4zLDIyLjA3bDQuOTQxLjEyOS0yLjA4LTQuMTZaXCIgc3R5bGU9XCJmaWxsOiNlZWU7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNi41LDIyLjM2NmwtNS4yNjctLjEzOC0uMDQ0LS4wMzlhNi40NTMsNi40NTMsMCwwLDEsNC4zLTExLjI2NCw2Ljc4Nyw2Ljc4NywwLDAsMSw0LjY0MywyLjA1bC4xMjMuMTIzLTUuOSw0Ljk4MlptLTUuMTQtLjQ1NSw0LjYxNi4xMjFMMTMuOTYxLDE4bDUuODI1LTQuOTE5YTYuNDMsNi40MywwLDAsMC00LjI5Mi0xLjgzNSw2LjEzMyw2LjEzMywwLDAsMC00LjEzMSwxMC42NjdaXCIgc3R5bGU9XCJmaWxsOiNlZTRiMmVcIi8+PHBhdGggZD1cIk0xMi4wMTMsMjAuNDkzYy00LjE3My01LjgxMywyLjEwOS04LjE3MiwyLjQ3OC04LjQ1My40NTEtLjM0NC03LjU5LDEuNzg1LTMuMjI2LDguODhaXCIgc3R5bGU9XCJmaWxsOiNmMDRlMzE7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjAuNzIgMTIuNiAxMy41MiAxNy41NjcgMTMuNzMzIDE4LjU3MyAyMS40NjcgMTcuMDI2IDIwLjcyIDEyLjZcIiBzdHlsZT1cImZpbGw6I2VlZTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTEzLjYxLDE4Ljc2MSwxMy4zNDEsMTcuNWw3LjQ5NS01LjE3LjgxNCw0LjgyOFptLjA4OS0xLjEyMy4xNTguNzQ3TDIxLjI4MywxNi45LDIwLjYsMTIuODc0WlwiIHN0eWxlPVwiZmlsbDojZWU0YjJlXCIvPjxwYXRoIGQ9XCJNMTUuNzIzLDIxLjMxOWMtMy45My0uNjY4LTQuMjgzLjQyOC00LjI4My40MjhMMTAuMjY3LDI0LjQ0czEuMTItLjkwNyw1LjQ5MywwbC43Ni0xLjM4OFpcIiBzdHlsZT1cImZpbGw6I2RkMGMxMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE0LjEyMiwyMS42Yy0uMDItLjItMS4xLS4zMTktMS42NzctLjEyMy0uNzMyLjI0OS0xLjIxOSwxLjE0Mi0xLjA0NSwxLjIxM2ExLjk3NSwxLjk3NSwwLDAsMSwxLjEyNS0uOTg2QzEzLjQ0NywyMS40OTMsMTQuMTQyLDIxLjgsMTQuMTIyLDIxLjZaXCIgc3R5bGU9XCJmaWxsOiNmZjZlNGY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xNS41MiwxOC42MDZhMTEuMSwxMS4xLDAsMCwwLDEuNTQ3LDEuNDg3LDYuOSw2LjksMCwwLDEsMi43Miw0LjEwN2MtLjEwNywxLjA2Ny0xLjk3MywxLjc2LTEuOTczLDEuNzZsLTMuMzA3LTcuMTk0WlwiIHN0eWxlPVwiZmlsbDojZWVlO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMTcuNzMsMjYuMTYxbC0zLjQ1Ny03LjUyMSwxLjMyLS4yMDguMDU3LjA4MWExMC44NjksMTAuODY5LDAsMCwwLDEuNTEyLDEuNDUxLDcsNywwLDAsMSwyLjc4Miw0LjIwN2wwLC4wMjIsMCwuMDIyYy0uMTE1LDEuMTUzLTIsMS44NjQtMi4wNzcsMS44OTRabS0yLjk5LTcuMjcsMy4xNTUsNi44NjNjLjQxNC0uMTc4LDEuNjMtLjc2MywxLjczLTEuNTQ4YTYuNzkzLDYuNzkzLDAsMCwwLTIuNjQ4LTMuOTgxbC0uMDEtLjAwN2ExMS45NCwxMS45NCwwLDAsMS0xLjUxNy0xLjQzOVpcIiBzdHlsZT1cImZpbGw6I2VlNGIyZVwiLz48cGF0aCBkPVwiTTI4LDEyLjc0MmMuMDI1LjM5NC4wMzQuNzkyLjAyNSwxLjE5NGExMy45NDYsMTMuOTQ2LDAsMCwxLTE5LjksMTIuM0ExMi44NiwxMi44NiwwLDAsMCwyOCwxMi43NDJaXCIgc3R5bGU9XCJmaWxsOiNlYWUwZGY7ZmlsbC1ydWxlOmV2ZW5vZGQ7b3BhY2l0eTowLjJcIi8+PHBhdGggZD1cIk0yLjM4MywxMy44OTNBMTMuOTQxLDEzLjk0MSwwLDAsMSwyNS43LDUuODNzLTUuMDA5LDUuOTc5LTEwLjU4NCw3LjkwN1MyLjM4MywxMy44OTMsMi4zODMsMTMuODkzWlwiIHN0eWxlPVwiZmlsbDojZWFlMGRmO29wYWNpdHk6MC4yXCIvPjxwYXRoIGQ9XCJNMy42MTgsMTguNjk0Yy0uMDQ0LS4zOTItLjA3Mi0uNzktLjA4My0xLjE5MUMzLjMyOSw5LjgwNywxMC4wMTIsNC4yLDE3LjcwOCwzLjk5MWExNC4yLDE0LjIsMCwwLDEsNS43MTksMS40NTgsMTMuMTI4LDEzLjEyOCwwLDAsMC03LjE4OC0yLjM2OWMtNy4xLjE5LTEzLjMwNiw1LjMtMTMuMTE2LDEyLjRBMTIuODczLDEyLjg3MywwLDAsMCwzLjYxOCwxOC42OTRaXCIgc3R5bGU9XCJmaWxsOiNlYWUwZGY7ZmlsbC1ydWxlOmV2ZW5vZGQ7b3BhY2l0eTowLjJcIi8+YCxcblx0XCJQZXJsXCI6IGA8cGF0aCBkPVwiTTI5LjI1LDEzLjhhNi44ODgsNi44ODgsMCwwLDAtLjc0Mi0yLjI2OCwxLjAxMSwxLjAxMSwwLDAsMC0uMTcyLS4yMzMsOS40NzEsOS40NzEsMCwwLDEtMS43MjUtMi40LDguNjMyLDguNjMyLDAsMCwwLTEuMzk1LTIuMzgyQTYuOTA2LDYuOTA2LDAsMCwxLDI0LjEsNC42NDQsNC41NzIsNC41NzIsMCwwLDAsMjEuOTksMS43MjdhMS4wMDksMS4wMDksMCwwLDAtLjEtLjA1NCw4Ljg4Niw4Ljg4NiwwLDAsMC0xLjMtLjQ2OCwxLjAyMiwxLjAyMiwwLDAsMC0uMjYzLS4wMzUsMS4wMDksMS4wMDksMCwwLDAtLjIuMDIxLDUuNjA3LDUuNjA3LDAsMCwxLS44MDcuMTA3Yy0uMDUsMC0uMS0uMDA2LS4xNDktLjAwNmEyLjg0MiwyLjg0MiwwLDAsMC0xLjQxNi40NTNjLS4wOTQuMDUyLS4xODguMTA2LS4yODQuMTQ5cS0uMDQxLjAxOC0uMDc4LjAzOUExLjYzNywxLjYzNywwLDAsMSwxNy4wNjYsMmEzLjEwOSwzLjEwOSwwLDAsMC0uNzcyLjE5NCwxLDEsMCwwLDAtLjUwOC40ODMsMi4xODQsMi4xODQsMCwwLDEtLjQ2OS41QTQuMzgyLDQuMzgyLDAsMCwwLDE0LjU1NSw0YS45NjQuOTY0LDAsMCwwLS4xMTYuMjM0LDQuNjg3LDQuNjg3LDAsMCwxLTEuNTc0LDIuMiw2LjQ3MSw2LjQ3MSwwLDAsMC0uOC42MTMsMi43MzQsMi43MzQsMCwwLDAtLjYyNy0xLjYzNGMtLjAxNy0uMDE5LS4wMzUtLjAzOC0uMDUzLS4wNTZsMC0uMDE0YTIuMzc4LDIuMzc4LDAsMCwwLS4xMzUtLjU4NiwxLDEsMCwwLDAtLjEzMi0uMjM2QTUuMTY3LDUuMTY3LDAsMCwwLDkuNTExLDMuMTEzYS45ODguOTg4LDAsMCwwLS4zNDYtLjExOSwxLjUsMS41LDAsMCwxLS4xNDgtLjA3NywyLjA2LDIuMDYsMCwwLDAtMS0uMzExLDEuNDc2LDEuNDc2LDAsMCwwLS42ODEuMTY2Ljk4Ny45ODcsMCwwLDAtLjI3NC4yMDYsMS4zMjgsMS4zMjgsMCwwLDEtLjEyNS4wNjMsMS45LDEuOSwwLDAsMC0uOTA4Ljc3OCwyLjUzOSwyLjUzOSwwLDAsMC0uNTQxLjEwNiwxLjY1NiwxLjY1NiwwLDAsMS0uMzgzLjA1NywyLjMsMi4zLDAsMCwwLTEuNS41NDVsLS4xMDYuMWEyLjUzMywyLjUzMywwLDAsMC0xLDIuNTI1LDEuMDgsMS4wOCwwLDAsMCwuMDY4LjE2NUEyLjI5NCwyLjI5NCwwLDAsMCw0LjQ0Niw4LjQ3OGMtLjEuMjM4LS4yLjQ3My0uMzE0LjdhMS4wMDksMS4wMDksMCwwLDAtLjA4Ny4yOTNBMTEuMDUyLDExLjA1MiwwLDAsMCw0LDEyLjAzOWMwLC4wMiwwLC4wNC4wMDcuMDZhNS4yNzgsNS4yNzgsMCwwLDEsLjA0MS41NDcsMi45MjYsMi45MjYsMCwwLDAsLjkzMSwyLjRjLjAxNy4wMTQuMDM0LjAyNi4wNTIuMDM5bC4wMDguMDMxYTIuOCwyLjgsMCwwLDAsLjE1MS40NDcsMS4xODUsMS4xODUsMCwwLDAsLjYzMi42MTcsMS4yODksMS4yODksMCwwLDAsLjI0OC41NzEsMSwxLDAsMCwwLC4zMzIuMjc5LDIuNDUzLDIuNDUzLDAsMCwwLC40NjUuMTc2bC4wNjQuMDE4YS45NzYuOTc2LDAsMCwwLC4xOTIuMTcxQTUuODc5LDUuODc5LDAsMCwxLDcuODczLDE4YTEuMTMsMS4xMywwLDAsMCwxLjM1MS40MjcsMS41LDEuNSwwLDAsMCwuNzY1LjIxNSwxLjQyMSwxLjQyMSwwLDAsMCwuNjI0LS4xNDVsLjExNC0uMDI2Yy4wMjQuNDA4LjAzMy44MTcuMDI4LDEuMjIzYTEuMDQzLDEuMDQzLDAsMCwwLC4wMjYuMjQyLDEwLjc0NCwxMC43NDQsMCwwLDEsLjI2NiwxLjgyOC45MzEuOTMxLDAsMCwwLC4wMzEuMiw4LjQ5Miw4LjQ5MiwwLDAsMSwuMjY4LDEuODE1YzAsLjAzMSwwLC4wNjMuMDA4LjA5NGE2LjA4Myw2LjA4MywwLDAsMS0uNjEsMy41NzUuOTk0Ljk5NCwwLDAsMC0uMDg5LjI2MSwxLjA5MywxLjA5MywwLDAsMC0uMjM0LjA3OWwtLjA1LjAyMmEyLjAxMywyLjAxMywwLDAsMC0xLjIsMS4wNjUsMS4zMjIsMS4zMjIsMCwwLDAsLjA3NCwxLjA1NCwxLDEsMCwwLDAsLjMyNC4zNzEsMy41NDcsMy41NDcsMCwwLDAsMy41MDkuMywxLjU0NiwxLjU0NiwwLDAsMCwuODI5LTEuNjUzbC0uMDA1LS4wNjdhLjk4OS45ODksMCwwLDAsLjA1Ni0uMTU4LDExLjE4NiwxMS4xODYsMCwwLDAsLjI4OC0yLjA2OCw4LjkzOSw4LjkzOSwwLDAsMSwuMjU5LTEuODIyLDQuNzI3LDQuNzI3LDAsMCwwLC4zODktMS41ODhsLjA0Mi4wNDhhMTIuNjYxLDEyLjY2MSwwLDAsMCwxLjI1NSwxLjEyOSwxMC4zLDEwLjMsMCwwLDEsMS4xLjk4OWwtLjAxMS4wMzhhLjUzMi41MzIsMCwwLDEtLjM0Mi4zNTlsLS4wNDkuMDE3YTEuOTIxLDEuOTIxLDAsMCwwLTEuMTg0LDEuMzM0LDEuMzEzLDEuMzEzLDAsMCwwLC40NTIsMS4yMzQsMSwxLDAsMCwwLC40NDEuMjIyLDQuOTA4LDQuOTA4LDAsMCwwLDIuNzM1LS4xODEsMS41NTYsMS41NTYsMCwwLDAsLjI2Ni0uMTI0LDEuNDExLDEuNDExLDAsMCwwLC45Ny4zNzIsMi4zMjYsMi4zMjYsMCwwLDAsMS0uMjc0Yy4wNDktLjAyMy4xLS4wNDUuMTQtLjA2MmExLDEsMCwwLDAsLjYzNy0uODY0LDQuNTUzLDQuNTUzLDAsMCwwLS40NjgtMi4zNDMsMS41NiwxLjU2LDAsMCwwLS41MS0uNiwxMC44LDEwLjgsMCwwLDEsMS4zLTIuMTUsMi4xOTMsMi4xOTMsMCwwLDAsLjQ1MS0yLjAyNiwyLjUxOSwyLjUxOSwwLDAsMS0uMDQzLS4zOTQsMS4wNDYsMS4wNDYsMCwwLDAsMC0uMTQ4LDUuNzU2LDUuNzU2LDAsMCwxLC4wMTItMS4yNzksNy4xNjEsNy4xNjEsMCwwLDAsLjk1MSwxLjc5Myw3Ljg5Miw3Ljg5MiwwLDAsMSwuMTMzLDEuMSwxMC43MzMsMTAuNzMzLDAsMCwwLC4xMzMsMS4xODYsOS4zNiw5LjM2LDAsMCwxLS4yMjQsMy45LDEsMSwwLDAsMC0uMDMyLjM0aDBhLjk4Ljk4LDAsMCwwLS4xLjE3OSwyLjIzOCwyLjIzOCwwLDAsMC0uMzEyLDEuMjM1LDEuMDA3LDEuMDA3LDAsMCwwLC4wMzkuMiwxLjMxNSwxLjMxNSwwLDAsMCwxLjMyOC45NjNjLjA4NiwwLC4xNzctLjAwNi4yNjgtLjAxNGwuMDE5LDAsLjAzOC4wMTNhMi4xMDksMi4xMDksMCwwLDAsMi41MTctMS4wODgsMSwxLDAsMCwwLC4wNTgtLjczNSw1LjI4NSw1LjI4NSwwLDAsMS0uMjA4LTEuMDI3LDEuMDExLDEuMDExLDAsMCwwLS4wNDYtLjIxNyw2LjQ3LDYuNDcsMCwwLDEtLjIyMS0zLjIyLDEuMTEyLDEuMTEyLDAsMCwwLC4wMTUtLjExNCwzLjkwNywzLjkwNywwLDAsMSwuMDc0LS40NDMsMi43MzgsMi43MzgsMCwwLDAtLjE5My0yLjEsNC4zMzksNC4zMzksMCwwLDEsLjAyMS0uNDc2Yy4wMTEtLjE0Ny4wMjMtLjMuMDI3LS40NjNhMS41OSwxLjU5LDAsMCwwLC44NjItLjg1MSwxMi44MywxMi44MywwLDAsMCwuOTQ3LTIuMjMsMS43MTksMS43MTksMCwwLDAsLjE3Mi0xLjE4NSwxLjIzNCwxLjIzNCwwLDAsMCwuMTExLS4yNTFBMS40NjcsMS40NjcsMCwwLDAsMjkuMjUsMTMuOFpNMTguODYzLDIyLjc2OGMtLjAyNiwwLS4wNTMtLjAwOC0uMDgtLjAxbC0uMDI0LDBhMi43NDgsMi43NDgsMCwwLDEtLjIzNi0uMzIzYy0uMDU5LS4wODgtLjExOC0uMTc1LS4xNzgtLjI1OGEyLjI1MywyLjI1MywwLDAsMCwuMjA4LS4yMzQsMS4yNTUsMS4yNTUsMCwwLDAsLjYyOS0uMzIxQTMuMTg2LDMuMTg2LDAsMCwxLDE4Ljg2MywyMi43NjhaXCIgc3R5bGU9XCJmaWxsOiNlZGVkZWRcIi8+PHBhdGggZD1cIk0xOS4yODksMi4zYy0uNTQ4LS4wNjUtLjk2MS4zLTEuNDE5LjUwNi0uMzY4LjIwNi0uODE1LjE1Mi0xLjE4NS4zMDktLjI4Mi41NzktLjk0MS45MDgtMS4zLDEuNDQzYTUuNyw1LjcsMCwwLDEtMS45NDIsMi42OTQsNS40NjQsNS40NjQsMCwwLDAtMi4zNjgsMy4zOTRjLS4xNDUuMy0uMTIyLjc0Ni0uMjc3LDEtLjUxMS4xNDMtLjIzOS0uNTE2LS4zLS44MjUtLjA3NC0uNDcuMzQxLS43Ny4zNzMtMS4yMjZhMS44MzQsMS44MzQsMCwwLDAsLjIwOS0xLjA1M2MtLjA1Ni0uODE0LjE4OS0xLjgwNy0uMzkzLTIuNDc3LS4zNDktLjItLjIzOS0uNjIzLS4zNjYtLjk0N2E0LjIxNCw0LjIxNCwwLDAsMC0xLjMtMS4xMzljLS40MTktLjA0MS0uODA2LS41NDItMS4yMzItLjMyMy0uMjY2LjMwOS0uNzYzLjMwNS0uOTIyLjcxMy0uMS41MTYtLjY4OC4zNzQtMS4wNjguNS0uNDg4LjE4NS0xLjExOC4wMDYtMS41MTguMzgyLS40MTEuNDEtMS4wMzQuOTYxLS44MzUsMS42MDYuNDU3Ljg4MiwxLjY0NS40MzgsMi4zMTcuOTc0QTE3Ljk5LDE3Ljk5LDAsMCwxLDUuMDM2LDkuNjFhMTAuMDUxLDEwLjA1MSwwLDAsMC0uMDQ0LDIuMzMyYy4xMjMuNzczLS4wODMsMS43NzIuNjA2LDIuMzE5LjM4LjEzNy4zNTcuNTcyLjUuODg3LjEzNC4yOS40MjctLjExMy41NDMuMTkzLjMzOC4xODQuMDM3LjU2MS4yMi44LjI2My4xMzcuNjM5LjEyOC44MjIuNDI2YTYuODQ0LDYuODQ0LDAsMCwxLC45NzUuODA2Yy4yMy40NjcuNTMxLS40NTQuNzgzLS4xMDkuMTcuMjg1LjUwNi41MjIuODE5LjI4NWEyLjk5MywyLjk5MywwLDAsMCwxLjMyNC0uNTU2LDE4LjAzMywxOC4wMzMsMCwwLDEsLjE3MSwyLjcxOCwxMS43MzMsMTEuNzMzLDAsMCwxLC4yOSwyLDkuNDA5LDkuNDA5LDAsMCwxLC4zLDIuMDMsNy4xMTEsNy4xMTEsMCwwLDEtLjcwOSw0LjE2LDEuMDEyLDEuMDEyLDAsMCwxLS44MDcuOGMtLjI5MS4xMy0uOS4zNjYtLjY5Mi43NzZhMi41NDksMi41NDksMCwwLDAsMi41Mi4yMTRjLjUxLS4yNDMuMDczLS44NTguMzM0LTEuMjI2LjM0My0xLjMuMTc0LTIuNjkxLjU3NS0zLjk4NWEzLjc2MiwzLjc2MiwwLDAsMCwuMy0yLjFjLjA3OS0uNDQtLjEwNS0uOTY5LjE4Ny0xLjMyOWExLjgxMywxLjgxMywwLDAsMSwuNDgzLTEuMiwxNC43NjIsMTQuNzYyLDAsMCwwLC4xNDQtMi4wMjYsMy4yMTQsMy4yMTQsMCwwLDEsMS4yNjctLjEyN2MuMDE4LjM3NS0uMjcyLjgxMi0uMTksMS4yMzRBMS45NDgsMS45NDgsMCwwLDEsMTUuNSwyMC4zYTIuODQ5LDIuODQ5LDAsMCwwLC4xNjgsMi4zMDhjLjc4Mi44MzksMS44LDEuNDMyLDIuNTM2LDIuMzI3LjMxNC4yMDUuMi41MTcuMDM4Ljc4NGExLjUyOCwxLjUyOCwwLDAsMS0uOTg3LDEuMDM0Yy0uMzA4LjEyMS0uODA2LjU2Ni0uNDQyLjg4MmEzLjkwNiwzLjkwNiwwLDAsMCwyLjE3OC0uMTQ0Yy40NzYtLjE3MS4zLS43MzguNDg4LTEuMDg4LjMuMjMzLjQyMy43NjUuNzExLDEuMDY5LjMuNDMzLjgwNy4wNzMsMS4xNTYtLjA2MmEzLjU0OSwzLjU0OSwwLDAsMC0uMzcyLTEuODQyYy0uMTY3LS4zNzgtLjgtLjM4NS0uNzctLjg1MmExMS43NjEsMTEuNzYxLDAsMCwxLDEuNzEyLTNjLjUxLS40NzkuMTMtMS4xOTEuMTU4LTEuOEE2Ljc2NSw2Ljc2NSwwLDAsMSwyMy4xNTgsMTUuNWExNS44ODksMTUuODg5LDAsMCwwLC42OTIsMi4xNCw2LjIzLDYuMjMsMCwwLDAsMS4xLDIuMjQ2Yy4yMzcuODExLjE3NiwxLjcxLjMzMSwyLjU1MWExMC40NCwxMC40NCwwLDAsMS0uMjQyLDQuMzQ3Yy4wNC41MTgtLjQ1Ny45LS40MTUsMS40MDguMTQuNDY5LjcuMDkzLjk5LjI5YTEuMTEsMS4xMSwwLDAsMCwxLjMyNC0uNTcyLDYuMjEyLDYuMjEyLDAsMCwxLS4yNDctMS4yMjMsNy40NTQsNy40NTQsMCwwLDEtLjI1NS0zLjcxOWMuMDQ2LS42NjkuNDU3LTEuNS0uMDczLTIuMDcyLS4xNDgtLjYxOS4xLTEuMjg1LS4wNDktMS45MTVhMTIuODc3LDEyLjg3NywwLDAsMS0uMTIyLTQuOTMzYy4wOTMtLjIyNy4wMTMtLjY0OS4yNDctLjc3NWExLjg1MSwxLjg1MSwwLDAsMSwuMzE1LDEuMjMyLDMuNywzLjcsMCwwLDEsLjA3OSwyLjA4MWMtLjQyNC41MzEtLjE2MywxLjI0OC0uMTA5LDEuODUuMDY4LjQyMi41MTYuMTE4LjU4OS0uMTQ0YTExLjg1MSwxMS44NTEsMCwwLDAsLjk0NC0yLjI0MWMuMjY5LS4zNTYuMDE0LS43NywwLTEuMTQyLjQxMy0uMDQ5LjI1Ni0uNTA2LjAzNS0uN2E1LjkzLDUuOTMsMCwwLDAtLjY2Ny0yLjIsMTAuNDY0LDEwLjQ2NCwwLDAsMS0xLjk0MS0yLjcyM2MtLjUyOC0xLjYzOS0yLjA0Mi0yLjcyNi0yLjU1Ni00LjM3OWEzLjU1NiwzLjU1NiwwLDAsMC0xLjY1Mi0yLjMxN0E3Ljg4MSw3Ljg4MSwwLDAsMCwyMC4zMiwyLjE3LDYuNSw2LjUsMCwwLDEsMTkuMjg5LDIuM1ptLjQsMTQuNjZhMzguOTA3LDM4LjkwNywwLDAsMSwuNSw0LjI5MSw0LjE3NSw0LjE3NSwwLDAsMS0uNzYsMi41MTdjLS4xMi40MjUtLjQ4Ni4wMTItLjc1MS0uMDE2LS42NDMtLjAxOC0uODgyLS42ODMtMS4yMzItMS4xMDctLjM2LS4zNDQtLjEtLjguMTMzLTEuMTMxLjI1Mi0uMTc5LjM1LS41NzkuNzA4LS41NDguNC0uMDA3LjMxNi0uNDg3LjI2LS43NDMuMjM4LS4zNjIuMDkyLS44OTIuMzI4LTEuMjgzLjQxOS0uMTgyLjI5NC0uODIuNDQyLTEuMTguMTE1LS4yNTYuMDE3LS43NDkuMzM0LS44NTQuMDM3LS4wMDYuMDQ5LjAxMi4wNDIuMDUyWlwiIHN0eWxlPVwiZmlsbDojM2EzYzViXCIvPmAsXG5cdFwiUEhQXCI6IGA8ZGVmcz48cmFkaWFsR3JhZGllbnQgaWQ9XCJhXCIgY3g9XCItMTYuMTE0XCIgY3k9XCIyMC41MzJcIiByPVwiMTguMzg0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjYuNTIgLTkuMzA3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjVcIiBzdG9wLWNvbG9yPVwiIzRjNmI5NlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMyMzFmMjBcIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9waHA8L3RpdGxlPjxlbGxpcHNlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcng9XCIxNFwiIHJ5PVwiNy4zNjVcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48ZWxsaXBzZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHJ4PVwiMTMuNDUzXCIgcnk9XCI2LjgxOFwiIHN0eWxlPVwiZmlsbDojNjI4MGI2XCIvPjxwYXRoIGQ9XCJNMTguNzI1LDE4LjJsLjY2Ny0zLjQzNGExLjc1MiwxLjc1MiwwLDAsMC0uMzcyLTEuNzE5LDIuOTI5LDIuOTI5LDAsMCwwLTItLjUyNUgxNS44NjdsLjMzMS0xLjdhLjIxOS4yMTksMCwwLDAtLjIxNS0uMjZoLTEuNmEuMjE5LjIxOSwwLDAsMC0uMjE1LjE3N2wtLjcwOSwzLjY0NmEyLjA1MSwyLjA1MSwwLDAsMC0uNDc3LTEuMDU0LDIuNzgzLDIuNzgzLDAsMCwwLTIuMi0uODA3SDcuN2EuMjE5LjIxOSwwLDAsMC0uMjE1LjE3N2wtMS40MzQsNy4zOGEuMjE5LjIxOSwwLDAsMCwuMjE1LjI2SDcuODY5YS4yMTkuMjE5LDAsMCwwLC4yMTUtLjE3N2wuMzQ3LTEuNzg1aDEuMmE1LjE2Nyw1LjE2NywwLDAsMCwxLjU2OC0uMiwzLjA2OCwzLjA2OCwwLDAsMCwxLjE1LS42ODksMy41MzgsMy41MzgsMCwwLDAsLjY4LS44NDRsLS4yODcsMS40NzVhLjIxOS4yMTksMCwwLDAsLjIxNS4yNmgxLjZhLjIxOS4yMTksMCwwLDAsLjIxNS0uMTc3bC43ODctNC4wNTFoMS4wOTRjLjQ2NiwwLC42LjA5My42NC4xMzNzLjEuMTY1LjAyNS41NjlsLS42MzUsMy4yNjVhLjIxOS4yMTksMCwwLDAsLjIxNS4yNmgxLjYyQS4yMTkuMjE5LDAsMCwwLDE4LjcyNSwxOC4yWk0xMS4zMywxNS4zNjZhMS43NDksMS43NDksMCwwLDEtLjU2MSwxLjA5MiwyLjE3MSwyLjE3MSwwLDAsMS0xLjMxNS4zMjFIOC43NDJsLjUxNS0yLjY1MWguOTIxYy42NzcsMCwuOTQ5LjE0NSwxLjA1OS4yNjZBMS4xODEsMS4xODEsMCwwLDEsMTEuMzMsMTUuMzY2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjUuNTQ2LDEzLjMzMmEyLjc4MywyLjc4MywwLDAsMC0yLjItLjgwN0gyMC4yNTVhLjIxOS4yMTksMCwwLDAtLjIxNS4xNzdsLTEuNDM0LDcuMzhhLjIxOS4yMTksMCwwLDAsLjIxNS4yNmgxLjYwOGEuMjE5LjIxOSwwLDAsMCwuMjE1LS4xNzdsLjM0Ny0xLjc4NWgxLjJhNS4xNjcsNS4xNjcsMCwwLDAsMS41NjgtLjIsMy4wNjgsMy4wNjgsMCwwLDAsMS4xNS0uNjg5LDMuNDI1LDMuNDI1LDAsMCwwLDEuMDc2LTEuOTI3QTIuNTEyLDIuNTEyLDAsMCwwLDI1LjU0NiwxMy4zMzJabS0xLjY2NywyLjAzNGExLjc0OSwxLjc0OSwwLDAsMS0uNTYxLDEuMDkyQTIuMTcxLDIuMTcxLDAsMCwxLDIyLDE2Ljc3OEgyMS4yOWwuNTE1LTIuNjUxaC45MjFjLjY3NywwLC45NDkuMTQ1LDEuMDU5LjI2NkExLjE4MSwxLjE4MSwwLDAsMSwyMy44NzksMTUuMzY2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTAuMTc4LDEzLjkwOGExLjY0NSwxLjY0NSwwLDAsMSwxLjIyMS4zMzgsMS4zNCwxLjM0LDAsMCwxLC4xNDUsMS4xNjEsMS45NDUsMS45NDUsMCwwLDEtLjY0MiwxLjIyM0EyLjM2MSwyLjM2MSwwLDAsMSw5LjQ1NCwxN0g4LjQ3NmwuNi0zLjA4OVpNNi4yNjEsMjAuMTI0SDcuODY5bC4zODEtMS45NjJIOS42MjdhNC45MzEsNC45MzEsMCwwLDAsMS41LS4xOTEsMi44NCwyLjg0LDAsMCwwLDEuMDctLjY0MiwzLjIwNywzLjIwNywwLDAsMCwxLjAxLTEuODA4LDIuMywyLjMsMCwwLDAtLjM4NS0yLjA0NCwyLjU2OCwyLjU2OCwwLDAsMC0yLjAzNS0uNzMySDcuN1pcIiBzdHlsZT1cImZpbGw6IzAwMDAwNFwiLz48cGF0aCBkPVwiTTE0LjM4NywxMC43ODJoMS42TDE1LjYsMTIuNzQ0aDEuNDIxYTIuNzY3LDIuNzY3LDAsMCwxLDEuODUuNDY4LDEuNTQ4LDEuNTQ4LDAsMCwxLC4zMDUsMS41MTZsLS42NjcsMy40MzRIMTYuODlsLjYzNS0zLjI2NWEuODg2Ljg4NiwwLDAsMC0uMDgtLjc2LDEuMTIxLDEuMTIxLDAsMCwwLS44LS4ySDE1LjM3bC0uODIyLDQuMjI4aC0xLjZaXCIgc3R5bGU9XCJmaWxsOiMwMDAwMDRcIi8+PHBhdGggZD1cIk0yMi43MjcsMTMuOTA4YTEuNjQ1LDEuNjQ1LDAsMCwxLDEuMjIxLjMzOCwxLjM0LDEuMzQsMCwwLDEsLjE0NSwxLjE2MSwxLjk0NSwxLjk0NSwwLDAsMS0uNjQyLDEuMjIzQTIuMzYxLDIuMzYxLDAsMCwxLDIyLDE3aC0uOTc4bC42LTMuMDg5Wk0xOC44MSwyMC4xMjRoMS42MDhsLjM4MS0xLjk2MmgxLjM3N2E0LjkzMSw0LjkzMSwwLDAsMCwxLjUtLjE5MSwyLjg0LDIuODQsMCwwLDAsMS4wNy0uNjQyLDMuMjA3LDMuMjA3LDAsMCwwLDEuMDEtMS44MDgsMi4zLDIuMywwLDAsMC0uMzg1LTIuMDQ0LDIuNTY4LDIuNTY4LDAsMCwwLTIuMDM1LS43MzJIMjAuMjQ0WlwiIHN0eWxlPVwiZmlsbDojMDAwMDA0XCIvPmAsXG5cdFwiUEwvU1FMXCI6IGA8cGF0aCBkPVwiTTguNTYyLDE1LjI1NkEyMS4xNTksMjEuMTU5LDAsMCwwLDE2LDE2LjQ0OWEyMS4xNTksMjEuMTU5LDAsMCwwLDcuNDM4LTEuMTk0YzEuODY0LS43MjcsMi41MjUtMS41MzUsMi41MjUtMlY5LjdhMTAuMzU3LDEwLjM1NywwLDAsMS0yLjA4NCwxLjA3NkEyMi4yOTMsMjIuMjkzLDAsMCwxLDE2LDEyLjA3OGEyMi4zNiwyMi4zNiwwLDAsMS03Ljg3OS0xLjNBMTAuMjgsMTAuMjgsMCwwLDEsNi4wMzcsOS43djMuNTVDNi4wMzcsMTMuNzI0LDYuNywxNC41MjgsOC41NjIsMTUuMjU2WlwiIHN0eWxlPVwiZmlsbDpyZWRcIi8+PHBhdGggZD1cIk04LjU2MiwyMS45NjFhMTUuNjExLDE1LjYxMSwwLDAsMCwyLjYuNzQxQTI0LjksMjQuOSwwLDAsMCwxNiwyMy4xNTVhMjQuOSwyNC45LDAsMCwwLDQuODM4LS40NTIsMTUuNjE0LDE1LjYxNCwwLDAsMCwyLjYtLjc0MWMxLjg2NC0uNzI3LDIuNTI1LTEuNTM1LDIuNTI1LTJ2LTMuMzlhMTAuNzA2LDEwLjcwNiwwLDAsMS0xLjY5Mi44MjVBMjMuNDksMjMuNDksMCwwLDEsMTYsMTguNzRhMjMuNDksMjMuNDksMCwwLDEtOC4yNzEtMS4zNDgsMTAuODI5LDEwLjgyOSwwLDAsMS0xLjY5Mi0uODI1VjE5Ljk2QzYuMDM3LDIwLjQyNiw2LjcsMjEuMjMxLDguNTYyLDIxLjk2MVpcIiBzdHlsZT1cImZpbGw6cmVkXCIvPjxwYXRoIGQ9XCJNMTYsMzBjNS41LDAsOS45NjMtMS43NDQsOS45NjMtMy44OTRWMjMuMjY5YTEwLjUsMTAuNSwwLDAsMS0xLjUzNS43NjJsLS4xNTcuMDYzQTIzLjQ4NywyMy40ODcsMCwwLDEsMTYsMjUuNDQ1YTIzLjQyMiwyMy40MjIsMCwwLDEtOC4yNzEtMS4zNTFjLS4wNTQtLjAyLS4xMDYtLjA0My0uMTU3LS4wNjNhMTAuNSwxMC41LDAsMCwxLTEuNTM1LS43NjJ2Mi44MzdDNi4wMzcsMjguMjU2LDEwLjUsMzAsMTYsMzBaXCIgc3R5bGU9XCJmaWxsOnJlZFwiLz48ZWxsaXBzZSBjeD1cIjE2XCIgY3k9XCI1Ljg5NFwiIHJ4PVwiOS45NjNcIiByeT1cIjMuODk0XCIgc3R5bGU9XCJmaWxsOnJlZFwiLz5gLFxuXHRcIlBsYWluIHRleHRcIjogYDxwYXRoIGQ9XCJNMjIuMDM4LDJINi4zNzVhMS43NTUsMS43NTUsMCwwLDAtMS43NSwxLjc1djI0LjVBMS43NTUsMS43NTUsMCwwLDAsNi4zNzUsMzBoMTkuMjVhMS43NTUsMS43NTUsMCwwLDAsMS43NS0xLjc1VjYuODU2Wm0uNTI1LDIuODQ0LDEuNjYzLDEuNTMxSDIyLjU2M1pNNi4zNzUsMjguMjVWMy43NUgyMC44MTNWOC4xMjVoNC44MTNWMjguMjVaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHJlY3QgeD1cIjguMTI1XCIgeT1cIjE1LjA5N1wiIHdpZHRoPVwiMTMuMDc2XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIyNC40MzlcIiB3aWR0aD1cIjkuNzYyXCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxOS43NjNcIiB3aWR0aD1cIjE1Ljc1XCIgaGVpZ2h0PVwiMS43NVwiIHN0eWxlPVwiZmlsbDojODI5ZWMyXCIvPjxyZWN0IHg9XCI4LjEyNVwiIHk9XCIxMC4yM1wiIHdpZHRoPVwiMTUuNzVcIiBoZWlnaHQ9XCIxLjc1XCIgc3R5bGU9XCJmaWxsOiM4MjllYzJcIi8+YCxcblx0XCJQbGFudFVNTFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTMzLjQyM1wiIHkxPVwiLTI1MC45MTFcIiB4Mj1cIi0zMy4zNTNcIiB5Mj1cIi0yNTAuODU4XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMzcuMTM0LCAyNi4wMDEsIDEzLjU3NSwgLTE5LjM4NywgNDY3My40NzMsIC0zOTgyLjAxOSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM3Njc2NzZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi0zMi4xMDdcIiB5MT1cIi0yNDIuNTYzXCIgeDI9XCItMzIuMDI4XCIgeTI9XCItMjQyLjU4NlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDgxLjA4MSwgNTYuNzc0LCAxNy4zMDYsIC0yNC43MTUsIDY4MDQuMDIxLCAtNDE0OS42NDQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMDA3OWI5XCIvPjxzdG9wIG9mZnNldD1cIjFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItMzMuMjgyXCIgeTE9XCItMjQzLjQyM1wiIHgyPVwiLTMzLjIyNFwiIHkyPVwiLTI0My40NTVcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg2MC4wMDMsIDQyLjAxNSwgMzQuMTg0LCAtNDguODIsIDEwMzQzLjAwNSwgLTEwNDY5LjA4NClcIiB4bGluazpocmVmPVwiI2JcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiMTIuMzU2XCIgeTE9XCIyNi4yNjhcIiB4Mj1cIjE0LjAxMVwiIHkyPVwiMjYuMjY4XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjNTk1OTU5XCIvPjxzdG9wIG9mZnNldD1cIjAuMDg3XCIgc3RvcC1jb2xvcj1cIiM2ZTZlNmVcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yNDJcIiBzdG9wLWNvbG9yPVwiIzhjOGM4Y1wiLz48c3RvcCBvZmZzZXQ9XCIwLjQwNVwiIHN0b3AtY29sb3I9XCIjYTRhNGE0XCIvPjxzdG9wIG9mZnNldD1cIjAuNTc3XCIgc3RvcC1jb2xvcj1cIiNiNWI1YjVcIi8+PHN0b3Agb2Zmc2V0PVwiMC43NjVcIiBzdG9wLWNvbG9yPVwiI2JmYmZiZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNjMmMyYzJcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJlXCIgeDE9XCIxOC4yOTFcIiB5MT1cIjI2LjE3MVwiIHgyPVwiMTkuOTQ2XCIgeTI9XCIyNi4xNzFcIiB4bGluazpocmVmPVwiI2RcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZlwiIHgxPVwiMjQuNDRcIiB5MT1cIjI2LjE3MVwiIHgyPVwiMjYuMDk2XCIgeTI9XCIyNi4xNzFcIiB4bGluazpocmVmPVwiI2RcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcGxhbnR1bWw8L3RpdGxlPjxwb2x5Z29uIHBvaW50cz1cIjIwLjMwNSAxNy44NzIgMjcuMTYgMjIuNDE4IDIxLjcyIDI1LjQ5MyAxNC44NjEgMjAuOTk5IDIwLjMwNSAxNy44NzJcIiBzdHlsZT1cImZpbGw6IzFjMGE0MlwiLz48cGF0aCBkPVwiTTIxLjcxNiwyNS42MTlsLS4wNTUtLjAzNi03LjAwNS00LjU5LDUuNjUzLTMuMjQ3LDcuMDU2LDQuNjhabS02LjY1LTQuNjEzLDYuNjU4LDQuMzYyLDUuMjMxLTIuOTU3TDIwLjMsMThaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI2LjQwMSAxMS45MDkgMjkuNDE4IDEzLjU5MiAyNy4wNyAxNS4wODggMjQuMjEzIDEzLjI0NyAyNi40MDEgMTEuOTA5XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk0yNy4wNjksMTUuMjE1bC0zLjA1OC0xLjk3LDIuMzg3LTEuNDYsMy4yMjgsMS44Wm0tMi42NTQtMS45NjZMMjcuMDcsMTQuOTYsMjkuMjA4LDEzLjZsLTIuOC0xLjU2NVpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTQuNDk4IDE3LjgwNyAyMS4zNTQgMjIuMzU0IDE1LjkxNCAyNS40MjkgOS4wNTUgMjAuOTM1IDE0LjQ5OCAxNy44MDdcIiBzdHlsZT1cImZpbGw6I2ZmYmQzZlwiLz48cGF0aCBkPVwiTTE1LjkxLDI1LjU1NGwtLjA1NS0uMDM2TDguODUsMjAuOTI5LDE0LjUsMTcuNjgxbDcuMDU2LDQuNjhaTTkuMjYsMjAuOTQxLDE1LjkxOCwyNS4zbDUuMjMxLTIuOTU3LTYuNjU0LTQuNDEzWlwiLz48cG9seWdvbiBwb2ludHM9XCI3Ljk5IDE3Ljk2NiAxNC45NTQgMjIuMzY2IDkuNTc3IDI1LjUwNCAyLjIxOCAyMC44NDkgNy45OSAxNy45NjZcIiBzdHlsZT1cImZpbGw6I2ExMWY0MFwiLz48cGF0aCBkPVwiTTkuNTc1LDI1LjYyOSwyLDIwLjgzOGw2LTMsNy4xNjQsNC41MjdaTTIuNDM2LDIwLjg2LDkuNTgsMjUuMzc4bDUuMTY4LTMuMDE2TDcuOTg0LDE4LjA4OVpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMi4xMTEgMjEuMDIxIDkuNDQzIDI1LjUxNSA5LjQ0MyAyOS4wNjMgMi4xMTEgMjQuMzMyIDIuMTExIDIxLjAyMVwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNOS41NSwyOS4yNiwyLDI0LjM5MVYyMC44MjlMOS41NSwyNS40NTVaTTIuMjE4LDI0LjI3NGw3LjExOCw0LjU5MlYyNS41NzVMMi4yMTgsMjEuMjEzWlwiLz48cG9seWdvbiBwb2ludHM9XCIyNC4wNzEgMTMuMzQzIDI3LjAwOSAxNS4yMjIgMjcuMDA5IDIyLjEzMSAyNC4wNzEgMjAuMjQ3IDI0LjA3MSAxMy4zNDNcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTI3LjA2MywyMi4yMjlsLTMuMDQ1LTEuOTUzVjEzLjI0NWwzLjA0NSwxLjk0N1ptLTIuOTM4LTIuMDEyLDIuODMxLDEuODE1VjE1LjI1MWwtMi44MzEtMS44MVpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjcuMTQ5IDIyLjUyNiAyNy4xNDkgMTUuMTk0IDI5LjUxNCAxMy43NzUgMjkuNTE0IDI5LjE0OSAyOC4zMzEgMjkuMTQ5IDkuNjQ2IDI5LjE0OSA5LjY0NiAyNS42MDEgMTUuMDg2IDIyLjUyNiAxNS43ODUgMjUuNjAxIDE1Ljc5NiAyNS42MDEgMjEuNDcyIDIyLjUyNiAyMS44OTEgMjUuNjAxIDIxLjk0NSAyNS42MDEgMjcuMTQ5IDIyLjUyNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjkuNjIxLDI5LjI1Nkg5LjUzOVYyNS41MzhsNS42Mi0zLjE3Ny43LDMuMDgzLDUuNy0zLjA4Ny40MjIsMy4xLDUuMDYxLTIuOTkxVjE1LjEzM2wyLjU4LTEuNTQ4Wk05Ljc1MywyOS4wNDFIMjkuNDA3VjEzLjk2NGwtMi4xNTEsMS4yOXY3LjMzMmwtLjA1My4wMzEtNS4yMjksMy4wOUgyMS44bC0uNDExLTMuMDE0LTUuNTY0LDMuMDE0SDE1LjdsLS42ODYtMy4wMTgtNS4yNiwyLjk3M1pcIi8+PHJlY3QgeD1cIjEyLjM1NlwiIHk9XCIyNS40NFwiIHdpZHRoPVwiMS42NTZcIiBoZWlnaHQ9XCIxLjY1NlwiIHJ4PVwiMC4yMTVcIiByeT1cIjAuMjE1XCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0xMy44LDI3LjJIMTIuNTdhLjMyMi4zMjIsMCwwLDEtLjMyMi0uMzIyVjI1LjY1NWEuMzIyLjMyMiwwLDAsMSwuMzIyLS4zMjJIMTMuOGEuMzIyLjMyMiwwLDAsMSwuMzIyLjMyMnYxLjIyNkEuMzIyLjMyMiwwLDAsMSwxMy44LDI3LjJaTTEyLjU3LDI1LjU0N2EuMTA4LjEwOCwwLDAsMC0uMTA3LjEwN3YxLjIyNmEuMTA4LjEwOCwwLDAsMCwuMTA3LjEwN0gxMy44YS4xMDguMTA4LDAsMCwwLC4xMDctLjEwN1YyNS42NTVhLjEwOC4xMDgsMCwwLDAtLjEwNy0uMTA3WlwiLz48cmVjdCB4PVwiMTguMjkxXCIgeT1cIjI1LjM0M1wiIHdpZHRoPVwiMS42NTZcIiBoZWlnaHQ9XCIxLjY1NlwiIHJ4PVwiMC4yMTVcIiByeT1cIjAuMjE1XCIgc3R5bGU9XCJmaWxsOnVybCgjZSlcIi8+PHBhdGggZD1cIk0xOS43MzIsMjcuMTA2SDE4LjUwNWEuMzIyLjMyMiwwLDAsMS0uMzIyLS4zMjJWMjUuNTU4YS4zMjIuMzIyLDAsMCwxLC4zMjItLjMyMmgxLjIyNmEuMzIyLjMyMiwwLDAsMSwuMzIyLjMyMnYxLjIyNkEuMzIyLjMyMiwwLDAsMSwxOS43MzIsMjcuMTA2Wm0tMS4yMjYtMS42NTZhLjEwOC4xMDgsMCwwLDAtLjEwNy4xMDd2MS4yMjZhLjEwOC4xMDgsMCwwLDAsLjEwNy4xMDdoMS4yMjZhLjEwOC4xMDgsMCwwLDAsLjEwNy0uMTA3VjI1LjU1OGEuMTA4LjEwOCwwLDAsMC0uMTA3LS4xMDdaXCIvPjxyZWN0IHg9XCIyNC40NFwiIHk9XCIyNS4zNDNcIiB3aWR0aD1cIjEuNjU2XCIgaGVpZ2h0PVwiMS42NTZcIiByeD1cIjAuMjE1XCIgcnk9XCIwLjIxNVwiIHN0eWxlPVwiZmlsbDp1cmwoI2YpXCIvPjxwYXRoIGQ9XCJNMjUuODgxLDI3LjEwNkgyNC42NTVhLjMyMi4zMjIsMCwwLDEtLjMyMi0uMzIyVjI1LjU1OGEuMzIyLjMyMiwwLDAsMSwuMzIyLS4zMjJoMS4yMjZhLjMyMi4zMjIsMCwwLDEsLjMyMi4zMjJ2MS4yMjZBLjMyMi4zMjIsMCwwLDEsMjUuODgxLDI3LjEwNlptLTEuMjI2LTEuNjU2YS4xMDguMTA4LDAsMCwwLS4xMDcuMTA3djEuMjI2YS4xMDguMTA4LDAsMCwwLC4xMDcuMTA3aDEuMjI2YS4xMDguMTA4LDAsMCwwLC4xMDctLjEwN1YyNS41NThhLjEwOC4xMDgsMCwwLDAtLjEwNy0uMTA3WlwiLz48cGF0aCBkPVwiTTI3LjIxNSwxMS4yM2MtLjA1Mi4wNjktLjQxNy0uMjYyLS42NTMtLjUyNmE0LjQwOCw0LjQwOCwwLDAsMS0uNTE2LS43M0EyLjYsMi42LDAsMCwxLDI1LjcsOS4yYTIuMzU4LDIuMzU4LDAsMCwxLS4wNTItLjY4MiwyLjk1OSwyLjk1OSwwLDAsMSwuMTI5LS43NDksMy4xNDIsMy4xNDIsMCwwLDEsLjc4Ny0xLjIwNywxNS41MzIsMTUuNTMyLDAsMCwwLDEuMjgzLTEuNCwzLjA2MiwzLjA2MiwwLDAsMCwuNDc5LS45MjcsMy45NzksMy45NzksMCwwLDAsLjE1MS0uODU1Yy4wMTktLjM2NC0uMDI1LS41OTMuMDIzLS42MTNzLjIxNS4yNzQuMjg3LjU2NGEzLjE2NywzLjE2NywwLDAsMS0uNDU4LDIuMSw2LjksNi45LDAsMCwxLTEuMDk0LDEuNDQ4LDIuOCwyLjgsMCwwLDAtLjg0OSwxLjIzNEEyLjQ2NiwyLjQ2NiwwLDAsMCwyNi4zLDguOGEzLjQ2NSwzLjQ2NSwwLDAsMCwuNDc2LDEuNTQyQzI3LjA2NCwxMC45MTQsMjcuMjU2LDExLjE3NSwyNy4yMTUsMTEuMjNaXCIgc3R5bGU9XCJmaWxsOiNlYTJkMmVcIi8+PHBhdGggZD1cIk0yNy4xOTMsMTEuMjY2Yy0uMTI0LDAtLjQ5Mi0uMzY1LS42NTEtLjU0NGE0LjQ3OCw0LjQ3OCwwLDAsMS0uNTItLjczNCwyLjYyOCwyLjYyOCwwLDAsMS0uMzQ2LS43ODEsMi4zNzUsMi4zNzUsMCwwLDEtLjA1My0uNjksMi45NzgsMi45NzgsMCwwLDEsLjEzLS43NTYsMy4yMDgsMy4yMDgsMCwwLDEsLjc5My0xLjIxNmMuMjk0LS4zMzEuNS0uNTI4LjY1OS0uNjg2YTQuMzkzLDQuMzkzLDAsMCwwLC42MjItLjcxMSwzLjA1MiwzLjA1MiwwLDAsMCwuNDc2LS45MTksMy45NTEsMy45NTEsMCwwLDAsLjE1LS44NDljLjAwOC0uMTU5LDAtLjI5NCwwLS4zOTMsMC0uMTU5LS4wMDYtLjIyNS4wMzgtLjI0M2EuMDUuMDUsMCwwLDEsLjA0MywwLDEuMjI2LDEuMjI2LDAsMCwxLC4yOC41NzksMy4xNjcsMy4xNjcsMCwwLDEtLjQ2LDIuMTIxLDYuOTI4LDYuOTI4LDAsMCwxLTEuMSwxLjQ1M2MtLjA1NS4wNi0uMTA5LjExNi0uMTYyLjE3MWEyLjMsMi4zLDAsMCwwLS42ODEsMS4wNTIsMi40NywyLjQ3LDAsMCwwLS4wODIuNjczLDMuNDU4LDMuNDU4LDAsMCwwLC40NzMsMS41M2MuMTE0LjIzMS4yMTUuNDE1LjI4OS41NDkuMTI5LjIzNS4xNzguMzIzLjE0Mi4zNjloMGEuMDUxLjA1MSwwLDAsMS0uMDQuMDJaTTI4LjUxMiwyLjhhLjg2My44NjMsMCwwLDAsMCwuMTljMCwuMS4wMDcuMjM2LDAsLjRhNC4wMjEsNC4wMjEsMCwwLDEtLjE1Mi44NjEsMy4xMDYsMy4xMDYsMCwwLDEtLjQ4My45MzQsNC40MzcsNC40MzcsMCwwLDEtLjYyOS43MTljLS4xNjIuMTU4LS4zNjQuMzU0LS42NTcuNjgzYTMuMTY4LDMuMTY4LDAsMCwwLS43ODIsMS4yLDIuOTMzLDIuOTMzLDAsMCwwLS4xMjguNzQzLDIuMzI1LDIuMzI1LDAsMCwwLC4wNTIuNjc1LDIuNTksMi41OSwwLDAsMCwuMzQxLjc2Nyw0LjQyMiw0LjQyMiwwLDAsMCwuNTEzLjcyNSwyLjAzNSwyLjAzNSwwLDAsMCwuNjExLjUyNiwxLjE4MywxLjE4MywwLDAsMC0uMTQ3LS4zMWMtLjA3NC0uMTM0LS4xNzUtLjMxOC0uMjktLjU1MUEzLjUsMy41LDAsMCwxLDI2LjI3OCw4LjhhMi41MywyLjUzLDAsMCwxLC4wODQtLjY4OCwyLjM3NSwyLjM3NSwwLDAsMSwuNjk0LTEuMDc1Yy4wNTItLjA1NS4xMDYtLjExMS4xNjEtLjE3MWE2Ljg3OSw2Ljg3OSwwLDAsMCwxLjA5LTEuNDQyLDMuMTE5LDMuMTE5LDAsMCwwLC40NTYtMi4wODNBMS4yODEsMS4yODEsMCwwLDAsMjguNTEyLDIuOFpcIi8+PHBhdGggZD1cIk0yOS45NzIsNi4wODdjLS4wMTktLjA4OC0uNDMyLS4wNC0uNzY2LjA3M2EyLjYsMi42LDAsMCwwLTEuMDU5LjcyMiwyLjgsMi44LDAsMCwwLS45MTYsMS44NTUsMi45NzIsMi45NzIsMCwwLDAsLjI1OCwxLjA2Yy4yMjEuNTcyLjQ1NS43NzMuNDQ0LDEuMjI1LS4wMDcuMy0uMTE0LjQ4NC0uMDQ4LjU0OXMuMzE0LS4xLjQ2Mi0uMzEzYTEuOCwxLjgsMCwwLDAsLjI1OS0xLjAyMmMtLjA0Ni0uODE1LS42LTEuMDE1LS42MDgtMS44YTEuODU4LDEuODU4LDAsMCwxLC4xMjktLjY3NkMyOC41Nyw2LjUwOSwzMC4wMDgsNi4yNTIsMjkuOTcyLDYuMDg3WlwiIHN0eWxlPVwiZmlsbDojZWEyZDJlXCIvPjxwYXRoIGQ9XCJNMjcuOTM0LDExLjYxN2EuMDk0LjA5NCwwLDAsMS0uMDY5LS4wMjZjLS4wNDYtLjA0Ni0uMDMtLjEyMi0uMDA1LS4yMzdhMS43MTgsMS43MTgsMCwwLDAsLjA0NS0uMzMxLDEuMzc0LDEuMzc0LDAsMCwwLS4yMTQtLjcyLDUsNSwwLDAsMS0uMjI4LS40OTUsMi45OCwyLjk4LDAsMCwxLS4yNTktMS4wNywyLjgxLDIuODEsMCwwLDEsLjkyMy0xLjg3NCwyLjY0LDIuNjQsMCwwLDEsMS4wNy0uNzI5LDEuNDgyLDEuNDgyLDAsMCwxLC43NjYtLjFBLjA2NS4wNjUsMCwwLDEsMzAsNi4wODFoMGMuMDE1LjA3LS4wOTIuMTIxLS4zMDYuMjI0YTIuNzMsMi43MywwLDAsMC0xLjU0MiwxLjQ2MywxLjgyNywxLjgyNywwLDAsMC0uMTI3LjY2NywxLjY0NSwxLjY0NSwwLDAsMCwuMjkxLjg4NSwxLjg4OSwxLjg4OSwwLDAsMSwuMzE3LjkxNCwxLjgxNCwxLjgxNCwwLDAsMS0uMjY0LDEuMDM5LjgwOS44MDksMCwwLDEtLjQyMS4zNDJabTEuODg5LTUuNTQ5YTIuMTE3LDIuMTE3LDAsMCwwLS42MDguMTE3LDIuNTg4LDIuNTg4LDAsMCwwLTEuMDQ4LjcxNSwyLjc2NCwyLjc2NCwwLDAsMC0uOTA5LDEuODM3LDIuOTM1LDIuOTM1LDAsMCwwLC4yNTYsMS4wNSw0Ljk1NSw0Ljk1NSwwLDAsMCwuMjI1LjQ5LDEuNDMzLDEuNDMzLDAsMCwxLC4yMi43NDUsMS43NjUsMS43NjUsMCwwLDEtLjA0Ny4zNDFjLS4wMTkuMDkxLS4wMzUuMTYzLS4wMDkuMTg4YS4wNDYuMDQ2LDAsMCwwLC4wMzguMDEuNzY5Ljc2OSwwLDAsMCwuMzgyLS4zMiwxLjc5MywxLjc5MywwLDAsMCwuMjU0LTEuMDA1LDEuODQ0LDEuODQ0LDAsMCwwLS4zMS0uODksMS43MTEsMS43MTEsMCwwLDEtLjMtLjkxMSwxLjg3NywxLjg3NywwLDAsMSwuMTMtLjY4NkEyLjc3NiwyLjc3NiwwLDAsMSwyOS42Nyw2LjI1N2MuMTI2LS4wNjEuMjgzLS4xMzYuMjc3LS4xNjRsLS4wMDgtLjAwN0EuMjY0LjI2NCwwLDAsMCwyOS44MjMsNi4wNjhaXCIvPmAsXG5cdFwiUG93ZXJRdWVyeVwiOiBgPHBhdGggZD1cIk0zMCwyNS41ODNIMjUuNzU3VjE1LjM3OGE4LjI3MSw4LjI3MSwwLDAsMC0uODMyLTQuMjYxQTMuMDYxLDMuMDYxLDAsMCwwLDIyLjExOCw5LjhhMy4zODMsMy4zODMsMCwwLDAtMi44MjYsMS42NjQsNi43OTEsNi43OTEsMCwwLDAtMS4xNjEsMy45ODdWMjUuNTgzSDEzLjg2OVYxNS4wMzFxMC01LjIzMS0zLjY5NC01LjIzMWEzLjMzMiwzLjMzMiwwLDAsMC0yLjgyNiwxLjU3Myw2LjkzNSw2LjkzNSwwLDAsMC0xLjEwNiw0LjA3OFYyNS41ODNIMlY2Ljg1Nkg2LjI0M1Y5LjgxOGguMDczYTYuNDg4LDYuNDg4LDAsMCwxLDUuOTA3LTMuNCw1LjU2OSw1LjU2OSwwLDAsMSwzLjM5MywxLjA3QTUuMzI4LDUuMzI4LDAsMCwxLDE3LjYsMTAuMjk0YTYuNjgzLDYuNjgzLDAsMCwxLDYuMjE4LTMuODc3UTMwLDYuNDE3LDMwLDE0LjA0M1pcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz5gLFxuXHRcIlBvd2VyU2hlbGxcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjIzLjMyNVwiIHkxPVwiLTExOC41NDNcIiB4Mj1cIjcuMjZcIiB5Mj1cIi0xMDQuMTkzXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIC05NilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM1MzkxZmVcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjM2U2ZGJmXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiYlwiIHgxPVwiNy4xXCIgeTE9XCItMTA0LjAwMlwiIHgyPVwiMjMuMDAxXCIgeTI9XCItMTE4LjI5MlwiIHhsaW5rOmhyZWY9XCIjYVwiLz48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9wb3dlcnNoZWxsPC90aXRsZT48cGF0aCBkPVwiTTMuMTc0LDI2LjU4OWExLjE1NCwxLjE1NCwwLDAsMS0uOTI4LS40MjMsMS4yMzQsMS4yMzQsMCwwLDEtLjIxLTEuMDUyTDYuMjMzLDYuNzhBMS44LDEuOCwwLDAsMSw3LjkxNCw1LjQxSDI4LjgyNmExLjE1NywxLjE1NywwLDAsMSwuOTI4LjQyMywxLjIzNSwxLjIzNSwwLDAsMSwuMjEsMS4wNTJsLTQuMiwxOC4zMzVhMS44LDEuOCwwLDAsMS0xLjY4MSwxLjM3SDMuMTc0WlwiIHN0eWxlPVwiZmlsbC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNNy45MTQsNS42NDZIMjguODI2YS45MTMuOTEzLDAsMCwxLC45MDgsMS4xODdsLTQuMiwxOC4zMzRhMS41NzUsMS41NzUsMCwwLDEtMS40NTEsMS4xODdIMy4xNzRhLjkxMy45MTMsMCwwLDEtLjkwOC0xLjE4N2w0LjItMTguMzM0QTEuNTc0LDEuNTc0LDAsMCwxLDcuOTE0LDUuNjQ2WlwiIHN0eWxlPVwiZmlsbC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNMTYuMDQsMjEuNTQ0aDUuMDg2YTEuMTE4LDEuMTE4LDAsMCwxLDAsMi4yMzRIMTYuMDRhMS4xMTgsMS4xMTgsMCwwLDEsMC0yLjIzNFpcIiBzdHlsZT1cImZpbGw6IzJjNTU5MTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE5LjMzOSwxNi41NzhhMS43NjIsMS43NjIsMCwwLDEtLjU5MS42TDkuMzA5LDIzLjk1M2ExLjIyNCwxLjIyNCwwLDAsMS0xLjQzOC0xLjk3N2w4LjUxMi02LjE2NHYtLjEyNkwxMS4wMzUsMTBhMS4yMjQsMS4yMjQsMCwwLDEsMS43ODItMS42NzJsNi40MTgsNi44MjdBMS4xNjYsMS4xNjYsMCwwLDEsMTkuMzM5LDE2LjU3OFpcIiBzdHlsZT1cImZpbGw6IzJjNTU5MTtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE5LjEsMTYuMzQyYTEuNzQ5LDEuNzQ5LDAsMCwxLS41OS42TDkuMDc0LDIzLjcxOGExLjIyNSwxLjIyNSwwLDAsMS0xLjQzOS0xLjk3N2w4LjUxMy02LjE2NFYxNS40NUwxMC44LDkuNzYxYTEuMjI0LDEuMjI0LDAsMCwxLDEuNzgzLTEuNjcyTDE5LDE0LjkxNkExLjE2MiwxLjE2MiwwLDAsMSwxOS4xLDE2LjM0MlpcIiBzdHlsZT1cImZpbGw6I2ZmZjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cGF0aCBkPVwiTTE1LjksMjEuNDEyaDUuMDg2YTEuMDU5LDEuMDU5LDAsMSwxLDAsMi4xMThIMTUuOWExLjA1OSwxLjA1OSwwLDEsMSwwLTIuMTE4WlwiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPmAsICBcblx0XCJQcm9jZXNzaW5nXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxNlwiIHkxPVwiM1wiIHgyPVwiMTZcIiB5Mj1cIjI5XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMWM0YzcwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzBjMmI0MlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3Byb2Nlc3NpbmdsYW5nPC90aXRsZT48cGF0aCBkPVwiTTE1LjkyMiwxOS45NjJhMTMsMTMsMCwwLDEtMS42NDctLjA3N3Y1LjU1MmEyNy43NiwyNy43NiwwLDAsMSwzLjMzMi40NjFWMjlINS45NjhWMjUuOUEyNy45ODgsMjcuOTg4LDAsMCwxLDkuMywyNS40MzhWNi43MTVhMjguMjE1LDI4LjIxNSwwLDAsMS0zLjMzMS0uNDZ2LTMuMUg4Ljk1NUMxMC4xOCwzLjE1MywxMy41NDksMywxNi4yMywzYzYuMzE4LDAsOS44LDIuOTQ4LDkuOCw4QzI2LjAzMSwxNi4wMTgsMjIuMiwxOS45NjIsMTUuOTIyLDE5Ljk2MlpNMTYsNy4wNThjLS42MTMsMC0xLjE0OSwwLTEuNzIzLjAzOHY4LjYxNWE5LjY5NCw5LjY5NCwwLDAsMCwxLjQ1NS4xMTVjMy4wMjUtLjAzOCw1LjEzLTEuNzIzLDUuMTMtNC41MTlDMjAuODYyLDguNywxOS40MDcsNy4wNTgsMTYsNy4wNThaXCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+YCxcblx0XCJQcm9sb2dcIjogYDxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD1cImFcIiBjeD1cIjEzNDEuMjVcIiBjeT1cIi0zMzk2Ljg2NlwiIHI9XCIxOC4yOTlcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMTMyNy4wNzcgMzQwNS45MzUpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMTgxXCIgc3RvcC1jb2xvcj1cIiNmYmZiZmJcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNjVcIiBzdG9wLWNvbG9yPVwiI2VmZWZmMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjU1MlwiIHN0b3AtY29sb3I9XCIjZGFkYmRjXCIvPjxzdG9wIG9mZnNldD1cIjAuNzM4XCIgc3RvcC1jb2xvcj1cIiNiZWJmYzJcIi8+PHN0b3Agb2Zmc2V0PVwiMC44MjRcIiBzdG9wLWNvbG9yPVwiI2FlYjBiM1wiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImJcIiBjeD1cIjYuNjc4XCIgY3k9XCI4NC43NFwiIHI9XCIxNS41NTRcIiBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSgtMS44ODQgLTg2LjE1NCkgc2NhbGUoMS4wNzIgMS4xNjYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmFmZGZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMDc5XCIgc3RvcC1jb2xvcj1cIiNlZWY1ZmFcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMlwiIHN0b3AtY29sb3I9XCIjY2ZkZmVjXCIvPjxzdG9wIG9mZnNldD1cIjAuNDA3XCIgc3RvcC1jb2xvcj1cIiM5ZGJiZDVcIi8+PHN0b3Agb2Zmc2V0PVwiMC42MzFcIiBzdG9wLWNvbG9yPVwiIzU4OGFiNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjc0NVwiIHN0b3AtY29sb3I9XCIjMzI2ZmE0XCIvPjxzdG9wIG9mZnNldD1cIjAuNzk5XCIgc3RvcC1jb2xvcj1cIiMyYjY2OThcIi8+PHN0b3Agb2Zmc2V0PVwiMC44OTdcIiBzdG9wLWNvbG9yPVwiIzE3NGU3OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5NFwiIHN0b3AtY29sb3I9XCIjMDAzMTUyXCIvPjwvcmFkaWFsR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiY1wiIGN4PVwiMTEuMjQxXCIgY3k9XCItOS44OTdcIiByPVwiMTYuNTk0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMCAyMi42MzEpIHNjYWxlKDEgMS4wNjIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZkNTQwXCIvPjxzdG9wIG9mZnNldD1cIjAuNjY3XCIgc3RvcC1jb2xvcj1cIiNlYzFjMjRcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OTRcIiBzdG9wLWNvbG9yPVwiIzc2MDAwMFwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cImRcIiBjeD1cIjEyLjI4NlwiIGN5PVwiMjYuMTI3XCIgcj1cIjIuMDgzXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZGRkZmUwXCIvPjxzdG9wIG9mZnNldD1cIjAuMTc0XCIgc3RvcC1jb2xvcj1cIiNkOWRiZGNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNTFcIiBzdG9wLWNvbG9yPVwiI2NkY2ZkMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjUzMVwiIHN0b3AtY29sb3I9XCIjYjhiYWJiXCIvPjxzdG9wIG9mZnNldD1cIjAuNzExXCIgc3RvcC1jb2xvcj1cIiM5YzllOWZcIi8+PHN0b3Agb2Zmc2V0PVwiMC44OTFcIiBzdG9wLWNvbG9yPVwiIzc4Nzk3YlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM1ZTVmNjFcIi8+PC9yYWRpYWxHcmFkaWVudD48cmFkaWFsR3JhZGllbnQgaWQ9XCJlXCIgY3g9XCIxOS4wNjRcIiBjeT1cIjI2LjEyN1wiIHI9XCIyLjA4M1wiIHhsaW5rOmhyZWY9XCIjZFwiLz48cmFkaWFsR3JhZGllbnQgaWQ9XCJmXCIgY3g9XCIxNS40MzRcIiBjeT1cIjE2LjE5MVwiIHI9XCIyLjY4N1wiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDAgMC40NjEpXCIgeGxpbms6aHJlZj1cIiNkXCIvPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3Byb2xvZzwvdGl0bGU+PGcgc3R5bGU9XCJpc29sYXRpb246aXNvbGF0ZVwiPjxjaXJjbGUgY3g9XCIxNlwiIGN5PVwiMTZcIiByPVwiMTRcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTYuNjAyIDE0LjkyKSByb3RhdGUoLTQyLjI2NSlcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE5LjkzOCw2LjMwOWE5Ljc4NSw5Ljc4NSwwLDAsMC02LjUtMi4zMzlDOC41NjQsMy45NywzLjc3NCw3LjcsMy40MDUsMTQuOTYxYy0uNCw3LjgsNC43NSwxMi44NjIsMTIsMTIuODYyLDEwLjczMywwLDE2LjY3Mi05Ljc4LDEwLjAyNy0yMC4zODgsNC42NzEsMTAuNi0uNTI3LDE3LjI3OS03LjIzNiwxNy4yNzktNS40NDEsMC05LjYxLTMuNjUxLTkuNjEtMTAuMzQ1QzguNTgyLDQuNzA5LDE1LjgyMyw0LjAzOSwxOS45MzgsNi4zMDlaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0yMi43LDEwLjQxNWMtLjI5My0uOTQtLjY0NS0yLjc4OC42MzQtMy44NmEzLjcyOSwzLjcyOSwwLDAsMC0zLjg0NCwxLjUzNEE5LjE2NSw5LjE2NSwwLDAsMCwxMiw4LjEsMy43MjksMy43MjksMCwwLDAsOC4xNTIsNi41NTVjMS4zMDksMS4xLjkxLDMuMDA1LjYxNCwzLjkyM0ExMC41MTcsMTAuNTE3LDAsMCwwLDYuMSwxNy41MjRjMCwyLjE3NCwxLjQsNC42NDUsMS42NzUsNy45NTVsMS43NjgtMS41MzJhMTEuNzQzLDExLjc0MywwLDAsMCw2LjIxMiwxLjQzMywxMS43NDEsMTEuNzQxLDAsMCwwLDYuMjEyLTEuNDMzbDEuNzY5LDEuNTMyYy4yOC0zLjMxLDEuNjc1LTUuNzgxLDEuNjc1LTcuOTU1QTEwLjUxMiwxMC41MTIsMCwwLDAsMjIuNywxMC40MTVaXCIgc3R5bGU9XCJmaWxsOnVybCgjYylcIi8+PHBhdGggZD1cIk0xMC43MjIsMjcuODY3YTEuNjIxLDEuNjIxLDAsMSwxLDMuMjQsMGMwLC4wMTgsMCwuMDM1LDAsLjA1M2EyLjIzNCwyLjIzNCwwLDEsMC0zLjIyOC4xMjZDMTAuNzI1LDI3Ljk4NywxMC43MjIsMjcuOTI3LDEwLjcyMiwyNy44NjdaXCIgc3R5bGU9XCJmaWxsOnVybCgjZClcIi8+PHBhdGggZD1cIk0yMC42MjksMjcuODY3YTEuNjIxLDEuNjIxLDAsMSwwLTMuMjQsMGMwLC4wMTgsMCwuMDM1LDAsLjA1M2EyLjIzNCwyLjIzNCwwLDEsMSwzLjIyOC4xMjZBMS42NzgsMS42NzgsMCwwLDAsMjAuNjI5LDI3Ljg2N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48ZyBzdHlsZT1cIm9wYWNpdHk6MC41MzttaXgtYmxlbmQtbW9kZTptdWx0aXBseVwiPjxwYXRoIGQ9XCJNOC4zNDYsMTguNGMtLjEzMi42NjctLjk3MS44NzctLjk3MS44NzdBMS4zNTksMS4zNTksMCwwLDEsNi44MDksMTguMWEyLjkyOSwyLjkyOSwwLDAsMCwuNDQzLDEuNzkzQTIuOTI3LDIuOTI3LDAsMCwwLDguMzQ2LDE4LjRaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0xMC4wMDgsMTguNzM3Yy0uMTMyLjY2Ny0uOTcyLjg3Ny0uOTcyLjg3N2ExLjM2LDEuMzYsMCwwLDEtLjU2Ni0xLjE4MiwyLjkyOSwyLjkyOSwwLDAsMCwuNDQ0LDEuNzkzQTIuOTI2LDIuOTI2LDAsMCwwLDEwLjAwOCwxOC43MzdaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk04LjgzMywyMC4yNDljLS4xMzIuNjY3LS45NzEuODc3LS45NzEuODc3QTEuMzU5LDEuMzU5LDAsMCwxLDcuMywxOS45NDRhMi45MjksMi45MjksMCwwLDAsLjQ0MywxLjc5M0EyLjkyNSwyLjkyNSwwLDAsMCw4LjgzMywyMC4yNDlaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0xMC41LDIwLjU4M2MtLjEzMi42NjctLjk3MS44NzctLjk3MS44NzdhMS4zNiwxLjM2LDAsMCwxLS41NjYtMS4xODJBMi45MjksMi45MjksMCwwLDAsOS40LDIyLjA3MiwyLjkyNywyLjkyNywwLDAsMCwxMC41LDIwLjU4M1pcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTkuMzI4LDIyLjEyMWMtLjEzMi42NjctLjk3Mi44NzctLjk3Mi44NzdhMS4zNiwxLjM2LDAsMCwxLS41NjUtMS4xODIsMi45MjksMi45MjksMCwwLDAsLjQ0MywxLjc5M0EyLjkyNiwyLjkyNiwwLDAsMCw5LjMyOCwyMi4xMjFaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0xMS42NjQsMTkuMDdjLS4xMzIuNjY3LS45NzIuODc3LS45NzIuODc3YTEuMzU5LDEuMzU5LDAsMCwxLS41NjUtMS4xODIsMi45MywyLjkzLDAsMCwwLC40NDMsMS43OTNBMi45MjcsMi45MjcsMCwwLDAsMTEuNjY0LDE5LjA3WlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjwvZz48ZyBzdHlsZT1cIm9wYWNpdHk6MC41MzttaXgtYmxlbmQtbW9kZTptdWx0aXBseVwiPjxwYXRoIGQ9XCJNMjMuMTU3LDE4LjRjLjEzMi42NjcuOTcxLjg3Ny45NzEuODc3YTEuMzU5LDEuMzU5LDAsMCwwLC41NjYtMS4xODIsMi45MywyLjkzLDAsMCwxLS40NDMsMS43OTNBMi45MjcsMi45MjcsMCwwLDEsMjMuMTU3LDE4LjRaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0yMS40OTUsMTguNzM3Yy4xMzIuNjY3Ljk3Mi44NzcuOTcyLjg3N2ExLjM2LDEuMzYsMCwwLDAsLjU2NS0xLjE4MiwyLjkzMSwyLjkzMSwwLDAsMS0uNDQ0LDEuNzkzQTIuOTI2LDIuOTI2LDAsMCwxLDIxLjQ5NSwxOC43MzdaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0yMi42NjksMjAuMjQ5Yy4xMzIuNjY3Ljk3MS44NzcuOTcxLjg3N2ExLjM2LDEuMzYsMCwwLDAsLjU2Ni0xLjE4MiwyLjkyOSwyLjkyOSwwLDAsMS0uNDQzLDEuNzkzQTIuOTI2LDIuOTI2LDAsMCwxLDIyLjY2OSwyMC4yNDlaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0yMS4wMDgsMjAuNTgzYy4xMzIuNjY3Ljk3MS44NzcuOTcxLjg3N2ExLjM1OSwxLjM1OSwwLDAsMCwuNTY1LTEuMTgyLDIuOTI4LDIuOTI4LDAsMCwxLS40NDMsMS43OTNBMi45MjcsMi45MjcsMCwwLDEsMjEuMDA4LDIwLjU4M1pcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTIyLjE3NSwyMi4xMjFjLjEzMi42NjcuOTcyLjg3Ny45NzIuODc3YTEuMzYsMS4zNiwwLDAsMCwuNTY1LTEuMTgyLDIuOTI4LDIuOTI4LDAsMCwxLS40NDQsMS43OTNBMi45MjcsMi45MjcsMCwwLDEsMjIuMTc1LDIyLjEyMVpcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTE5LjgzOCwxOS4wN2MuMTMyLjY2Ny45NzIuODc3Ljk3Mi44NzdhMS4zNTksMS4zNTksMCwwLDAsLjU2NS0xLjE4MiwyLjkyOCwyLjkyOCwwLDAsMS0uNDQzLDEuNzkzQTIuOTI4LDIuOTI4LDAsMCwxLDE5LjgzOCwxOS4wN1pcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48L2c+PGNpcmNsZSBjeD1cIjExLjMzOVwiIGN5PVwiMTQuMDc0XCIgcj1cIjMuODE2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PGNpcmNsZSBjeD1cIjEyLjEzXCIgY3k9XCIxNC40NDZcIiByPVwiMS44NjFcIiBzdHlsZT1cImZpbGw6I2JkYmZjMVwiLz48Y2lyY2xlIGN4PVwiMTIuMTNcIiBjeT1cIjE0LjQ0NlwiIHI9XCIxLjE5MVwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxjaXJjbGUgY3g9XCIxMS42MDNcIiBjeT1cIjE0LjAyN1wiIHI9XCIwLjM1N1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxjaXJjbGUgY3g9XCIyMC4xMTJcIiBjeT1cIjE0LjA3NFwiIHI9XCIzLjgxNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxjaXJjbGUgY3g9XCIyMC45MDNcIiBjeT1cIjE0LjQ0NlwiIHI9XCIxLjg2MVwiIHN0eWxlPVwiZmlsbDojYmRiZmMxXCIvPjxjaXJjbGUgY3g9XCIyMC45MDNcIiBjeT1cIjE0LjQ0NlwiIHI9XCIxLjE5MVwiIHN0eWxlPVwiZmlsbDojMjMxZjIwXCIvPjxjaXJjbGUgY3g9XCIyMC4zNzVcIiBjeT1cIjE0LjAyN1wiIHI9XCIwLjM1N1wiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTUuNzA2LDIxLjUyYzAtMS40MTIsMi4xNTctMy40MTMsMi4xNTctNC44ODdhMi4xNTcsMi4xNTcsMCwwLDAtNC4zMTMsMEMxMy41NSwxOC4xMDcsMTUuNzA2LDIwLjEwOCwxNS43MDYsMjEuNTJaXCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PC9nPmAsXG5cdFwiUHJvdG9jb2wgQnVmZmVyc1wiOiBgPHBvbHlnb24gcG9pbnRzPVwiMTUuOTk2IDMuMjIgMjYuOTY2IDkuNyAyNi45NTQgMjIuMyAxNiAyOC43OCA1LjAzOCAyMi40MDggNS4wMzQgOS42MjggMTUuOTk2IDMuMjJcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE2LDIsMy45ODcsOS4wMmwwLDE0TDE2LDMwbDEyLTcuMS4wMTMtMTMuOFpNMjYuOTU0LDIyLjMsMTYsMjguNzgsNS4wMzgsMjIuNDA4bDAtMTIuNzhMMTYsMy4yMiwyNi45NjYsOS43WlwiIHN0eWxlPVwiZmlsbDojMTcxYzFlXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI1LjU2OSAxMy42NTQgMTkuOTQ2IDE2Ljk2NCAxOS45NDMgMjQuODkgMjUuNTkgMjEuNTY1IDI1LjU2OSAxMy42NTRcIiBzdHlsZT1cImZpbGw6IzFlYThmZlwiLz48cG9seWdvbiBwb2ludHM9XCIyMy4yODIgMTIuMzAzIDI1LjU2OSAxMy42NTQgMTkuOTQ2IDE2Ljk2NCAxOS45NDMgMjQuODkgMTcuMzI3IDIzLjM3IDE3LjM0OCAxNS44NzUgMjMuMjgyIDEyLjMwM1wiIHN0eWxlPVwiZmlsbDojNTBiZmZmXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIyLjUxMiAxMC4zNSAyMi41MTQgMTEuODE2IDE2LjQxMSAxNS40OTggMTYuNDE4IDIzLjU5NyAxNC45OTggMjQuNDMxIDE0Ljk5NCAxNC44NTYgMjIuNTEyIDEwLjM1XCIgc3R5bGU9XCJmaWxsOiM5N2ZmMjdcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjAuMDA4IDguODcxIDIyLjUxMiAxMC4zNSAxNC45OTQgMTQuODU2IDE0Ljk5OCAyNC40MzEgMTIuMTk0IDIyLjgwMSAxMi4xODkgMTMuNDEzIDIwLjAwOCA4Ljg3MVwiIHN0eWxlPVwiZmlsbDojYzJmZjcyXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE5LjIyNiA2LjYwNiAxOS4yMjYgOC4zNzQgMTEuMjEgMTMuMDc0IDExLjIxIDIzLjE3MiA5LjgwOCAyMy45ODggOS44MzUgMTIuMjc3IDE5LjIyNiA2LjYwNlwiIHN0eWxlPVwiZmlsbDojZmYyNzRiXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE2LjE2IDQuNzg0IDYuNTMgMTAuMzk0IDYuNTI5IDIyLjA3MSA5LjgyNyAyMy45ODggOS44MzUgMTIuMjc3IDE5LjIzNSA2LjYwNiAxNi4xNiA0Ljc4NFwiIHN0eWxlPVwiZmlsbDojZmY1Yzc3XCIvPmAsXG5cdFwiUHVnXCI6IGA8cGF0aCBkPVwiTTI1LjUxNCwxMi44NDZjLS4wNTItLjkzOC4yMDktMS44MjUtLjIwOS0yLjU1NC0xLjA0My0xLjgyNS0zLjY0OS0yLjg2Ny04Ljg2My0yLjg2N1Y3LjM3Mmgwdi4wNTJjLTUuNzM1LDAtOC4xODUsMS4wNDMtOS4yMjcsMi44NjdhNS42LDUuNiwwLDAsMC0uNDY5LDIuNTU0LDkuNTQ2LDkuNTQ2LDAsMCwwLS4yNjEsMi40NWMuMTU2LDEuMTQ3LjI2MSwyLjI5NC40MTcsMy4zMzYuMTU2Ljg4NiwxLjQwOCwxLjU2NCwxLjU2NCwyLjQuMzEzLDIuMjQyLDIuMjk0LDMuMjg0LDguMDI4LDMuMjg0di4yNjFoLS4xdi0uMjYxYzUuMjEzLDAsNy40LTEuMDQzLDcuNzE2LTMuMjg0LjEtLjgzNCwxLjE0Ny0xLjUxMiwxLjMtMi40LjE1Ni0xLjA0My4yMDktMi4xOS4zNjUtMy4zMzZBMTEuNzc0LDExLjc3NCwwLDAsMCwyNS41MTQsMTIuODQ2WlwiIHN0eWxlPVwiZmlsbDojZWZjY2EzXCIvPjxwYXRoIGQ9XCJNMTYuMTgyLDEzLjY4YTMuMjQxLDMuMjQxLDAsMCwxLDIuMTksMS4xNDdjLjczLjYyNiwxLjkyOSwxLjA0MywyLjQ1LDEuNjE2YTQuNzE1LDQuNzE1LDAsMCwxLDEuNDA4LDEuOTgxLDguOSw4LjksMCwwLDEsLjMxMywyLjI0MmMwLC4yNjEuMTU2LjIwOS41NzMsMGE5LjAyLDkuMDIsMCwwLDAsMi4xOS0xLjg3N2MtLjE1Ni44ODYtMS4yNTEsMS42NjgtMS4zNTUsMi41LS4zMTMsMi4yNDItMi41LDMuMzM2LTcuODcyLDMuMzM2aC4zMTNcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTE5LjUxOSwxMS45MDhjLjIwOS42NzguODg2LDMuMDI0LS40NjksMi4yNDJhMi41NTcsMi41NTcsMCwwLDEsLjkzOCwxLjU2NCwxLjgzMSwxLjgzMSwwLDAsMCwxLjMsMS40MDgsMy40NzksMy40NzksMCwwLDAsMi41NTQtLjYyNiwyLjk1NiwyLjk1NiwwLDAsMCwuNjc4LTMuMjg0LDIuNDMsMi40MywwLDAsMC0yLjEzNy0xLjYxNkMyMS40LDExLjMzNCwxOS4zMSwxMS4xMjYsMTkuNTE5LDExLjkwOFpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48Y2lyY2xlIGN4PVwiMjIuMTc4XCIgY3k9XCIxNC40MVwiIHI9XCIxLjkyOVwiLz48Y2lyY2xlIGN4PVwiMjEuNjU2XCIgY3k9XCIxMy41MjRcIiByPVwiMC41MjFcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE5LjIwNiwxNC4zMDZhMTcuNjgsMTcuNjgsMCwwLDEsMi43MTEsMi4zNDZjLjkzOCwxLjIuOTM4LDEuNDA4LjkzOCwxLjQwOGwtLjY3OC4zMTNhNy4xLDcuMSwwLDAsMC0yLjEzNy0yLjVjLTEuMi0uNjc4LTEuMzU1LTEuMjUxLTEuMzU1LTEuMjUxWlwiIHN0eWxlPVwiZmlsbDojZWZjY2EzXCIvPjxwYXRoIGQ9XCJNMTYuMjM1LDEzLjY4YTMuNjA1LDMuNjA1LDAsMCwwLTIuMzQ2LDEuMTQ3Yy0uNzMuNjI2LTIuMDMzLDEuMDQzLTIuNSwxLjYxNmE0LjgwNiw0LjgwNiwwLDAsMC0xLjQ2LDEuOTgxLDguOSw4LjksMCwwLDAtLjMxMywyLjI0MmMwLC4yNjEuMDUyLjMxMy0uNjI2LDBBNy45NzIsNy45NzIsMCwwLDEsNi44LDE4Ljc4OWMuMTU2Ljg4NiwxLjI1MSwxLjY2OCwxLjM1NSwyLjUuMzEzLDIuMTksMi41LDMuMjg0LDcuODcyLDMuMjg0aC4zNjVcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTIxLjIzOSwxNy4yNzdhNi41NTIsNi41NTIsMCwwLDAtNS4xMDktMi42MDdoMGE2LjYzOCw2LjYzOCwwLDAsMC01LjEwOSwyLjYwNywzLjg2MSwzLjg2MSwwLDAsMC0xLjA0MywzLjE4YzAsNC42NCwxLjYxNiwzLjIzMiwyLjcxMSwzLjgwNmE3LjQ2Niw3LjQ2NiwwLDAsMCwzLjM4OS4zMTNoMGE3LjQsNy40LDAsMCwwLDMuMzg5LS4zMTNjMS4wOTUtLjU3MywyLjcxMS44MzQsMi43MTEtMy44MDZBMy4zODYsMy4zODYsMCwwLDAsMjEuMjM5LDE3LjI3N1pcIiBzdHlsZT1cImZpbGw6IzU2MzMyYlwiLz48cGF0aCBkPVwiTTE2LjAyNiwxNS45NzRhOS41NDksOS41NDksMCwwLDEtLjQ2OSwyLjU1NGwuNTczLS4xNTZaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk0xNi4xODIsMTUuOTc0YTkuNTQ5LDkuNTQ5LDAsMCwwLC40NjksMi41NTRsLS41NzMtLjE1NlpcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48cGF0aCBkPVwiTTE0LjM1OCwxNS40NTNjLS4yMDktLjUyMS41NzMtMS4zNTUsMS44MjUtMS4zNTVzMi4wMzMuODM0LDEuODI1LDEuMzU1LTEuMDQzLjY3OC0xLjgyNS42NzhDMTUuMzQ4LDE2LjEzLDE0LjU2NiwxNS45NzQsMTQuMzU4LDE1LjQ1M1pcIiBzdHlsZT1cImZpbGw6IzU2MzMyYlwiLz48cGF0aCBkPVwiTTE2LjE4MiwxNS45NzRjMC0uMS43My0uMSwxLjE0Ny0uMzY1LDAsMC0uODM0LjI2MS0uOTkxLjE1NmEuNjU2LjY1NiwwLDAsMS0uMjA5LS4zNjUuNjU2LjY1NiwwLDAsMS0uMjA5LjM2NWMtLjE1Ni4xLTEuMDk1LS4xNTYtMS4wOTUtLjE1NmE4LjA1OCw4LjA1OCwwLDAsMSwxLjIuMzY1di40MTdhMTAuNDkyLDEwLjQ5MiwwLDAsMCwuMSwyLjAzM2MuMTU2LjIwOS4xLTEuNDYuMS0yLjAzM0ExLjMsMS4zLDAsMCwxLDE2LjE4MiwxNS45NzRaXCIvPjxwYXRoIGQ9XCJNMTYuMTgyLDE4Ljk0NWEzLjM1LDMuMzUsMCwwLDEsMS42MTYuNjc4LDMuMTIxLDMuMTIxLDAsMCwwLTEuNjE2LTEuMDk1LDMuMDM2LDMuMDM2LDAsMCwwLTEuODI1LDEuMkEzLjMxMiwzLjMxMiwwLDAsMSwxNi4xODIsMTguOTQ1WlwiIHN0eWxlPVwiZmlsbDojN2Y0YTQxXCIvPjxwYXRoIGQ9XCJNMTYuMDc4LDIyLjhhOC45LDguOSwwLDAsMS0yLjQtLjQ2OWMtLjE1Ni0uMDUyLS4zMTMuMDUyLS40NjksMGE2LjE3Miw2LjE3MiwwLDAsMS0zLjE4LTIuMTM3di4yMDljMCw0LjY0LDEuNjE2LDMuMjMyLDIuNzExLDMuODA2YTcuNDY2LDcuNDY2LDAsMCwwLDMuMzg5LjMxM2gwYTcuNCw3LjQsMCwwLDAsMy4zODktLjMxM2MxLjA5NS0uNTczLDIuNzExLjgzNCwyLjcxMS0zLjgwNnYtLjQ2OUE1LjkxNCw1LjkxNCwwLDAsMSwxOSwyMi4yODJjLS4xNTYuMDUyLS40MTctLjA1Mi0uNTczLS4wNTJBNy4wNDUsNy4wNDUsMCwwLDEsMTYuMDc4LDIyLjhaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk0xMy45NDEsMjAuM3MtLjU3MywxLjY2OC0uMTU2LDIuNGwtLjUyMS0uMjA5QTE1LjQzMywxNS40MzMsMCwwLDEsMTMuOTQxLDIwLjNaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk0xOC4zMiwyMC4zcy41NzMsMS42NjguMTU2LDIuNEwxOSwyMi40OTFBMTAuNjI5LDEwLjYyOSwwLDAsMCwxOC4zMiwyMC4zWlwiIHN0eWxlPVwiZmlsbDojNDQyODIzXCIvPjxwYXRoIGQ9XCJNMTIuNTg1LDExLjkwOGMtLjIwOS42NzgtLjg4NiwzLjAyNC40NjksMi4yNDJhMi41NTcsMi41NTcsMCwwLDAtLjkzOCwxLjU2NCwxLjgzMSwxLjgzMSwwLDAsMS0xLjMsMS40MDhBMy40NzksMy40NzksMCwwLDEsOC4yNTgsMTYuNWEyLjk1NiwyLjk1NiwwLDAsMS0uNjc4LTMuMjg0LDIuNDMsMi40MywwLDAsMSwyLjEzNy0xLjYxNkMxMC43MDksMTEuMzM0LDEyLjc5NCwxMS4xMjYsMTIuNTg1LDExLjkwOFpcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTE2LjEzLDE4LjUyOGEzLjM5MywzLjM5MywwLDAsMSwyLjQ1LDIuODY3di0uMWEzLjA1MSwzLjA1MSwwLDAsMC0yLjQ1LTIuOTE5LDMsMywwLDAsMC0yLjQ1LDIuOTE5di4xQTMuNDYzLDMuNDYzLDAsMCwxLDE2LjEzLDE4LjUyOFpcIi8+PGVsbGlwc2UgY3g9XCIxNi41NDZcIiBjeT1cIjE1LjEzOFwiIHJ4PVwiMC4xNTZcIiByeT1cIjAuMzEzXCIgdHJhbnNmb3JtPVwidHJhbnNsYXRlKC0zLjI1NiA0LjYxMSkgcm90YXRlKC0xNC40NilcIiBzdHlsZT1cImZpbGw6IzMzMTcxMlwiLz48ZWxsaXBzZSBjeD1cIjE1LjYwOVwiIGN5PVwiMTUuMTQ2XCIgcng9XCIwLjMxM1wiIHJ5PVwiMC4xNTZcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoLTMuNDgyIDI1LjU2Nykgcm90YXRlKC03Mi43NjUpXCIgc3R5bGU9XCJmaWxsOiMzMzE3MTJcIi8+PGNpcmNsZSBjeD1cIjEwLjAzMVwiIGN5PVwiMTQuNDFcIiByPVwiMS45MjlcIi8+PGNpcmNsZSBjeD1cIjEwLjU1MlwiIGN5PVwiMTMuNTI0XCIgcj1cIjAuNTIxXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xNi43LDE0LjQxcy0uNTIxLjIwOS0uNjI2LjI2MWEyLjQ5MiwyLjQ5MiwwLDAsMS0uNjI2LS4yNjFIMTYuN1pcIiBzdHlsZT1cImZpbGw6IzdmNGE0MVwiLz48cGF0aCBkPVwiTTEyLjksMTQuMzA2YTE3LjY4LDE3LjY4LDAsMCwwLTIuNzExLDIuMzQ2Yy0uOTM4LDEuMi0uOTM4LDEuNDA4LS45MzgsMS40MDhsLjY3OC4zMTNhNy4xLDcuMSwwLDAsMSwyLjEzNy0yLjVjMS4yLS42NzgsMS4zNTUtMS4yNTEsMS4zNTUtMS4yNTFaXCIgc3R5bGU9XCJmaWxsOiNlZmNjYTNcIi8+PHBhdGggZD1cIk05LjA5MiwxMC44MTNhNC41MTksNC41MTksMCwwLDEtMS45MjksMi4yOTRBMi4xOSwyLjE5LDAsMCwwLDkuMDkyLDEwLjgxM1pcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTIyLjkwOCwxMC44MTNhNC41MTksNC41MTksMCwwLDAsMS45MjksMi4yOTRBMi4xOSwyLjE5LDAsMCwxLDIyLjkwOCwxMC44MTNaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xOS4zMSwxMy44MzZhNS4xNiw1LjE2LDAsMCwwLTMuMDc2LTEuNDA4aC4xNTZhMy44NTIsMy44NTIsMCwwLDAtMy4wMjQsMS40MDgsNC44MzIsNC44MzIsMCwwLDEsMy4wMjQtMS4wNDNoMEE1Ljc4NSw1Ljc4NSwwLDAsMSwxOS4zMSwxMy44MzZaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xNy43NDYsMTAuOTY5YTIuNDU1LDIuNDU1LDAsMCwwLTEuNTY0LS45MzhoLjE1NmExLjc4NiwxLjc4NiwwLDAsMC0xLjUxMi45MzgsMi4xODcsMi4xODcsMCwwLDEsMS41MTItLjY3OGgwQTEuODk0LDEuODk0LDAsMCwxLDE3Ljc0NiwxMC45NjlaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xMC4wMzEsMTcuNzQ2YTIuNTQ1LDIuNTQ1LDAsMCwxLTEuNzczLjIwOUg4LjA1YTMuNjgsMy42OCwwLDAsMS0uODg2LTEuNTEyQTIuMjcsMi4yNywwLDAsMCwxMC4wMzEsMTcuNzQ2WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMjIuMTI2LDE3Ljc0NmEyLjU0NSwyLjU0NSwwLDAsMCwxLjc3My4yMDlIMjMuNjlhMS43NDksMS43NDksMCwwLDAsMS4wOTUtMS41MTJBMi4wMiwyLjAyLDAsMCwxLDIyLjEyNiwxNy43NDZaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0xMS4yMywxMC43MDlhNC43NSw0Ljc1LDAsMCwxLDIuMjQyLjFjLjkzOC4zMTMuMjA5LDEuNTY0LjM2NSwxLjYxNmEyLjg2NSwyLjg2NSwwLDAsMSwyLjI0Mi0uNzNjMS43NzMuMSwxLjk4MS44ODYsMi4yNDIuNzMuMjYxLS4xLS4yNjEtMi4xOSwyLjQ1LTEuNzIsMCwwLTIuNzYzLS43My0yLjY1OSwxLjI1MWEzLjY3NSwzLjY3NSwwLDAsMC0zLjg1OC0uMVMxNC44MjcsOS45MjcsMTEuMjMsMTAuNzA5WlwiIHN0eWxlPVwiZmlsbDojY2NhYzhkXCIvPjxwYXRoIGQ9XCJNMTAuNSw4cy0yLjQsMi45NzItMi43MTEsNC4xMThjLS4zNjUsMS4xNDctLjYyNiw1Ljk0My0uOTM4LDYuNjIxTDUuNzU2LDE0LjA0NWwyLjAzMy00LjlaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0yMS42NTYsOHMyLjQsMi45NzIsMi43MTEsNC4xMThjLjM2NSwxLjE0Ny42MjYsNS45NDMuOTM4LDYuNjIxTDI2LjQsMTQuMDQ1bC0yLjAzMy00LjlaXCIgc3R5bGU9XCJmaWxsOiNjY2FjOGRcIi8+PHBhdGggZD1cIk0yMS41LDhhMTEuNjE3LDExLjYxNywwLDAsMSwzLjI4NCw0LjU4OGMuNzMsMi40NS40MTcsNS40NzQuOTkxLDUuODM5LjgzNC41MjEsMS43Mi0yLjYwNywyLjAzMy0yLjkxOS40NjktLjUyMSwyLjA4NS0xLjg3NywyLjE5LTIuMTM3cy0zLjIzMi0zLjkxLTQuNzQ0LTQuNjRDMjMuNTg1LDcuODkzLDIxLjQsNy43ODksMjEuNSw4WlwiIHN0eWxlPVwiZmlsbDojNTYzMzJiXCIvPjxwYXRoIGQ9XCJNMjMuNjksOS4zYTE1LjM3OSwxNS4zNzksMCwwLDEsMi45NzIsOC42NTRsMS4yLTIuNDVBMTYuNTY0LDE2LjU2NCwwLDAsMCwyMy42OSw5LjNaXCIgc3R5bGU9XCJmaWxsOiM0NDI4MjNcIi8+PHBhdGggZD1cIk0xMC41LDhhMTEuNjE3LDExLjYxNywwLDAsMC0zLjI4NCw0LjU4OGMtLjczLDIuNDUtLjQxNyw1LjQ3NC0uOTkxLDUuODM5LS44MzQuNTIxLTEuNzItMi42MDctMi4wMzMtMi45MTktLjQ2OS0uNTIxLTIuMDg1LTEuODc3LTIuMTktMi4xMzdzMy4yMzItMy45MSw0Ljc0NC00LjY0QzguNDE1LDcuODkzLDEwLjYsNy43ODksMTAuNSw4WlwiIHN0eWxlPVwiZmlsbDojNTYzMzJiXCIvPjxwYXRoIGQ9XCJNOC4zMSw5LjNhMTUuMzc5LDE1LjM3OSwwLDAsMC0yLjk3Miw4LjY1NEw0LjE0LDE1LjVBMTYuNTY0LDE2LjU2NCwwLDAsMSw4LjMxLDkuM1pcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48cGF0aCBkPVwiTTYuNjQyLDE4LjAwN2E0LjExOCw0LjExOCwwLDAsMCwuNTczLDEuNTY0Yy4zNjUuMzY1LjEtLjMxMy4xLS4zMTNzLS4zNjUtLjIwOS0uMzEzLTEuNzJTNi42NDIsMTguMDA3LDYuNjQyLDE4LjAwN1pcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48cGF0aCBkPVwiTTI1LjQxLDE4LjAwN2E0LjExOCw0LjExOCwwLDAsMS0uNTczLDEuNTY0Yy0uMzY1LjM2NS0uMS0uMzEzLS4xLS4zMTNzLjM2NS0uMjA5LjMxMy0xLjcyQzI0Ljk5MywxNi4wNzgsMjUuNDEsMTguMDA3LDI1LjQxLDE4LjAwN1pcIiBzdHlsZT1cImZpbGw6I2NjYWM4ZFwiLz48Y2lyY2xlIGN4PVwiMTMuODg5XCIgY3k9XCIxNy4xMjFcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48Y2lyY2xlIGN4PVwiMTIuODQ2XCIgY3k9XCIxOC4yMTZcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48Y2lyY2xlIGN4PVwiMTIuNTMzXCIgY3k9XCIxNy4xMjFcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48Y2lyY2xlIGN4PVwiMTguMTY0XCIgY3k9XCIxNy4xMjFcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48Y2lyY2xlIGN4PVwiMTkuMTU0XCIgY3k9XCIxOC4yMTZcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz48Y2lyY2xlIGN4PVwiMTkuNDY3XCIgY3k9XCIxNy4xMjFcIiByPVwiMC4xNTZcIiBzdHlsZT1cImZpbGw6IzQ0MjgyM1wiLz5gLFxuXHRcIlB1cHBldFwiOiBgPHBhdGggZD1cIk0yNS4wODksMTEuODIySDE4LjdMMTUuMjY3LDguMzg4VjJINi45MTF2OC4zNTdIMTMuM2wzLjQyMiwzLjQyMmgwdjQuNDMxaDBsLTMuNDM0LDMuNDM0SDYuOTExVjMwaDguMzU3VjIzLjYxMmgwTDE4LjcsMjAuMTc4aDYuMzg4Wk05LjcsNC43ODZoMi43ODZWNy41NzFIOS43Wk0xMi40ODIsMjcuMkg5LjdWMjQuNDE3aDIuNzg2WlwiIHN0eWxlPVwiZmlsbDojZmZhZTFhXCIvPmAsXG5cdFwiUHVyZVNjcmlwdFwiOiBgPHJlY3Qgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgc3R5bGU9XCJmaWxsOiMxNjE3MWJcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjEuODkyIDIyLjEzNiAxOS43MDYgMjAuMDk1IDEwLjEwNyAyMC4wOTUgMTIuMjkzIDIyLjEzNiAyMS44OTIgMjIuMTM2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTIuMjkzIDE0Ljk4IDEwLjEwNyAxNy4wMjEgMTkuNzA2IDE3LjAyMSAyMS44OTIgMTQuOTggMTIuMjkzIDE0Ljk4XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjEuODkxIDExLjkwNiAxOS43MDYgOS44NjQgMTAuMTA3IDkuODY0IDEyLjI5MyAxMS45MDYgMjEuODkxIDExLjkwNlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNOS4xLDEzLjkyNiw3LjY1MiwxMi40ODIsMi4zLDE3LjgzNmExLjAyMywxLjAyMywwLDAsMCwwLDEuNDQzbDUuMzU0LDUuMzU0TDkuMSwyMy4xOSw0LjQ2NCwxOC41NThaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yOS43LDEyLjcyMSwyNC4zNDgsNy4zNjYsMjIuOSw4LjgxbDQuNjMsNC42MzJMMjIuOSwxOC4wNzVsMS40NDMsMS40NDNMMjkuNywxNC4xNjVhMS4wMjEsMS4wMjEsMCwwLDAsMC0xLjQ0NFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIlB5dGhvblwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTEzMy4yNjhcIiB5MT1cIi0yMDIuOTFcIiB4Mj1cIi0xMzMuMTk4XCIgeTI9XCItMjAyLjg0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoMjUyNDMuMDYxIDM4NTE5LjE3KSBzY2FsZSgxODkuMzggMTg5LjgxKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzM4N2ViOFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMzNjY5OTRcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItMTMzLjU3NVwiIHkxPVwiLTIwMy4yMDNcIiB4Mj1cIi0xMzMuNDk1XCIgeTI9XCItMjAzLjEzM1wiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDI1MzA5LjA2MSAzODU4My40Mikgc2NhbGUoMTg5LjM4IDE4OS44MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmZmUwNTJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZmZjMzMxXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcHl0aG9uPC90aXRsZT48cGF0aCBkPVwiTTE1Ljg4NSwyLjFjLTcuMSwwLTYuNjUxLDMuMDctNi42NTEsMy4wN1Y4LjM2aDYuNzUydjFINi41NDVTMiw4LjgsMiwxNi4wMDVzNC4wMTMsNi45MTIsNC4wMTMsNi45MTJIOC4zM1YxOS41NTZzLS4xMy00LjAxMywzLjktNC4wMTNoNi43NjJzMy43NzIuMDYsMy43NzItMy42NTJWNS44cy41NzItMy43MTItNi44NDItMy43MTJoMFpNMTIuMTUzLDQuMjM3YTEuMjE0LDEuMjE0LDAsMSwxLTEuMTgzLDEuMjQ0di0uMDJhMS4yMTQsMS4yMTQsMCwwLDEsMS4yMTQtMS4yMTRoMFpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE2LjA4NSwyOS45MWM3LjEsMCw2LjY1MS0zLjA4LDYuNjUxLTMuMDhWMjMuNjVIMTUuOTg1di0xaDkuNDdTMzAsMjMuMTU4LDMwLDE1Ljk5NXMtNC4wMTMtNi45MTItNC4wMTMtNi45MTJIMjMuNjRWMTIuNHMuMTMsNC4wMTMtMy45LDQuMDEzSDEyLjk3NVM5LjIsMTYuMzU2LDkuMiwyMC4wNjhWMjYuMnMtLjU3MiwzLjcxMiw2Ljg0MiwzLjcxMmguMDRabTMuNzMyLTIuMTQ3QTEuMjE0LDEuMjE0LDAsMSwxLDIxLDI2LjUxOXYuMDNhMS4yMTQsMS4yMTQsMCwwLDEtMS4yMTQsMS4yMTRoLjAzWlwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPmAsXG5cdFwiUSAoa2RiKyBkYXRhYmFzZSlcIjogYDxwYXRoIGQ9XCJNMjAuMDkyLDI5VjE5LjY4MkE2Ljk1Myw2Ljk1MywwLDAsMSwxNy43LDIxLjY0NWE2Ljc0Myw2Ljc0MywwLDAsMS0zLjA4OS43MjRBNi41NTcsNi41NTcsMCwwLDEsOS40MTMsMjAsMTEuMDgxLDExLjA4MSwwLDAsMSw3LDEyLjQ3NSwxMC4wMzMsMTAuMDMzLDAsMCwxLDkuMjY0LDUuNSw3LjI1MSw3LjI1MSwwLDAsMSwxNC44NzQsM2E2LjI2Niw2LjI2NiwwLDAsMSwzLjIuNzg1LDcuMzI5LDcuMzI5LDAsMCwxLDIuNCwyLjM3M1YzLjQxOUgyNVYyOVptLjE1Ny0xNi41NDJhNi40OTIsNi40OTIsMCwwLDAtMS4xNi00LjIzMiwzLjYzNCwzLjYzNCwwLDAsMC0yLjkwNS0xLjM4NywzLjc0MiwzLjc0MiwwLDAsMC0yLjk3NSwxLjQxMyw2Ljg4MSw2Ljg4MSwwLDAsMC0xLjIsNC40ODUsNi43NjcsNi43NjcsMCwwLDAsMS4xNTIsNC40MDZBMy41OTMsMy41OTMsMCwwLDAsMTYuMDA5LDE4LjVhMy43ODYsMy43ODYsMCwwLDAsMi45NjYtMS41MThBNi44ODksNi44ODksMCwwLDAsMjAuMjQ5LDEyLjQ1OFpcIiBzdHlsZT1cImZpbGw6IzFlNzhiM1wiLz5gLFxuXHRcIlEjXCI6IGA8cGF0aCBkPVwiTTE5LjQ1MSw2LjIxOGgyLjYzOFY4Ljg1NmgyLjYzN1Y2LjIxOGgyLjYzN1Y4Ljg1NkgzMFYxMS41SDI3LjM2NHYyLjYzNkgzMFYxNi43N0gyNy4zNjR2Mi42MzdIMjQuNzI3VjE2Ljc2OUgyMi4wOTFsMCwyLjYzN0gxOS40NTNWMTYuNzY4SDE2LjgxNVYxNC4xMjdoMi42MzhWMTEuNUgxNi44MTVWOC44NTNoMi42MzlabTIuNjM4LDcuOTE0aDIuNjM3VjExLjVIMjIuMDg5WlwiIHN0eWxlPVwiZmlsbDojMzNjXCIvPjxwYXRoIGQ9XCJNMTQuMDE4LDIxLjUyNGExMS40MzYsMTEuNDM2LDAsMCwwLDEuNTcyLTYuMTkyLDEwLjg3NywxMC44NzcsMCwwLDAtMS44NTgtNi42QTUuODg5LDUuODg5LDAsMCwwLDguODA4LDYuMTUzYTUuOTIxLDUuOTIxLDAsMCwwLTQuOTQsMi41ODFBMTAuODQyLDEwLjg0MiwwLDAsMCwyLDE1LjMzM2ExMC44NTMsMTAuODUzLDAsMCwwLDEuODY4LDYuNTkyLDUuOTE4LDUuOTE4LDAsMCwwLDQuOTQxLDIuNTg4LDUuNzQzLDUuNzQzLDAsMCwwLDMuMjYtLjk4N2wyLjMwNiwyLjMyMSwxLjU3Ny0yLjRabS01LjE3LTEuMjE4LDEuMTE3LDEuMTIxYTMuMjI5LDMuMjI5LDAsMCwxLTEuMTc0LjIxNywzLjMzNSwzLjMzNSwwLDAsMS0yLjgzNy0xLjU5Myw4LjEyNSw4LjEyNSwwLDAsMS0xLjE4LTQuNzE5LDguMSw4LjEsMCwwLDEsMS4xODQtNC43MjQsMy4zNzIsMy4zNzIsMCwwLDEsMi44Ny0xLjU4OCwzLjMxLDMuMzEsMCwwLDEsMi44MTksMS41ODUsOC4xNzgsOC4xNzgsMCwwLDEsMS4xNzIsNC43MjYsOS4xMTMsOS4xMTMsMCwwLDEtLjgzMyw0LjE1bC0xLjU2LTEuNTcxWlwiIHN0eWxlPVwiZmlsbDojMzNjXCIvPmAsXG5cdFwiUU1MXCI6IGA8cGF0aCBkPVwiTTI3LjMsNUg1Ljg4NkwyLDguOTU4VjI2SDI2LjExNEwzMCwyMi4wNDJWNVpNMTYuOSwyMy4wN2wtMS44MjguODUyTDEzLjUsMjEuMzMxYTMuOTY4LDMuOTY4LDAsMCwxLTEuMDgyLjEwNmMtMS44NDUsMC0zLjEyMy0uNS0zLjg1LTEuNDlhOC4wMyw4LjAzLDAsMCwxLTEuMDgyLTQuNyw4LjM1MSw4LjM1MSwwLDAsMSwxLjEtNC43NzMsNC4zNzksNC4zNzksMCwwLDEsMy44MzMtMS41NjFjMS44MjgsMCwzLjA4Ny41MTUsMy44MzMsMS41NDRhOC4zNTEsOC4zNTEsMCwwLDEsMS4xLDQuNzczLDEwLjgwOSwxMC44MDksMCwwLDEtLjQ1MiwzLjQ0LDMuOSwzLjksMCwwLDEtMS40NzMsMlptNS44NDgtMS42N2EyLjczNSwyLjczNSwwLDAsMS0yLjE2OC0uNjkyQTQuMTkyLDQuMTkyLDAsMCwxLDIwLDE4LjFWMTRIMTlWMTJoMVY5aDJ2M2gydjJIMjJ2My45YTMuOTA3LDMuOTA3LDAsMCwwLC4xNjgsMS40MzdjLjExMi4yMzEuMzkzLjM1NS44Ni4zNTVsMS41MzMtLjA1My4wOTMsMS41NDRBMTIuNTE5LDEyLjUxOSwwLDAsMSwyMi43NDgsMjEuNFpNMTIuNDE2LDEwLjYxNGEyLjQsMi40LDAsMCwwLTIuMjg5LDEuMSw3LjY1Nyw3LjY1NywwLDAsMC0uNiwzLjUxMyw3LjEzMSw3LjEzMSwwLDAsMCwuNiwzLjQ0MkEyLjQ0LDIuNDQsMCwwLDAsMTIuNDMzLDE5LjdhMi40MTcsMi40MTcsMCwwLDAsMi4yODktMS4wMTEsNy4zNDMsNy4zNDMsMCwwLDAsLjU4Ni0zLjQ0Miw3LjY5Miw3LjY5MiwwLDAsMC0uNi0zLjUzMUEyLjQsMi40LDAsMCwwLDEyLjQxNiwxMC42MTRaXCIgc3R5bGU9XCJmaWxsOiM0MWNkNTJcIi8+YCxcblx0XCJSXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCItMTM0LjgxMVwiIHkxPVwiLTEwMy4yODRcIiB4Mj1cIi0xMzQuNzcyXCIgeTI9XCItMTAzLjMyM1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDcyMS4wOTQsIDAsIDAsIC00ODIuOTM3LCA5NzIxMy41OTUsIC00OTg3NC41MTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjY2JjZWQwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzg0ODM4YlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi0xMzUuMzc4XCIgeTE9XCItMTAyLjk4NVwiIHgyPVwiLTEzNS4zMzlcIiB5Mj1cIi0xMDMuMDI0XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMzk4LCAwLCAwLCAtNDA2LjEyNCwgNTM4OTMsIC00MTgxMi44MzYpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjMjc2ZGMzXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzE2NWNhYVwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3I8L3RpdGxlPjxwYXRoIGQ9XCJNMTYsMjMuOTU2Yy03LjczMiwwLTE0LTQuMi0xNC05LjM3NlM4LjI2OCw1LjIsMTYsNS4yLDMwLDkuNCwzMCwxNC41OCwyMy43MzIsMjMuOTU2LDE2LDIzLjk1NlpNMTguMTQzLDguODdDMTIuMjY2LDguODcsNy41LDExLjc0LDcuNSwxNS4yOHM0Ljc2NCw2LjQxLDEwLjY0MSw2LjQxLDEwLjIxNC0xLjk2MiwxMC4yMTQtNi40MVMyNC4wMiw4Ljg3LDE4LjE0Myw4Ljg3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjMuMzIxLDE5LjcyNmExMC41NDUsMTAuNTQ1LDAsMCwxLDEuMzQuNSwyLjU5MSwyLjU5MSwwLDAsMSwuNjguNDg1LDEuODM1LDEuODM1LDAsMCwxLC4zMTEuNDQ3bDMuMzM5LDUuNjMtNS40LDAtMi41MjQtNC43NGE2LjEsNi4xLDAsMCwwLS44MzUtMS4xNDUuODc5Ljg3OSwwLDAsMC0uNjQxLS4yOTFIMTguMzExdjYuMTczbC00Ljc3NiwwVjExLjAyNmg5LjU5MVMyNy41LDExLjEsMjcuNSwxNS4yNjEsMjMuMzIxLDE5LjcyNiwyMy4zMjEsMTkuNzI2Wm0tMi4wNzctNS4yOC0yLjg5MSwwdjIuNjgxaDIuODkzYTEuMzIzLDEuMzIzLDAsMCwwLDEuMzQtMS4zNjRBMS4yNDcsMS4yNDcsMCwwLDAsMjEuMjQ0LDE0LjQ0N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz5gLFxuXHRcIlJhY2tldFwiOiBgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNlwiIHI9XCIxNFwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMjcuMDE2LDI0LjY0MWExNCwxNCwwLDAsMC0xNS44LTIxLjhDMTYuOSw1LjgyMiwyNC40MTMsMTUuNTQ5LDI3LjAxNiwyNC42NDFaXCIgc3R5bGU9XCJmaWxsOiMzZTViYTlcIi8+PHBhdGggZD1cIk0xMy45OTUsMTAuOTNhMjQuMywyNC4zLDAsMCwwLTcuMjItNS40NkExNCwxNCwwLDAsMCw1LjQ2MywyNS4yMTcsMzkuNTYsMzkuNTYsMCwwLDEsMTMuOTk1LDEwLjkzWlwiIHN0eWxlPVwiZmlsbDojOWYxZDIwXCIvPjxwYXRoIGQ9XCJNMTYuNTc1LDE0LjFBMzIuNjQ1LDMyLjY0NSwwLDAsMCw5LjQzLDI4LjM2NWExNC4wMTYsMTQuMDE2LDAsMCwwLDEzLjMtLjA4OUEzOC42NDIsMzguNjQyLDAsMCwwLDE2LjU3NSwxNC4xWlwiIHN0eWxlPVwiZmlsbDojOWYxZDIwXCIvPmAsXG5cdFwiUmF6b3IgQyNcIjogYDxwYXRoIGQ9XCJNMjMuODQ0LDI3LjY5MmExNi4zMzIsMTYuMzMyLDAsMCwxLTYuNjQ1LDEuM3EtNi4zNjQsMC0xMC4wMTMtMy4yNDNhMTEuMywxMS4zLDAsMCwxLTMuNjQ5LTguOUExMy43MTYsMTMuNzE2LDAsMCwxLDcuMzIyLDYuOTUxLDEyLjcxNiwxMi43MTYsMCwwLDEsMTYuOSwzLjAwOGExMS42NzYsMTEuNjc2LDAsMCwxLDguNDI1LDMuMDA2LDkuOTk0LDkuOTk0LDAsMCwxLDMuMTQyLDcuNTMzLDEwLjE4NywxMC4xODcsMCwwLDEtMi4zMTgsNy4xMTQsNy41MzIsNy41MzIsMCwwLDEtNS44MTcsMi41NDcsMi42MTMsMi42MTMsMCwwLDEtMS44NDUtLjY0MiwyLjMyMywyLjMyMywwLDAsMS0uNzY0LTEuNiw0LjksNC45LDAsMCwxLTQuMTQ4LDIuMjQzLDQuNiw0LjYsMCwwLDEtMy41MDctMS40NzksNS43MDYsNS43MDYsMCwwLDEtMS4zODQtNC4wNjMsOS45MTMsOS45MTMsMCwwLDEsMi4yLTYuMzU3cTIuMi0yLjc2Myw0LjgtMi43NjNhNS4wNjMsNS4wNjMsMCwwLDEsNC4yNTYsMS43MTZsLjMxMS0xLjMzOGgyLjQwNWwtMi4wODEsOS4wOGExMC43MTYsMTAuNzE2LDAsMCwwLS4zNTIsMi4yNDNxMCwuOTcyLjc0NC45NzJhNC44MTksNC44MTksMCwwLDAsMy44NzctMi4wNDcsOC45Myw4LjkzLDAsMCwwLDEuNjIxLTUuNjgxLDcuOTgsNy45OCwwLDAsMC0yLjY3NS02LjE3NSw5Ljg4Nyw5Ljg4NywwLDAsMC02LjkxOS0yLjQzMkExMC42LDEwLjYsMCwwLDAsOC43MTMsOC4zNTJhMTIuMDY2LDEyLjA2NiwwLDAsMC0zLjIsOC40OTUsOS41NjEsOS41NjEsMCwwLDAsMy4wNiw3LjU3M3EzLjA2LDIuNyw4LjU4NiwyLjdhMTMuNzU3LDEzLjc1NywwLDAsMCw1LjY3NS0xLjA1NFpNMTkuNDY2LDEyLjI1YTMuOTc3LDMuOTc3LDAsMCwwLTMuNi0xLjcxNnEtMS44MjQsMC0zLjI2MywyLjIzYTguNzI2LDguNzI2LDAsMCwwLTEuNDM5LDQuODI0cTAsMy42MzUsMi45MDUsMy42MzVBMy43NzEsMy43NzEsMCwwLDAsMTYuNzIsMjAuMDRhNi4zMDksNi4zMDksMCwwLDAsMS43LTMuMlpcIiBzdHlsZT1cImZpbGw6IzM2ODgzMlwiLz5gLFxuXHRcIlJlYWN0IEpTWFwiOiBgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNS45NzRcIiByPVwiMi41XCIgc3R5bGU9XCJmaWxsOiMwMGQ4ZmZcIi8+PHBhdGggZD1cIk0xNiwyMS43MDZhMjguMzg1LDI4LjM4NSwwLDAsMS04Ljg4LTEuMiwxMS4zLDExLjMsMCwwLDEtMy42NTctMS45NThBMy41NDMsMy41NDMsMCwwLDEsMiwxNS45NzRjMC0xLjY1MywxLjgxNi0zLjI3Myw0Ljg1OC00LjMzM0EyOC43NTUsMjguNzU1LDAsMCwxLDE2LDEwLjI5M2EyOC42NzQsMjguNjc0LDAsMCwxLDkuMDIyLDEuMzI0LDExLjM3NiwxMS4zNzYsMCwwLDEsMy41MzgsMS44NjZBMy4zOTEsMy4zOTEsMCwwLDEsMzAsMTUuOTc0YzAsMS43MTgtMi4wMywzLjQ1OS01LjMsNC41NDFBMjguOCwyOC44LDAsMCwxLDE2LDIxLjcwNlptMC0xMC4yMTdhMjcuOTQ4LDI3Ljk0OCwwLDAsMC04Ljc0OSwxLjI4MmMtMi44Ljk3Ny00LjA1NSwyLjMxMy00LjA1NSwzLjIsMCwuOTI4LDEuMzQ5LDIuMzg3LDQuMzExLDMuNEEyNy4yMSwyNy4yMSwwLDAsMCwxNiwyMC41MWEyNy42LDI3LjYsMCwwLDAsOC4zMjUtMS4xM0MyNy40LDE4LjM2MSwyOC44LDE2LjksMjguOCwxNS45NzRhMi4zMjcsMi4zMjcsMCwwLDAtMS4wMS0xLjU3MywxMC4xOTQsMTAuMTk0LDAsMCwwLTMuMTYxLTEuNjU0QTI3LjQ2MiwyNy40NjIsMCwwLDAsMTYsMTEuNDg5WlwiIHN0eWxlPVwiZmlsbDojMDBkOGZmXCIvPjxwYXRoIGQ9XCJNMTAuMzIsMjguNDQzYTIuNjM5LDIuNjM5LDAsMCwxLTEuMzM2LS4zMjhjLTEuNDMyLS44MjYtMS45MjgtMy4yMDgtMS4zMjctNi4zNzNhMjguNzU1LDI4Ljc1NSwwLDAsMSwzLjQtOC41OTNoMEEyOC42NzYsMjguNjc2LDAsMCwxLDE2LjcxLDUuOTk1YTExLjM3NiwxMS4zNzYsMCwwLDEsMy4zODQtMi4xMzMsMy4zOTEsMy4zOTEsMCwwLDEsMi44NzgsMGMxLjQ4OS44NTgsMS45ODIsMy40ODYsMS4yODcsNi44NTlhMjguODA2LDI4LjgwNiwwLDAsMS0zLjMxNiw4LjEzMywyOC4zODUsMjguMzg1LDAsMCwxLTUuNDc2LDcuMDkzLDExLjMsMTEuMywwLDAsMS0zLjUyMywyLjE4OUE0LjkyNiw0LjkyNiwwLDAsMSwxMC4zMiwyOC40NDNabTEuNzczLTE0LjdhMjcuOTQ4LDI3Ljk0OCwwLDAsMC0zLjI2LDguMjE5Yy0uNTUzLDIuOTE1LS4wMjIsNC42NjguNzUsNS4xMTQuOC40NjMsMi43NDIuMDI0LDUuMS0yLjAzNmEyNy4yMDksMjcuMjA5LDAsMCwwLDUuMjI3LTYuNzksMjcuNiwyNy42LDAsMCwwLDMuMTgxLTcuNzc2Yy42NTQtMy4xNzUuMDg5LTUuMTE5LS43MTMtNS41ODFhMi4zMjcsMi4zMjcsMCwwLDAtMS44NjguMDg5QTEwLjE5NCwxMC4xOTQsMCwwLDAsMTcuNSw2LjlhMjcuNDY0LDI3LjQ2NCwwLDAsMC01LjQsNi44NDlaXCIgc3R5bGU9XCJmaWxsOiMwMGQ4ZmZcIi8+PHBhdGggZD1cIk0yMS42NzcsMjguNDU2Yy0xLjM1NSwwLTMuMDc2LS44Mi00Ljg2OC0yLjM2MWEyOC43NTYsMjguNzU2LDAsMCwxLTUuNzQ3LTcuMjM3aDBhMjguNjc2LDI4LjY3NiwwLDAsMS0zLjM3NC04LjQ3MSwxMS4zNzYsMTEuMzc2LDAsMCwxLS4xNTgtNEEzLjM5MSwzLjM5MSwwLDAsMSw4Ljk2NCwzLjljMS40ODctLjg2MSw0LjAxLjAyNCw2LjU4NSwyLjMxYTI4LjgsMjguOCwwLDAsMSw1LjM5LDYuOTM0LDI4LjM4NCwyOC4zODQsMCwwLDEsMy40MSw4LjI4NywxMS4zLDExLjMsMCwwLDEsLjEzNyw0LjE0NiwzLjU0MywzLjU0MywwLDAsMS0xLjQ5NCwyLjU1NUEyLjU5LDIuNTksMCwwLDEsMjEuNjc3LDI4LjQ1NlptLTkuNTgtMTAuMmEyNy45NDksMjcuOTQ5LDAsMCwwLDUuNDkyLDYuOTI5YzIuMjQ5LDEuOTM1LDQuMDMzLDIuMzUxLDQuOCwxLjkuOC0uNDY1LDEuMzktMi4zNjMuNzgyLTUuNDM0QTI3LjIxMiwyNy4yMTIsMCwwLDAsMTkuOSwxMy43NCwyNy42LDI3LjYsMCwwLDAsMTQuNzU1LDcuMWMtMi40MjQtMi4xNTItNC4zOS0yLjYzMy01LjE5MS0yLjE2OWEyLjMyNywyLjMyNywwLDAsMC0uODU1LDEuNjYyLDEwLjE5NCwxMC4xOTQsMCwwLDAsLjE1MywzLjU2NSwyNy40NjUsMjcuNDY1LDAsMCwwLDMuMjM2LDguMVpcIiBzdHlsZT1cImZpbGw6IzAwZDhmZlwiLz5gLFxuXHRcIlJlYWN0IFRTWFwiOiBgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIxNS45NzRcIiByPVwiMi41XCIgc3R5bGU9XCJmaWxsOiMwMDdhY2NcIi8+PHBhdGggZD1cIk0xNiwyMS43MDZhMjguMzg1LDI4LjM4NSwwLDAsMS04Ljg4LTEuMiwxMS4zLDExLjMsMCwwLDEtMy42NTctMS45NThBMy41NDMsMy41NDMsMCwwLDEsMiwxNS45NzRjMC0xLjY1MywxLjgxNi0zLjI3Myw0Ljg1OC00LjMzM0EyOC43NTUsMjguNzU1LDAsMCwxLDE2LDEwLjI5M2EyOC42NzQsMjguNjc0LDAsMCwxLDkuMDIyLDEuMzI0LDExLjM3NiwxMS4zNzYsMCwwLDEsMy41MzgsMS44NjZBMy4zOTEsMy4zOTEsMCwwLDEsMzAsMTUuOTc0YzAsMS43MTgtMi4wMywzLjQ1OS01LjMsNC41NDFBMjguOCwyOC44LDAsMCwxLDE2LDIxLjcwNlptMC0xMC4yMTdhMjcuOTQ4LDI3Ljk0OCwwLDAsMC04Ljc0OSwxLjI4MmMtMi44Ljk3Ny00LjA1NSwyLjMxMy00LjA1NSwzLjIsMCwuOTI4LDEuMzQ5LDIuMzg3LDQuMzExLDMuNEEyNy4yMSwyNy4yMSwwLDAsMCwxNiwyMC41MWEyNy42LDI3LjYsMCwwLDAsOC4zMjUtMS4xM0MyNy40LDE4LjM2MSwyOC44LDE2LjksMjguOCwxNS45NzRhMi4zMjcsMi4zMjcsMCwwLDAtMS4wMS0xLjU3MywxMC4xOTQsMTAuMTk0LDAsMCwwLTMuMTYxLTEuNjU0QTI3LjQ2MiwyNy40NjIsMCwwLDAsMTYsMTEuNDg5WlwiIHN0eWxlPVwiZmlsbDojMDA3YWNjXCIvPjxwYXRoIGQ9XCJNMTAuMzIsMjguNDQzYTIuNjM5LDIuNjM5LDAsMCwxLTEuMzM2LS4zMjhjLTEuNDMyLS44MjYtMS45MjgtMy4yMDgtMS4zMjctNi4zNzNhMjguNzU1LDI4Ljc1NSwwLDAsMSwzLjQtOC41OTNoMEEyOC42NzYsMjguNjc2LDAsMCwxLDE2LjcxLDUuOTk1YTExLjM3NiwxMS4zNzYsMCwwLDEsMy4zODQtMi4xMzMsMy4zOTEsMy4zOTEsMCwwLDEsMi44NzgsMGMxLjQ4OS44NTgsMS45ODIsMy40ODYsMS4yODcsNi44NTlhMjguODA2LDI4LjgwNiwwLDAsMS0zLjMxNiw4LjEzMywyOC4zODUsMjguMzg1LDAsMCwxLTUuNDc2LDcuMDkzLDExLjMsMTEuMywwLDAsMS0zLjUyMywyLjE4OUE0LjkyNiw0LjkyNiwwLDAsMSwxMC4zMiwyOC40NDNabTEuNzczLTE0LjdhMjcuOTQ4LDI3Ljk0OCwwLDAsMC0zLjI2LDguMjE5Yy0uNTUzLDIuOTE1LS4wMjIsNC42NjguNzUsNS4xMTQuOC40NjMsMi43NDIuMDI0LDUuMS0yLjAzNmEyNy4yMDksMjcuMjA5LDAsMCwwLDUuMjI3LTYuNzksMjcuNiwyNy42LDAsMCwwLDMuMTgxLTcuNzc2Yy42NTQtMy4xNzUuMDg5LTUuMTE5LS43MTMtNS41ODFhMi4zMjcsMi4zMjcsMCwwLDAtMS44NjguMDg5QTEwLjE5NCwxMC4xOTQsMCwwLDAsMTcuNSw2LjlhMjcuNDY0LDI3LjQ2NCwwLDAsMC01LjQsNi44NDlaXCIgc3R5bGU9XCJmaWxsOiMwMDdhY2NcIi8+PHBhdGggZD1cIk0yMS42NzcsMjguNDU2Yy0xLjM1NSwwLTMuMDc2LS44Mi00Ljg2OC0yLjM2MWEyOC43NTYsMjguNzU2LDAsMCwxLTUuNzQ3LTcuMjM3aDBhMjguNjc2LDI4LjY3NiwwLDAsMS0zLjM3NC04LjQ3MSwxMS4zNzYsMTEuMzc2LDAsMCwxLS4xNTgtNEEzLjM5MSwzLjM5MSwwLDAsMSw4Ljk2NCwzLjljMS40ODctLjg2MSw0LjAxLjAyNCw2LjU4NSwyLjMxYTI4LjgsMjguOCwwLDAsMSw1LjM5LDYuOTM0LDI4LjM4NCwyOC4zODQsMCwwLDEsMy40MSw4LjI4NywxMS4zLDExLjMsMCwwLDEsLjEzNyw0LjE0NiwzLjU0MywzLjU0MywwLDAsMS0xLjQ5NCwyLjU1NUEyLjU5LDIuNTksMCwwLDEsMjEuNjc3LDI4LjQ1NlptLTkuNTgtMTAuMmEyNy45NDksMjcuOTQ5LDAsMCwwLDUuNDkyLDYuOTI5YzIuMjQ5LDEuOTM1LDQuMDMzLDIuMzUxLDQuOCwxLjkuOC0uNDY1LDEuMzktMi4zNjMuNzgyLTUuNDM0QTI3LjIxMiwyNy4yMTIsMCwwLDAsMTkuOSwxMy43NCwyNy42LDI3LjYsMCwwLDAsMTQuNzU1LDcuMWMtMi40MjQtMi4xNTItNC4zOS0yLjYzMy01LjE5MS0yLjE2OWEyLjMyNywyLjMyNywwLDAsMC0uODU1LDEuNjYyLDEwLjE5NCwxMC4xOTQsMCwwLDAsLjE1MywzLjU2NSwyNy40NjUsMjcuNDY1LDAsMCwwLDMuMjM2LDguMVpcIiBzdHlsZT1cImZpbGw6IzAwN2FjY1wiLz5gLFxuXHRcIlJlYXNvblwiOiBgPHBvbHlsaW5lIHBvaW50cz1cIjIgMiAzMCAyIDMwIDMwIDIgMzAgMiAyXCIgc3R5bGU9XCJmaWxsOiNkZDRiMzlcIi8+PHBhdGggZD1cIk05LjA1MSwxNy41MjdxMi41MzcsMCw1LjA3MiwwQTQuOTQ3LDQuOTQ3LDAsMCwxLDE3LjEsMTguNWEzLjI5LDMuMjksMCwwLDEsMS4xMjgsMi4yNjcsNC4xMTcsNC4xMTcsMCwwLDEtLjc3OCwzLjAyMiwzLjYsMy42LDAsMCwxLTEuMTM3LjkwNWwyLjI0NywzLjU0OS0zLjA2MSwwLTEuNi0zLjA0My0yLjE1NCwwLDAsMy4wMzJIOS4wNTFWMTcuNTI3bTIuNjksMi4xMjgsMCwzLjQzOCwxLjk4OSwwYTIuMTg0LDIuMTg0LDAsMCwwLDEuNDY4LS40NTIsMS44MTQsMS44MTQsMCwwLDAsLjQ4Mi0xLjU0NCwxLjQ2OSwxLjQ2OSwwLDAsMC0uNzA1LTEuMTgsMi43NjgsMi43NjgsMCwwLDAtMS40MzctLjI2OUMxMi45NCwxOS42NTQsMTEuNzQxLDE5LjY1NSwxMS43NDEsMTkuNjU1Wm04LjM4NC0yLjEzaDguMzV2Mi4xM2gtNS42NlYyMS44bDUuMTEsMHYyLjExOUgyMi44MlYyNi4xaDUuODI0djIuMTQySDIwLjEyNVYxNy41MjVaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJSZWdvXCI6IGA8ZGVmcz48Y2xpcFBhdGggaWQ9XCJhXCI+PHBhdGggZD1cIk03LjA1NSwxNi4yNDFjMy40MTUtMTAuMjIsMTQuNzU5LTkuNDczLDE3LjkyNCwwbC4xLDUuODkzYTE1LjU2MiwxNS41NjIsMCwwLDAtOS4wMzYsNy4yNDZBMTcuNjQxLDE3LjY0MSwwLDAsMCw3LjAzLDIyLjM0NlpcIiBzdHlsZT1cImZpbGw6bm9uZVwiLz48L2NsaXBQYXRoPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3JlZ288L3RpdGxlPjxwYXRoIGQ9XCJNNy4wMywxNi4yNDFsMi42LTQuNTU5Yy0yLjQxOC0uMzEyLTIuNjA2LTMuNDMxLS44LTkuMDYyQzMuODA5LDguODUzLDIuNDIsMTAuMjI4LDcuMDMsMTYuMjQxWlwiIHN0eWxlPVwiZmlsbDojYmZiZmJmO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwYXRoIGQ9XCJNMjQuOTcsMTYuMjQxbC0yLjU5NS00LjU1OWMyLjQxOC0uMzEyLDIuNjA2LTMuNDMxLjgtOS4wNjJDMjguMTkxLDguODUzLDI5LjU4LDEwLjIyOCwyNC45NywxNi4yNDFaXCIgc3R5bGU9XCJmaWxsOiNiZmJmYmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk03LjA1NSwxNi4yNDFjMy40MTUtMTAuMjIsMTQuNzU5LTkuNDczLDE3LjkyNCwwbC4xLDUuODkzYTE1LjU2MiwxNS41NjIsMCwwLDAtOS4wMzYsNy4yNDZBMTcuNjQxLDE3LjY0MSwwLDAsMCw3LjAzLDIyLjM0NlpcIiBzdHlsZT1cImZpbGw6bm9uZVwiLz48ZyBzdHlsZT1cImNsaXAtcGF0aDp1cmwoI2EpXCI+PHJlY3QgeD1cIjE2LjA1M1wiIHk9XCI3Ljk2MlwiIHdpZHRoPVwiOS41NDlcIiBoZWlnaHQ9XCIyMS44OTlcIiBzdHlsZT1cImZpbGw6IzUzNjM2N1wiLz48cmVjdCB4PVwiNS4zMjJcIiB5PVwiNy45NjJcIiB3aWR0aD1cIjEwLjczMlwiIGhlaWdodD1cIjIxLjg5OVwiIHN0eWxlPVwiZmlsbDojNzg5MjlhXCIvPjwvZz48Y2lyY2xlIGN4PVwiMTYuMDRcIiBjeT1cIjE2LjI0MVwiIHI9XCIxLjE2NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiUmVTY3JpcHRcIjogYDxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD1cImFcIiB4MT1cIjExLjQyMVwiIHkxPVwiLTIyMS43MDVcIiB4Mj1cIjIxLjUwOVwiIHkyPVwiLTI0OC43OTJcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxLCAwLCAwLCAtMSwgMCwgLTIxOClcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNlODRmNGZcIi8+PHN0b3Agb2Zmc2V0PVwiMC40MDlcIiBzdG9wLWNvbG9yPVwiI2RiNDY0NlwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5OVwiIHN0b3AtY29sb3I9XCIjY2IzOTM5XCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfcmVzY3JpcHQ8L3RpdGxlPjxwYXRoIGQ9XCJNMiwxMC45N2MwLTMuNzM4LDAtNS42Ljk1Mi02LjkxNmE0Ljk5Miw0Ljk5MiwwLDAsMSwxLjEtMS4xQzUuMzY0LDIsNy4yMzMsMiwxMC45NjksMkgyMS4wM2MzLjczOCwwLDUuNjA1LDAsNi45MTYuOTUxYTQuOTkyLDQuOTkyLDAsMCwxLDEuMSwxLjFDMzAsNS4zNjQsMzAsNy4yMzIsMzAsMTAuOTdWMjEuMDNjMCwzLjczNywwLDUuNjA1LS45NTIsNi45MTZhNC45NjYsNC45NjYsMCwwLDEtMS4xLDEuMUMyNi42MzYsMzAsMjQuNzY4LDMwLDIxLjAzLDMwSDEwLjk2OWMtMy43MzYsMC01LjYsMC02LjkxNS0uOTUyYTQuOTY2LDQuOTY2LDAsMCwxLTEuMS0xLjFDMiwyNi42MzYsMiwyNC43NjcsMiwyMS4wM1pcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTIwLjk3NCwxNS41NTRhMy4zMjUsMy4zMjUsMCwxLDAtMy4zMjQtMy4zMjVBMy4zMjUsMy4zMjUsMCwwLDAsMjAuOTc0LDE1LjU1NFpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTkuMzE2LDExLjgwOWE0LjY3Niw0LjY3NiwwLDAsMSwuMjA2LTEuOTg3QTEuODg2LDEuODg2LDAsMCwxLDEwLjM0NSw5YTQuNyw0LjcsMCwwLDEsMS45ODctLjIwNWgyLjY0VjIxLjA0NWE0LjY4Niw0LjY4NiwwLDAsMS0uMTQ0LDEuNjY0LDEuODkyLDEuODkyLDAsMCwxLTEuMDIsMS4wMiw0LjcyLDQuNzIsMCwwLDEtMS42NjQuMTQzLDQuNzE3LDQuNzE3LDAsMCwxLTEuNjY0LS4xNDMsMS44OTIsMS44OTIsMCwwLDEtMS4wMi0xLjAyLDQuNzIsNC43MiwwLDAsMS0uMTQzLTEuNjY0WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwicmVTVCAocmVTdHJ1Y3R1cmVkVGV4dClcIjogYDxwYXRoIGQ9XCJNMTYsMzBBMTMuODU5LDEzLjg1OSwwLDAsMSwyLjI4NiwxNiwxNC4xNDksMTQuMTQ5LDAsMCwxLDYuMyw2LjEsMTMuNTE3LDEzLjUxNywwLDAsMSwyNS43LDYuMSwxNC4xNDksMTQuMTQ5LDAsMCwxLDI5LjcxNCwxNiwxMy44NTksMTMuODU5LDAsMCwxLDE2LDMwWlwiIHN0eWxlPVwiZmlsbDojY2UzZjMxXCIvPjxwYXRoIGQ9XCJNMTEuODY5LDIzLjAxNWgtLjRhNC4yNjMsNC4yNjMsMCwwLDEtMS4wNDgtLjExMywxLjM4NywxLjM4NywwLDAsMS0uNzY3LS41NDgsMi4yLDIuMiwwLDAsMS0uNDA5LTEuMDI2QTEzLjI4LDEzLjI4LDAsMCwxLDkuMTU5LDE5LjZhMTIuNzgsMTIuNzgsMCwwLDAtLjA4LTEuNjg3LDEuNzczLDEuNzczLDAsMCwwLS40MDUtLjkyNCwxLjMyNSwxLjMyNSwwLDAsMC0xLjAyNi0uMzkxVjE1LjRhMS4zMjUsMS4zMjUsMCwwLDAsMS4wMjYtLjM5MSwxLjc3MywxLjc3MywwLDAsMCwuNDA1LS45MjQsMTIuNzgsMTIuNzgsMCwwLDAsLjA4LTEuNjg3LDEzLjI4LDEzLjI4LDAsMCwxLC4wODQtMS43MzEsMi4yLDIuMiwwLDAsMSwuNDA5LTEuMDI2LDEuMzg3LDEuMzg3LDAsMCwxLC43NjctLjU0OCw0LjI2Myw0LjI2MywwLDAsMSwxLjA0OC0uMTEzaC40djEuMTRoLS4yMjZxLS43NiwwLS45MzEuNGE3LjcyLDcuNzIsMCwwLDAtLjE3MiwyLjE3LDQuODc2LDQuODc2LDAsMCwxLS40MTYsMi4zMTZBMi4xMTcsMi4xMTcsMCwwLDEsOC44NTksMTZhMi4wODksMi4wODksMCwwLDEsMS4yNjQuOTg2QTQuODc2LDQuODc2LDAsMCwxLDEwLjU0LDE5LjNhNy43Miw3LjcyLDAsMCwwLC4xNzIsMi4xN3EuMTcyLjQuOTMxLjRoLjIyNlptMS42LTMuMTQxaDEuMDM1VjE2LjQyaDEuNDU5bDEuOTcsMy40NTRoMS4xODRMMTcuMDQsMTYuMzA4YTIuMjQzLDIuMjQzLDAsMCwwLDEuODMzLTIuMzE5YzAtMS43LTEuMi0yLjI5NC0yLjg1NS0yLjI5NEgxMy40NzRabTEuMDM1LTQuM1YxMi41M2gxLjM1OWMxLjI3MiwwLDEuOTcuMzg2LDEuOTcsMS40NTlzLS43LDEuNTgzLTEuOTcsMS41ODNabTUuNTU3LTYuNTkxaC40YTQuMjYzLDQuMjYzLDAsMCwxLDEuMDQ4LjExMywxLjM4NywxLjM4NywwLDAsMSwuNzY3LjU0OCwyLjIsMi4yLDAsMCwxLC40MDksMS4wMjYsMTMuMjgsMTMuMjgsMCwwLDEsLjA4NCwxLjczMSwxMi43OCwxMi43OCwwLDAsMCwuMDgsMS42ODcsMS43NzMsMS43NzMsMCwwLDAsLjQwNS45MjQsMS4zMjUsMS4zMjUsMCwwLDAsMS4wMjYuMzkxdjEuMTkxYTEuMzI1LDEuMzI1LDAsMCwwLTEuMDI2LjM5MSwxLjc3MywxLjc3MywwLDAsMC0uNDA1LjkyNCwxMi43OCwxMi43OCwwLDAsMC0uMDgsMS42ODcsMTMuMjgsMTMuMjgsMCwwLDEtLjA4NCwxLjczMSwyLjIsMi4yLDAsMCwxLS40MDksMS4wMjYsMS4zODcsMS4zODcsMCwwLDEtLjc2Ny41NDgsNC4yNjMsNC4yNjMsMCwwLDEtMS4wNDguMTEzaC0uNHYtMS4xNGguMjI2cS43NiwwLC45MzEtLjRBNy43Miw3LjcyLDAsMCwwLDIxLjQsMTkuM2E0Ljg3Niw0Ljg3NiwwLDAsMSwuNDE2LTIuMzE2QTIuMDg5LDIuMDg5LDAsMCwxLDIzLjA3NSwxNmEyLjExNywyLjExNywwLDAsMS0xLjI2NC0uOTk0LDQuODc2LDQuODc2LDAsMCwxLS40MTYtMi4zMTYsNy43Miw3LjcyLDAsMCwwLS4xNzItMi4xN3EtLjE3Mi0uNC0uOTMxLS40aC0uMjI2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiUm9ib3QgRnJhbWV3b3JrXCI6IGA8Y2lyY2xlIGN4PVwiMTZcIiBjeT1cIjE2XCIgcj1cIjE0XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xMC4zODcsMTQuNmEyLjcyNywyLjcyNywwLDAsMSw1LjQ1MywwLC45OS45OSwwLDEsMS0xLjk4LDAsLjc0Ni43NDYsMCwwLDAtMS40OTIsMCwuOTkuOTksMCwxLDEtMS45OCwwbTExLjMsNC41ODZhLjk5MS45OTEsMCwwLDEtLjk5Mi45OTJIMTEuNTA4YS45OTIuOTkyLDAsMCwxLDAtMS45ODRoOS4xODRhLjk5NC45OTQsMCwwLDEsLjk5Mi45OTJNMTcuMzkxLDE1LjE2YS45OTIuOTkyLDAsMCwxLC4yNy0xLjM3NWwyLjI5My0xLjU1MWEuOTg5Ljk4OSwwLDEsMSwxLjEwOSwxLjYzN2wtMi4zLDEuNTUxYS45NjUuOTY1LDAsMCwxLS41NTEuMTcyLjk5NC45OTQsMCwwLDEtLjgyNC0uNDM0bTYuMjg5LDYuMDk0YS43MDcuNzA3LDAsMCwxLS4yMDcuNWwtMS43MDcsMS43MDdhLjcwNy43MDcsMCwwLDEtLjUuMjA3SDEwLjhhLjcwNy43MDcsMCwwLDEtLjUtLjIwN0w4LjYsMjEuNzU0YS43MDcuNzA3LDAsMCwxLS4yMDctLjVWMTAuOGEuNzA3LjcwNywwLDAsMSwuMjA3LS41TDEwLjMsOC41OTRhLjcwNy43MDcsMCwwLDEsLjUtLjIwN0gyMS4yNjZhLjcwNy43MDcsMCwwLDEsLjUuMjA3TDIzLjQ3MywxMC4zYS43MDcuNzA3LDAsMCwxLC4yMDcuNVpNMjUuMTI5LDkuMTYsMjIuOSw2LjkzQTEuODA3LDEuODA3LDAsMCwwLDIxLjYyOSw2LjRIMTAuNDM4YTEuODA3LDEuODA3LDAsMCwwLTEuMjczLjUyN0w2LjkzOCw5LjE2YTEuOCwxLjgsMCwwLDAtLjUyNywxLjI3VjIxLjYyMWExLjgsMS44LDAsMCwwLC41MjcsMS4yNzNsMi4yMjcsMi4yM2ExLjgxLDEuODEsMCwwLDAsMS4yNzMuNTIzSDIxLjYyOWExLjgsMS44LDAsMCwwLDEuMjczLS41MjNsMi4yMjctMi4yM2ExLjc4NCwxLjc4NCwwLDAsMCwuNTI3LTEuMjczVjEwLjQzNGExLjc4NCwxLjc4NCwwLDAsMC0uNTI3LTEuMjczXCIvPmAsXG5cdFwiUnVieVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTIzNS45NTdcIiB5MT1cIi0zMDguNTc5XCIgeDI9XCItMjM1Ljk4NlwiIHkyPVwiLTMwOC41MjdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgyMDIuOTM1LCAwLCAwLCAtMjAyLjc4LCA0NzkxMC40NjEsIC02MjU0MS4xNilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNmYjc2NTVcIi8+PHN0b3Agb2Zmc2V0PVwiMC40MVwiIHN0b3AtY29sb3I9XCIjZTQyYjFlXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzkwMFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM5MDBcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCItMjM1LjU3MVwiIHkxPVwiLTMwOS4wODdcIiB4Mj1cIi0yMzUuNjk3XCIgeTI9XCItMzA5LjA0MVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDYwLjMwOCwgMCwgMCwgLTExMS43NzgsIDE0MjM2LjM1MSwgLTM0NTI1LjM5NSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiM4NzExMDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjOTExMjA5XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzkxMTIwOVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImNcIiB4MT1cIi0yMzUuODk2XCIgeTE9XCItMzEzLjM2MlwiIHgyPVwiLTIzNS45MzdcIiB5Mj1cIi0zMTMuMTI5XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTg4LjMyLCAwLCAwLCAtMjEuOTg2LCA0NDQ0Ny4zMDIsIC02ODU2Ljg4MilcIiB4bGluazpocmVmPVwiI2JcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZFwiIHgxPVwiLTIzMy41MTVcIiB5MT1cIi0zMDkuMDgyXCIgeDI9XCItMjMzLjQ5N1wiIHkyPVwiLTMwOS4xNjFcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg2NS4yMjIsIDAsIDAsIC05Ny4xLCAxNTIzNy44MDIsIC0yOTk5MS44MTQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMjNcIiBzdG9wLWNvbG9yPVwiI2U1NzI1MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjQ2XCIgc3RvcC1jb2xvcj1cIiNkZTNiMjBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYTYwMDAzXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E2MDAwM1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImVcIiB4MT1cIi0yMzUuMzE0XCIgeTE9XCItMzA5LjUzNFwiIHgyPVwiLTIzNS4zMVwiIHkyPVwiLTMwOS42MDdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxMDUuMzIsIDAsIDAsIC0xMDYuODI1LCAyNDc5OC45MjUsIC0zMzA1My4xNTIpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMjNcIiBzdG9wLWNvbG9yPVwiI2U0NzE0ZVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU2XCIgc3RvcC1jb2xvcj1cIiNiZTFhMGRcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYTgwZDAwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E4MGQwMFwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImZcIiB4MT1cIi0yMzUuODgyXCIgeTE9XCItMzExLjg1MVwiIHgyPVwiLTIzNS44NjlcIiB5Mj1cIi0zMTEuOTM1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoOTQuMzIxLCAwLCAwLCAtNjYuNDE4LCAyMjI3MS40OTksIC0yMDcwNy4wMDQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMThcIiBzdG9wLWNvbG9yPVwiI2U0NjM0MlwiLz48c3RvcCBvZmZzZXQ9XCIwLjRcIiBzdG9wLWNvbG9yPVwiI2M4MjQxMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiNhODBkMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYTgwZDAwXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZ1wiIHgxPVwiLTIzNS40MTJcIiB5MT1cIi0zMjEuMDc0XCIgeDI9XCItMjM1LjMzM1wiIHkyPVwiLTMyMC45NThcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg3MC43NjcsIDAsIDAsIC0yNC4zMDEsIDE2Njc4LjExNiwgLTc3OTguNjQ3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjU0XCIgc3RvcC1jb2xvcj1cIiNjODFmMTFcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYmYwOTA1XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2JmMDkwNVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImhcIiB4MT1cIi0yMjMuODIxXCIgeTE9XCItMzEwLjExNlwiIHgyPVwiLTIyMy43OTZcIiB5Mj1cIi0zMTAuMThcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxOC4xNzcsIDAsIDAsIC03Mi42NDUsIDQwNzEuMDE3LCAtMjI1MTAuMjMzKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjMxXCIgc3RvcC1jb2xvcj1cIiNkZTQwMjRcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYmYxOTBiXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2JmMTkwYlwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImlcIiB4MT1cIi0yMzUuNTYxXCIgeTE9XCItMzA5LjI1OFwiIHgyPVwiLTIzNS40MjRcIiB5Mj1cIi0zMDkuMTE2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTU4LjE2MiwgMCwgMCwgLTE1Ny45MzcsIDM3MjU2LjMxMywgLTQ4ODE5LjM4MilcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNiZDAwMTJcIi8+PHN0b3Agb2Zmc2V0PVwiMC4wN1wiIHN0b3AtY29sb3I9XCIjZmZmXCIvPjxzdG9wIG9mZnNldD1cIjAuMTdcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjI3XCIgc3RvcC1jb2xvcj1cIiNjODJmMWNcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zM1wiIHN0b3AtY29sb3I9XCIjODIwYzAxXCIvPjxzdG9wIG9mZnNldD1cIjAuNDZcIiBzdG9wLWNvbG9yPVwiI2EzMTYwMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjcyXCIgc3RvcC1jb2xvcj1cIiNiMzEzMDFcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjZTgyNjA5XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2U4MjYwOVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImpcIiB4MT1cIi0yMzUuNDI0XCIgeTE9XCItMzA5LjE0M1wiIHgyPVwiLTIzNS40NzZcIiB5Mj1cIi0zMDkuMTI2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTI3LjA3NCwgMCwgMCwgLTk3LjQwOSwgMjk5MzIuMjI5LCAtMzAwODYuOTQ3KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzhjMGMwMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU0XCIgc3RvcC1jb2xvcj1cIiM5OTBjMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjYTgwZDBlXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E4MGQwZVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImtcIiB4MT1cIi0yMzUuODM5XCIgeTE9XCItMzA5LjYwNFwiIHgyPVwiLTIzNS45MDFcIiB5Mj1cIi0zMDkuNTU1XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoOTQuMDExLCAwLCAwLCAtMTA1LjYwMywgMjIxOTguNzQzLCAtMzI2NzYuODU2KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzdlMTEwYlwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM5ZTBjMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOWUwYzAwXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwibFwiIHgxPVwiLTIzNS44NTRcIiB5MT1cIi0zMTEuMjRcIiB4Mj1cIi0yMzUuODkxXCIgeTI9XCItMzExLjIwMlwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDc5LjcwMiwgMCwgMCwgLTgxLjc5MSwgMTg4MjcuMzk3LCAtMjU0NDcuOTA1KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzc5MTMwZFwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiM5ZTEyMGJcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOWUxMjBiXCIvPjwvbGluZWFyR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwibVwiIGN4PVwiLTIzNS44ODJcIiBjeT1cIi0zMTIuNTQzXCIgcj1cIjAuMDc2XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoOTMuMTEzLCAwLCAwLCAtNDguNjU1LCAyMTk4Ni4wNzMsIC0xNTE5My42MSlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNhODBkMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC45OVwiIHN0b3AtY29sb3I9XCIjN2UwZTA4XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzdlMGUwOFwiLz48L3JhZGlhbEdyYWRpZW50PjxyYWRpYWxHcmFkaWVudCBpZD1cIm5cIiBjeD1cIi0yMzUuMjgyXCIgY3k9XCItMzA5LjcwNFwiIHI9XCIwLjA5N1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDk3LjQzNCwgMCwgMCwgLTc1Ljg0OCwgMjI5MzcuMDU3LCAtMjM0NjcuODQpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjYTMwYzAwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzgwMGUwOFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM4MDBlMDhcIi8+PC9yYWRpYWxHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJvXCIgeDE9XCItMjMxLjI0MVwiIHkxPVwiLTMwOS40MzVcIiB4Mj1cIi0yMzEuMjk5XCIgeTI9XCItMzA5LjMzN1wiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDQwLjEzNywgMCwgMCwgLTgxLjE0MywgOTI4Ni45OTgsIC0yNTA3OC41ODkpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjOGIyMTE0XCIvPjxzdG9wIG9mZnNldD1cIjAuNDNcIiBzdG9wLWNvbG9yPVwiIzllMTAwYVwiLz48c3RvcCBvZmZzZXQ9XCIwLjk5XCIgc3RvcC1jb2xvcj1cIiNiMzEwMGNcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjYjMxMDBjXCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwicFwiIHgxPVwiLTIzNS44OThcIiB5MT1cIi0zMTcuNDY2XCIgeDI9XCItMjM1LjgzMVwiIHkyPVwiLTMxNy41MzdcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCg3OC4wOTksIDAsIDAsIC0zMi42MjQsIDE4NDQ3LjM2MSwgLTEwMzUzLjU1MylcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNiMzEwMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC40NFwiIHN0b3AtY29sb3I9XCIjOTEwZjA4XCIvPjxzdG9wIG9mZnNldD1cIjAuOTlcIiBzdG9wLWNvbG9yPVwiIzc5MWMxMlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM3OTFjMTJcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9ydWJ5PC90aXRsZT48cGF0aCBkPVwiTTIzLjY5MywyMC40NjksNy43MDcsMjkuOTYxbDIwLjctMS40TDMwLDcuNjg1WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPjxwYXRoIGQ9XCJNMjguNDQsMjguNTQyLDI2LjY2MSwxNi4yNjNsLTQuODQ2LDYuNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNiKVwiLz48cGF0aCBkPVwiTTI4LjQ2NCwyOC41NDIsMTUuNDMsMjcuNTE5LDcuNzc2LDI5LjkzNFpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTcuNzk0LDI5LjkzNywxMS4wNSwxOS4yNywzLjg4NSwyMC44WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMjEuODEzLDIyLjdsLTMtMTEuNzM1TDEwLjI0MywxOVpcIiBzdHlsZT1cImZpbGw6dXJsKCNlKVwiLz48cGF0aCBkPVwiTTI5LjMyLDExLjEyN2wtOC4xLTYuNjE5LTIuMjU3LDcuM1pcIiBzdHlsZT1cImZpbGw6dXJsKCNmKVwiLz48cGF0aCBkPVwiTTI1LjUzLDIuMTQ4LDIwLjc2Myw0Ljc4MmwtMy4wMDctMi42N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNnKVwiLz48cGF0aCBkPVwiTTIsMjQuMzhsMi0zLjY0MkwyLjM4MiwxNi40WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2gpXCIvPjxwYXRoIGQ9XCJNMi4yNzQsMTYuMjYzLDMuOSwyMC44NzNsNy4wNjItMS41ODRMMTkuMDI0LDExLjgsMjEuMyw0LjU2OWwtMy41ODMtMi41My02LjA5MSwyLjI4QzkuNzA2LDYuMSw1Ljk4Miw5LjYzNSw1Ljg0OCw5LjdzLTIuNDU5LDQuNDY0LTMuNTc0LDYuNTYyWlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNNy45ODEsNy45ODFDMTIuMTQsMy44NTgsMTcuNSwxLjQyMSwxOS41NTksMy41cy0uMTI0LDcuMTIxLTQuMjgzLDExLjI0NFM1LjgyMSwyMS40MzQsMy43NjUsMTkuMzU4LDMuODIyLDEyLjEsNy45ODEsNy45ODFaXCIgc3R5bGU9XCJmaWxsOnVybCgjaSlcIi8+PHBhdGggZD1cIk03Ljc5NCwyOS45MzNsMy4yMzEtMTAuNywxMC43MjksMy40NDdjLTMuODc5LDMuNjM4LTguMTk0LDYuNzEzLTEzLjk2LDcuMjU0WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2opXCIvPjxwYXRoIGQ9XCJNMTkuMDM4LDExLjc3NGwyLjc1NCwxMC45MWMzLjI0LTMuNDA3LDYuMTQ5LTcuMDcsNy41NzMtMTEuNmwtMTAuMzI4LjY5MVpcIiBzdHlsZT1cImZpbGw6dXJsKCNrKVwiLz48cGF0aCBkPVwiTTI5LjMzNywxMS4xMzljMS4xLTMuMzI3LDEuMzU3LTguMS0zLjg0MS04Ljk4NUwyMS4yMzEsNC41MDlsOC4xMDYsNi42MjlaXCIgc3R5bGU9XCJmaWxsOnVybCgjbClcIi8+PHBhdGggZD1cIk0yLDI0LjMzMmMuMTUzLDUuNDksNC4xMTQsNS41NzIsNS44LDUuNjJsLTMuOS05LjFMMiwyNC4zMzJaXCIgc3R5bGU9XCJmaWxsOiM5ZTEyMDlcIi8+PHBhdGggZD1cIk0xOS4wNTMsMTEuNzkxYzIuNDksMS41MzEsNy41MDksNC42LDcuNjEsNC42NjFhMTcuNTUyLDE3LjU1MiwwLDAsMCwyLjYxOS01LjM0M2wtMTAuMjI5LjY4M1pcIiBzdHlsZT1cImZpbGw6dXJsKCNtKVwiLz48cGF0aCBkPVwiTTExLjAyMSwxOS4yMzJsNC4zMTksOC4zMzJhMjcuOTI0LDI3LjkyNCwwLDAsMCw2LjM4NS00Ljg4bC0xMC43LTMuNDUyWlwiIHN0eWxlPVwiZmlsbDp1cmwoI24pXCIvPjxwYXRoIGQ9XCJNMy44ODcsMjAuODYxbC0uNjEyLDcuMjg3YzEuMTU1LDEuNTc3LDIuNzQzLDEuNzE0LDQuNDA5LDEuNTkxLTEuMjA1LTMtMy42MTQtOS0zLjgtOC44NzhaXCIgc3R5bGU9XCJmaWxsOnVybCgjbylcIi8+PHBhdGggZD1cIk0yMS4yMDYsNC41MjhsOC41OCwxLjJjLS40NTgtMS45NC0xLjg2NC0zLjE5Mi00LjI2MS0zLjU4NGwtNC4zMTksMi4zOFpcIiBzdHlsZT1cImZpbGw6dXJsKCNwKVwiLz5gLFxuXHRcIlJ1c3RcIjogYDxkZWZzPjxyYWRpYWxHcmFkaWVudCBpZD1cImFcIiBjeD1cIi00OTIuMDM1XCIgY3k9XCItODgzLjM3XCIgcj1cIjEzLjk5OFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDAuODY2LCAtMC41LCAtMC4zLCAtMC41MiwgMTc3LjEwNiwgLTY4OS4wMzMpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjN2Q3ZDdkXCIvPjxzdG9wIG9mZnNldD1cIjAuMjY3XCIgc3RvcC1jb2xvcj1cIiM3ZTdjN2FcIi8+PHN0b3Agb2Zmc2V0PVwiMC40NVwiIHN0b3AtY29sb3I9XCIjODE3ODcxXCIvPjxzdG9wIG9mZnNldD1cIjAuNjA4XCIgc3RvcC1jb2xvcj1cIiM4NjcxNjJcIi8+PHN0b3Agb2Zmc2V0PVwiMC43NTNcIiBzdG9wLWNvbG9yPVwiIzhkNjg0Y1wiLz48c3RvcCBvZmZzZXQ9XCIwLjg4NlwiIHN0b3AtY29sb3I9XCIjOTY1YzMwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2EwNGYxMlwiLz48L3JhZGlhbEdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3J1c3Q8L3RpdGxlPjxwYXRoIGQ9XCJNMTUuMTI0LDUuM2EuODMyLjgzMiwwLDEsMSwuODMyLjgzMmgwYS44MzEuODMxLDAsMCwxLS44MzItLjgzMk01LjIsMTIuODM0YS44MzIuODMyLDAsMSwxLC44MzIuODMyaDBhLjgzMi44MzIsMCwwLDEtLjgzMi0uODMybTE5Ljg1Ni4wMzlhLjgzMi44MzIsMCwxLDEsLjgzMi44MzIuODMxLjgzMSwwLDAsMS0uODMyLS44MzJoME03LjYwNSwxNC4wMTNhLjc2Ljc2LDAsMCwwLC4zODYtMWwtLjM2OS0uODM1SDkuMDc0djYuNTQ1SDYuMTQ0YTEwLjI0NywxMC4yNDcsMCwwLDEtLjMzMi0zLjkxMVptNi4wNzQuMTYxVjEyLjI0NWgzLjQ1OGMuMTc5LDAsMS4yNjEuMjA2LDEuMjYxLDEuMDE2LDAsLjY3Mi0uODMuOTEzLTEuNTEzLjkxM1pNOC45NTgsMjQuNTYxYS44MzIuODMyLDAsMSwxLC44MzIuODMyLjgzMS44MzEsMCwwLDEtLjgzMi0uODMyaDBtMTIuMzMxLjAzOWEuODMyLjgzMiwwLDEsMSwuODMyLjgzMi44MzIuODMyLDAsMCwxLS44MzItLjgzMmgwbS4yNTctMS44ODdhLjc1OC43NTgsMCwwLDAtLjkuNTg0bC0uNDE4LDEuOTQ5YTEwLjI0OSwxMC4yNDksMCwwLDEtOC41NDUtLjA0MWwtLjQxNy0xLjk0OWEuNzU5Ljc1OSwwLDAsMC0uOS0uNTgzaDBsLTEuNzIxLjM3YTEwLjIzMywxMC4yMzMsMCwwLDEtLjg5LTEuMDQ5aDguMzc0Yy4wOTUsMCwuMTU4LS4wMTcuMTU4LS4xVjE4LjkyOGMwLS4wODYtLjA2My0uMS0uMTU4LS4xaC0yLjQ1VjE2Ljk0N2gyLjY0OWExLjY2NSwxLjY2NSwwLDAsMSwxLjYyOSwxLjQxMmMuMTA1LjQxMy4zMzYsMS43NTcuNDk0LDIuMTg3LjE1Ny40ODMuOCwxLjQ0NywxLjQ4MiwxLjQ0N2g0LjMyM2ExMC4yNDMsMTAuMjQzLDAsMCwxLS45NDksMS4xWm00LjY1LTcuODIxYTEwLjI2MSwxMC4yNjEsMCwwLDEsLjAyMiwxLjc3OUgyNS4xNjdjLS4xMDUsMC0uMTQ4LjA2OS0uMTQ4LjE3MnYuNDgzYzAsMS4xMzYtLjY0MSwxLjM4NC0xLjIsMS40NDctLjUzNS4wNi0xLjEyOC0uMjI0LTEuMi0uNTUxYTMuNjE2LDMuNjE2LDAsMCwwLTEuNjcxLTIuODA4YzEuMDMtLjY1NCwyLjEtMS42MTksMi4xLTIuOTExQTMuMjkyLDMuMjkyLDAsMCwwLDIxLjQ0LDkuOGE0LjU1OSw0LjU1OSwwLDAsMC0yLjItLjcyNEg4LjM2N0ExMC4yNDYsMTAuMjQ2LDAsMCwxLDE0LjEsNS44NGwxLjI4MiwxLjM0NGEuNzU4Ljc1OCwwLDAsMCwxLjA3Mi4wMjZoMGwxLjQzNC0xLjM3MmExMC4yNDgsMTAuMjQ4LDAsMCwxLDcuMDE1LDVsLS45ODIsMi4yMTdhLjc2MS43NjEsMCwwLDAsLjM4NiwxWm0yLjQ0OC4wMzYtLjAzMy0uMzQzLDEuMDExLS45NDNhLjQyLjQyLDAsMCwwLS4wMTMtLjU5NS40MjguNDI4LDAsMCwwLS4xMjEtLjA4MUwyOC4yLDEyLjQ4M2wtLjEtLjMzNC44MDYtMS4xMmEuNDIyLjQyMiwwLDAsMC0uMTMtLjU4MS40My40MywwLDAsMC0uMTMzLS4wNTVsLTEuMzYzLS4yMjItLjE2NC0uMzA2LjU3My0xLjI1N2EuNDE5LjQxOSwwLDAsMC0uMjM2LS41NDQuNDI2LjQyNiwwLDAsMC0uMTQ2LS4wMjlsLTEuMzgzLjA0OEwyNS43LDcuODE5bC4zMTgtMS4zNDdhLjQyMS40MjEsMCwwLDAtLjM0My0uNDg3LjQzNS40MzUsMCwwLDAtLjE0NCwwTDI0LjE4Myw2LjNsLS4yNjYtLjIxOUwyMy45NjYsNC43YS40MjEuNDIxLDAsMCwwLS40MzEtLjQxMS40MjYuNDI2LDAsMCwwLS4xNDEuMDI4bC0xLjI1Ny41NzMtLjMwNi0uMTY0LS4yMjItMS4zNjNhLjQyMS40MjEsMCwwLDAtLjUtLjMxOC40My40MywwLDAsMC0uMTMzLjA1NWwtMS4xMjEuODA2LS4zMzMtLjEtLjQ4My0xLjI5M2EuNDIxLjQyMSwwLDAsMC0uNTU1LS4yMTUuNDQyLjQ0MiwwLDAsMC0uMTIuMDhMMTcuNDE4LDMuMzlsLS4zNDMtLjAzM0wxNi4zNDcsMi4xOGEuNDIxLjQyMSwwLDAsMC0uNjg4LDBsLS43MjgsMS4xNzctLjM0My4wMzMtLjk0My0xLjAxMmEuNDIxLjQyMSwwLDAsMC0uNTk1LjAxNS40NDIuNDQyLDAsMCwwLS4wOC4xMkwxMi40ODMsMy44bC0uMzMzLjEtMS4xMi0uOGEuNDIyLjQyMiwwLDAsMC0uNTgxLjEzLjQzLjQzLDAsMCwwLS4wNTUuMTMzbC0uMjIyLDEuMzYzLS4zMDYuMTY0TDguNjA4LDQuMzE3YS40MjEuNDIxLDAsMCwwLS41NDQuMjM5LjQ0NC40NDQsMCwwLDAtLjAyOC4xNDRsLjA0OCwxLjM4M0w3LjgxOCw2LjMsNi40NzEsNS45ODRhLjQyMS40MjEsMCwwLDAtLjQ4Ny4zNDMuNDM1LjQzNSwwLDAsMCwwLC4xNDRMNi4zLDcuODE5bC0uMjE4LjI2NUw0LjcsOC4wMzZhLjQyMi40MjIsMCwwLDAtLjM4My41NzNMNC44OSw5Ljg2NmwtLjE2NC4zMDYtMS4zNjMuMjIyYS40Mi40MiwwLDAsMC0uMzE4LjUuNDMuNDMsMCwwLDAsLjA1NS4xMzNsLjgwNiwxLjEyLS4xLjMzNC0xLjI5My40ODNhLjQyMS40MjEsMCwwLDAtLjIxNS41NTUuNDE0LjQxNCwwLDAsMCwuMDgxLjEyMWwxLjAxMS45NDMtLjAzMy4zNDMtMS4xNzcuNzI4YS40MjEuNDIxLDAsMCwwLDAsLjY4OGwxLjE3Ny43MjguMDMzLjM0My0xLjAxMS45NDNhLjQyMS40MjEsMCwwLDAsLjAxNS41OTUuNDM2LjQzNiwwLDAsMCwuMTE5LjA4bDEuMjkzLjQ4My4xLjMzNEwzLjEsMjAuOTcyYS40MjEuNDIxLDAsMCwwLC4xMzEuNTgxLjQzLjQzLDAsMCwwLC4xMzMuMDU1bDEuMzYzLjIyMi4xNjQuMzA3LS41NzMsMS4yNTdhLjQyMi40MjIsMCwwLDAsLjI0LjU0NS40MzguNDM4LDAsMCwwLC4xNDMuMDI4bDEuMzgzLS4wNDguMjE5LjI2Ni0uMzE3LDEuMzQ4YS40Mi40MiwwLDAsMCwuMzQxLjQ4Ni40LjQsMCwwLDAsLjE0NiwwTDcuODE4LDI1LjdsLjI2Ni4yMThMOC4wMzUsMjcuM2EuNDE5LjQxOSwwLDAsMCwuNDI5LjQxLjQxMy40MTMsMCwwLDAsLjE0My0uMDI4bDEuMjU3LS41NzMuMzA2LjE2NC4yMjIsMS4zNjJhLjQyMS40MjEsMCwwLDAsLjUuMzE5LjQwNy40MDcsMCwwLDAsLjEzMy0uMDU1bDEuMTItLjgwNy4zMzQuMS40ODMsMS4yOTJhLjQyMi40MjIsMCwwLDAsLjU1Ni4yMTQuNDM2LjQzNiwwLDAsMCwuMTE5LS4wOGwuOTQzLTEuMDExLjM0My4wMzQuNzI4LDEuMTc3YS40MjIuNDIyLDAsMCwwLC41ODguMS40MTMuNDEzLDAsMCwwLC4xLS4xbC43MjgtMS4xNzcuMzQzLS4wMzQuOTQzLDEuMDExYS40MjEuNDIxLDAsMCwwLC41OTUtLjAxNS40MzYuNDM2LDAsMCwwLC4wOC0uMTE5bC40ODMtMS4yOTIuMzM0LS4xLDEuMTIuODA3YS40MjEuNDIxLDAsMCwwLC41ODEtLjEzMS40My40MywwLDAsMCwuMDU1LS4xMzNsLjIyMi0xLjM2Mi4zMDYtLjE2NCwxLjI1Ny41NzNhLjQyMS40MjEsMCwwLDAsLjU0NC0uMjM5LjQzOC40MzgsMCwwLDAsLjAyOC0uMTQzbC0uMDQ4LTEuMzg0LjI2NS0uMjE4LDEuMzQ3LjMxN2EuNDIxLjQyMSwwLDAsMCwuNDg3LS4zNC40NDcuNDQ3LDAsMCwwLDAtLjE0NkwyNS43LDI0LjE4M2wuMjE4LS4yNjYsMS4zODMuMDQ4YS40MjEuNDIxLDAsMCwwLC40MS0uNDMxLjQuNCwwLDAsMC0uMDI4LS4xNDJsLS41NzMtMS4yNTcuMTY0LS4zMDcsMS4zNjMtLjIyMmEuNDIxLjQyMSwwLDAsMCwuMzE5LS41LjQzNC40MzQsMCwwLDAtLjA1Ni0uMTM1bC0uODA2LTEuMTIuMS0uMzM0LDEuMjkzLS40ODNhLjQyLjQyLDAsMCwwLC4yMTUtLjU1NC40MTQuNDE0LDAsMCwwLS4wODEtLjEyMWwtMS4wMTEtLjk0My4wMzMtLjM0MywxLjE3Ny0uNzI4YS40MjEuNDIxLDAsMCwwLDAtLjY4OFpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz5gLFxuXHRcIlNBU1wiOiBgPHBhdGggZD1cIk0xNi4wMTgsMzBBMTQsMTQsMCwxLDEsMzAsMTYuMiwxNCwxNCwwLDAsMSwxNi4wMTgsMzBaXCIgc3R5bGU9XCJmaWxsOiMwMDJiYjVcIi8+PHBhdGggZD1cIk05LjE3LDIyLjYzYy4wMjYuMDYxLjA0Ni4xMjQuMDc3LjE4MywyLjIxNSw0LjIwNiw3LjczOCw0LjYxNiwxMC43NTYsMi40NTRhNi4wMTcsNi4wMTcsMCwwLDAsMS43MzEtOC41ODMsMTUuNywxNS43LDAsMCwwLTEuMzE4LTEuNzMxYy0uODgxLTEuMDY3LTEuNzU1LTIuMTQtMi42MzYtMy4yMDctLjM2Ni0uNDQzLS43NjctLjgzNS0xLjQxNi0uNjgzYTEuMzkzLDEuMzkzLDAsMCwwLS44MTYsMi4zMTFjLjg4OCwxLjEwNiwxLjgxOSwyLjE3NywyLjcsMy4yODZhMy44NzQsMy44NzQsMCwwLDEsLjU4OSw0LjQsNS40MjMsNS40MjMsMCwwLDEtNSwzLjEzNEE2LjYsNi42LDAsMCwxLDkuMTcsMjIuNjNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yMi40OTQsOS42MDljLjA4LS4yNDgtLjA2Ni0uMzctLjE0MS0uNTA5QTcuNDc3LDcuNDc3LDAsMCwwLDEyLjYsNi4yMzdjLTMuMywxLjYzLTUuMSw1LjM1Mi0yLjYzNyw5LjE0N2E1Ni41Myw1Ni41MywwLDAsMCw0LjEzNSw1LjEyLDEuMDEyLDEuMDEyLDAsMCwwLC43MDkuMzQ1LDEuMzg0LDEuMzg0LDAsMCwwLDEuNDI4LS43NjUsMS4yNDcsMS4yNDcsMCwwLDAtLjE3My0xLjUwN2MtLjg3Ni0xLjA1MS0xLjc2OS0yLjA4OC0yLjYxNS0zLjE2MmE0LjEzLDQuMTMsMCwwLDEsLjMyMy01Ljc3MUE2LjA1NCw2LjA1NCwwLDAsMSwxOS45ODQsOC4xMyw1LjE5LDUuMTksMCwwLDEsMjIuNDk0LDkuNjA5WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiU2FzcyAoU2FzcylcIjogYDxwYXRoIGQ9XCJNMjYuMTEsMTcuNTcyYTUuOCw1LjgsMCwwLDAtMi41MzcuNTg4LDUuMzQ1LDUuMzQ1LDAsMCwxLS41NjgtMS4zMTQsMy41MywzLjUzLDAsMCwxLS4wNTEtMS4xLDkuODExLDkuODExLDAsMCwxLC4zMzItMS4xOTJjLS4wMDUtLjA1MS0uMDYxLS4yOTItLjYyNC0uM3MtMS4wNDguMTA3LTEuMS4yNTZhNi4xNzEsNi4xNzEsMCwwLDAtLjIzNS44MzQsMTkuNjg2LDE5LjY4NiwwLDAsMS0xLjcxMywzLjI5NCwzLjE4NiwzLjE4NiwwLDAsMS0uNDQtMi4wNjYsOS44MTEsOS44MTEsMCwwLDEsLjMzMi0xLjE5MmMtLjAwNS0uMDUxLS4wNjEtLjI5Mi0uNjI0LS4zcy0xLjA0OC4xMDctMS4xLjI1Ni0uMTE4LjUtLjIzNS44MzQtMS40ODMsMy4zODYtMS44NDEsNC4xNzNjLS4xODQuNC0uMzQzLjcyNi0uNDU1Ljk0NmgwYS4yMzMuMjMzLDAsMCwxLS4wMi4wNDFjLS4xLjE4OS0uMTUzLjI5Mi0uMTUzLjI5MnYuMDA1Yy0uMDc3LjEzOC0uMTU5LjI2Ni0uMi4yNjZhMS43MTEsMS43MTEsMCwwLDEsLjAxLS44NjljLjItMS4wNTkuNjktMi43MDUuNjg1LTIuNzYyLDAtLjAzMS4wOTItLjMxNy0uMzE3LS40NjVhLjUwOC41MDgsMCwwLDAtLjU3OC4xYy0uMDM2LDAtLjA2MS4wODctLjA2MS4wODdzLjQ0NS0xLjg1MS0uODQ5LTEuODUxYTMuODU1LDMuODU1LDAsMCwwLTIuNDc1LDEuNjgzYy0uMzQ4LjE4OS0xLjA4OS41OTMtMS44ODIsMS4wMjgtLjMuMTY5LS42MTQuMzM4LS45MDUuNS0uMDItLjAyLS4wNDEtLjA0Ni0uMDYxLS4wNjZDNi44NywxNy42LDMuOTc1LDE2LjQxNiw0LjEsMTQuMTcxYy4wNDYtLjgxOC4zMjctMi45NjYsNS41NTktNS41NzUsNC4zMDYtMi4xMjIsNy43MzMtMS41MzQsOC4zMjYtLjIzLjg0OSwxLjg2Mi0xLjgzNiw1LjMxOS02LjI4NSw1LjgyYTMuMzUxLDMuMzUxLDAsMCwxLTIuODEzLS43MTFjLS4yMzUtLjI1Ni0uMjcxLS4yNzEtLjM1OC0uMjItLjE0My4wNzctLjA1MS4zMDcsMCwuNDRhMi42MjYsMi42MjYsMCwwLDAsMS42MDYsMS4yNjMsOC41NSw4LjU1LDAsMCwwLDUuMjE3LS41MTdjMi43LTEuMDQzLDQuOC0zLjk0Myw0LjE4NC02LjM3Mi0uNjE5LTIuNDY1LTQuNzEtMy4yNzgtOC41ODItMS45QTE5LjUsMTkuNSwwLDAsMCw0LjM1OSw5Ljk1MmMtMi4xMzMsMS45OTUtMi40NywzLjcyOC0yLjMzMiw0LjQ1NS41LDIuNTc4LDQuMDUxLDQuMjU1LDUuNDcyLDUuNS0uMDcyLjA0MS0uMTM4LjA3Ny0uMTk0LjEwNy0uNzExLjM1My0zLjQyMSwxLjc3LTQuMSwzLjI2OC0uNzY3LDEuNy4xMjMsMi45MTUuNzExLDMuMDc5YTQuMzc0LDQuMzc0LDAsMCwwLDQuNzEtMS45MDhBNC43MjUsNC43MjUsMCwwLDAsOS4wNDksMjAuMWEuMTA3LjEwNywwLDAsMC0uMDItLjAzMWwuNTU3LS4zMjdjLjM2My0uMjE1LjcyMS0uNDE0LDEuMDI4LS41NzhhNi43NCw2Ljc0LDAsMCwwLS4zNjMsMS44NjIsMy44ODYsMy44ODYsMCwwLDAsLjgzNCwyLjcuOTIxLjkyMSwwLDAsMCwuNjc1LjIyYy42LDAsLjg3NS0uNSwxLjE3Ni0xLjA5NC4zNjgtLjcyNi43LTEuNTcuNy0xLjU3cy0uNDE0LDIuMjgxLjcxMSwyLjI4MWMuNDA5LDAsLjgyMy0uNTMyLDEuMDA4LS44di4wMDVzLjAxLS4wMTUuMDMxLS4wNTFsLjA2Ni0uMTA3di0uMDFjLjE2NC0uMjg2LjUzMi0uOTM2LDEuMDc5LTIuMDE1LjcwNi0xLjM5MSwxLjM4Ni0zLjEzLDEuMzg2LTMuMTNhOC44ODgsOC44ODgsMCwwLDAsLjI3MSwxLjEzLDEwLjY0MywxMC42NDMsMCwwLDAsLjU4MywxLjMwOWMtLjE2NC4yMy0uMjY2LjM1OC0uMjY2LjM1OGwuMDA1LjAwNWMtLjEzMy4xNzQtLjI3Ni4zNjMtLjQzNS41NDdhMTYuMywxNi4zLDAsMCwwLTEuMzE0LDEuNjQ3LjQ0Ny40NDcsMCwwLDAsLjEyMy42LDEuMTE2LDEuMTE2LDAsMCwwLC42ODUuMTEzLDMuMTQ3LDMuMTQ3LDAsMCwwLDEuMDI4LS4yMzUsMy40NSwzLjQ1LDAsMCwwLC44ODUtLjQ2NSwxLjk4LDEuOTgsMCwwLDAsLjg0OS0xLjc0NCwzLjUyMSwzLjUyMSwwLDAsMC0uMzIyLTEuMjMzYy4wNTEtLjA3Mi4xLS4xNDMuMTQ4LS4yMTVhMjMuNDI4LDIzLjQyOCwwLDAsMCwxLjUzNC0yLjY0OSw4Ljg4OCw4Ljg4OCwwLDAsMCwuMjcxLDEuMTMsNy41Nyw3LjU3LDAsMCwwLC41LDEuMTI1QTQuODYxLDQuODYxLDAsMCwwLDIwLjk2NSwyMC44Yy0uMzIyLjkzMS0uMDcyLDEuMzUuNCwxLjQ0N2ExLjQyNSwxLjQyNSwwLDAsMCwuNzQ3LS4xNTMsMy40LDMuNCwwLDAsMCwuOTQ2LS40ODYsMi4xMjYsMi4xMjYsMCwwLDAsMS4wNDMtMS43MjksMy4yNjgsMy4yNjgsMCwwLDAtLjIzNS0xLjAyMyw1LjM1Niw1LjM1NiwwLDAsMSwyLjcxNi0uMzEyYzIuNDM0LjI4NiwyLjkxNSwxLjgwNSwyLjgyMywyLjQ0NWExLjYxOCwxLjYxOCwwLDAsMS0uNzcyLDEuMDk0Yy0uMTY5LjEwNy0uMjI1LjE0My0uMjEuMjIuMDIuMTEzLjEuMTA3LjI0NS4wODdBMS45LDEuOSwwLDAsMCwzMCwyMC43Yy4wNzctMS41LTEuMzU1LTMuMTQ1LTMuODg3LTMuMTNaTTcuMzMsMjMuOWMtLjgwOC44OC0xLjkzMywxLjIxMi0yLjQxOS45MzEtLjUyMi0uMy0uMzE3LTEuNi42NzUtMi41MzJhMTIuODg0LDEyLjg4NCwwLDAsMSwxLjktMS40MTdjLjExOC0uMDcyLjI5Mi0uMTc0LjUtLjNsLjA1Ni0uMDMxaDBsLjEyMy0uMDc3QTMuNDkzLDMuNDkzLDAsMCwxLDcuMzMsMjMuOVptNS44ODEtNGMtLjI4MS42ODUtLjg2OSwyLjQ0LTEuMjI3LDIuMzQyLS4zMDctLjA4Mi0uNS0xLjQxMi0uMDYxLTIuNzI2YTYuMTkzLDYuMTkzLDAsMCwxLC45NTYtMS43NTRjLjQ0LS40OTEuOTI2LS42NTUsMS4wNDMtLjQ1NWE5LjA2Miw5LjA2MiwwLDAsMS0uNzExLDIuNTkzWm00Ljg1MywyLjMyMmMtLjExOC4wNjEtLjIzLjEtLjI4MS4wNzItLjAzNi0uMDIuMDUxLS4xLjA1MS0uMXMuNjA5LS42NTUuODQ5LS45NTFjLjEzOC0uMTc0LjMtLjM3OC40NzYtLjYwOVYyMC43YzAsLjc4Mi0uNzU3LDEuMzA5LTEuMDk0LDEuNTI0Wm0zLjc0NC0uODU0Yy0uMDg3LS4wNjEtLjA3Mi0uMjY2LjIyLS45MDVhMy40MDgsMy40MDgsMCwwLDEsLjgzNC0xLjA3NCwxLjQ0OCwxLjQ0OCwwLDAsMSwuMDgyLjQ3MSwxLjU0NywxLjU0NywwLDAsMS0xLjEzNSwxLjUwOVpcIiBzdHlsZT1cImZpbGw6I2NkNjc5OVwiLz5gLFxuXHRcIlNhc3MgKFNDU1MpXCI6IGA8cGF0aCBkPVwiTTE2LjE3MSwxOC43Yy0uNDgxLjIyMS0xLjAwOC41MDktMi4wNjMsMS4wODgtLjQuMjI1LS44MTguNDUtMS4yMDcuNjYyLS4wMjctLjAyNy0uMDU1LS4wNjEtLjA4Mi0uMDg5LTIuMDg3LTIuMjMtNS45NDctMy44MDUtNS43ODMtNi44LjA2MS0xLjA5MS40MzYtMy45NTUsNy40MTMtNy40MzMsNS43NDItMi44MywxMC4zMTEtMi4wNDYsMTEuMS0uMzA3QzI2LjY4Myw4LjMsMjMuMSwxMi45MTMsMTcuMTcsMTMuNTgyYTQuNDY5LDQuNDY5LDAsMCwxLTMuNzUxLS45NDhjLS4zMTQtLjM0MS0uMzYxLS4zNjEtLjQ3Ny0uMjkzLS4xOTEuMS0uMDY4LjQwOSwwLC41ODZhMy41LDMuNSwwLDAsMCwyLjE0MSwxLjY4NCwxMS40LDExLjQsMCwwLDAsNi45NTYtLjY4OWMzLjU5NC0xLjM5MSw2LjQtNS4yNTgsNS41NzgtOC41LS44MjUtMy4yODctNi4yODEtNC4zNzEtMTEuNDQzLTIuNTM3YTI2LDI2LDAsMCwwLTguNzksNS4wNDdjLTIuODQ0LDIuNjYtMy4yOTQsNC45NzItMy4xMSw1Ljk0LjY2MiwzLjQzNyw1LjQsNS42NzQsNy4zLDcuMzMxLS4xLjA1NS0uMTg0LjEtLjI1OS4xNDMtLjk0OC40NzEtNC41NjIsMi4zNi01LjQ2Myw0LjM1OC0xLjAyMywyLjI2NC4xNjQsMy44ODcuOTQ4LDQuMTA1YTUuODMyLDUuODMyLDAsMCwwLDYuMjgxLTIuNTQ0LDYuMyw2LjMsMCwwLDAsLjU1OS01LjgsNS4wMyw1LjAzLDAsMCwxLC43MTYtLjQ3N2MuNDg0LS4yODYuOTQ1LS41NjgsMS4zNTQtLjc4NmwwLDBhMTAuNDc1LDEwLjQ3NSwwLDAsMSw0LjQ3NS0uOTg5YzMuMjQ2LjM4MiwzLjg4NywyLjQwNywzLjc2NCwzLjI2YTIuMTU3LDIuMTU3LDAsMCwxLTEuMDMsMS40NTljLS4yMjUuMTQzLS4zLjE5MS0uMjguMjkzLjAyNy4xNS4xMzYuMTQzLjMyNy4xMTZhMi41MzUsMi41MzUsMCwwLDAsMS43NjYtMi4yNTdjLjEtMi0xLjgwNy00LjE5NC01LjE4My00LjE3NGE3Ljc1Myw3Ljc1MywwLDAsMC0yLjk0Ni41ODdxLS4yMjUuMDkzLS40MzcuMlptLTQuODI1LDcuODM5Yy0xLjA3OCwxLjE3My0yLjU3OCwxLjYxNi0zLjIyNiwxLjI0MS0uNy0uNC0uNDIzLTIuMTM1LjktMy4zNzZhMTcuMTgsMTcuMTgsMCwwLDEsMi41My0xLjg4OWMuMTU3LS4xLjM4OS0uMjMyLjY2OC0uNC4wNDgtLjAyNy4wNzUtLjA0MS4wNzUtLjA0MWwuMTY0LS4xQTQuNjU4LDQuNjU4LDAsMCwxLDExLjM0NiwyNi41MzlaXCIgc3R5bGU9XCJmaWxsOiNjZDY3OTlcIi8+YCxcblx0XCJTY2FsYVwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTEzNC45MDdcIiB5MT1cIjIwNC41NzJcIiB4Mj1cIi0xMzQuODk2XCIgeTI9XCIyMDQuNTcyXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMTUzOCwgMCwgMCwgLTk2MS4yNSwgMjA3NDk1LCAxOTY2NjEpXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZTYyZDJhXCIvPjxzdG9wIG9mZnNldD1cIjAuNlwiIHN0b3AtY29sb3I9XCIjZGYzZjNkXCIvPjxzdG9wIG9mZnNldD1cIjAuOFwiIHN0b3AtY29sb3I9XCIjZGYzZjNkXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2U2MmQyYVwiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImJcIiB4MT1cIi0xMzQuOTA3XCIgeTE9XCIyMDMuNzgxXCIgeDI9XCItMTM0Ljg5NlwiIHkyPVwiMjAzLjc4MVwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDE1MzgsIDAsIDAsIC05NjEuMjUsIDIwNzQ5NSwgMTk1ODkyKVwiIHhsaW5rOmhyZWY9XCIjYVwiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJjXCIgeDE9XCItMTM0LjkwN1wiIHkxPVwiMjA1LjM2M1wiIHgyPVwiLTEzNC44OTZcIiB5Mj1cIjIwNS4zNjNcIiBncmFkaWVudFRyYW5zZm9ybT1cIm1hdHJpeCgxNTM4LCAwLCAwLCAtOTYxLjI1LCAyMDc0OTUsIDE5NzQzMClcIiB4bGluazpocmVmPVwiI2FcIi8+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfc2NhbGE8L3RpdGxlPjxwYXRoIGQ9XCJNNy4zODQsMTkuMjMxdjIuMTU0YzAsLjM2Myw3LjgzMy45NzEsMTIuOTM3LDIuMTU0LDIuNDY1LS41NzEsNC4yOTUtMS4yNzcsNC4yOTUtMi4xNTRWMTkuMjMxYzAtLjg3Ny0xLjgzLTEuNTgyLTQuMjk1LTIuMTU0LTUuMSwxLjE4My0xMi45MzcsMS43OTEtMTIuOTM3LDIuMTU0XCIgc3R5bGU9XCJmaWxsOiM3ZjBjMWRcIi8+PHBhdGggZD1cIk03LjM4NCwxMC42MTV2Mi4xNTRjMCwuMzYzLDcuODMzLjk3MSwxMi45MzcsMi4xNTQsMi40NjUtLjU3MSw0LjI5NS0xLjI3Nyw0LjI5NS0yLjE1NFYxMC42MTVjMC0uODc3LTEuODMtMS41ODItNC4yOTUtMi4xNTQtNS4xLDEuMTgzLTEyLjkzNywxLjc5MS0xMi45MzcsMi4xNTRcIiBzdHlsZT1cImZpbGw6IzdmMGMxZFwiLz48cGF0aCBkPVwiTTcuMzg0LDE0LjkyM3Y2LjQ2MmMwLS41MzgsMTcuMjMyLTEuNjE1LDE3LjIzMi00LjMwOFYxMC42MTVjMCwyLjY5Mi0xNy4yMzIsMy43NjktMTcuMjMyLDQuMzA4XCIgc3R5bGU9XCJmaWxsOnVybCgjYSlcIi8+PHBhdGggZD1cIk03LjM4NCw2LjMwOFYxMi43N2MwLS41MzgsMTcuMjMyLTEuNjE1LDE3LjIzMi00LjMwOFYyYzAsMi42OTItMTcuMjMyLDMuNzY5LTE3LjIzMiw0LjMwOFwiIHN0eWxlPVwiZmlsbDp1cmwoI2IpXCIvPjxwYXRoIGQ9XCJNNy4zODQsMjMuNTM4VjMwYzAtLjUzOCwxNy4yMzItMS42MTUsMTcuMjMyLTQuMzA4VjE5LjIzMWMwLDIuNjkyLTE3LjIzMiwzLjc2OS0xNy4yMzIsNC4zMDhcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz5gLFxuXHRcIlNoZWxsIHNlc3Npb25cIjogYDxwYXRoIGQ9XCJNMjkuNCwyNy42SDIuNVY0LjVIMjkuNFptLTI1LjktMUgyOC40VjUuNUgzLjVaXCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi4wNzcgMTkuMzE2IDUuNTIyIDE4LjQ4NCAxMC4zNjYgMTUuMjU1IDUuNDc5IDExLjE4NCA2LjEyIDEwLjQxNiAxMi4wMzUgMTUuMzQ0IDYuMDc3IDE5LjMxNlwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxyZWN0IHg9XCIxMi43XCIgeT1cIjE4LjJcIiB3aWR0aD1cIjcuOFwiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cmVjdCB4PVwiMi41XCIgeT1cIjUuNVwiIHdpZHRoPVwiMjYuOVwiIGhlaWdodD1cIjEuOVwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPmAsXG5cdFwiU2hlbGxcIjogYDxwYXRoIGQ9XCJNMjkuNCwyNy42SDIuNVY0LjVIMjkuNFptLTI1LjktMUgyOC40VjUuNUgzLjVaXCIgc3R5bGU9XCJmaWxsOiNkOWI0MDBcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi4wNzcgMTkuMzE2IDUuNTIyIDE4LjQ4NCAxMC4zNjYgMTUuMjU1IDUuNDc5IDExLjE4NCA2LjEyIDEwLjQxNiAxMi4wMzUgMTUuMzQ0IDYuMDc3IDE5LjMxNlwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPjxyZWN0IHg9XCIxMi43XCIgeT1cIjE4LjJcIiB3aWR0aD1cIjcuOFwiIGhlaWdodD1cIjFcIiBzdHlsZT1cImZpbGw6I2Q5YjQwMFwiLz48cmVjdCB4PVwiMi41XCIgeT1cIjUuNVwiIHdpZHRoPVwiMjYuOVwiIGhlaWdodD1cIjEuOVwiIHN0eWxlPVwiZmlsbDojZDliNDAwXCIvPmAsXG5cdFwiU21hcnR5XCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxMy44NTlcIiB5MT1cIjI5LjIxOVwiIHgyPVwiMTguMTA2XCIgeTI9XCIyOS4yMTlcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAzNFwiIHN0b3AtY29sb3I9XCIjNjM2MzYxXCIvPjxzdG9wIG9mZnNldD1cIjAuMTc4XCIgc3RvcC1jb2xvcj1cIiM2YzZkNzBcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMTlcIiBzdG9wLWNvbG9yPVwiIzZmNzE3NVwiLz48c3RvcCBvZmZzZXQ9XCIwLjMwOVwiIHN0b3AtY29sb3I9XCIjNjE2MzY2XCIvPjxzdG9wIG9mZnNldD1cIjAuNDgxXCIgc3RvcC1jb2xvcj1cIiMzYzNkM2ZcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MTZcIiBzdG9wLWNvbG9yPVwiIzAxMDEwMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjcxOVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM2MzZhNmVcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJiXCIgeDE9XCIxNS4xNzhcIiB5MT1cIjI5LjczNFwiIHgyPVwiMTYuNzg3XCIgeTI9XCIyOS43MzRcIiB4bGluazpocmVmPVwiI2FcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiY1wiIHgxPVwiMTUuMjc3XCIgeTE9XCIyOS44ODFcIiB4Mj1cIjE2LjY4OFwiIHkyPVwiMjkuODgxXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wMzRcIiBzdG9wLWNvbG9yPVwiIzliOWI5OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjEzMVwiIHN0b3AtY29sb3I9XCIjYTRhNWE3XCIvPjxzdG9wIG9mZnNldD1cIjAuMjE5XCIgc3RvcC1jb2xvcj1cIiNhZWIxYjhcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zNTJcIiBzdG9wLWNvbG9yPVwiIzlmYTRhYlwiLz48c3RvcCBvZmZzZXQ9XCIwLjYwNVwiIHN0b3AtY29sb3I9XCIjNzg4MTg4XCIvPjxzdG9wIG9mZnNldD1cIjAuNzE5XCIgc3RvcC1jb2xvcj1cIiM2NTcwNzZcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjOGI5NDlhXCIvPjwvbGluZWFyR3JhZGllbnQ+PHJhZGlhbEdyYWRpZW50IGlkPVwiZFwiIGN4PVwiLTguNDU2XCIgY3k9XCItMTYuNjE2XCIgcj1cIjE5LjM4M1wiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDM0LjA0MiAzNy4wNjMpIHNjYWxlKDEuMDU0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjAuMDM0XCIgc3RvcC1jb2xvcj1cIiM3MDcwNmVcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xMTJcIiBzdG9wLWNvbG9yPVwiIzYxNjI2MVwiLz48c3RvcCBvZmZzZXQ9XCIwLjIxOVwiIHN0b3AtY29sb3I9XCIjNDY0NzRhXCIvPjxzdG9wIG9mZnNldD1cIjAuNDA4XCIgc3RvcC1jb2xvcj1cIiM0ODQ5NGNcIi8+PHN0b3Agb2Zmc2V0PVwiMC40ODdcIiBzdG9wLWNvbG9yPVwiIzRlNTA1M1wiLz48c3RvcCBvZmZzZXQ9XCIwLjU0NFwiIHN0b3AtY29sb3I9XCIjNWE1YzVmXCIvPjxzdG9wIG9mZnNldD1cIjAuNTkyXCIgc3RvcC1jb2xvcj1cIiM2YTZlNzFcIi8+PHN0b3Agb2Zmc2V0PVwiMC42MzNcIiBzdG9wLWNvbG9yPVwiIzdmODU4OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjY2N1wiIHN0b3AtY29sb3I9XCIjOTc5ZWExXCIvPjxzdG9wIG9mZnNldD1cIjAuNzE5XCIgc3RvcC1jb2xvcj1cIiMzZDQ0NDdcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjNjU2YzcwXCIvPjwvcmFkaWFsR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPVwiZVwiIHgxPVwiMTYuMTI2XCIgeTE9XCIyOC4xMDhcIiB4Mj1cIjE2LjA1XCIgeTI9XCIyNi44OTNcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwLjAzNFwiIHN0b3AtY29sb3I9XCIjOWI5Yjk4XCIvPjxzdG9wIG9mZnNldD1cIjAuMTA5XCIgc3RvcC1jb2xvcj1cIiNhNWE2YTdcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMTlcIiBzdG9wLWNvbG9yPVwiI2JhYmNjNFwiLz48c3RvcCBvZmZzZXQ9XCIwLjMxMVwiIHN0b3AtY29sb3I9XCIjYWJhZWI1XCIvPjxzdG9wIG9mZnNldD1cIjAuNDg3XCIgc3RvcC1jb2xvcj1cIiM4NDg5OGZcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MTlcIiBzdG9wLWNvbG9yPVwiIzQ4NTA1NFwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM4Yjk0OWFcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJmXCIgeDE9XCIxNi4wMTNcIiB5MT1cIjI2LjU0MlwiIHgyPVwiMTUuODk1XCIgeTI9XCIyNC42MzVcIiB4bGluazpocmVmPVwiI2VcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiZ1wiIHgxPVwiMTYuMDIzXCIgeTE9XCIyNS41NDZcIiB4Mj1cIjE1Ljg4N1wiIHkyPVwiMjMuMzU1XCIgeGxpbms6aHJlZj1cIiNlXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImhcIiB4MT1cIjE2LjAxM1wiIHkxPVwiMjcuNjI3XCIgeDI9XCIxNS44OTVcIiB5Mj1cIjI1LjcyXCIgeGxpbms6aHJlZj1cIiNlXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cImpcIiB4MT1cIjEzLjY4XCIgeTE9XCIyOC44MDVcIiB4Mj1cIjE4LjI4NFwiIHkyPVwiMjguODA1XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMC4wMzRcIiBzdG9wLWNvbG9yPVwiIzU0NTQ1M1wiLz48c3RvcCBvZmZzZXQ9XCIwLjA3MVwiIHN0b3AtY29sb3I9XCIjNjE2MjYyXCIvPjxzdG9wIG9mZnNldD1cIjAuMTQzXCIgc3RvcC1jb2xvcj1cIiM4NDg1ODlcIi8+PHN0b3Agb2Zmc2V0PVwiMC4yMTlcIiBzdG9wLWNvbG9yPVwiI2FlYjFiOFwiLz48c3RvcCBvZmZzZXQ9XCIwLjM1MlwiIHN0b3AtY29sb3I9XCIjOWZhNGFiXCIvPjxzdG9wIG9mZnNldD1cIjAuNjA1XCIgc3RvcC1jb2xvcj1cIiM3ODgxODhcIi8+PHN0b3Agb2Zmc2V0PVwiMC43MTlcIiBzdG9wLWNvbG9yPVwiIzY1NzA3NlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM1MDU2NTlcIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9XCJrXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjI1LjgxM1wiIHgyPVwiMTkuNDc1XCIgeTI9XCIyNS44MTNcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNlNWUxZGZcIi8+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZGRkYWQ2XCIvPjxzdG9wIG9mZnNldD1cIjAuMDM4XCIgc3RvcC1jb2xvcj1cIiNjZWNjYzlcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xMTJcIiBzdG9wLWNvbG9yPVwiI2E3YTlhOFwiLz48c3RvcCBvZmZzZXQ9XCIwLjIxMlwiIHN0b3AtY29sb3I9XCIjNjk3MDcyXCIvPjxzdG9wIG9mZnNldD1cIjAuMjY0XCIgc3RvcC1jb2xvcj1cIiM0NjUwNTRcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMDNcIiBzdG9wLWNvbG9yPVwiIzYzNmM2ZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjM5OFwiIHN0b3AtY29sb3I9XCIjYTVhYWFjXCIvPjxzdG9wIG9mZnNldD1cIjAuNDc4XCIgc3RvcC1jb2xvcj1cIiNkNWQ3ZDlcIi8+PHN0b3Agb2Zmc2V0PVwiMC41MzlcIiBzdG9wLWNvbG9yPVwiI2YzZjRmNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU3M1wiIHN0b3AtY29sb3I9XCIjZmVmZWZmXCIvPjxzdG9wIG9mZnNldD1cIjAuNjJcIiBzdG9wLWNvbG9yPVwiI2Y0ZjVmNlwiLz48c3RvcCBvZmZzZXQ9XCIwLjY5OVwiIHN0b3AtY29sb3I9XCIjZGFkY2RmXCIvPjxzdG9wIG9mZnNldD1cIjAuOFwiIHN0b3AtY29sb3I9XCIjYjBiNGI5XCIvPjxzdG9wIG9mZnNldD1cIjAuODc2XCIgc3RvcC1jb2xvcj1cIiM4YjkyOThcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZDFkM2Q0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E3YTlhY1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cImxcIiB4MT1cIjEyLjE1OVwiIHkxPVwiMjQuNzI4XCIgeDI9XCIxOS40NzVcIiB5Mj1cIjI0LjcyOFwiIHhsaW5rOmhyZWY9XCIja1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJtXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjIzLjU0OFwiIHgyPVwiMTkuNDc1XCIgeTI9XCIyMy41NDhcIiB4bGluazpocmVmPVwiI2tcIi8+PGxpbmVhckdyYWRpZW50IGlkPVwiblwiIHgxPVwiMTIuMTU5XCIgeTE9XCIyNi44OThcIiB4Mj1cIjE5LjQ3NVwiIHkyPVwiMjYuODk4XCIgeGxpbms6aHJlZj1cIiNrXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cIm9cIiB4MT1cIjEyLjE1OVwiIHkxPVwiMjUuOTY3XCIgeDI9XCIxOS40NzVcIiB5Mj1cIjI1Ljk2N1wiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2U1ZTFkZlwiLz48c3RvcCBvZmZzZXQ9XCIwXCIgc3RvcC1jb2xvcj1cIiNkZGU4ZDBcIi8+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjZDJmM2JhXCIvPjxzdG9wIG9mZnNldD1cIjAuMDM2XCIgc3RvcC1jb2xvcj1cIiNjNWU0YjFcIi8+PHN0b3Agb2Zmc2V0PVwiMC4xMDVcIiBzdG9wLWNvbG9yPVwiI2E0YmQ5OFwiLz48c3RvcCBvZmZzZXQ9XCIwLjE5OVwiIHN0b3AtY29sb3I9XCIjNmU3ZjcxXCIvPjxzdG9wIG9mZnNldD1cIjAuMjY0XCIgc3RvcC1jb2xvcj1cIiM0NjUwNTRcIi8+PHN0b3Agb2Zmc2V0PVwiMC4zMDNcIiBzdG9wLWNvbG9yPVwiIzYzNmM2ZlwiLz48c3RvcCBvZmZzZXQ9XCIwLjM5OFwiIHN0b3AtY29sb3I9XCIjYTVhYWFjXCIvPjxzdG9wIG9mZnNldD1cIjAuNDc4XCIgc3RvcC1jb2xvcj1cIiNkNWQ3ZDlcIi8+PHN0b3Agb2Zmc2V0PVwiMC41MzlcIiBzdG9wLWNvbG9yPVwiI2YzZjRmNVwiLz48c3RvcCBvZmZzZXQ9XCIwLjU3M1wiIHN0b3AtY29sb3I9XCIjZmVmZWZmXCIvPjxzdG9wIG9mZnNldD1cIjAuNjJcIiBzdG9wLWNvbG9yPVwiI2Y0ZjVmNlwiLz48c3RvcCBvZmZzZXQ9XCIwLjY5OVwiIHN0b3AtY29sb3I9XCIjZGFkY2RmXCIvPjxzdG9wIG9mZnNldD1cIjAuOFwiIHN0b3AtY29sb3I9XCIjYjBiNGI5XCIvPjxzdG9wIG9mZnNldD1cIjAuODc2XCIgc3RvcC1jb2xvcj1cIiM4YjkyOThcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZDFkM2Q0XCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiI2E3YTlhY1wiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD1cInBcIiB4MT1cIjEyLjE1OVwiIHkxPVwiMjQuODgzXCIgeDI9XCIxOS40NzVcIiB5Mj1cIjI0Ljg4M1wiIHhsaW5rOmhyZWY9XCIjb1wiLz48bGluZWFyR3JhZGllbnQgaWQ9XCJxXCIgeDE9XCIxMi4xNTlcIiB5MT1cIjI3LjA1XCIgeDI9XCIxOS40NzVcIiB5Mj1cIjI3LjA1XCIgeGxpbms6aHJlZj1cIiNvXCIvPjxsaW5lYXJHcmFkaWVudCBpZD1cInJcIiB4MT1cIjExLjkwMlwiIHkxPVwiMjMuMjAxXCIgeDI9XCIxOS44ODRcIiB5Mj1cIjIzLjIwMVwiIHhsaW5rOmhyZWY9XCIjZVwiLz48cmFkaWFsR3JhZGllbnQgaWQ9XCJzXCIgY3g9XCItMTYuOTgzXCIgY3k9XCItMjIuOTQ4XCIgcj1cIjEwLjcxOFwiIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDM0LjA0MiAzNy4wNjMpIHNjYWxlKDEuMDU0KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZmZkMVwiLz48c3RvcCBvZmZzZXQ9XCIwLjUwNVwiIHN0b3AtY29sb3I9XCIjZmYwXCIvPjxzdG9wIG9mZnNldD1cIjAuNTY4XCIgc3RvcC1jb2xvcj1cIiNmZGY3MDBcIi8+PHN0b3Agb2Zmc2V0PVwiMC42NjRcIiBzdG9wLWNvbG9yPVwiI2Y2ZTIwMFwiLz48c3RvcCBvZmZzZXQ9XCIwLjc4MlwiIHN0b3AtY29sb3I9XCIjZWJiZjAwXCIvPjxzdG9wIG9mZnNldD1cIjAuOTA2XCIgc3RvcC1jb2xvcj1cIiNkZTkyMDBcIi8+PHN0b3Agb2Zmc2V0PVwiMVwiIHN0b3AtY29sb3I9XCIjZGE5ODE5XCIvPjwvcmFkaWFsR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfc21hcnR5PC90aXRsZT48cGF0aCBkPVwiTTEzLjg1OSwyOC43NzZhLjI0Mi4yNDIsMCwwLDAsLjEyOC4xOTEsMTIsMTIsMCwwLDAsMS4zOTIuNjIyLDQuMyw0LjMsMCwwLDAsLjU3OC4wNzJoLjA1MmE0LjMsNC4zLDAsMCwwLC41NzgtLjA3MiwxMi4wMTQsMTIuMDE0LDAsMCwwLDEuMzkyLS42MjIuMjQzLjI0MywwLDAsMCwuMTI4LS4xOTFsLTIuMTM3LjE5MlpcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cGF0aCBkPVwiTTE2LjAxNCwzMGExLjEyMywxLjEyMywwLDAsMCwuNjg4LS4yNDcuMTc1LjE3NSwwLDAsMCwuMDg1LS4xMjZ2LS4xMDVhMy4yMzUsMy4yMzUsMCwwLDAtLjc3My0uMDUzaC0uMDYzYTMuMjM3LDMuMjM3LDAsMCwwLS43NzMuMDUzdi4xMDVhLjE3NS4xNzUsMCwwLDAsLjA4NS4xMjYsMS4xMjIsMS4xMjIsMCwwLDAsLjY4OC4yNDdaXCIgc3R5bGU9XCJmaWxsOnVybCgjYilcIi8+PHBhdGggZD1cIk0xNS45NTEsMjkuODA3YTQuNzMyLDQuNzMyLDAsMCwxLS42NzQtLjA0NCwxLjEwNSwxLjEwNSwwLDAsMCwuNjc0LjIzN2guMDYzYTEuMTA2LDEuMTA2LDAsMCwwLC42NzUtLjIzNyw0LjczMyw0LjczMywwLDAsMS0uNjc1LjA0NFpcIiBzdHlsZT1cImZpbGw6dXJsKCNjKVwiLz48cGF0aCBkPVwiTTE5LjgwOSwyNi44MzhhMSwxLDAsMCwwLS4yMzQuMzg5Yy0uMDM2LjE4MS0uMS41ODUtMS4zMjYsMS40MDZsLS4wMjUuMDE3YS40MzUuNDM1LDAsMCwxLS4wODYuMDM3LDkuOTY4LDkuOTY4LDAsMCwxLTIuMTU1LjIwOSw5Ljk2OCw5Ljk2OCwwLDAsMS0yLjE1Ni0uMjA5LjQzNi40MzYsMCwwLDEtLjA4NS0uMDM2bC0uMDI1LS4wMTdhNC41NzksNC41NzksMCwwLDEtMS4xMi0uOTU3Yy0uMTY0LS4yMTktLjM3My0uMjU3LS4zOS0uMzQ1YTIxLjA1NSwyMS4wNTUsMCwwLDAsMy44NTUuMDU3LDEzLjA0OSwxMy4wNDksMCwwLDAsMy43NjEtLjY1NEEuNjkyLjY5MiwwLDAsMSwxOS44MDksMjYuODM4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2QpXCIvPjxwYXRoIGQ9XCJNMTkuNzcyLDI2Ljg4YS45ODUuOTg1LDAsMCwxLS4yNDYuMTI5Yy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNSwyNS4xNSwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOGExLjA2MiwxLjA2MiwwLDAsMS0uMTQtLjAyOCwxLjAxNiwxLjAxNiwwLDAsMSwuMTQuMTA3Yy4xNi4wMTMuMzE5LjAxOS4zMTkuMDE5YTI2Ljg2NCwyNi44NjQsMCwwLDAsNi43NDMtLjMyM2wuMDA5LS4wNDJBLjg4NS44ODUsMCwwLDEsMTkuNzcyLDI2Ljg4WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2UpXCIvPjxwYXRoIGQ9XCJNMTkuNDM5LDI1LjM4MnMuMjQ1LS4wNy4yNDUtLjE2MmEuMTE0LjExNCwwLDAsMC0uMDEzLS4wNjUuMjE0LjIxNCwwLDAsMS0uMDYxLS4xNDQuNDM3LjQzNywwLDAsMSwuMTE5LS4yNywxLjA2OSwxLjA2OSwwLDAsMS0uMi4xYy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNTEsMjUuMTUxLDAsMCwxLTYuNDU4LjQzNmMtLjEzNi0uMDA5LS4zMi0uMDI4LS4zMi0uMDI4YTEuMDU1LDEuMDU1LDAsMCwxLS4xODEtLjA0MS4zNzcuMzc3LDAsMCwxLC4wNzguMjE3LjcxNi43MTYsMCwwLDEtLjI1NC40MzIuNjczLjY3MywwLDAsMSwuMzY4LS4wNzlBMjYuMiwyNi4yLDAsMCwwLDE5LjQzOSwyNS4zODJaXCIgc3R5bGU9XCJmaWxsOnVybCgjZilcIi8+PHBhdGggZD1cIk0xOS40MzksMjQuMjI5cy4yNDUtLjA3OC4yNDUtLjE4MmEuMTQzLjE0MywwLDAsMC0uMDEzLS4wNzMuMjU0LjI1NCwwLDAsMS0uMDYxLS4xNjIuNTE0LjUxNCwwLDAsMSwuMTE5LS4zLDEuMDI2LDEuMDI2LDAsMCwxLS4yLjExMWMtLjA3Ni4wMzItLjI0NS4wODgtLjI0NS4wODhhMjIuNTA3LDIyLjUwNywwLDAsMS02LjQ1OC40ODljLS4xMzYtLjAxLS4zMi0uMDMyLS4zMi0uMDMyYS45NTMuOTUzLDAsMCwxLS4xODEtLjA0Ni40NTUuNDU1LDAsMCwxLC4wNzguMjQzLjgyNS44MjUsMCwwLDEtLjI1NC40ODQuNjE0LjYxNCwwLDAsMSwuMzY4LS4wODlDMTMuMDE0LDI0Ljc1OCwxNi45MzUsMjUuMDQxLDE5LjQzOSwyNC4yMjlaXCIgc3R5bGU9XCJmaWxsOnVybCgjZylcIi8+PHBhdGggZD1cIk0xOS40MzksMjYuNDY3cy4yNDUtLjA3LjI0NS0uMTYzYS4xMTUuMTE1LDAsMCwwLS4wMTMtLjA2NS4yMTQuMjE0LDAsMCwxLS4wNjEtLjE0NC40MzUuNDM1LDAsMCwxLC4xMTktLjI3LDEuMDcsMS4wNywwLDAsMS0uMi4xYy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNjIsMjUuMTYyLDAsMCwxLTYuNDU4LjQzNmMtLjEzNi0uMDA5LS4zMi0uMDI4LS4zMi0uMDI4YTEuMDQyLDEuMDQyLDAsMCwxLS4xODEtLjA0MS4zNzcuMzc3LDAsMCwxLC4wNzguMjE3LjcxNy43MTcsMCwwLDEtLjI1NC40MzIuNjcuNjcsMCwwLDEsLjM2OC0uMDc5QTI2LjIwNywyNi4yMDcsMCwwLDAsMTkuNDM5LDI2LjQ2N1pcIiBzdHlsZT1cImZpbGw6dXJsKCNoKVwiLz48cGF0aCBkPVwiTTE5LjQzOSwyNi40NjdzLjI0NS0uMDcuMjQ1LS4xNjNhLjExNS4xMTUsMCwwLDAtLjAxMy0uMDY1LjIxNC4yMTQsMCwwLDEtLjA2MS0uMTQ0LjQzNS40MzUsMCwwLDEsLjExOS0uMjcsMS4wNywxLjA3LDAsMCwxLS4yLjFjLS4wNzYuMDI4LS4yNDUuMDc4LS4yNDUuMDc4YTI1LjE2OCwyNS4xNjgsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjhhMS4wNDIsMS4wNDIsMCwwLDEtLjE4MS0uMDQxLjM3Ni4zNzYsMCwwLDEsLjA3OC4yMTcuNzE3LjcxNywwLDAsMS0uMjU0LjQzMi42Ny42NywwLDAsMSwuMzY4LS4wNzlBMjYuMjA3LDI2LjIwNywwLDAsMCwxOS40MzksMjYuNDY3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2gpXCIvPjxwYXRoIGQ9XCJNMTguMjI0LDI4LjY1YS40MzUuNDM1LDAsMCwxLS4wODYuMDM3LDkuOTY4LDkuOTY4LDAsMCwxLTIuMTU1LjIwOSw5Ljk2OCw5Ljk2OCwwLDAsMS0yLjE1Ni0uMjA5LjQzNi40MzYsMCwwLDEtLjA4NS0uMDM2bC0uMDI1LS4wMTctLjAyOS0uMDE5YS4xMTIuMTEyLDAsMCwwLDAsLjA3M2MuMDI0LjA3My4xNDcuMS4xNDcuMWE5Ljk0Myw5Ljk0MywwLDAsMCwyLjE1LjIwOSw5Ljk0Miw5Ljk0MiwwLDAsMCwyLjE1LS4yMDlzLjEyNi0uMDI5LjE0Ny0uMWEuMTE4LjExOCwwLDAsMCwwLS4wNzNsLS4wMjkuMDE5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2opXCIvPjxwYXRoIGQ9XCJNMTkuOTQ0LDI1LjVzLjA0MS4yNTItLjQxOC40MjNjLS4wNzYuMDI4LS4yNDUuMDc4LS4yNDUuMDc4YTI1LjE2MiwyNS4xNjIsMCwwLDEtNi40NTguNDM2Yy0uMTM2LS4wMDktLjMyLS4wMjgtLjMyLS4wMjgtLjI3Ni0uMDM4LS40NjctLjE2LS40NTUtLjMwOCwwLDAtLjAzMy0uMjQ5LjQ2Ni0uMjQ5YTI2LjIsMjYuMiwwLDAsMCw2LjkyNS0uNDcycy4yNDUtLjA3LjI0NS0uMTYyYS4xMTEuMTExLDAsMCwwLS4wMTMtLjA2NlMxOS45NDQsMjUuMzEyLDE5Ljk0NCwyNS41WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2spXCIvPjxwYXRoIGQ9XCJNMTkuOTQ0LDI0LjQxNnMuMDQxLjI1Mi0uNDE4LjQyM2MtLjA3Ni4wMjgtLjI0NS4wNzgtLjI0NS4wNzhhMjUuMTUxLDI1LjE1MSwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOC0uMjc2LS4wMzgtLjQ2Ny0uMTYtLjQ1NS0uMzA4LDAsMC0uMDMzLS4yNDguNDY2LS4yNDhhMjYuMTkzLDI2LjE5MywwLDAsMCw2LjkyNS0uNDcycy4yNDUtLjA3LjI0NS0uMTYyYS4xMS4xMSwwLDAsMC0uMDEzLS4wNjVTMTkuOTQ0LDI0LjIyNywxOS45NDQsMjQuNDE2WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2wpXCIvPjxwYXRoIGQ9XCJNMTkuODkzLDI0LjQwNnYtLjAyMWMtLjAxMi4wNzYtLjA3OC4yMzYtLjQxNy4zNTUtLjA3Ni4wMjYtLjI0NS4wNzMtLjI0NS4wNzNhMjIuMzcyLDIyLjM3MiwwLDAsMS01LjEuNWgwYTIyLjE1NSwyMi4xNTUsMCwwLDAsNS4xLS40NDFzLjE2OS0uMDQ3LjI0NS0uMDczQzE5LjkzMywyNC42NDMsMTkuODkzLDI0LjQwNiwxOS44OTMsMjQuNDA2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTkuODkzLDI1LjQ5MVYyNS40N2MtLjAxMi4wNzYtLjA3OC4yMzYtLjQxNy4zNTUtLjA3Ni4wMjctLjI0NS4wNzMtLjI0NS4wNzNhMjIuMzgsMjIuMzgsMCwwLDEtNS4xLjVoMGEyMi4xNzEsMjIuMTcxLDAsMCwwLDUuMS0uNDQxcy4xNjktLjA0Ny4yNDUtLjA3M0MxOS45MzMsMjUuNzI4LDE5Ljg5MywyNS40OTEsMTkuODkzLDI1LjQ5MVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE5Ljk0NCwyMy4wMzRzLjA0MS4zMjktLjQxOC41NTJjLS4wNzYuMDM3LS4yNDUuMS0uMjQ1LjFhMTkuNDA5LDE5LjQwOSwwLDAsMS02LjQ1OC41NjljLS4xMzYtLjAxMi0uMzItLjAzNy0uMzItLjAzNy0uMjc2LS4wNS0uNDY3LS4yMDktLjQ1NS0uNCwwLDAtLjAzMy0uMzI0LjQ2Ni0uMzI0YTE4LjI4MywxOC4yODMsMCwwLDAsNi45MjUtLjQ2MSwxLjAxNCwxLjAxNCwwLDAsMCwuNDQ0LS4yMzhBLjUzLjUzLDAsMCwxLDE5Ljk0NCwyMy4wMzRaXCIgc3R5bGU9XCJmaWxsOnVybCgjbSlcIi8+PHBhdGggZD1cIk0xOS45NDQsMjYuNTg2cy4wNDEuMjUyLS40MTguNDIzYy0uMDc2LjAyOC0uMjQ1LjA3OC0uMjQ1LjA3OGEyNS4xNSwyNS4xNSwwLDAsMS02LjQ1OC40MzZjLS4xMzYtLjAwOS0uMzItLjAyOC0uMzItLjAyOC0uMjc2LS4wMzgtLjQ2Ny0uMTYtLjQ1NS0uMzA4LDAsMC0uMDMzLS4yNDguNDY2LS4yNDhhMjYuMjA3LDI2LjIwNywwLDAsMCw2LjkyNS0uNDcycy4yNDUtLjA3LjI0NS0uMTYzYS4xMTEuMTExLDAsMCwwLS4wMTMtLjA2NVMxOS45NDQsMjYuNCwxOS45NDQsMjYuNTg2WlwiIHN0eWxlPVwiZmlsbDp1cmwoI24pXCIvPjxwYXRoIGQ9XCJNMTkuODkzLDI2LjU3NnYtLjAyMWMtLjAxMi4wNzYtLjA3OC4yMzYtLjQxNy4zNTUtLjA3Ni4wMjYtLjI0NS4wNzMtLjI0NS4wNzNhMjIuMzcyLDIyLjM3MiwwLDAsMS01LjEuNWgwYTIyLjE2MywyMi4xNjMsMCwwLDAsNS4xLS40NDFzLjE2OS0uMDQ3LjI0NS0uMDczQzE5LjkzMywyNi44MTMsMTkuODkzLDI2LjU3NiwxOS44OTMsMjYuNTc2WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxwYXRoIGQ9XCJNMTkuODkzLDIzLjMyMVYyMy4zYy0uMDEyLjA3Ni0uMDc4LjIzNi0uNDE3LjM1NS0uMDc2LjAyNy0uMjQ1LjA3My0uMjQ1LjA3M2EyMi4zNzIsMjIuMzcyLDAsMCwxLTUuMS41aDBhMjIuMTU2LDIyLjE1NiwwLDAsMCw1LjEtLjQ0MXMuMTY5LS4wNDcuMjQ1LS4wNzNDMTkuOTMzLDIzLjU1OCwxOS44OTMsMjMuMzIxLDE5Ljg5MywyMy4zMjFaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0xMi40MTcsMjUuODgxcy0uMjM2LDAtLjI0MS4wOC4yNDYuMDg1LjI0Ni4wODUuMTc1LDAsLjMuMDA1Yy42MTktLjAxMywxLjk5My0uMDM4LDMuNDM3LS4xNjZDMTQuMzg0LDI1Ljk1OCwxMi43MjMsMjUuODgzLDEyLjQxNywyNS44ODFaXCIgc3R5bGU9XCJmaWxsOnVybCgjbylcIi8+PHBhdGggZD1cIk0xMi40MTcsMjQuOHMtLjIzNiwwLS4yNDEuMDguMjQ2LjA4NS4yNDYuMDg1LjE3NSwwLC4zLjAwNWMuNjE5LS4wMTIsMS45OTMtLjAzOCwzLjQzNy0uMTY2QzE0LjM4NCwyNC44NzQsMTIuNzIzLDI0LjgsMTIuNDE3LDI0LjhaXCIgc3R5bGU9XCJmaWxsOnVybCgjcClcIi8+PHBhdGggZD1cIk0xMi40MTcsMjYuOTY1cy0uMjM2LDAtLjI0MS4wOC4yNDYuMDg1LjI0Ni4wODUuMTc1LDAsLjMuMDA1Yy42MTktLjAxMiwxLjk5My0uMDM4LDMuNDM3LS4xNjZDMTQuMzg0LDI3LjA0MiwxMi43MjMsMjYuOTY2LDEyLjQxNywyNi45NjVaXCIgc3R5bGU9XCJmaWxsOnVybCgjcSlcIi8+PHBhdGggZD1cIk0xMS45NjUsMjIuNzc5cy0uMjc0LjMxNS4zMTkuNzExYzAsMCw1Ljc3NS41ODcsNy42LS42OTVDMTkuODg0LDIyLjc5NSwxMy42MjMsMjMuMzIsMTEuOTY1LDIyLjc3OVpcIiBzdHlsZT1cImZpbGw6dXJsKCNyKVwiLz48cGF0aCBkPVwiTTIwLjAzNSwyMi43NzlhNC40NDksNC40NDksMCwwLDAsLjgxLTEuMTU1LDMuMzg2LDMuMzg2LDAsMCwwLC4yLTEuMTE1LDYuNzMzLDYuNzMzLDAsMCwxLC42MzItMi45MWMuNTM0LTEuMDE0LDIuODEtNC40NDcsMi44MS03LjQ2MkE4LjAxMiw4LjAxMiwwLDAsMCwxNiwyYTguMDEyLDguMDEyLDAsMCwwLTguNDgzLDguMTM2YzAsMy4wMTUsMi4yNzYsNi40NDgsMi44MSw3LjQ2MmE2LjczMSw2LjczMSwwLDAsMSwuNjMyLDIuOTEsMy4zODQsMy4zODQsMCwwLDAsLjIsMS4xMTUsNC40NTMsNC40NTMsMCwwLDAsLjgxLDEuMTU1LDEzLjg2NiwxMy44NjYsMCwwLDAsMy45ODcuMzdBMTUuMTUxLDE1LjE1MSwwLDAsMCwyMC4wMzUsMjIuNzc5WlwiIHN0eWxlPVwiZmlsbDp1cmwoI3MpXCIvPmAsXG5cdFwiU29saWRpdHkgKEV0aGVyZXVtKVwiOiBgPHBhdGggZD1cIk0yMC40NzcsMmwtNC41LDhoLTlsNC41LThoOVwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC40NTtpc29sYXRpb246aXNvbGF0ZVwiLz48cGF0aCBkPVwiTTExLjUyLDMwbDQuNS04aDlsLTQuNSw4aC05XCIgc3R5bGU9XCJmaWxsOiNjMWMxYzE7b3BhY2l0eTowLjQ1O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTUuOTc1LDEwaDlsLTQuNS04aC05WlwiIHN0eWxlPVwiZmlsbDojYzFjMWMxO29wYWNpdHk6MC42O2lzb2xhdGlvbjppc29sYXRlXCIvPjxwYXRoIGQ9XCJNMTYuMDIyLDIyaC05bDQuNSw4aDlaXCIgc3R5bGU9XCJmaWxsOiNjMWMxYzE7b3BhY2l0eTowLjY7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0xMS40NzcsMThsNC41LTgtNC41LTgtNC41LDhaXCIgc3R5bGU9XCJmaWxsOiNjMWMxYzE7b3BhY2l0eTowLjg7aXNvbGF0aW9uOmlzb2xhdGVcIi8+PHBhdGggZD1cIk0yMC41MiwxNGwtNC41LDgsNC41LDgsNC41LThaXCIgc3R5bGU9XCJmaWxsOiNjMWMxYzE7b3BhY2l0eTowLjg7aXNvbGF0aW9uOmlzb2xhdGVcIi8+YCxcblx0XCJTb2x1dGlvbiBmaWxlXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxNlwiIHkxPVwiLTE4Mi4wNzJcIiB4Mj1cIjE2XCIgeTI9XCItMjA5LjkyOFwiIGdyYWRpZW50VHJhbnNmb3JtPVwibWF0cml4KDEsIDAsIDAsIC0xLCAwLCAtMTgwKVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2ZmZlwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZmZcIiBzdG9wLW9wYWNpdHk9XCIwXCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5maWxlX3R5cGVfc2xuPC90aXRsZT48cGF0aCBkPVwiTTYuMDQ1LDIzLjk5MWExLjE2NiwxLjE2NiwwLDAsMS0xLjIwOC4xOTFMMi43MTgsMjMuM0ExLjE2OCwxLjE2OCwwLDAsMSwyLDIyLjIyMlY5Ljc3OEExLjE2NSwxLjE2NSwwLDAsMSwyLjcxOCw4LjdsMi4xMTktLjg4M2ExLjE2OSwxLjE2OSwwLDAsMSwxLjIwOC4xOTFsLjQ3Ni40MDhBLjY0Ni42NDYsMCwwLDAsNS41LDguOTQyVjIzLjA1OGEuNjQ2LjY0NiwwLDAsMCwxLjAyMS41MjVaXCIgc3R5bGU9XCJmaWxsOiM1MjIxOGFcIi8+PHBhdGggZD1cIk0yLjcxOCwyMy4zQTEuMTY5LDEuMTY5LDAsMCwxLDIsMjIuMjIydi0uMWEuNjc0LjY3NCwwLDAsMCwxLjE3NC40NTJMMjEuMjUsMi41ODNhMS43NDMsMS43NDMsMCwwLDEsMS45OS0uMzM4bDUuNzY5LDIuNzc4QTEuNzQ5LDEuNzQ5LDAsMCwxLDMwLDYuNnYuMDY3YTEuMSwxLjEsMCwwLDAtMS44LS44NTRMNi41MjEsMjMuNTgzbC0uNDc2LjQwOGExLjE2NiwxLjE2NiwwLDAsMS0xLjIwOC4xOTFaXCIgc3R5bGU9XCJmaWxsOiM2YzMzYWZcIi8+PHBhdGggZD1cIk0yLjcxOCw4LjdBMS4xNjgsMS4xNjgsMCwwLDAsMiw5Ljc3OHYuMWEuNjc0LjY3NCwwLDAsMSwxLjE3NC0uNDUyTDIxLjI1LDI5LjQxNmExLjc0MywxLjc0MywwLDAsMCwxLjk5LjMzOGw1Ljc2OS0yLjc3OEExLjc0NywxLjc0NywwLDAsMCwzMCwyNS40di0uMDY4YTEuMSwxLjEsMCwwLDEtMS44Ljg1NUw2LjUyMSw4LjQxN2wtLjQ3Ni0uNDA4YTEuMTY2LDEuMTY2LDAsMCwwLTEuMjA4LS4xOTFaXCIgc3R5bGU9XCJmaWxsOiM4NTRjYzdcIi8+PHBhdGggZD1cIk0yMy4yNCwyOS43NTVhMS43NDMsMS43NDMsMCwwLDEtMS45OS0uMzM4QTEuMDI1LDEuMDI1LDAsMCwwLDIzLDI4LjY5MlYzLjMwOGExLjAyNSwxLjAyNSwwLDAsMC0xLjc1LS43MjUsMS43NDMsMS43NDMsMCwwLDEsMS45OS0uMzM4bDUuNzY4LDIuNzc0QTEuNzQ5LDEuNzQ5LDAsMCwxLDMwLDYuNlYyNS40MDVhMS43NTEsMS43NTEsMCwwLDEtLjk5MSwxLjU3N1pcIiBzdHlsZT1cImZpbGw6I2IxNzlmMVwiLz48ZyBzdHlsZT1cIm9wYWNpdHk6MC4yNVwiPjxwYXRoIGQ9XCJNMjIuMDkzLDI5Ljg4M2ExLjc0LDEuNzQsMCwwLDAsMS4xNDctLjEyOGw1Ljc2OC0yLjc3NEExLjc0OSwxLjc0OSwwLDAsMCwzMCwyNS40VjYuNmExLjc1LDEuNzUsMCwwLDAtLjk5Mi0xLjU3N0wyMy4yNCwyLjI0NWExLjc0MiwxLjc0MiwwLDAsMC0xLjk5LjMzOWwtOS4zLDEwLjI4NEw2LjUyMSw4LjQxNmwtLjQ3Ni0uNDA4YTEuMTY4LDEuMTY4LDAsMCwwLTEuMjA3LS4xOTFMMi43MTksOC43QTEuMTY3LDEuMTY3LDAsMCwwLDIsOS42ODljMCwuMDI5LDAsLjA1OSwwLC4wODhWMjIuMjIxYzAsLjAzLDAsLjA1OSwwLC4wODhhMS4xNjcsMS4xNjcsMCwwLDAsLjcxNS45ODlsMi4xMTkuODgzYTEuMjI2LDEuMjI2LDAsMCwwLC4xNTUuMDUyLDEuMTY1LDEuMTY1LDAsMCwwLDEuMDUyLS4yNDNsLjQ3Ni0uNDA4LDUuNDMtNC40NTIsOS4zLDEwLjI4NUExLjczMywxLjczMywwLDAsMCwyMi4wOTMsMjkuODgzWk0yMywxMC4wNzIsMTUuNzcsMTYsMjMsMjEuOTI3Wk01LjUsMTJsMy42MTksNEw1LjUsMjBaXCIgc3R5bGU9XCJmaWxsLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjYSlcIi8+PC9nPmAsXG5cdFwiU1BBUlFMXCI6IGA8cGF0aCBkPVwiTTI2LjI4NCwyMC4zNjFjLS4xNjUtLjA4NC0uMzU5LS4xNjQtLjUyMy0uMjQ4SDI1LjlzLTEuMTU4LS41LTEuMjQtNC4xNzZjLS4xMTEtMy42NTUsMS4xLTQuMjg5LDEuMS00LjI4OWE0Ljk2LDQuOTYsMCwwLDAsMi4xNzYtMi4xNDMsNS4xMjIsNS4xMjIsMCwwLDAtMi4xMjItNi45MjcsNS4zNDIsNS4zNDIsMCwwLDAtNy4xMzgsMi4xNDYsNS4wNjcsNS4wNjcsMCwwLDAtLjUyMywzLjIxNEwxOC4xLDcuODU1cy4zLDEuMzE5LTIuODM5LDMuMjcyYy0zLjExNSwxLjk1LTQuNTQ5Ljk2Mi00LjU0OS45NjJsLjA4Mi4xMzhhMi4xMzEsMi4xMzEsMCwwLDAtLjI3My0uMTY3LDUuMTE3LDUuMTE3LDAsMSwwLC44MjUsOC41MmwtLjAyNS4wNTVzMS4xMjktLjkzMyw0LjQwNy44MjdjMi41OTIsMS4zNzQsMi45NzksMi43NDgsMy4wMzMsMy4yNGE1LjEsNS4xLDAsMCwwLDIuNyw0LjcsNS4xMjQsNS4xMjQsMCwxLDAsNC44MjUtOS4wNDFabS01Ljc5LjY4NWMtLjQxMi4xMzgtMS42LjMtNC4wNzctMS4wMTctMi43LTEuNDU0LTMuMTE1LTIuNjY0LTMuMTY5LTMuMDIxYTUuNDA2LDUuNDA2LDAsMCwwLS4wNTctMS4zMTlsLjAyOS4wMjZTMTMsMTQuNTM0LDE2LjA4NCwxMi42MzljMi43NTctMS43MDUsNC4wMjYtMS4zNzQsNC4yNDUtMS4yOTNhMi44MywyLjgzLDAsMCwwLC40Ny4yNzcsNC4wODIsNC4wODIsMCwwLDAsLjk2NC4zODNjLjM4Ny4zNTcsMS4wNzYsMS4zNzQsMS4xNTgsNC4xcy0uNzE3LDMuNzY0LTEuMTU4LDQuMTIxQTUuMDQsNS4wNCwwLDAsMCwyMC40OTQsMjEuMDQ3WlwiIHN0eWxlPVwiZmlsbDojMGM0NzljXCIvPjxwYXRoIGQ9XCJNMjAuMTM1LDQuMjI5YTMuODYxLDMuODYxLDAsMCwwLS4wODIsNS4zODZjLS43MTctLjY4NS0uNjg4LTIuMTE3LjAyOS0zLjQ2MmEuNjczLjY3MywwLDAsMSwuNzQ2LS4yNzdjLjAyNSwwLC4wNTQuMDI5LjA4Mi4wMjlhLjk5My45OTMsMCwwLDAsLjI3Ni4wMjZBMS4wNTYsMS4wNTYsMCwwLDAsMjIuMiw0LjgwNWEuOTM0LjkzNCwwLDAsMC0uMy0uNjg1YzEuMzgtLjkwNywyLjk1LTEuMDE3LDMuNjEtLjQxMmguMDI5QTMuODI2LDMuODI2LDAsMCwwLDIwLjEzNSw0LjIyOVpNNS4xNDUsMTMuODQ2YTMuODU5LDMuODU5LDAsMCwwLS4wODIsNS4zODljLS43MTctLjY4OS0uNjkyLTIuMTE3LjAyNS0zLjQ2NWEuNjY4LjY2OCwwLDAsMSwuNzQ2LS4yNzNjLjAyNSwwLC4wNTQuMDI5LjA4Mi4wMjlhMSwxLDAsMCwwLC4yNzYuMDI2QTEuMDU2LDEuMDU2LDAsMCwwLDcuMjEsMTQuNDI1YS45NDUuOTQ1LDAsMCwwLS4zLS42ODljMS4zNzctLjkwNywyLjk0Ny0xLjAxNywzLjYxLS40MTJoLjAyNUEzLjg1MiwzLjg1MiwwLDAsMCw1LjE0NSwxMy44NDZabTE1Ljg3Miw4LjE2M2EzLjg2NSwzLjg2NSwwLDAsMC0uMDgyLDUuMzg5Yy0uNzE3LS42ODktLjY4OC0yLjExNy4wMjktMy40NjVhLjY2OC42NjgsMCwwLDEsLjc0Ni0uMjczYy4wMjUsMCwuMDU0LjAyNi4wODIuMDI2YS44ODcuODg3LDAsMCwwLC4yNzYuMDI5LDEuMDU3LDEuMDU3LDAsMCwwLDEuMDE4LTEuMTI2LjkzNi45MzYsMCwwLDAtLjMtLjY4OWMxLjM4LS45MDcsMi45NS0xLjAxNywzLjYxLS40MTJoLjAyOUEzLjgyOSwzLjgyOSwwLDAsMCwyMS4wMTcsMjIuMDA5WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiU1FGXCI6IGA8cGF0aCBkPVwiTTI1LDIzLjVIN2E1LjAxNSw1LjAxNSwwLDAsMS01LTV2LTZhNS4wMTUsNS4wMTUsMCwwLDEsNS01SDI1YTUuMDE1LDUuMDE1LDAsMCwxLDUsNXY2YTUuMDE1LDUuMDE1LDAsMCwxLTUsNVpcIi8+PHBhdGggZD1cIk03LDE5LjQ2MWE0LjgxLDQuODEsMCwwLDEtMS40MTQtLjIsNS4wNTIsNS4wNTIsMCwwLDEtMS4xMTEtLjQ3MmwtLjQuNDMyaC0uNUwzLjUsMTYuMDUySDRhOC40NjIsOC40NjIsMCwwLDAsLjQzMS45NTMsNC42MzgsNC42MzgsMCwwLDAsLjYwNi45LDMuMTc3LDMuMTc3LDAsMCwwLC44LjY3NSwxLjk4NSwxLjk4NSwwLDAsMCwxLjAyOS4yNiwxLjY3MiwxLjY3MiwwLDAsMCwxLjIxNi0uNDExQTEuMzgyLDEuMzgyLDAsMCwwLDguNSwxNy4zOTFhMS4xNTYsMS4xNTYsMCwwLDAtLjM1OS0uODYyLDIuOTQ1LDIuOTQ1LDAsMCwwLTEuMTExLS42cS0uNDktLjE2Ny0uOS0uMzF0LS43NzMtLjI5MmEyLjU4LDIuNTgsMCwwLDEtMS4yMzktMS4wMDcsMi43MywyLjczLDAsMCwxLS40MDUtMS40NjUsMi40MDYsMi40MDYsMCwwLDEsLjIxLS45ODYsMi42MDgsMi42MDgsMCwwLDEsLjYxMi0uODUsMi45NjcsMi45NjcsMCwwLDEsLjk4NS0uNTc1LDMuNzIyLDMuNzIyLDAsMCwxLDEuMzA2LS4yMjMsMy45ODQsMy45ODQsMCwwLDEsMS4yODguMiw1LjE1MSw1LjE1MSwwLDAsMSwuOTQ0LjQwOGwuMzU2LS4zN2guNTA3bC4wNDcsMi45ODhoLS41cS0uMTc1LS40ODMtLjQxMS0uOTg3YTQuMzMyLDQuMzMyLDAsMCwwLS41LS44MzksMi4zLDIuMywwLDAsMC0uNjU5LS41NzMsMS43MjksMS43MjksMCwwLDAtLjg3NS0uMjE0QTEuNDM3LDEuNDM3LDAsMCwwLDYsMTEuMjEyYTEuMjMzLDEuMjMzLDAsMCwwLS40LjkzNCwxLjE0MSwxLjE0MSwwLDAsMCwuMzQ3Ljg2LDIuOTUxLDIuOTUxLDAsMCwwLDEuMDgyLjU4OHEuNDMxLjE1NC44OC4zMDl0LjguM2EyLjg4NSwyLjg4NSwwLDAsMSwxLjI4Ni45NTUsMi41MTIsMi41MTIsMCwwLDEsLjQ0LDEuNTEyLDIuNjMyLDIuNjMyLDAsMCwxLS45MjcsMS45ODUsMy4zNjcsMy4zNjcsMCwwLDEtMS4wNzkuNkE0LjM5MSw0LjM5MSwwLDAsMSw3LDE5LjQ2MVpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTE4LjkyMSwxMS40MzRhNC4zMzgsNC4zMzgsMCwwLDEsLjk3MSwxLjQzMiw0LjgzNCw0LjgzNCwwLDAsMSwuMzU5LDEuOTE0LDQuOTU4LDQuOTU4LDAsMCwxLS43MiwyLjY4LDQuMDM2LDQuMDM2LDAsMCwxLTIuMDM4LDEuNjYxLDIuMTUxLDIuMTUxLDAsMCwwLC40MiwxLjI3MiwxLjE2OCwxLjE2OCwwLDAsMCwuOTUuNTM3LDMuNTYzLDMuNTYzLDAsMCwwLC41OTItLjA0M3EuMjU0LS4wNDMuNDU4LS4xdi41NDNhNS43NTMsNS43NTMsMCwwLDEtLjk4NS4zLDYuMDU0LDYuMDU0LDAsMCwxLTEuMzcuMTUxLDIuMjA2LDIuMjA2LDAsMCwxLTEuNjEyLS42MjEsMi41NzQsMi41NzQsMCwwLDEtLjcwOC0xLjczMkE0LjU3OSw0LjU3OSwwLDAsMSwxMy43LDE5YTQuMTg2LDQuMTg2LDAsMCwxLTEuMjUzLS45MzIsNC4zODgsNC4zODgsMCwwLDEtLjg0Mi0xLjM3Nyw0Ljc2OSw0Ljc2OSwwLDAsMS0uMzEyLTEuNzUzLDUuMjM3LDUuMjM3LDAsMCwxLC4zNDctMS45NDgsNC41LDQuNSwwLDAsMSwuOTUzLTEuNSw0LjExOSw0LjExOSwwLDAsMSwxLjQyNS0uOTQyLDQuODYsNC44NiwwLDAsMSwzLjUtLjAwOUE0LjI0Nyw0LjI0NywwLDAsMSwxOC45MjEsMTEuNDM0Wm0tMS41LDYuMjY2YTQuODU3LDQuODU3LDAsMCwwLC4zNzktMS4yNzMsOS45ODEsOS45ODEsMCwwLDAsLjExNy0xLjYwNiwxMC41MzQsMTAuNTM0LDAsMCwwLS4xLTEuNDgsNC45MzYsNC45MzYsMCwwLDAtLjM0Ny0xLjI4MiwyLjQxLDIuNDEsMCwwLDAtLjY2NS0uOSwxLjU3MSwxLjU3MSwwLDAsMC0xLjAzMi0uMzQsMS43MywxLjczLDAsMCwwLTEuNiwxLjA2LDYuNjM0LDYuNjM0LDAsMCwwLS41NDgsMi45OTMsOS41ODMsOS41ODMsMCwwLDAsLjEyLDEuNTUxLDQuOCw0LjgsMCwwLDAsLjM3NiwxLjI3MywyLjI4NiwyLjI4NiwwLDAsMCwuNjY1Ljg1NiwxLjU5MSwxLjU5MSwwLDAsMCwuOTkxLjMwNiwxLjYxMSwxLjYxMSwwLDAsMCwuOTkxLS4zMDlBMi4xMzUsMi4xMzUsMCwwLDAsMTcuNDIzLDE3LjdaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+PHBhdGggZD1cIk0yOC41LDEyLjhoLS40NTVhMy45MywzLjkzLDAsMCwwLS42LTEuMDg2LDEuMzg1LDEuMzg1LDAsMCwwLS44MTItLjYzYy0uMTE2LS4wMTYtLjI3Mi0uMDMxLS40NjUtLjA0M3MtLjM3My0uMDE5LS41MzUtLjAxOUgyNC4zNDl2My40MzNoLjgyMmExLjk2OSwxLjk2OSwwLDAsMCwuNjA2LS4wODMsMS4wNTQsMS4wNTQsMCwwLDAsLjQ1NS0uMywxLjU5MSwxLjU5MSwwLDAsMCwuMjgzLS41MTYsMi42MzUsMi42MzUsMCwwLDAsLjE2Ni0uNjIxaC40NDN2My42ODZoLS40NDNhMi40NzEsMi40NzEsMCwwLDAtLjE4MS0uNjc2LDIuMDk0LDIuMDk0LDAsMCwwLS4yNjgtLjUyOCwxLjAxMiwxLjAxMiwwLDAsMC0uNDMxLS4yOTMsMS44NDIsMS44NDIsMCwwLDAtLjYzLS4xaC0uODIydjIuOWEuODQyLjg0MiwwLDAsMCwuMDc5LjM4LjU4LjU4LDAsMCwwLC4zLjI1NiwxLjg3LDEuODcsMCwwLDAsLjM1My4xcS4yMjQuMDQ2LjQ0Ni4wNzF2LjQ4MmgtNC40NnYtLjQ4MmwuNDQ5LS4wNTJhMS41MjUsMS41MjUsMCwwLDAsLjM5MS0uMDgzLjU0Ny41NDcsMCwwLDAsLjI5Mi0uMjQxLjg0Mi44NDIsMCwwLDAsLjA4Mi0uNHYtNi4xOGEuODY3Ljg2NywwLDAsMC0uMDczLS4zNjcuNTc1LjU3NSwwLDAsMC0uMy0uMjYyLDIuMzQxLDIuMzQxLDAsMCwwLS40MzEtLjEzNnEtLjI2OC0uMDYyLS40MDgtLjA4di0uNDgySDI4LjVaXCIgc3R5bGU9XCJmaWxsOiNjMmMyYzJcIi8+YCxcblx0XCJTUUY6IFN0YXR1cyBRdW8gRnVuY3Rpb24gKEFybWEgMylcIjogYDxwYXRoIGQ9XCJNMjUsMjMuNUg3YTUuMDE1LDUuMDE1LDAsMCwxLTUtNXYtNmE1LjAxNSw1LjAxNSwwLDAsMSw1LTVIMjVhNS4wMTUsNS4wMTUsMCwwLDEsNSw1djZhNS4wMTUsNS4wMTUsMCwwLDEtNSw1WlwiLz48cGF0aCBkPVwiTTcsMTkuNDYxYTQuODEsNC44MSwwLDAsMS0xLjQxNC0uMiw1LjA1Miw1LjA1MiwwLDAsMS0xLjExMS0uNDcybC0uNC40MzJoLS41TDMuNSwxNi4wNTJINGE4LjQ2Miw4LjQ2MiwwLDAsMCwuNDMxLjk1Myw0LjYzOCw0LjYzOCwwLDAsMCwuNjA2LjksMy4xNzcsMy4xNzcsMCwwLDAsLjguNjc1LDEuOTg1LDEuOTg1LDAsMCwwLDEuMDI5LjI2LDEuNjcyLDEuNjcyLDAsMCwwLDEuMjE2LS40MTFBMS4zODIsMS4zODIsMCwwLDAsOC41LDE3LjM5MWExLjE1NiwxLjE1NiwwLDAsMC0uMzU5LS44NjIsMi45NDUsMi45NDUsMCwwLDAtMS4xMTEtLjZxLS40OS0uMTY3LS45LS4zMXQtLjc3My0uMjkyYTIuNTgsMi41OCwwLDAsMS0xLjIzOS0xLjAwNywyLjczLDIuNzMsMCwwLDEtLjQwNS0xLjQ2NSwyLjQwNiwyLjQwNiwwLDAsMSwuMjEtLjk4NiwyLjYwOCwyLjYwOCwwLDAsMSwuNjEyLS44NSwyLjk2NywyLjk2NywwLDAsMSwuOTg1LS41NzUsMy43MjIsMy43MjIsMCwwLDEsMS4zMDYtLjIyMywzLjk4NCwzLjk4NCwwLDAsMSwxLjI4OC4yLDUuMTUxLDUuMTUxLDAsMCwxLC45NDQuNDA4bC4zNTYtLjM3aC41MDdsLjA0NywyLjk4OGgtLjVxLS4xNzUtLjQ4My0uNDExLS45ODdhNC4zMzIsNC4zMzIsMCwwLDAtLjUtLjgzOSwyLjMsMi4zLDAsMCwwLS42NTktLjU3MywxLjcyOSwxLjcyOSwwLDAsMC0uODc1LS4yMTRBMS40MzcsMS40MzcsMCwwLDAsNiwxMS4yMTJhMS4yMzMsMS4yMzMsMCwwLDAtLjQuOTM0LDEuMTQxLDEuMTQxLDAsMCwwLC4zNDcuODYsMi45NTEsMi45NTEsMCwwLDAsMS4wODIuNTg4cS40MzEuMTU0Ljg4LjMwOXQuOC4zYTIuODg1LDIuODg1LDAsMCwxLDEuMjg2Ljk1NSwyLjUxMiwyLjUxMiwwLDAsMSwuNDQsMS41MTIsMi42MzIsMi42MzIsMCwwLDEtLjkyNywxLjk4NSwzLjM2NywzLjM2NywwLDAsMS0xLjA3OS42QTQuMzkxLDQuMzkxLDAsMCwxLDcsMTkuNDYxWlwiIHN0eWxlPVwiZmlsbDojYzJjMmMyXCIvPjxwYXRoIGQ9XCJNMTguOTIxLDExLjQzNGE0LjMzOCw0LjMzOCwwLDAsMSwuOTcxLDEuNDMyLDQuODM0LDQuODM0LDAsMCwxLC4zNTksMS45MTQsNC45NTgsNC45NTgsMCwwLDEtLjcyLDIuNjgsNC4wMzYsNC4wMzYsMCwwLDEtMi4wMzgsMS42NjEsMi4xNTEsMi4xNTEsMCwwLDAsLjQyLDEuMjcyLDEuMTY4LDEuMTY4LDAsMCwwLC45NS41MzcsMy41NjMsMy41NjMsMCwwLDAsLjU5Mi0uMDQzcS4yNTQtLjA0My40NTgtLjF2LjU0M2E1Ljc1Myw1Ljc1MywwLDAsMS0uOTg1LjMsNi4wNTQsNi4wNTQsMCwwLDEtMS4zNy4xNTEsMi4yMDYsMi4yMDYsMCwwLDEtMS42MTItLjYyMSwyLjU3NCwyLjU3NCwwLDAsMS0uNzA4LTEuNzMyQTQuNTc5LDQuNTc5LDAsMCwxLDEzLjcsMTlhNC4xODYsNC4xODYsMCwwLDEtMS4yNTMtLjkzMiw0LjM4OCw0LjM4OCwwLDAsMS0uODQyLTEuMzc3LDQuNzY5LDQuNzY5LDAsMCwxLS4zMTItMS43NTMsNS4yMzcsNS4yMzcsMCwwLDEsLjM0Ny0xLjk0OCw0LjUsNC41LDAsMCwxLC45NTMtMS41LDQuMTE5LDQuMTE5LDAsMCwxLDEuNDI1LS45NDIsNC44Niw0Ljg2LDAsMCwxLDMuNS0uMDA5QTQuMjQ3LDQuMjQ3LDAsMCwxLDE4LjkyMSwxMS40MzRabS0xLjUsNi4yNjZhNC44NTcsNC44NTcsMCwwLDAsLjM3OS0xLjI3Myw5Ljk4MSw5Ljk4MSwwLDAsMCwuMTE3LTEuNjA2LDEwLjUzNCwxMC41MzQsMCwwLDAtLjEtMS40OCw0LjkzNiw0LjkzNiwwLDAsMC0uMzQ3LTEuMjgyLDIuNDEsMi40MSwwLDAsMC0uNjY1LS45LDEuNTcxLDEuNTcxLDAsMCwwLTEuMDMyLS4zNCwxLjczLDEuNzMsMCwwLDAtMS42LDEuMDYsNi42MzQsNi42MzQsMCwwLDAtLjU0OCwyLjk5Myw5LjU4Myw5LjU4MywwLDAsMCwuMTIsMS41NTEsNC44LDQuOCwwLDAsMCwuMzc2LDEuMjczLDIuMjg2LDIuMjg2LDAsMCwwLC42NjUuODU2LDEuNTkxLDEuNTkxLDAsMCwwLC45OTEuMzA2LDEuNjExLDEuNjExLDAsMCwwLC45OTEtLjMwOUEyLjEzNSwyLjEzNSwwLDAsMCwxNy40MjMsMTcuN1pcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTI4LjUsMTIuOGgtLjQ1NWEzLjkzLDMuOTMsMCwwLDAtLjYtMS4wODYsMS4zODUsMS4zODUsMCwwLDAtLjgxMi0uNjNjLS4xMTYtLjAxNi0uMjcyLS4wMzEtLjQ2NS0uMDQzcy0uMzczLS4wMTktLjUzNS0uMDE5SDI0LjM0OXYzLjQzM2guODIyYTEuOTY5LDEuOTY5LDAsMCwwLC42MDYtLjA4MywxLjA1NCwxLjA1NCwwLDAsMCwuNDU1LS4zLDEuNTkxLDEuNTkxLDAsMCwwLC4yODMtLjUxNiwyLjYzNSwyLjYzNSwwLDAsMCwuMTY2LS42MjFoLjQ0M3YzLjY4NmgtLjQ0M2EyLjQ3MSwyLjQ3MSwwLDAsMC0uMTgxLS42NzYsMi4wOTQsMi4wOTQsMCwwLDAtLjI2OC0uNTI4LDEuMDEyLDEuMDEyLDAsMCwwLS40MzEtLjI5MywxLjg0MiwxLjg0MiwwLDAsMC0uNjMtLjFoLS44MjJ2Mi45YS44NDIuODQyLDAsMCwwLC4wNzkuMzguNTguNTgsMCwwLDAsLjMuMjU2LDEuODcsMS44NywwLDAsMCwuMzUzLjFxLjIyNC4wNDYuNDQ2LjA3MXYuNDgyaC00LjQ2di0uNDgybC40NDktLjA1MmExLjUyNSwxLjUyNSwwLDAsMCwuMzkxLS4wODMuNTQ3LjU0NywwLDAsMCwuMjkyLS4yNDEuODQyLjg0MiwwLDAsMCwuMDgyLS40di02LjE4YS44NjcuODY3LDAsMCwwLS4wNzMtLjM2Ny41NzUuNTc1LDAsMCwwLS4zLS4yNjIsMi4zNDEsMi4zNDEsMCwwLDAtLjQzMS0uMTM2cS0uMjY4LS4wNjItLjQwOC0uMDh2LS40ODJIMjguNVpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz5gLFxuXHRcIlNRTFwiOiBgPHBhdGggZD1cIk04LjU2MiwxNS4yNTZBMjEuMTU5LDIxLjE1OSwwLDAsMCwxNiwxNi40NDlhMjEuMTU5LDIxLjE1OSwwLDAsMCw3LjQzOC0xLjE5NGMxLjg2NC0uNzI3LDIuNTI1LTEuNTM1LDIuNTI1LTJWOS43YTEwLjM1NywxMC4zNTcsMCwwLDEtMi4wODQsMS4wNzZBMjIuMjkzLDIyLjI5MywwLDAsMSwxNiwxMi4wNzhhMjIuMzYsMjIuMzYsMCwwLDEtNy44NzktMS4zQTEwLjI4LDEwLjI4LDAsMCwxLDYuMDM3LDkuN3YzLjU1QzYuMDM3LDEzLjcyNCw2LjcsMTQuNTI4LDguNTYyLDE1LjI1NlpcIiBzdHlsZT1cImZpbGw6I2ZmZGE0NFwiLz48cGF0aCBkPVwiTTguNTYyLDIxLjk2MWExNS42MTEsMTUuNjExLDAsMCwwLDIuNi43NDFBMjQuOSwyNC45LDAsMCwwLDE2LDIzLjE1NWEyNC45LDI0LjksMCwwLDAsNC44MzgtLjQ1MiwxNS42MTQsMTUuNjE0LDAsMCwwLDIuNi0uNzQxYzEuODY0LS43MjcsMi41MjUtMS41MzUsMi41MjUtMnYtMy4zOWExMC43MDYsMTAuNzA2LDAsMCwxLTEuNjkyLjgyNUEyMy40OSwyMy40OSwwLDAsMSwxNiwxOC43NGEyMy40OSwyMy40OSwwLDAsMS04LjI3MS0xLjM0OCwxMC44MjksMTAuODI5LDAsMCwxLTEuNjkyLS44MjVWMTkuOTZDNi4wMzcsMjAuNDI2LDYuNywyMS4yMzEsOC41NjIsMjEuOTYxWlwiIHN0eWxlPVwiZmlsbDojZmZkYTQ0XCIvPjxwYXRoIGQ9XCJNMTYsMzBjNS41LDAsOS45NjMtMS43NDQsOS45NjMtMy44OTRWMjMuMjY5YTEwLjUsMTAuNSwwLDAsMS0xLjUzNS43NjJsLS4xNTcuMDYzQTIzLjQ4NywyMy40ODcsMCwwLDEsMTYsMjUuNDQ1YTIzLjQyMiwyMy40MjIsMCwwLDEtOC4yNzEtMS4zNTFjLS4wNTQtLjAyLS4xMDYtLjA0My0uMTU3LS4wNjNhMTAuNSwxMC41LDAsMCwxLTEuNTM1LS43NjJ2Mi44MzdDNi4wMzcsMjguMjU2LDEwLjUsMzAsMTYsMzBaXCIgc3R5bGU9XCJmaWxsOiNmZmRhNDRcIi8+PGVsbGlwc2UgY3g9XCIxNlwiIGN5PVwiNS44OTRcIiByeD1cIjkuOTYzXCIgcnk9XCIzLjg5NFwiIHN0eWxlPVwiZmlsbDojZmZkYTQ0XCIvPmAsXG5cdFwiU3F1aXJyZWxcIjogYDxwYXRoIGQ9XCJNMTIuOTY2LDI3LjNhMTguOTI2LDE4LjkyNiwwLDAsMS01LjcwNy0uOTE1Yy0xLjgzMi0uNTkyLTQuMDQ0LTEuNTQtNC45MzEtMy42NDVhLjU1Ny41NTcsMCwwLDEtLjAyNS0uMDczLDEyLjIxNCwxMi4yMTQsMCwwLDEsLjc2My03LjUzMWMxLjUyMi00LjAwOCwzLjcxLTYuNzM5LDYuNS04LjExNmExMC40MjIsMTAuNDIyLDAsMCwxLDcuNi0uNTUsMTAuNDI2LDEwLjQyNiwwLDAsMSw2LjA0LDQuNjM5LDExLjA1NywxMS4wNTcsMCwwLDEsMS4wNTgsMi4zMjYsMTAuNjYsMTAuNjYsMCwwLDEtNS4zNzgsMTIuNjg5bC0uMDIuMDA5QTE0LjgzMiwxNC44MzIsMCwwLDEsMTIuOTY2LDI3LjNaXCIvPjxwYXRoIGQ9XCJNMjIuNzIsMTEuMzkzYTEwLjE0NCwxMC4xNDQsMCwwLDAtMTIuOS0zLjg2OUM2LjcsOS4wNjEsNC43ODQsMTIuMiwzLjU5MywxNS4zMzRhMTEuOSwxMS45LDAsMCwwLS43NDYsNy4xODdjLjc4MywxLjg2LDIuNzc5LDIuNzQ0LDQuNTgyLDMuMzI3YTE2LjIwNiwxNi4yMDYsMCwwLDAsMTEuMjEzLS4yMzJBMTAuMTEsMTAuMTEsMCwwLDAsMjMuNzI3LDEzLjYsMTAuNDg4LDEwLjQ4OCwwLDAsMCwyMi43MiwxMS4zOTNaXCIgc3R5bGU9XCJmaWxsOiNhMDVhMmNcIi8+PHBhdGggZD1cIk0xNS43ODIsNi43MkE4LjI2Myw4LjI2MywwLDAsMSwxNy42NCw4LjA4NCw5LjY1LDkuNjUsMCwwLDEsMTkuMDgsOS44YTkuMzE3LDkuMzE3LDAsMCwxLTEuNTMxLDExLjkyMUExNC45MzMsMTQuOTMzLDAsMCwxLDcuNjU2LDI0LjdhNy41ODEsNy41ODEsMCwwLDEtNC4xMzUtMS4xLDguNDU0LDguNDU0LDAsMCwwLDMuOTA3LDIuMjQxLDE2LjIwOCwxNi4yMDgsMCwwLDAsMTEuMjE0LS4yMzNBMTAuMTEyLDEwLjExMiwwLDAsMCwyMy43MjcsMTMuNmExMC40ODcsMTAuNDg3LDAsMCwwLTEuMDA3LTIuMjExQTkuOTczLDkuOTczLDAsMCwwLDE1Ljc4Miw2LjcyWlwiIHN0eWxlPVwiZmlsbC1vcGFjaXR5OjAuMzEzNzI1NTAxMjk4OTA0NFwiLz48cGF0aCBkPVwiTTIzLjQ3NiwxMy4zODlsLTEuMDYyLTIuODk1LjE1Mi0uMjM2QTYuODc1LDYuODc1LDAsMCwxLDI3LjUwOSw3LjdhMi4xNzcsMi4xNzcsMCwwLDEsMS44NzkuNTg4LDMuMzc2LDMuMzc2LDAsMCwxLC4xLDMuNzI5Yy0uMzQzLjI5Mi0uNzUxLjEyNC0xLjIyMi0uMDdhMi44MjEsMi44MjEsMCwwLDAtMi4xMzMtLjI3LDEwLjIsMTAuMiwwLDAsMC0yLjA0NywxLjIwOVpcIi8+PHBhdGggZD1cIk0yMy4wMzksMTAuNTYzYzEuMjIzLTEuOSw1LjEwNy0yLjkxNSw1LjkxMi0xLjkyM2EyLjk3LDIuOTcsMCwwLDEsLjE3NywyLjk0NWMtLjI0NS4yMDctMS44MzctMS4wNTktMy4yMjUtLjQyM0ExMC41NzQsMTAuNTc0LDAsMCwwLDIzLjczLDEyLjQ1WlwiIHN0eWxlPVwiZmlsbDojNTAyZDE2XCIvPjxwYXRoIGQ9XCJNMjkuNCw5LjcyN2EuOC44LDAsMCwxLS4yLjQ2OWMtLjIyOS4xNjItMS45LS41MDYtMy4yMzguMDU2YTEyLjQzOSwxMi40MzksMCwwLDAtMi4wNzEsMS4wN0wyMy4yLDEwLjM0Yy0uMDU3LjA3NC0uMTE2LjE0Ny0uMTY1LjIyM2wuNjkyLDEuODg2QTEwLjU3NywxMC41NzcsMCwwLDEsMjUuOSwxMS4xNjJjMS4zODgtLjYzNiwyLjk4LjYzMSwzLjIyNS40MjNBMi44NDYsMi44NDYsMCwwLDAsMjkuNCw5LjcyN1pcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjMxMzcyNTUwMTI5ODkwNDRcIi8+PHBhdGggZD1cIk0yMS4zODIsMjUuMThhMi4yMzYsMi4yMzYsMCwwLDEtMS4xNDctLjMyMy41NjMuNTYzLDAsMCwxLS4wODItLjg4OGMuNzM3LS42ODQuNjA3LTIuMTczLS40MS00LjY4OWEzNi41MjYsMzYuNTI2LDAsMCwwLTUuMTIzLTguODI1bC0uMzUtLjQzYy0xLjUxMi0xLjg2NS0yLjM1OC0yLjgxNS0zLjU1NC0yLjNhLjU2Mi41NjIsMCwwLDEtLjQxMy4wMTYuNTcxLjU3MSwwLDAsMS0uMzc3LS41OTIsMi4xMTksMi4xMTksMCwwLDEsMS40NjEtMmM0LjcxNi0xLjQ4MSwxMC4yNi44MTQsMTIuOTA1LDUuMzQ0YTExLjIsMTEuMiwwLDAsMS0xLjQzMSwxMy45OTFBMS45MTksMS45MTksMCwwLDEsMjEuMzgyLDI1LjE4WlwiLz48cGF0aCBkPVwiTTIzLjgxMiwxMC43ODNjLTIuNDQ0LTQuMTkyLTcuNzMtNi41MjgtMTIuMjctNS4wOTMtMS4wMDcuMjQ4LTEuMDY1LDEuNTM1LTEuMDUyLDEuNTE3LDEuNzc2LS43NjcsMi45NTMuOTE5LDQuNTY2LDIuODlhMzYuOSwzNi45LDAsMCwxLDUuMjA5LDguOTcxYy44OSwyLjIsMS40LDQuMjY3LjI3LDUuMzEyYTEuNSwxLjUsMCwwLDAsMS45MDktLjI3NEExMC42NDYsMTAuNjQ2LDAsMCwwLDIzLjgxMiwxMC43ODNaXCIgc3R5bGU9XCJmaWxsOiM1MDJkMTZcIi8+PHBhdGggZD1cIk0yMy42NDksMTAuMzQ2YTkuMzE0LDkuMzE0LDAsMCwxLTIuNTE4LDcuNzI1Yy0uNDU1LjQ4Ni0uODczLjE3Ny0xLjI2My4wNjMuMTM4LjMxMy4yNzEuNjI2LjQuOTM2Ljg5LDIuMiwxLjQsNC4yNjYuMjcxLDUuMzEyYTEuNSwxLjUsMCwwLDAsMS45MDktLjI3NEMyNi4wODksMjAuMTgzLDI2LjM1NywxNC45MTksMjMuNjQ5LDEwLjM0NlpcIiBzdHlsZT1cImZpbGwtb3BhY2l0eTowLjMxMzcyNTUwMTI5ODkwNDRcIi8+YCxcblx0XCJTdGFuXCI6IGA8dGl0bGU+ZmlsZV90eXBlX3N0YW48L3RpdGxlPjxwYXRoIGQ9XCJNMTYsMkExNCwxNCwwLDAsMCw1LjY4OCwyNS40NjljMS43LS41MTQsMy40MTEtLjk5Miw0LjgwNi0xLjM1Nyw0LjAzNy0xLjA1NCwxMC45NDgtMi44MzYsMTEuOTQ2LTUuMDgyLS4yOC43OC0xLjIxOCwyLjg3LTEuMjE4LDIuODctMS4yNzksMS4yNDctNy4wOSwyLjYzMS0xMC45MTcsMy4zNjctMS4yMi4yMzUtMi42MTQuNTA3LTQuMDI2LjgwNkExNCwxNCwwLDAsMCwyOC40NjcsOS42MjhjLTIuNTI2LjQwOC0xMC41LDEuODU0LTEyLjUzOSwyLjMxNS0yLjI1NS41MDktNi43ODksMS40MzMtNy42OTQsMi45OTNDOC44LDEzLjUsMTAuNDkyLDkuNzQ0LDEwLjQ5Miw5Ljc0NGMxLjIxNi0yLDYuNi0zLjQyNSwxMC4zNTgtNC40NjMuODc2LS4yNDIsMS45MjItLjUzOSwzLjAyMy0uODU4QTEzLjkzNCwxMy45MzQsMCwwLDAsMTYsMlpcIiBzdHlsZT1cImZpbGw6I2IyMDAxZFwiLz48cGF0aCBkPVwiTTguMjIzLDE0Ljk4N2MtLjI1MiwxLjE3NSwzLjUyLDIuMzEzLDYuOTIxLDMuMzg5YTI2LjM2MiwyNi4zNjIsMCwwLDEsNS42NjcsMi4xOTIsMy4wODUsMy4wODUsMCwwLDAsMS42NjItMS42MTRjLjM3Ny0xLjQ4OS0zLjAxMy0zLjM5My01LjI3NC00LjIyOWEzMy4zMzcsMzMuMzM3LDAsMCwxLTQuNDA3LTIuMDQyYy00LjMxNiwxLjE0My00LjU2OSwyLjMtNC41NjksMi4zWlwiIHN0eWxlPVwiZmlsbDojNTkwODE1XCIvPmAsXG5cdFwiU3RhdGEgQWRvXCI6IGA8ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9XCJhXCIgeDE9XCIxNlwiIHkxPVwiMlwiIHgyPVwiMTZcIiB5Mj1cIjMwXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+PHN0b3Agb2Zmc2V0PVwiMFwiIHN0b3AtY29sb3I9XCIjOGFhN2MwXCIvPjxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwiIzNjNmU4ZlwiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3N0YXRhPC90aXRsZT48cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI4XCIgcng9XCIxLjU1NlwiIHJ5PVwiMS41NTZcIiBzdHlsZT1cImZpbGw6dXJsKCNhKVwiLz48cmVjdCB4PVwiMTMuMTcxXCIgeT1cIjYuMDE1XCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjIwLjMyNlwiIHk9XCI2LjAxNVwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIyMC4zMjZcIiB5PVwiMTMuMTcxXCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjEzLjE3MVwiIHk9XCIxMy4xNzFcIiB3aWR0aD1cIjUuNzU2XCIgaGVpZ2h0PVwiNS43NTZcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cmVjdCB4PVwiNi4wMTVcIiB5PVwiMTMuMTcxXCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHJlY3QgeD1cIjYuMDE1XCIgeT1cIjIwLjMyNlwiIHdpZHRoPVwiNS43NTZcIiBoZWlnaHQ9XCI1Ljc1NlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPjxyZWN0IHg9XCIxMy4xNzFcIiB5PVwiMjAuMzI2XCIgd2lkdGg9XCI1Ljc1NlwiIGhlaWdodD1cIjUuNzU2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJTdHlsdXNcIjogYDx0aXRsZT5maWxlX3R5cGVfc3R5bHVzPC90aXRsZT48cGF0aCBkPVwiTTYuMzE1LDIwLjc3NmMuNzI2LS44NjkuODEyLTEuNzY2LjI0OS0zLjQzMi0uMzU2LTEuMDU0LS45NDctMS44NjUtLjUxMy0yLjUyMS40NjMtLjcsMS40NDUtLjAyMS42MjcuOTExbC4xNjQuMTE0Yy45ODMuMTE0LDEuNDY3LTEuMjMyLjczMy0xLjYxNi0xLjkzNy0xLjAxMS0zLjYzMS45MzMtMi44ODQsMy4xODMuMzIuOTU0Ljc2OSwxLjk2NS40MDYsMi43N0ExLjc5NCwxLjc5NCwwLDAsMSwzLjc3MywyMS4zYy0uODQ3LjA0My0uMjg1LTEuOS42OTEtMi4zODUuMDg1LS4wNDMuMjA2LS4xLjA5My0uMjQyYTIuMTM0LDIuMTM0LDAsMCwwLTIuMzE0LDEuMkMxLjA2MSwyMi4xMjEsNC40ODUsMjIuOTU0LDYuMzE1LDIwLjc3NlpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTI3LjQ2MiwxNC4xNGMuMjc4LjY4NC43LDEuMzYuNDQ5LDEuOTU4LS4yMDYuNTEzLS40NzcuNzI2LS43NzYuNzc2LS40Mi4wNzEtLjMwNi0xLjI0Ni40MTMtMS42MzguMDY0LS4wMzYuMTU3LS4yMDYuMDcxLS4zMDZhMS42MzYsMS42MzYsMCwwLDAtMS43Ljk2MWMtLjgsMS42ODcsMS44MjMsMi4xNSwzLjExMi40OTEuNTEzLS42NjIuNTM0LTEuMzE3LjA0My0yLjUwNi0uMzEzLS43NTUtLjc5LTEuMzE3LS40OTEtMS44MTYuMzItLjUyNywxLjA4OS0uMDcxLjUxMy42MzRsLjEyOC4wNzFjLjc0OC4wNDMsMS4wNTQtLjk1NC40ODQtMS4yQTEuODM0LDEuODM0LDAsMCwwLDI3LjQ2MiwxNC4xNFpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTE3Ljk1LDEyLjMzOGMtLjUyLS40MTMtMS45NzkuMjc4LTIuMzkyLDEuM2ExNi4yMTMsMTYuMjEzLDAsMCwxLTIuMDQzLDQuMDM3Yy0uOC44NzYtLjg3Ni4yLS44LS4zMDZBMTUuMzI3LDE1LjMyNywwLDAsMSwxNC43LDEyLjY1MmMtLjIzNS0uMzQ5LTEuNzczLS4zLTIuODQxLDEuMzYtLjQuNjI3LTEuMzEsMi43MTMtMi4zMjEsNC4zNTgtLjIyMS4zNTYtLjUuMTA3LS4yODUtLjcyNmEzOS44LDM5LjgsMCwwLDEsMS44NzMtNS42ODIsMzkuMDcyLDM5LjA3MiwwLDAsMSw2LjkyMS0uODE5Yy4yNjMtLjA3MS40NDEtLjMwNiwwLS4zMmE0Ni43NzgsNDYuNzc4LDAsMCwwLTYuNTkzLjQ0MSw0LjkyMyw0LjkyMywwLDAsMSwxLjQ0NS0xLjk0NCwxLjc4NywxLjc4NywwLDAsMC0yLjI2NC43MTksMTIuMjg3LDEyLjI4NywwLDAsMC0uODE5LDEuNDUzLDI0LjE5NCwyNC4xOTQsMCwwLDAtMy45OC44NjJjLS43ODMuMy0uNywxLjI0Ni0uMjIxLDEuMDY4YTMxLjYzMSwzMS42MzEsMCwwLDEsMy44MTYtMS4xLDMwLjI5MiwzMC4yOTIsMCwwLDAtMS44NjUsNS42ODJjLS40NDEsMi40OTIsMS4xLDIuNDc4LDEuODU4LDEuNS44MTktMS4wNzUsMi41MjgtNC44NTYsMi43OTEtNS4yNTUuMDc4LS4xMzUuMTg1LS4wNjQuMTI4LjA1Ny0xLjkwOCwzLjgwOS0xLjc0NCw1LjI4My0uMiw0Ljk1NmE0LjkyOSw0LjkyOSwwLDAsMCwyLjIxNC0xLjk2NWMuMDY0LS4xNS4yLS4xMzUuMTcxLS4wNzEtMS4yMSwzLjE0LTIuNzQ4LDUuNjgyLTMuNzgxLDYuNDc5LS45NC43MTktMS42MzgtLjg0LDEuNjg3LTMuMDc2LjQ5MS0uMzM1LjI2My0uNzktLjI5Mi0uNjM0aDBhMjkuNzkzLDI5Ljc5MywwLDAsMC04Ljc4NiwzLjMyNWMtLjE2NC4xMTQtLjMxMy4yMDYtLjMwNi40NDEuMDA3LjEzNS4yNDIuMDg1LjM1Ni4wMTRBMjIuNzcxLDIyLjc3MSwwLDAsMSwxMS4xLDIwLjlhLjE1OC4xNTgsMCwwLDAsLjExNC4wMDdjLjEyMS0uMDI4LjExNC4wMzYuMDM2LjA4NS0uMTc4LjEtLjM1Ni4xOTItLjQuMjA2LTEuNzY2LjY5MS0yLjgzNCwyLjIxNC0yLjQ1NiwyLjk5LjMyLjY2OSwyLjA1MS40MjcsMi44NjktLjAxNCwyLjAwOC0xLjA4OSwzLjQ2OC0zLjIyNSw0LjQ2NC02LjE3M0MxNi42LDE1LjM4NiwxNy42OTMsMTIuNDI0LDE3Ljk1LDEyLjMzOFpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTI5LjYyLDE4LjM2OWE0OC4xNDUsNDguMTQ1LDAsMCwwLTEzLjQyOS45NjhjLS45MjYuMjQyLS42NjkuNzMzLS4yLjY0MS4wMDcsMCwuMjA2LS4wNS4yMTQtLjA1YTQyLjI3OSw0Mi4yNzksMCwwLDEsMTIuMzc1LS4yNDJDMjkuMDE0LDE5Ljc2NSwzMC4zMTcsMTguNDYyLDI5LjYyLDE4LjM2OVpcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz48cGF0aCBkPVwiTTE4Ljg2MSwxNy45ODVjLjkxMS0uNDU2LDIuMjY0LTMuMjc1LDMuMTU0LTQuODIuMDY0LS4xMTQuMTc4LS4wMjEuMTE0LjA1Ny0yLjI1LDMuODczLTEuMyw0LjMyMi0uNDA2LDQuMjY1LDEuMTg5LS4wNzEsMi4yODYtMS43OCwyLjUyOC0yLjE2NS4xLS4xNS4xNTctLjAyOC4xLjA3OC0uMDU3LjE3OC0uMjYzLjQ5MS0uNDU2LjkxOS0uMjcxLjYwNS4wMTQuODQuMjQ5Ljk0Ny4zNy4xNzgsMS4zODEuMDY0LDEuNTM4LS41NTUtMS4wMTEtLjAyMSwxLjQxLTQuNzkyLDEuNjU5LTUuMDg0YTEuNzE4LDEuNzE4LDAsMCwwLTIuMi45NzVjLTEuMDE4LDIuMDE1LTEuODczLDMuNjM4LTIuNDA3LDMuNjY3LTEuMDQuMDU3LDEuMi00LjQ5MywxLjU1OS00LjYzNS0uMjIxLS4zMi0xLjYzOC0uMTg1LTIuNDI4LDEuMDQtLjI4NS40NDEtMi4wMjIsMy41MTctMi40NDksNC4wMjMtLjc1NS45LS44MTIuMTI4LS42LS43NjlhMTAuNTY5LDEwLjU2OSwwLDAsMSwuMzQ5LTEuMTMyLDUuMzI0LDUuMzI0LDAsMCwxLDEuMzYtMS44NDRjMi4yLTIuNDQyLDMuNDYtNC40MjIsMi45NjItNS4yLS40NDEtLjY5MS0xLjkxNS0uMzg0LTIuODYyLDEuMDQtMS43NDQsMi42MTMtMy4zNTQsNi4xOTUtMy41Niw3LjgzMlMxOC4wNTYsMTguMzgzLDE4Ljg2MSwxNy45ODVabS45MjYtNC43OTJjLjA3OC0uMTc4LjEyOC0uMjI4LjI2My0uNTI3aDBBMjQuOTM0LDI0LjkzNCwwLDAsMSwyMi40OTIsOC4yOGMuNDItLjQ0MSwxLjAxMS4xNTctLjA1NywxLjc5NGExNi40NjIsMTYuNDYyLDAsMCwxLTIuMTE1LDIuNjQydi4wMDdjLS4yLjIyMS0uMzc3LjQwNi0uNDU2LjUxM0MxOS44MDgsMTMuMzA3LDE5Ljc0NCwxMy4yOTIsMTkuNzg3LDEzLjE5M1pcIiBzdHlsZT1cImZpbGw6I2MyYzJjMlwiLz5gLFxuXHRcIlNWR1wiOiBgPHBhdGggZD1cIk03LjY3NCwxNC40ODhhMi4yMTgsMi4yMTgsMCwxLDAsMCwzLjEzN0gyNC4zMjZhMi4yMTgsMi4yMTgsMCwxLDAsMC0zLjEzN1pcIiBzdHlsZT1cImZpbGw6I2ZmYjEzYjtzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6My43MzAwMDAwMTkwNzM0OXB4XCIvPjxwYXRoIGQ9XCJNMTEuMjIyLDkuMDZBMi4yMTgsMi4yMTgsMCwxLDAsOSwxMS4yNzhMMjAuNzc4LDIzLjA1MkEyLjIxOCwyLjIxOCwwLDEsMCwyMywyMC44MzRaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2I7c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjMuNzMwMDAwMDE5MDczNDlweFwiLz48cGF0aCBkPVwiTTE3LjU2OCw3LjczYTIuMjE4LDIuMjE4LDAsMSwwLTMuMTM3LDBWMjQuMzgyYTIuMjE4LDIuMjE4LDAsMSwwLDMuMTM3LDBaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2I7c3Ryb2tlOiMwMDA7c3Ryb2tlLXdpZHRoOjMuNzMwMDAwMDE5MDczNDlweFwiLz48cGF0aCBkPVwiTTIzLDExLjI3OEEyLjIxOCwyLjIxOCwwLDEsMCwyMC43NzgsOS4wNkw5LDIwLjgzNGEyLjIxOCwyLjIxOCwwLDEsMCwyLjIxOCwyLjIxOFpcIiBzdHlsZT1cImZpbGw6I2ZmYjEzYjtzdHJva2U6IzAwMDtzdHJva2Utd2lkdGg6My43MzAwMDAwMTkwNzM0OXB4XCIvPjxwYXRoIGQ9XCJNNy42NzQsMTQuNDg4YTIuMjE4LDIuMjE4LDAsMSwwLDAsMy4xMzdIMjQuMzI2YTIuMjE4LDIuMjE4LDAsMSwwLDAtMy4xMzdaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2JcIi8+PHBhdGggZD1cIk0xMS4yMjIsOS4wNkEyLjIxOCwyLjIxOCwwLDEsMCw5LDExLjI3OEwyMC43NzgsMjMuMDUyQTIuMjE4LDIuMjE4LDAsMSwwLDIzLDIwLjgzNFpcIiBzdHlsZT1cImZpbGw6I2ZmYjEzYlwiLz48cGF0aCBkPVwiTTE3LjU2OCw3LjczYTIuMjE4LDIuMjE4LDAsMSwwLTMuMTM3LDBWMjQuMzgyYTIuMjE4LDIuMjE4LDAsMSwwLDMuMTM3LDBaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2JcIi8+PHBhdGggZD1cIk0yMywxMS4yNzhBMi4yMTgsMi4yMTgsMCwxLDAsMjAuNzc4LDkuMDZMOSwyMC44MzRhMi4yMTgsMi4yMTgsMCwxLDAsMi4yMTgsMi4yMThaXCIgc3R5bGU9XCJmaWxsOiNmZmIxM2JcIi8+PHBhdGggZD1cIk0yLDE2LjA1NkgzMFYyNS45NWE0LjAzNSw0LjAzNSwwLDAsMS00LjEwNiw0LjEwNkg2LjEwNkE0LjAzNSw0LjAzNSwwLDAsMSwyLDI1Ljk1WlwiLz48cGF0aCBkPVwiTTYuMiwyMy4wNDVBMy42MjgsMy42MjgsMCwxLDEsMTIuNCwyMC40OEgxMC4yN0ExLjUsMS41LDAsMSwwLDcuNywyMS41NDFoMGExLjYsMS42LDAsMCwwLDEuMDYyLjQ0MWgwYTQuMTE4LDQuMTE4LDAsMCwxLDIuNTY2LDEuMDYzaDBhMy42MjgsMy42MjgsMCwxLDEtNi4xOTQsMi41NjVINy4yNjRBMS41LDEuNSwwLDEsMCw5LjgzLDI0LjU1aDBhMS45NDgsMS45NDgsMCwwLDAtMS4wNjMtLjQ0aDBBNC40NjUsNC40NjUsMCwwLDEsNi4yLDIzLjA0NVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE5LjY1MSwxNi44NTIsMTcuMDg1LDI5LjI0SDE0Ljk2TDEyLjQsMTYuODUySDE0LjUybDEuNSw3LjI1NSwxLjUtNy4yNTVaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PHBhdGggZD1cIk0yMy4yOCwyMS45ODNoMy42Mjh2My42MjhoMGEzLjYyOCwzLjYyOCwwLDEsMS03LjI1NywwaDBWMjAuNDhoMGEzLjYyOCwzLjYyOCwwLDAsMSw3LjI1NywwSDI0Ljc4M2ExLjUsMS41LDAsMSwwLTMuMDA1LDB2NS4xM2gwYTEuNSwxLjUsMCwwLDAsMy4wMDUsMGgwdi0xLjVoLTEuNVYyMS45ODNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJTd2lmdFwiOiBgPGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPVwiYVwiIHgxPVwiLTEzNC40OTRcIiB5MT1cIi0xNzEuODJcIiB4Mj1cIi0xMzQuNDk3XCIgeTI9XCItMTcxLjg5XCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJtYXRyaXgoMjQwLCAwLCAwLCAtMjA1LjYsIDMyMjk1LCAtMzUzMTIuNTg1KVwiIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPjxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiI2Y4ODUzNVwiLz48c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiNmZDIyMjFcIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmZpbGVfdHlwZV9zd2lmdDwvdGl0bGU+PHBhdGggZD1cIk0xOS40MjIsNC4wMDdzNi4yMTcsMy41NTQsNy44NDQsOS4yYzEuNDY2LDUuMS4yOTIsNy41MzQuMjkyLDcuNTM0YTguOTE1LDguOTE1LDAsMCwxLDEuNzQyLDIuOCw0LjgyNSw0LjgyNSwwLDAsMSwuMjksNC40NTNzLS4xLTIuMDgtMy4yLTIuNTExYy0yLjg0MS0uNC0zLjg3NCwyLjM2Ni05LjMsMi4yMzJBMTguNDM1LDE4LjQzNSwwLDAsMSwyLDE5LjM1NEM0LjY1MSwyMC44LDguMTI0LDIzLjA0NSwxMi40NDksMjIuN3M1LjIyOC0xLjY3NCw1LjIyOC0xLjY3NEE2Ni45LDY2LjksMCwwLDEsNC44OTEsNy42NDNjMy40LDIuODQ1LDExLjgyMiw4LjUwNywxMS42MjYsOC4zNjNBNzUuODI2LDc1LjgyNiwwLDAsMSw4LjA5Miw2LjI0UzIwLjcyOCwxNi42MjksMjEuNzQ1LDE2LjU2M2MuNDE4LS44NjEsMi41NzktNS4zMTgtMi4zMjQtMTIuNTU3WlwiIHN0eWxlPVwiZmlsbDp1cmwoI2EpXCIvPmAsXG5cdFwiU3lzdGVtZCBjb25maWd1cmF0aW9uIGZpbGVcIjogYDxwYXRoIGQ9XCJNMiwxMnY4SDUuMjU2VjE4Ljc2OUgzLjNWMTMuMjMxSDUuMjU2VjEyWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMjYuNzQ0LDEydjEuMjMxSDI4Ljd2NS41MzhIMjYuNzQ0VjIwSDMwVjEyWlwiIHN0eWxlPVwiZmlsbDojZDJkMmQyXCIvPjxwYXRoIGQ9XCJNMTcuNjI4LDE2bDUuMjEtMi43Njl2NS41MzhaXCIgc3R5bGU9XCJmaWxsOiMzMGQ0NzVcIi8+PGVsbGlwc2UgY3g9XCIxMi4wOTNcIiBjeT1cIjE2XCIgcng9XCIyLjkzXCIgcnk9XCIyLjc2OVwiIHN0eWxlPVwiZmlsbDojMzBkNDc1XCIvPmAsXG5cdFwiVDQgdGVtcGxhdGluZ1wiOiBgPHBhdGggZD1cIk0xOS41NDUsNi4wMzVIMTMuMjdWMjRIOC4zVjYuMDM1SDIuMDU1VjJoMTcuNDlaXCIgc3R5bGU9XCJmaWxsOiMxZTg4ZTVcIi8+PHBhdGggZD1cIk0yNy41NjcsMTBWMjIuNjA4aDIuNFYyNS45aC0yLjRWMzBIMjMuNTUxVjI1LjlIMTQuODM0VjIyLjQ1NXExLjE1OC0xLjMsMi40LTIuODM4dDIuNC0zLjE3M3ExLjE1OC0xLjYzMiwyLjE1NS0zLjI4NUEzMi45MjUsMzIuOTI1LDAsMCwwLDIzLjQ4MSwxMFpNMTguNzgxLDIyLjYwOGg0Ljc3VjE1LjYyMXEtLjQ4OC45MDctMS4wNiwxLjgzNHQtMS4yLDEuODI3cS0uNjI4LjktMS4yNjksMS43NDNUMTguNzgxLDIyLjYwOFpcIiBzdHlsZT1cImZpbGw6IzFlODhlNVwiLz5gLFxuXHRcIlQ0IFRleHQgVGVtcGxhdGVzIChDIylcIjogYDxwYXRoIGQ9XCJNMTkuNTQ1LDYuMDM1SDEzLjI3VjI0SDguM1Y2LjAzNUgyLjA1NVYyaDE3LjQ5WlwiIHN0eWxlPVwiZmlsbDojMWU4OGU1XCIvPjxwYXRoIGQ9XCJNMjcuNTY3LDEwVjIyLjYwOGgyLjRWMjUuOWgtMi40VjMwSDIzLjU1MVYyNS45SDE0LjgzNFYyMi40NTVxMS4xNTgtMS4zLDIuNC0yLjgzOHQyLjQtMy4xNzNxMS4xNTgtMS42MzIsMi4xNTUtMy4yODVBMzIuOTI1LDMyLjkyNSwwLDAsMCwyMy40ODEsMTBaTTE4Ljc4MSwyMi42MDhoNC43N1YxNS42MjFxLS40ODguOTA3LTEuMDYsMS44MzR0LTEuMiwxLjgyN3EtLjYyOC45LTEuMjY5LDEuNzQzVDE4Ljc4MSwyMi42MDhaXCIgc3R5bGU9XCJmaWxsOiMxZTg4ZTVcIi8+YCxcblx0XCJUNCBUZXh0IFRlbXBsYXRlcyAoVkIpXCI6IGA8cGF0aCBkPVwiTTE5LjU0NSw2LjAzNUgxMy4yN1YyNEg4LjNWNi4wMzVIMi4wNTVWMmgxNy40OVpcIiBzdHlsZT1cImZpbGw6IzFlODhlNVwiLz48cGF0aCBkPVwiTTI3LjU2NywxMFYyMi42MDhoMi40VjI1LjloLTIuNFYzMEgyMy41NTFWMjUuOUgxNC44MzRWMjIuNDU1cTEuMTU4LTEuMywyLjQtMi44Mzh0Mi40LTMuMTczcTEuMTU4LTEuNjMyLDIuMTU1LTMuMjg1QTMyLjkyNSwzMi45MjUsMCwwLDAsMjMuNDgxLDEwWk0xOC43ODEsMjIuNjA4aDQuNzdWMTUuNjIxcS0uNDg4LjkwNy0xLjA2LDEuODM0dC0xLjIsMS44MjdxLS42MjguOS0xLjI2OSwxLjc0M1QxOC43ODEsMjIuNjA4WlwiIHN0eWxlPVwiZmlsbDojMWU4OGU1XCIvPmAsXG5cdFwiVGNsXCI6IGA8cGF0aCBkPVwiTTIxLjk0MiwyLjg3NmMuMDQsMi40NjgtLjAzMyw0LjkxLTIuMTY5LDcuMjNsLS4wNzkuMDg5aC4xMTlsLjg3My4wMTNjLTEuNDE4LDIuOTUtMi4zNDEsNS44OTItNC4zOCw4LjgzbC0uMDczLjEwNi4xMjYtLjAyMywxLjA3OC0uMmE1Ljg1MSw1Ljg1MSwwLDAsMS0zLjQ4NCwzLjY1Yy0uMzktNS40NTUsMi4zMzMtMTAuMjcsNC42NDUtMTUuMDcxbC4wMDctLjAxMy0uMDg2LS4wNmMtMy43ODYsNC4yMzMtNS40OTEsMTAuMi02LjEzNiwxNS4xMjdhNC41ODIsNC41ODIsMCwwLDEtMi4xNDUtMi45ODhsLjkuMzc3LjA5My4wNC0uMDItLjFjLS42ODEtMy4wMjguMzc2LTUuMiwxLjQtOC4wNTZsLjczNy40OTMuMDg2LjA2LDAtLjFjLS4wNTgtMi4zMiwxLjUtNC42NDksMy41NzctNi43MjdsLjI4OC43Ny4wNC4xLjA1Ni0uMS42MzEtMS4wNTEsMC0uMDA3QTYuMSw2LjEsMCwwLDEsMjEuOTQyLDIuODc2WlwiIHN0eWxlPVwiZmlsbDojYzNiMTVmXCIvPjxwYXRoIGQ9XCJNMjEuOTQ4LDIuODc1YTYuMTMxLDYuMTMxLDAsMCwwLTMuOTI2LDIuMzg4bDAsLjAwNy0uNjMxLDEuMDUxLS4wNTYuMS0uMDQtLjFMMTcsNS41NDRjLTIuMDcyLDIuMDc4LTMuNjM1LDQuNDA3LTMuNTc3LDYuNzI3bDAsLjEtLjA4Ni0uMDYtLjczNy0uNDkzYy0xLjAyNSwyLjg1Ni0yLjA4Myw1LjAyOS0xLjQsOC4wNTZsLjAyLjEtLjA5My0uMDQtLjg4Ni0uMzc0YzAsLjAxOC4wMDcuMDM1LjAxLjA1M2E0LjUzMyw0LjUzMywwLDAsMCwyLjEyNiwyLjkzMmMuMDUtLjM4MS4xMDUtLjc3MS4xNjktMS4xNjQtMS41NDMtMy42MTQtLjItNi4yNzEuNDA3LTguNjYxbC45MzkuNTQyYy0uMTMtMi4yMzgsMS4xODQtNC42NTEsMi44OTMtNi43NTdsLjUuODczQzE4LjU1NSw0Ljc2OSwxOS41NiwzLjcyLDIxLjk0OCwyLjg3NVpcIiBzdHlsZT1cImZpbGw6I2VmZjFjYjtzdHJva2U6I2VmZjFjYlwiLz48cGF0aCBkPVwiTTIyLjUxOCwybC0uMDU2LjAxYy0yLjA4Mi4zNjMtNC4xMjEsMS4xMjgtNS4wMTUsMi45NTlsLS4zNzctLjY1OC0uMDMzLS4wNi0uMDUuMDVhMjAuODUsMjAuODUsMCwwLDAtMi45MzksMy41QTUuOTM5LDUuOTM5LDAsMCwwLDEyLjgzNSwxMWwtLjUzMi0uNjY0LS4wNTMtLjA2Ni0uMDM2LjA3NmEyNy41MzUsMjcuNTM1LDAsMCwwLTEuNjkzLDQuNyw2LjczLDYuNzMsMCwwLDAtLjE1OSwzLjcxOWwtLjg3Ni0uNTA5LS4wNzMtLjA0My0uMDA3LjA4NmE1LjUyOSw1LjUyOSwwLDAsMCwyLjAxNyw0Ljg0M2wtLjk3Mi4yNDEtLjIuMDUuMi4wNTNhNC4yNTgsNC4yNTgsMCwwLDEsMS40NTUuNiwxLjMyNSwxLjMyNSwwLDAsMSwuNTE2LDEuM1YyOC4xbC4wMS4wMTMsMS4yMTcsMS43NDUuMS4xMzlWMjUuNzE5YTMuNDY2LDMuNDY2LDAsMCwxLC42MjEtMS40ODRBMS42MzksMS42MzksMCwwLDEsMTUuNSwyMy43bC4xODItLjAyMy0uMTY1LS4wNzYtLjY0MS0uM2E5LjExMiw5LjExMiwwLDAsMCwzLjY5My01LjMyMmwuMDItLjA4Ni0uMDgzLjAyMy0uNzkzLjIxNWExMS42NjksMTEuNjY5LDAsMCwwLDIuMDg5LTMuNUMyMC41MTIsMTMsMjEuMTgsMTEuMTY2LDIxLjcyOCw5LjdsLjAzLS4wNzktLjA4My4wMDctLjYxMi4wNDNhNi42NTUsNi42NTUsMCwwLDAsMS4zODItMy41MjcsMTcuMDM5LDE3LjAzOSwwLDAsMCwuMDc5LTQuMDg2Wm0tLjU3NS44NzZjLjA0LDIuNDY4LS4wMzMsNC45MS0yLjE2OSw3LjIzbC0uMDc5LjA4OWguMTE5bC44NzMuMDEzYy0xLjQxOCwyLjk1LTIuMzQxLDUuODkyLTQuMzgsOC44M2wtLjA3My4xMDYuMTI2LS4wMjMsMS4wNzgtLjJhNS44NTEsNS44NTEsMCwwLDEtMy40ODQsMy42NWMtLjM5LTUuNDU1LDIuMzMzLTEwLjI3LDQuNjQ1LTE1LjA3MWwuMDA3LS4wMTMtLjA4Ni0uMDZjLTMuNzg2LDQuMjMzLTUuNDkxLDEwLjItNi4xMzYsMTUuMTI3YTQuNTgyLDQuNTgyLDAsMCwxLTIuMTQ1LTIuOTg4bC45LjM3Ny4wOTMuMDQtLjAyLS4xYy0uNjgxLTMuMDI4LjM3Ni01LjIsMS40LTguMDU2bC43MzcuNDkzLjA4Ni4wNiwwLS4xYy0uMDU4LTIuMzIsMS41LTQuNjQ5LDMuNTc3LTYuNzI3bC4yODguNzcuMDQuMS4wNTYtLjEuNjMxLTEuMDUxLDAtLjAwN0E2LjEsNi4xLDAsMCwxLDIxLjk0MiwyLjg3NlpcIi8+YCxcblx0XCJUZW1wbGF0ZSBUb29sa2l0IDJcIjogYDxwYXRoIGQ9XCJNOC45MDcsMjMuMDIxSDguODc4YTMuMzA1LDMuMzA1LDAsMCwxLTIuMDExLS42NjFBMi41NjEsMi41NjEsMCwwLDEsNS44MywyMC4zMzRWMTYuMUg0LjI4OGEzLjA1LDMuMDUsMCwwLDEtMi43MzgtMS42OSwzLjMsMy4zLDAsMCwxLC40NDEtMy41MywyLjI2NSwyLjI2NSwwLDAsMSwxLjgxNS0uOWg5LjY1YTMuMDUsMy4wNSwwLDAsMSwyLjczOCwxLjY5LDMuMywzLjMsMCwwLDEtLjQ0MSwzLjUzLDIuMjY1LDIuMjY1LDAsMCwxLTEuODE1LjlIMTEuOTU1djQuMjMxYTIuNTYxLDIuNTYxLDAsMCwxLTEuMDM3LDIuMDI2QTMuMzA1LDMuMzA1LDAsMCwxLDguOTA3LDIzLjAyMVpNNC4yNjQsMTEuNjM2YTEuMzksMS4zOSwwLDAsMC0xLjM4OCwxLjM4OHYuMDMzYTEuMzksMS4zOSwwLDAsMCwxLjM4OCwxLjM4OEg3LjQ4N3Y1Ljg4MWMwLC41NzIuNjI0LDEuMDM3LDEuMzksMS4wMzdoLjAyOWMuNzY3LDAsMS4zOS0uNDY1LDEuMzktMS4wMzdWMTQuNDQ2aDMuMjIzYTEuMzksMS4zOSwwLDAsMCwxLjM4OC0xLjM4OHYtLjAzM2ExLjM5LDEuMzksMCwwLDAtMS4zODgtMS4zODhaXCIgc3R5bGU9XCJmaWxsOiMwMTVkOWFcIi8+PHBhdGggZD1cIk0xNC45ODEsMTIuOTUzdi4wMzNhMS41MzMsMS41MzMsMCwwLDEtMS41MzMsMS41MzNIMTAuMzd2NS43MzdhMS4zOTMsMS4zOTMsMCwwLDEtMS41MzUsMS4xODFIOC44MDZhMS4zOTMsMS4zOTMsMCwwLDEtMS41MzUtMS4xODFWMTQuNTE4SDQuMTkyQTEuNTMzLDEuNTMzLDAsMCwxLDIuNjYsMTIuOTg2di0uMDMzQTEuNTMzLDEuNTMzLDAsMCwxLDQuMTkyLDExLjQyaDkuMjU3QTEuNTMzLDEuNTMzLDAsMCwxLDE0Ljk4MSwxMi45NTNabS00LjIyMyw5LjIyMmEyLjQxOCwyLjQxOCwwLDAsMCwuOTgtMS45MTJWMTUuODg4aDIuMTI3YTIuMTE0LDIuMTE0LDAsMCwwLDEuNy0uODQ2LDIuOTkyLDIuOTkyLDAsMCwwLTIuMTgtNC45OUgzLjczNWEyLjExNCwyLjExNCwwLDAsMC0xLjcuODQ2LDIuOTkyLDIuOTkyLDAsMCwwLDIuMTgsNC45OUg1Ljl2NC4zNzVhMi40MTgsMi40MTgsMCwwLDAsLjk4LDEuOTEyLDMuMTYsMy4xNiwwLDAsMCwxLjkyMy42MzFoLjAyOUEzLjE2LDMuMTYsMCwwLDAsMTAuNzU4LDIyLjE3NFpcIiBzdHlsZT1cImZpbGw6IzNiY2VmY1wiLz48cGF0aCBkPVwiTTIzLjYwNywyMy4wMjFoLS4wMjlhMy4zMDUsMy4zMDUsMCwwLDEtMi4wMTEtLjY2MSwyLjU2MSwyLjU2MSwwLDAsMS0xLjAzNy0yLjAyNlYxNi4xSDE4Ljk4OGEzLjA1LDMuMDUsMCwwLDEtMi43MzgtMS42OSwzLjMsMy4zLDAsMCwxLC40NDEtMy41MywyLjI2NSwyLjI2NSwwLDAsMSwxLjgxNS0uOWg5LjY1YTMuMDUsMy4wNSwwLDAsMSwyLjczOCwxLjY5LDMuMywzLjMsMCwwLDEtLjQ0MSwzLjUzLDIuMjY1LDIuMjY1LDAsMCwxLTEuODE1LjlIMjYuNjU1djQuMjMxYTIuNTYxLDIuNTYxLDAsMCwxLTEuMDM3LDIuMDI2QTMuMzA1LDMuMzA1LDAsMCwxLDIzLjYwNywyMy4wMjFaTTE4Ljk2NCwxMS42MzZhMS4zOSwxLjM5LDAsMCwwLTEuMzg4LDEuMzg4di4wMzNhMS4zOSwxLjM5LDAsMCwwLDEuMzg4LDEuMzg4aDMuMjIzdjUuODgxYzAsLjU3Mi42MjQsMS4wMzcsMS4zOSwxLjAzN2guMDI5Yy43NjcsMCwxLjM5LS40NjUsMS4zOS0xLjAzN1YxNC40NDZoMy4yMjNhMS4zOSwxLjM5LDAsMCwwLDEuMzg4LTEuMzg4di0uMDMzYTEuMzksMS4zOSwwLDAsMC0xLjM4OC0xLjM4OFpcIiBzdHlsZT1cImZpbGw6IzAxNWQ5YVwiLz48cGF0aCBkPVwiTTI5LjY4MSwxMi45NTN2LjAzM2ExLjUzMywxLjUzMywwLDAsMS0xLjUzMywxLjUzM0gyNS4wN3Y1LjczN2ExLjM5MywxLjM5MywwLDAsMS0xLjUzNSwxLjE4MWgtLjAyOWExLjM5MywxLjM5MywwLDAsMS0xLjUzNS0xLjE4MVYxNC41MThIMTguODkyYTEuNTMzLDEuNTMzLDAsMCwxLTEuNTMzLTEuNTMzdi0uMDMzYTEuNTMzLDEuNTMzLDAsMCwxLDEuNTMzLTEuNTMzaDkuMjU3QTEuNTMzLDEuNTMzLDAsMCwxLDI5LjY4MSwxMi45NTNabS00LjIyMyw5LjIyMmEyLjQxOCwyLjQxOCwwLDAsMCwuOTgtMS45MTJWMTUuODg4aDIuMTI3YTIuMTE0LDIuMTE0LDAsMCwwLDEuNy0uODQ2LDIuOTkyLDIuOTkyLDAsMCwwLTIuMTgtNC45OWgtOS42NWEyLjExNCwyLjExNCwwLDAsMC0xLjcuODQ2LDIuOTkyLDIuOTkyLDAsMCwwLDIuMTgsNC45OUgyMC42djQuMzc1YTIuNDE4LDIuNDE4LDAsMCwwLC45OCwxLjkxMiwzLjE2LDMuMTYsMCwwLDAsMS45MjMuNjMxaC4wMjlBMy4xNiwzLjE2LDAsMCwwLDI1LjQ1OCwyMi4xNzRaXCIgc3R5bGU9XCJmaWxsOiMzYmNlZmNcIi8+YCxcblx0XCJUZVhcIjogYDxwYXRoIGQ9XCJNMTEuMzMzLDEzLjEyMmMtLjEyOC0xLjU2Mi0uMjQxLTIuNzU2LTIuMjg3LTIuNzU2SDcuOTF2OC40aDIuMTQ1di42MTFsLTMuMDgzLS4wMjktMy4wODIuMDI5di0uNjExSDYuMDM0di04LjRINC44ODRjLTIuMDQ2LDAtMi4xNTksMS4yMDgtMi4yODcsMi43NTZIMmwuMjg0LTMuMzY3aDkuMzYybC4yODQsMy4zNjdoLS42WlwiIHN0eWxlPVwiZmlsbDojY2ZjZmNmXCIvPjxwYXRoIGQ9XCJNMTkuMjg5LDIyLjUzSDEwLjQxVjIxLjkyaDEuNTA2VjEzLjQ2N0gxMC40MXYtLjYxMWg4LjYzN2wuNDEyLDMuMzY3aC0uNmMtLjIxMy0xLjgzMy0uNjgyLTIuNzU2LTIuODU1LTIuNzU2SDEzLjc5MVYxNy4yaC44MzhjMS4zNjQsMCwxLjUwNS0uNiwxLjUwNS0xLjY2MmguNnYzLjkzNWgtLjZjMC0xLjA4LS4xNDItMS42NjItMS41MDUtMS42NjJoLS44Mzh2NC4xMDZoMi4yMTZjMi40NzIsMCwzLTEuMTA4LDMuMy0zLjIyNWguNlpcIiBzdHlsZT1cImZpbGw6I2NmY2ZjZlwiLz48cGF0aCBkPVwiTTI3LjcyNywxOS4xODZjLS41NCwwLTEuOTYsMC0yLjQxNS4wMjlWMTguNmgxLjE3OWwtMi41NTctMy41NTItMi41MjksMy4zODFBNC4xLDQuMSwwLDAsMCwyMi43LDE4LjZ2LjYxMWMtLjM1NS0uMDI5LTEuNTc2LS4wMjktMi4wMTctLjAyOS0uNCwwLTEuNTQ4LDAtMS44NzUuMDI5VjE4LjZoLjM4M2E3LjQ1OSw3LjQ1OSwwLDAsMCwuODI0LS4wNDNjLjUtLjA0My41NC0uMDg1LjY2Ny0uMjU2TDIzLjUzNiwxNC41bC0zLjE1My00LjQxOEgxOVY5LjQ3Yy4zODQuMDI4LDEuNzkuMDI4LDIuMjczLjAyOC41ODIsMCwxLjkxOCwwLDIuNDI5LS4wMjh2LjYxMUgyMi41MjhsMi4xMTcsMi45NTUsMi4wNzQtMi43ODRhNC4xLDQuMSwwLDAsMC0xLjI5My0uMTdWOS40N2MuMzU2LjAyOCwxLjU5MS4wMjgsMi4wMzIuMDI4LjQsMCwxLjUzNCwwLDEuODYxLS4wMjh2LjYxMWgtLjM2OWE1LjI2NCw1LjI2NCwwLDAsMC0uODM4LjA0M2MtLjQ2OS4wNDMtLjUyNi4wNzEtLjY2Ny4yNTZsLTIuNCwzLjIxTDI4LjYzNiwxOC42SDMwdi42MTFDMjkuNjQ1LDE5LjE4NiwyOC4xODIsMTkuMTg2LDI3LjcyNywxOS4xODZaXCIgc3R5bGU9XCJmaWxsOiNjZmNmY2ZcIi8+YCxcblx0XCJUZXh0aWxlXCI6IGA8cGF0aCBkPVwiTTI4LjY4MSwyNi4wNzVIMy4zMTlBMS4zMTcsMS4zMTcsMCwwLDEsMiwyNC43NTZWNy4yNDRBMS4zMTcsMS4zMTcsMCwwLDEsMy4zMTksNS45MjVIMjguNjgxQTEuMzE3LDEuMzE3LDAsMCwxLDMwLDcuMjQ0VjI0Ljc2QTEuMzE2LDEuMzE2LDAsMCwxLDI4LjY4MSwyNi4wNzVaXCIgc3R5bGU9XCJmaWxsOiNmZmU3YWNcIi8+PHBhdGggZD1cIk02LjA2NiwxMi44NDhhNC45ODcsNC45ODcsMCwwLDEsMS41MDgtLjY1OVYxMC42NjRhMy43LDMuNywwLDAsMSwuNzQzLS4zMyw3Ljg2OSw3Ljg2OSwwLDAsMSwxLjMyNy0uMzQ3aC42NDJ2Mi4zOTFoMi40ODRWMTMuNkgxMC4yODZ2NC44NDhhMy4xNzIsMy4xNzIsMCwwLDAsLjI5LDEuNjA5LDEuMDcsMS4wNywwLDAsMCwuOTcxLjQ0OCw3LjEyNyw3LjEyNywwLDAsMCwuNzYtLjA0OCwzLjMzOCwzLjMzOCwwLDAsMCwuNzgyLS4xOGwuMTMyLjYyYTIuMzg4LDIuMzg4LDAsMCwxLS41LjM1Niw1LjQ1Nyw1LjQ1NywwLDAsMS0uNzUyLjM1Niw1LjgzNyw1LjgzNywwLDAsMS0uOTIzLjI4MUE0Ljc2OSw0Ljc2OSwwLDAsMSwxMCwyMmEyLjM4NSwyLjM4NSwwLDAsMS0xLjgyNC0uNjM3LDIuOTQ3LDIuOTQ3LDAsMCwxLS42LTIuMDYyVjEzLjU5MUg2LjA2NlpcIi8+PHBhdGggZD1cIk0xNC42MDcsMjAuNDUzYTEuNDQ3LDEuNDQ3LDAsMCwxLC40MzEtMS4wOSwxLjU5MSwxLjU5MSwwLDAsMSwxLjE0Ny0uNDEzLDEuNjQ5LDEuNjQ5LDAsMCwxLDEuMTY1LjQxMywxLjQyMiwxLjQyMiwwLDAsMSwuNDUzLDEuMDksMS4zNjksMS4zNjksMCwwLDEtLjQ1MywxLjA4MSwxLjY5MiwxLjY5MiwwLDAsMS0xLjE2NS40LDEuNjEsMS42MSwwLDAsMS0xLjE0Ny0uNEExLjQyNywxLjQyNywwLDAsMSwxNC42MDcsMjAuNDUzWlwiLz5gLFxuXHRcIlRPTUxcIjogYDxwYXRoIGQ9XCJNMjIuNzYsNi44M3YzLjI1aC01VjI1LjE3SDE0LjI2VjEwLjA4aC01VjYuODNaXCIgc3R5bGU9XCJmaWxsOiM3ZjdmN2ZcIi8+PHBhdGggZD1cIk0yLDJIOC4yVjUuMDlINS4zNHYyMS44SDguMlYzMEgyWlwiIHN0eWxlPVwiZmlsbDojYmZiZmJmXCIvPjxwYXRoIGQ9XCJNMzAsMzBIMjMuOFYyNi45MWgyLjg2VjUuMTFIMjMuOFYySDMwWlwiIHN0eWxlPVwiZmlsbDojYmZiZmJmXCIvPmAsXG5cdFwiVFNDb25maWdcIjogYDxwYXRoIGQ9XCJNMjMuODI3LDguMjQzQTQuNDI0LDQuNDI0LDAsMCwxLDI2LjA1LDkuNTI0YTUuODUzLDUuODUzLDAsMCwxLC44NTIsMS4xNDNjLjAxMS4wNDUtMS41MzQsMS4wODMtMi40NzEsMS42NjItLjAzNC4wMjMtLjE2OS0uMTI0LS4zMjItLjM1YTIuMDE0LDIuMDE0LDAsMCwwLTEuNjctMWMtMS4wNzctLjA3NC0xLjc3MS40OS0xLjc2NiwxLjQzM2ExLjMsMS4zLDAsMCwwLC4xNTMuNjY2Yy4yMzcuNDkuNjc3Ljc4NCwyLjA1OSwxLjM4MywyLjU0NCwxLjEsMy42MzYsMS44MTcsNC4zMSwyLjg0M2E1LjE1OCw1LjE1OCwwLDAsMSwuNDE2LDQuMzMzLDQuNzY0LDQuNzY0LDAsMCwxLTMuOTMyLDIuODE1LDEwLjksMTAuOSwwLDAsMS0yLjcwOC0uMDI4LDYuNTMxLDYuNTMxLDAsMCwxLTMuNjE2LTEuODg0LDYuMjc4LDYuMjc4LDAsMCwxLS45MjYtMS4zNzEsMi42NTUsMi42NTUsMCwwLDEsLjMyNy0uMjA4Yy4xNTgtLjA5Ljc1Ni0uNDM0LDEuMzItLjc2MWwxLjAyNC0uNi4yMTQuMzEyYTQuNzcxLDQuNzcxLDAsMCwwLDEuMzUsMS4yOTIsMy4zLDMuMywwLDAsMCwzLjQ1OC0uMTc1LDEuNTQ1LDEuNTQ1LDAsMCwwLC4yLTEuOTc0Yy0uMjc2LS40LS44NC0uNzI3LTIuNDQzLTEuNDIyYTguOCw4LjgsMCwwLDEtMy4zNDktMi4wNTUsNC42ODcsNC42ODcsMCwwLDEtLjk3Ni0xLjc3Nyw3LjExNiw3LjExNiwwLDAsMS0uMDYyLTIuMjY4LDQuMzMyLDQuMzMyLDAsMCwxLDMuNjQ0LTMuMzc0QTksOSwwLDAsMSwyMy44MjcsOC4yNDNaTTE1LjQ4NCw5LjcyNmwuMDExLDEuNDU0aC00LjYzVjI0LjMyOEg3LjZWMTEuMTgzSDIuOTdWOS43NTVhMTMuOTg2LDEzLjk4NiwwLDAsMSwuMDQtMS40NjZjLjAxNy0uMDIzLDIuODMyLS4wMzQsNi4yNDUtLjAyOGw2LjIxMS4wMTdaXCIgc3R5bGU9XCJmaWxsOiMwMDdhY2NcIi8+PHBhdGggZD1cIk0yNy4wNzUsMjUuMTA3bC4zNjMtLjM2MWMxLjY4LjA1NSwxLjcwNiwwLDEuNzgtLjE3N2wuNDYyLTEuMTI0LjAzNC0uMTA3LS4wMzgtLjA5M2MtLjAyLS4wNDktLjA4MS0uMi0xLjEzLTEuMnYtLjUyNmMxLjIxMS0xLjE2NiwxLjE4NS0xLjIyNiwxLjExNi0xLjRsLS40Ni0xLjEzNmMtLjA2OS0uMTctLjEtLjIzNy0xLjc2My0uMTkxbC0uMzY0LS4zNjdhOC4xMzgsOC4xMzgsMCwwLDAtLjA1Ny0xLjY1N2wtLjA0Ny0uMTA2LTEuMi0uNTI1Yy0uMTc3LS4wODEtLjIzOS0uMTEtMS4zNzIsMS4xMjRsLS41MDktLjAwOGMtMS4xNjctMS4yNDUtMS4yMjItMS4yMjMtMS40LTEuMTUybC0xLjExNS40NTJjLS4xNzUuMDcxLS4yMzYuMS0uMTY5LDEuNzlsLS4zNi4zNTljLTEuNjgtLjA1NS0xLjcsMC0xLjc3OC4xNzdMMTguNjA2LDIwbC0uMDM2LjEwOC4wMzguMDk0Yy4wMi4wNDguMDc4LjE5NCwxLjEzLDEuMnYuNTI1Yy0xLjIxMSwxLjE2Ni0xLjE4NCwxLjIyNi0xLjExNSwxLjRsLjQ1OSwxLjEzN2MuMDcuMTc0LjEuMjM2LDEuNzYzLjE5MmwuMzYzLjM3N2E4LjE2OSw4LjE2OSwwLDAsMCwuMDU1LDEuNjU0bC4wNDcuMTA3LDEuMjA4LjUyOGMuMTc2LjA3My4yMzYuMSwxLjM2Ni0xLjEzbC41MDkuMDA2YzEuMTY4LDEuMjQ3LDEuMjI4LDEuMjIzLDEuNCwxLjE1NGwxLjExMy0uNDVDMjcuMDgyLDI2LjgyNywyNy4xNDMsMjYuOCwyNy4wNzUsMjUuMTA3Wm0tNC43ODgtMi42MzJhMiwyLDAsMSwxLDIuNjE4LDEuMTRBMi4wMjMsMi4wMjMsMCwwLDEsMjIuMjg3LDIyLjQ3NVpcIiBzdHlsZT1cImZpbGw6Izk5YjhjNFwiLz5gLFxuXHRcIlR3aWdcIjogYDxwYXRoIGQ9XCJNNC41NzQsNS40NjNjLjI2Mi40LDIuNS0xLjYwOCw0LjQ1NC0xLjE2MSwyLjA2MS40NzIsNC4wMTQsMy43MjQsNC44NDgsMTMuN2E0MC4xOCw0MC4xOCwwLDAsMSwzLjU0MSwzLjYxcS41My42MTQsMS4wMTMsMS4yMmExMS44NDcsMTEuODQ3LDAsMCwxLC4yMjktMS40LDEyLjMsMTIuMywwLDAsMSwxLjk4MS00LjRBMTkuMTUxLDE5LjE1MSwwLDAsMCwxNy4yNzIsNy45Yy0xLjAzLTEuNDQ1LTQuNi02LjQ3OC04LjU0Ni01Ljg0M0M2LjE4MiwyLjQ2NSw0LjMsNS4wNTQsNC41NzQsNS40NjNaXCIgc3R5bGU9XCJmaWxsOiM2M2JmNmFcIi8+PHBhdGggZD1cIk0yNC40LDMwYy0uMzItMi41NjctLjQ0OC00Ljc2LS41LTYuNDQ5LS4wOTQtMy4yMzIuMS00LjU0MS45LTUuNzU2LjE5My0uMjk1LDEuMjg4LTEuOTc1LDIuNTgtMS44NjMsMS40NjYuMTI4LDIuMjEzLDIuNDE0LDIuMzYyLDIuMzM3LjE3NS0uMDktLjM2LTMuNTQzLTIuNTMyLTQuNDMxLTIuNi0xLjA2My02LjMxMiwyLjA3LTcuOCw1LjE1NGExMi4yMjMsMTIuMjIzLDAsMCwwLS44NTcsMi44MSwzMi41NTUsMzIuNTU1LDAsMCwwLS43MSw4LjJaXCIgc3R5bGU9XCJmaWxsOiM3NGQ3NGRcIi8+PHBhdGggZD1cIk0yLjIzOCwxMy45MzVjLjE0NS0uNDQ3LDIuNDY4LS4yNTksNC41NC4yOTMsMi41LjY2Niw3LDIuMzQ0LDExLjY1MSw4LjYwNkExMi41NDQsMTIuNTQ0LDAsMCwxLDIwLjI3OSwzMEgxMC4zODZhMjEuODc1LDIxLjg3NSwwLDAsMC0uMTc1LTQuNjIsMTQuOSwxNC45LDAsMCwwLTIuNDU5LTcuMTU4QzUuNDQxLDE1LjE1OSwyLjA1NSwxNC41LDIuMjM4LDEzLjkzNVpcIiBzdHlsZT1cImZpbGw6Izc4ZGM1MFwiLz48cGF0aCBkPVwiTTE3LjMsMjEuMzIzYTEuNzUzLDEuNzUzLDAsMSwxLS41MTMtMS4yNEExLjc0OCwxLjc0OCwwLDAsMSwxNy4zLDIxLjMyM1pcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTIxLjk3NSwyMS4zMjNhMS43NTMsMS43NTMsMCwxLDEtLjUxMy0xLjI0QTEuNzQ4LDEuNzQ4LDAsMCwxLDIxLjk3NSwyMS4zMjNaXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJUeXBlU2NyaXB0XCI6IGA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI4XCIgcng9XCIxLjMxMlwiIHN0eWxlPVwiZmlsbDojMzE3OGM2XCIvPjxwYXRoIGQ9XCJNMTguMjQ1LDIzLjc1OXYzLjA2OGE2LjQ5Miw2LjQ5MiwwLDAsMCwxLjc2NC41NzUsMTEuNTYsMTEuNTYsMCwwLDAsMi4xNDYuMTkyLDkuOTY4LDkuOTY4LDAsMCwwLDIuMDg4LS4yMTEsNS4xMSw1LjExLDAsMCwwLDEuNzM1LS43LDMuNTQyLDMuNTQyLDAsMCwwLDEuMTgxLTEuMjY2LDQuNDY5LDQuNDY5LDAsMCwwLC4xODYtMy4zOTQsMy40MDksMy40MDksMCwwLDAtLjcxNy0xLjExNyw1LjIzNiw1LjIzNiwwLDAsMC0xLjEyMy0uODc3LDEyLjAyNywxMi4wMjcsMCwwLDAtMS40NzctLjczNHEtLjYtLjI0OS0xLjA4LS40ODRhNS41LDUuNSwwLDAsMS0uODEzLS40NzksMi4wODksMi4wODksMCwwLDEtLjUxNi0uNTE4LDEuMDkxLDEuMDkxLDAsMCwxLS4xODEtLjYxOCwxLjAzOSwxLjAzOSwwLDAsMSwuMTYyLS41NzEsMS40LDEuNCwwLDAsMSwuNDU5LS40MzYsMi40MzksMi40MzksMCwwLDEsLjcyNi0uMjgzLDQuMjExLDQuMjExLDAsMCwxLC45NTYtLjEsNS45NDIsNS45NDIsMCwwLDEsLjgwOC4wNTgsNi4yOTIsNi4yOTIsMCwwLDEsLjg1Ni4xNzcsNS45OTQsNS45OTQsMCwwLDEsLjgzNi4zLDQuNjU3LDQuNjU3LDAsMCwxLC43NTEuNDIyVjEzLjlhNy41MDksNy41MDksMCwwLDAtMS41MjUtLjQsMTIuNDI2LDEyLjQyNiwwLDAsMC0xLjktLjEyOSw4Ljc2Nyw4Ljc2NywwLDAsMC0yLjA2NC4yMzUsNS4yMzksNS4yMzksMCwwLDAtMS43MTYuNzMzLDMuNjU1LDMuNjU1LDAsMCwwLTEuMTcxLDEuMjcxLDMuNzMxLDMuNzMxLDAsMCwwLS40MzEsMS44NDUsMy41ODgsMy41ODgsMCwwLDAsLjc4OSwyLjM0LDYsNiwwLDAsMCwyLjM5NSwxLjYzOXEuNjMuMjYsMS4xNzUuNTA5YTYuNDU4LDYuNDU4LDAsMCwxLC45NDIuNTE3LDIuNDYzLDIuNDYzLDAsMCwxLC42MjYuNTg1LDEuMiwxLjIsMCwwLDEsLjIzLjcxOSwxLjEsMS4xLDAsMCwxLS4xNDQuNTUyLDEuMjY5LDEuMjY5LDAsMCwxLS40MzUuNDQxLDIuMzgxLDIuMzgxLDAsMCwxLS43MjYuMjkyLDQuMzc3LDQuMzc3LDAsMCwxLTEuMDE4LjEwNSw1Ljc3Myw1Ljc3MywwLDAsMS0xLjk2OS0uMzVBNS44NzQsNS44NzQsMCwwLDEsMTguMjQ1LDIzLjc1OVptLTUuMTU0LTcuNjM4aDRWMTMuNTk0SDUuOTM4djIuNTI3SDkuOTJWMjcuMzc1aDMuMTcxWlwiIHN0eWxlPVwiZmlsbDojZmZmO2ZpbGwtcnVsZTpldmVub2RkXCIvPmAsXG5cdFwiVHlwb1NjcmlwdFwiOiBgPHBhdGggZD1cIk0yMy4wOTMsMjEuM2EzLjg0NywzLjg0NywwLDAsMS0xLjE4LjE2NWMtMy41NTUsMC04Ljc3OC0xMi40MjQtOC43NzgtMTYuNTU5LDAtMS41MjMuMzYyLTIuMDMxLjg3LTIuNDY2QzkuNjUzLDIuOTQzLDQuNDMsNC41MzksMi43NjEsNi41N2E0LjA0OCw0LjA0OCwwLDAsMC0uNTgsMi4zMjFDMi4xODEsMTUuMzQ4LDkuMDcyLDMwLDEzLjkzMywzMGMyLjI0OCwwLDYuMDQxLTMuNyw5LjE2LTguN1wiIHN0eWxlPVwiZmlsbDojZmY4NzAwXCIvPjxwYXRoIGQ9XCJNMjAuODIzLDJjNC41LDAsOSwuNzI1LDksMy4yNjQsMCw1LjE1MS0zLjI2NCwxMS4zODktNC45MzMsMTEuMzg5LTIuOTc0LDAtNi42NzMtOC4yNjktNi42NzMtMTIuNCwwLTEuODg2LjcyNS0yLjI0OSwyLjYxMS0yLjI0OVwiIHN0eWxlPVwiZmlsbDojZmY4NzAwXCIvPmAsXG5cdFwiVlwiOiBgPHBhdGggZD1cIk0yMC40NjcsMjkuMjg4LDI5Ljk1MiwyLjkxM2EuNS41LDAsMCwwLS41NjYtLjcyOEwyMS45MjcsMi45YTEuNDY0LDEuNDY0LDAsMCwwLTEuMTQxLjlMMTIuMDA3LDI5LjAwNmEuNTczLjU3MywwLDAsMCwuNTc4LjgxM2g3LjI2YS42NTcuNjU3LDAsMCwwLC41NzctLjRaXCIgc3R5bGU9XCJmaWxsOiM1MzZiOGFcIi8+PHBhdGggZD1cIk0yLjYxNCwyLjE4NWw3LjQ1OS43MTlhMS40NjYsMS40NjYsMCwwLDEsMS4xNDIuOUwyMC4xOCwyOS40MTNhLjI4Ni4yODYsMCwwLDEtLjI4OS40MDZIMTIuNTg1YTEuMzExLDEuMzExLDAsMCwxLTEuMTUyLS44MUwyLjA0OCwyLjkxM0EuNS41LDAsMCwxLDIuNjE0LDIuMTg1WlwiIHN0eWxlPVwiZmlsbDojNWQ4N2JmXCIvPmAsXG5cdFwiVmFsYVwiOiBgPHBhdGggZD1cIk0xMi41MDksMTcuMTkzYy0uMTY1LTYuODM2LS4zMjUtMTIuNDU1LS4zNTctMTIuNDg3QTcuOTE2LDcuOTE2LDAsMCwwLDkuODc5LDUuODc0LDcuNjA2LDcuNjA2LDAsMCwwLDcuMzI0LDkuMTg4YTguNDIyLDguNDIyLDAsMCwwLS41ODcsMy41NDMsNC42NjUsNC42NjUsMCwwLDAsLjIsMS45NjIsMy40MTcsMy40MTcsMCwwLDEsLjE4Mi41NmMtLjAxMi4wMDktLjMzOC0uMDE4LS43MjQtLjA2MS0xLjg2OC0uMjA3LTIuNzg2LTEuMDUtMy0yLjc1N0E2LjMxMiw2LjMxMiwwLDAsMSw0Ljg1LDcuNzE5YTE1LjEzNCwxNS4xMzQsMCwwLDEsOC40MTQtNS4xNjMsMTIuODkxLDEyLjg5MSwwLDAsMSwyLjU0Mi0uMjM1bDEuNzQ4LS4wNS4wNTksMi41MDZjLjAzMiwxLjM3OC4xLDYuMzU4LjE2MSwxMS4wNjdzLS4yNTIsOC4yOS0uMjE5LDguNEMxOS41LDE3Ljg3OSwyMiwxMy4wNzMsMjQuMzY3LDYuMjUzbDEuNDI3LTMuOTgzSDI4LjU0Yy0uMDIyLjA2My0yLjc1MSw2LjUtNS41MTQsMTMuOTE2bC01LjQ3MywxMy41NUgxMi45NzZDMTIuOTc2LDI3LjkwNiwxMi41MzUsMTguNDg2LDEyLjUwOSwxNy4xOTNaXCIgc3R5bGU9XCJmaWxsOiM0MDM3NTdcIi8+PHBhdGggZD1cIk0xNy43MzIsMzBIMTIuNzEzdi0uMjYzYzAtMS4xMzctLjE3LTUuMTkyLS4zMDctOC40NTItLjA4MS0xLjkyOS0uMTUtMy42LS4xNjEtNC4wODctLjE1Ni02LjQ3OS0uMjg2LTExLS4zMzYtMTIuMTYzYTExLjY3NCwxMS42NzQsMCwwLDAtMS44NzQsMS4wNDksNy4zNDgsNy4zNDgsMCwwLDAtMi40NjYsMy4yQTguMTQ2LDguMTQ2LDAsMCwwLDcsMTIuNzMxLDQuMzcsNC4zNywwLDAsMCw3LjE4NSwxNC42Yy4yMTUuNTY5LjI3My43MjMuMS44NTktLjA5My4wNzMtLjEwNy4wODQtLjkxNi0uMDA3LTEuOTc2LS4yMTktMy0xLjE2Ny0zLjIzNC0yLjk4NkE2LjU2OCw2LjU2OCwwLDAsMSw0LjY0LDcuNTYxLDE1LjQzOSwxNS40MzksMCwwLDEsMTMuMiwyLjMsMTMuMTc2LDEzLjE3NiwwLDAsMSwxNS44LDIuMDU4TDE3LjgxMSwybC4wNjUsMi43N2MuMDMyLDEuMzkyLjEwNiw2LjQ2MS4xNjEsMTEuMDcuMDMxLDIuNjE2LS4wNTIsNC45MTUtLjEyNCw2LjQzLjkzMS0yLjc2MywxLjk1OC01LjI3LDMuMDMzLTcuOSwxLjA0My0yLjU0NywyLjEyMi01LjE4LDMuMTczLTguMjA3bDEuNDkxLTQuMTZoMy4zbC0uMTI1LjM1MWMwLC4wMDctLjAzMS4wNzYtLjA4NC4yLTEuMSwyLjYyMi0zLjI1OSw3Ljg4OS01LjQzLDEzLjcxN1ptLTQuNDk1LS41MjZoNC4xNGw1LjQwNy0xMy4zODZjMi4xMjQtNS43LDQuMjQzLTEwLjg3Niw1LjM2Mi0xMy41NTVIMjUuOTc5TDI0LjYxNCw2LjM0MmMtMS4wNTUsMy4wMzgtMi4xMzcsNS42NzgtMy4xODMsOC4yMzEtMS4zMTEsMy4yLTIuNTUsNi4yMjYtMy42MjYsOS43NDdsLS4yNTUuODMxLS4yNDgtLjgzM2EzLjI3NCwzLjI3NCwwLDAsMSwuMDIxLS44MzljLjA3NC0xLjM1LjIyOS00LjE1OC4xODgtNy42MzMtLjA1NS00LjYwNy0uMTI5LTkuNjc0LS4xNjEtMTEuMDY0TDE3LjMsMi41NDFsLTEuNDg0LjA0M2ExMi43MjksMTIuNzI5LDAsMCwwLTIuNDkuMjI4QTE0Ljg4NywxNC44ODcsMCwwLDAsNS4wNiw3Ljg3N2E2LjA3MSw2LjA3MSwwLDAsMC0xLjQsNC41MjRjLjIsMS41OCwxLjAyOCwyLjMzNiwyLjc3LDIuNTI5bC4zMzMuMDM1Yy0uMDE5LS4wNTQtLjA0MS0uMTE0LS4wNjYtLjE3OWE0Ljg5Myw0Ljg5MywwLDAsMS0uMjE5LTIuMDU1LDguNyw4LjcsMCwwLDEsLjYtMy42MzgsNy44ODMsNy44ODMsMCwwLDEsMi42NDQtMy40M2MuMDIyLS4wMTYsMi4yMzItMS41MjUsMi42MTUtMS4xNDIuMDkyLjA5Mi4xMzEuMTMxLjQzMywxMi42NjZoMGMuMDEuNDg1LjA4LDIuMTQ5LjE2LDQuMDc2QzEzLjA2LDI0LjMxMywxMy4yMTcsMjguMDYsMTMuMjM3LDI5LjQ3NFpcIiBzdHlsZT1cImZpbGw6I2M4YzhjOFwiLz5gLFxuXHRcIlZCLk5ldFwiOiBgPHBhdGggZD1cIk02LjY3LDcuODM2LDksMTguOTE1LDExLjMzNiw3LjgzNkgxNkwxMS4zMzYsMjQuMTY0SDYuNjcyTDIsNy44MzZaXCIgc3R5bGU9XCJmaWxsOiMwMDUxOWFcIi8+PHBhdGggZD1cIk0xOC4zMzEsNy44MzZoNy42YTQuMDgsNC4wOCwwLDAsMSwyLjksMS43NDksMy43OCwzLjc4LDAsMCwxLC41NzEsMi4wNCwzLjk4NSwzLjk4NSwwLDAsMS0uNTcxLDIuMDM0LDQuMTA4LDQuMTA4LDAsMCwxLTIuMzQxLDEuNzYzLDQuMSw0LjEsMCwwLDEsMi45MjksMS43NTYsMy44LDMuOCwwLDAsMSwuNTgsMi4xLDQuNjYzLDQuNjYzLDAsMCwxLS41NzksMi41NDYsNS4wNDcsNS4wNDcsMCwwLDEtMy41LDIuMzM4SDE4LjMzMVpNMjMsMTQuMjUyaDEuMTY2YTEuNzU0LDEuNzU0LDAsMCwwLDAtMy41SDIzWm0wLDdIMjQuMzlhMi4wNDcsMi4wNDcsMCwwLDAsMC00LjA4OUgyM1pcIiBzdHlsZT1cImZpbGw6IzAwNTE5YVwiLz5gLFxuXHRcIlZCQVwiOiBgPHBvbHlnb24gcG9pbnRzPVwiMTAuNDU3IDExLjA5MiAxNi4wMTQgMTMuODM5IDE2LjAxNCAxOC4zMDcgMTAuNDU3IDE1LjM4MiAxMC40NTcgMTEuMDkyXCIgc3R5bGU9XCJmaWxsOiM2NDgzYzBcIi8+PHBhdGggZD1cIk0xNi4yLDE4LjYxM2wtNS45MjYtMy4xMlYxMC44TDE2LjIsMTMuNzI0Wk0xMC42NDIsMTUuMjcsMTUuODMsMThWMTMuOTUzbC01LjE4OC0yLjU2NFpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuMzcxIDEzLjgzOSAxNi4zNzEgMTguMzA3IDIxLjMxNSAxNS44MTQgMjEuMzE1IDExLjM1NCAxNi4zNzEgMTMuODM5XCIgc3R5bGU9XCJmaWxsOiM2NDgzYzBcIi8+PHBhdGggZD1cIk0xNi4xODYsMTguNjA3VjEzLjcyNWw1LjMxMy0yLjY3djQuODczWm0uMzY5LTQuNjU1djQuMDU1TDIxLjEzLDE1LjdWMTEuNjUzWlwiLz48cG9seWdvbiBwb2ludHM9XCIxMC43MDMgMTAuNzk3IDE2LjE4NiAxMy41OCAyMS4wODIgMTEuMDY0IDE1Ljc3NyA4LjM4OSAxMC43MDMgMTAuNzk3XCIgc3R5bGU9XCJmaWxsOiM2NDgzYzBcIi8+PHBhdGggZD1cIk0xNi4xODcsMTMuNzg4bC01LjktMyw1LjUtMi42MDgsNS43MDksMi44NzlaTTExLjEyMiwxMC44bDUuMDY0LDIuNTcsNC40OS0yLjMwOC00LjktMi40NzFaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE4Ljk1NyAxNS44MjkgMjQuNTE1IDE4LjU3NSAyNC41MTUgMjMuMDQzIDE4Ljk1NyAyMC4xMTggMTguOTU3IDE1LjgyOVwiIHN0eWxlPVwiZmlsbDojOTUyNzgxXCIvPjxwYXRoIGQ9XCJNMjQuNywyMy4zNDlsLTUuOTI2LTMuMTJ2LTQuN0wyNC43LDE4LjQ2Wm0tNS41NTctMy4zNDMsNS4xODgsMi43MzFWMTguNjg5bC01LjE4OC0yLjU2NFpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjQuODcxIDE4LjU3NSAyNC44NzEgMjMuMDQzIDI5LjgxNSAyMC41NSAyOS44MTUgMTYuMDkgMjQuODcxIDE4LjU3NVwiIHN0eWxlPVwiZmlsbDojOTUyNzgxXCIvPjxwYXRoIGQ9XCJNMjQuNjg3LDIzLjM0M1YxOC40NjFMMzAsMTUuNzkxdjQuODczWm0uMzY5LTQuNjU1djQuMDU1bDQuNTc1LTIuMzA4VjE2LjM4OVpcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTkuMjAzIDE1LjU0NiAyNC42ODcgMTguMzI5IDI5LjU4MyAxNS44MTIgMjQuMzY0IDEzLjM0NiAxOS4yMDMgMTUuNTQ2XCIgc3R5bGU9XCJmaWxsOiM5NTI3ODFcIi8+PHBhdGggZD1cIk0yNC42ODcsMTguNTM2bC01LjkyLTMuMDA1LDUuNi0yLjM4N0wzMCwxNS44MDVaTTE5LjY0LDE1LjU2bDUuMDQ2LDIuNTYxLDQuNDc5LTIuMy00LjgwNi0yLjI3WlwiLz48cG9seWdvbiBwb2ludHM9XCIyLjE5IDE1LjQ5NiA3Ljc0OCAxOC4yNDMgNy43NDggMjIuNzExIDIuMTkgMTkuNzg2IDIuMTkgMTUuNDk2XCIgc3R5bGU9XCJmaWxsOiNkODdiMzBcIi8+PHBhdGggZD1cIk03LjkzMiwyMy4wMTcsMi4wMDYsMTkuOVYxNS4ybDUuOTI2LDIuOTI5Wk0yLjM3NSwxOS42NzRsNS4xODgsMi43MzFWMTguMzU3TDIuMzc1LDE1Ljc5M1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiOC4xMDQgMTguMjQzIDguMTA0IDIyLjcxMSAxMy4wNDggMjAuMjE4IDEzLjA0OCAxNS43NTggOC4xMDQgMTguMjQzXCIgc3R5bGU9XCJmaWxsOiNkODdiMzBcIi8+PHBhdGggZD1cIk03LjkyLDIzLjAxMVYxOC4xMjlsNS4zMTMtMi42N3Y0Ljg3M1ptLjM2OS00LjY1NXY0LjA1NUwxMi44NjQsMjAuMVYxNi4wNTdaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuNDM2IDE1LjIxMyA3LjkyIDE3Ljk5NyAxMi44MTYgMTUuNDggNy41OTcgMTMuMDE0IDIuNDM2IDE1LjIxM1wiIHN0eWxlPVwiZmlsbDojZDg3YjMwXCIvPjxwYXRoIGQ9XCJNNy45MiwxOC4yLDIsMTUuMmw1LjYtMi4zODcsNS42MzIsMi42NjFaTTIuODczLDE1LjIyOGw1LjA0NiwyLjU2MSw0LjQ3OS0yLjMtNC44MDYtMi4yN1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTAuODc1IDE2LjI5NiAxNi40MzIgMTkuMDQyIDE2LjQzMiAyMy41MTEgMTAuODc1IDIwLjU4NSAxMC44NzUgMTYuMjk2XCIgc3R5bGU9XCJmaWxsOiNlMGQ0MDBcIi8+PHBhdGggZD1cIk0xNi42MTcsMjMuODE2LDEwLjY5MSwyMC43VjE2bDUuOTI2LDIuOTI5Wk0xMS4wNiwyMC40NzRsNS4xODgsMi43MzFWMTkuMTU3TDExLjA2LDE2LjU5M1pcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuNzg5IDE5LjA0MiAxNi43ODkgMjMuNTExIDIxLjczMyAyMS4wMTcgMjEuNzMzIDE2LjU1NyAxNi43ODkgMTkuMDQyXCIgc3R5bGU9XCJmaWxsOiNlMGQ0MDBcIi8+PHBhdGggZD1cIk0xNi42LDIzLjgxMVYxOC45MjlsNS4zMTMtMi42N3Y0Ljg3M1ptLjM2OS00LjY1NXY0LjA1NUwyMS41NDksMjAuOVYxNi44NTdaXCIvPjxwb2x5Z29uIHBvaW50cz1cIjExLjEyMSAxNi4wMDEgMTYuNjA1IDE4Ljc4NCAyMS41MDEgMTYuMjY3IDE2LjE5NiAxMy41OTMgMTEuMTIxIDE2LjAwMVwiIHN0eWxlPVwiZmlsbDojZTBkNDAwXCIvPjxwYXRoIGQ9XCJNMTYuNjA1LDE4Ljk5MWwtNS45LTMsNS41LTIuNjA4LDUuNzA5LDIuODc5Wk0xMS41NCwxNi4wMDZsNS4wNjQsMi41Nyw0LjQ5LTIuMzA4LTQuOS0yLjQ3MVpcIi8+YCxcblx0XCJWZWxvY2l0eVwiOiBgPHBhdGggZD1cIk0xNi4yNDUsMjQuMTg3QTguMzUyLDguMzUyLDAsMSwxLDI0LjYsMTUuODM1LDguMzYyLDguMzYyLDAsMCwxLDE2LjI0NSwyNC4xODdabTAtMTQuNzYyYTYuNDEsNi40MSwwLDEsMCw2LjQxLDYuNDFBNi40MTcsNi40MTcsMCwwLDAsMTYuMjQ1LDkuNDI1WlwiLz48cG9seWdvbiBwb2ludHM9XCIyOS4xMzIgOC41NTEgMjUuNDUxIDYuNTMxIDI1LjQ1MSA3LjQ3NCAxNS44MjEgNy40NzQgMTUuODIxIDkuNDI0IDI1LjQ1MSA5LjQyNCAyNS40NTEgMTAuNTcxIDI5LjEzMiA4LjU1MVwiIHN0eWxlPVwiZmlsbDojMjYyNjkyXCIvPjxwb2x5Z29uIHBvaW50cz1cIjguOTg0IDIgNi45NjQgNS42ODcgNy45MDYgNS42ODcgNy45MDYgMTUuMzI4IDkuODU3IDE1LjMyOCA5Ljg1NyA1LjY4NyAxMS4wMDQgNS42ODcgOC45ODQgMlwiIHN0eWxlPVwiZmlsbDojMjYyNjkzXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIzLjcwNSAzMCAyMS42ODUgMjYuMjQzIDIyLjYyOCAyNi4yNDMgMjIuNjI4IDE2LjQxNyAyNC41NzggMTYuNDE3IDI0LjU3OCAyNi4yNDMgMjUuNzI1IDI2LjI0MyAyMy43MDUgMzBcIiBzdHlsZT1cImZpbGw6IzI2MjY5M1wiLz48cG9seWdvbiBwb2ludHM9XCIyLjg2OCAyMy4zMiA2LjYzNCAyMS4zIDYuNjM0IDIyLjI0MiAxNi40ODQgMjIuMjQyIDE2LjQ4NCAyNC4xOTIgNi42MzQgMjQuMTkyIDYuNjM0IDI1LjM0IDIuODY4IDIzLjMyXCIgc3R5bGU9XCJmaWxsOiMyNjI2OTJcIi8+YCxcblx0XCJWZXJpbG9nXCI6IGA8cGF0aCBkPVwiTTI5LjAwNywxNy40aC4wMzdhMS40NDksMS40NDksMCwwLDAsLjkzOC0uMzE2LDEuNDczLDEuNDczLDAsMCwwLC41MTktMS4wMzFWMTUuOWExLjQxMywxLjQxMywwLDAsMC0xLjM3Ni0xLjNoLS4wMDljLS42ODcsMC0xLjM3NCwwLTIuMDYyLDBIMjUuNVYxMS45NTZsMy41MTMsMGguMDM0QTEuNDExLDEuNDExLDAsMCwwLDMwLjUsMTAuNmwwLS4wOSwwLS4wMzJhMS40MTIsMS40MTIsMCwwLDAtLjY0Ni0xLjEsMS40NTUsMS40NTUsMCwwLDAtLjgzNS0uMjI1SDI1LjQ1NmEyLjk2LDIuOTYsMCwwLDAtLjI3OC0xLjAzNCwyLjkwOSwyLjkwOSwwLDAsMC0xLjctMS40NjEsMi42ODQsMi42ODQsMCwwLDAtLjYyOS0uMTNWNC45NDdjMC0uNjksMC0xLjM4LDAtMi4wNjNBMS40MTQsMS40MTQsMCwwLDAsMjEuNDgxLDEuNWgtLjExNmExLjQsMS40LDAsMCwwLTEuMzE5LDEuMzg4cTAsMS4xNTQsMCwyLjMwNlY2LjVIMTcuNFY0Ljk4MWMwLS43LDAtMS40LDAtMi4wODdBMS40MSwxLjQxLDAsMCwwLDE2LjA1MywxLjVIMTUuOWExLjQwOCwxLjQwOCwwLDAsMC0xLjMsMS4zODNjMCwuNjg4LDAsMS4zNzYsMCwyLjA2NFY2LjUwOHEtMS4zMTksMC0yLjYzOSwwVjQuODg4YzAtLjY2NiwwLTEuMzMyLDAtMS45ODlhMS4zNjYsMS4zNjYsMCwwLDAtLjQtLjk3NSwxLjQsMS40LDAsMCwwLS45ODQtLjQyNEgxMC41QTEuNDEsMS40MSwwLDAsMCw5LjE1OSwyLjg4MWMwLC42ODMsMCwxLjM2NiwwLDIuMDQ5djEuNmEyLjkzMywyLjkzMywwLDAsMC0yLjQ2NiwxLjksMi44NzgsMi44NzgsMCwwLDAtLjE2MS43MjZINC45NTdjLS42OTMsMC0xLjM4NiwwLTIuMDczLDBIMi44NzZBMS40MTMsMS40MTMsMCwwLDAsMS41LDEwLjV2LjA5NWExLjQxNywxLjQxNywwLDAsMCwuNTc1LDEuMDkxLDEuNDYzLDEuNDYzLDAsMCwwLC44ODcuMjczaC4wMTdsMy41MjIsMFYxNC42SDQuOTQ4Yy0uNjg2LDAtMS4zNzUsMC0yLjA1NywwQTEuNDI4LDEuNDI4LDAsMCwwLDEuNSwxNS45MTNWMTYuMWExLjQsMS40LDAsMCwwLDEuMzg2LDEuM2MuNzExLDAsMS40MjMsMCwyLjEzNSwwSDYuNVYyMC4wNWwtLjI5MiwwYy0uNjEzLS4wMDctMS4yMjYsMC0xLjgzOCwwSDMuMDg3YTEuNjMzLDEuNjMzLDAsMCwwLS45MTguMjExQTEuNDM3LDEuNDM3LDAsMCwwLDEuNSwyMS40VjIxLjVhMS40MTcsMS40MTcsMCwwLDAsMS4zNzUsMS4zMzdoLjAwNXEuNjQ1LDAsMS4yOSwwSDYuNTQ2YTIuODMyLDIuODMyLDAsMCwwLDEuOTc4LDIuNSwyLjcxMiwyLjcxMiwwLDAsMCwuNjMxLjEyOHYxLjYyYzAsLjY3OCwwLDEuMzU0LDAsMi4wMjVhMS40LDEuNCwwLDEsMCwyLjgtLjA5MmwwLTMuNTI3SDE0LjZ2My41MTZBMS40MTQsMS40MTQsMCwwLDAsMTUuOTQ3LDMwLjVIMTYuMWExLjQxMSwxLjQxMSwwLDAsMCwxLjMtMS4zODVxLjAwNi0xLjA2NiwwLTIuMTMxVjI1LjVoMi42NDRWMjkuMUExLjQyMywxLjQyMywwLDAsMCwyMS40LDMwLjVoLjExOWExLjQwOCwxLjQwOCwwLDAsMCwxLjE2LS43NDEsMS42NDMsMS42NDMsMCwwLDAsLjE2Ny0uODMzVjI1LjQ3NGEyLjY3MSwyLjY3MSwwLDAsMCwuNjItLjEyOCwyLjkyOCwyLjkyOCwwLDAsMCwxLjg4Ni0xLjg4OCwyLjgzNCwyLjgzNCwwLDAsMCwuMTIzLS42MTNoMS41ODFjLjY4NywwLDEuMzc1LDAsMi4wNTcsMGguMDA4QTEuNDIyLDEuNDIyLDAsMCwwLDMwLjUsMjEuNDgxdi0uMTE4YTEuNDA5LDEuNDA5LDAsMCwwLTEuMzgyLTEuMzE4aDBjLS43MTgsMC0xLjQzNiwwLTIuMTU0LDBIMjUuNVYxNy40WlwiIHN0eWxlPVwiZmlsbDojYzVjNWM1O29wYWNpdHk6MC4zXCIvPjxwYXRoIGQ9XCJNMTAuNTE1LDJoLjA1NmEuOTEuOTEsMCwwLDEsLjg4Ni44OTNjLjAwNiwxLjEwOCwwLDIuMjE2LDAsMy4zMjQtLjYsMC0xLjIsMC0xLjgsMCwwLTEuMTExLDAtMi4yMjIsMC0zLjMzM0EuOTA3LjkwNywwLDAsMSwxMC41MTUsMlpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTE1LjkzNywyaC4xMTZhLjkxMi45MTIsMCwwLDEsLjg0Ni44ODljLjAwNiwxLjEwOSwwLDIuMjE5LDAsMy4zMjlIMTUuMWMwLTEuMTEsMC0yLjIyLDAtMy4zM0EuOTExLjkxMSwwLDAsMSwxNS45MzcsMlpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTIxLjM5MiwyaC4wODlhLjkwNy45MDcsMCwwLDEsLjg1OS44ODFjLjAwNywxLjExMiwwLDIuMjI1LDAsMy4zMzdoLTEuOGMwLTEuMTA5LDAtMi4yMTcsMC0zLjMyNkEuOTEyLjkxMiwwLDAsMSwyMS4zOTIsMlpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTIsMTAuNTE4YS45MDguOTA4LDAsMCwxLC44ODItLjg1OWMxLjExMi0uMDA3LDIuMjIzLDAsMy4zMzQsMHEwLC45LDAsMS44Yy0xLjA3OSwwLTIuMTU4LDAtMy4yMzcsMGEuOTgzLjk4MywwLDAsMS0uNi0uMTczQS45MjQuOTI0LDAsMCwxLDIsMTAuNTcxWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMjUuNzg2LDkuNjU1aDMuMjMzYTEsMSwwLDAsMSwuNTYxLjE0My45MjQuOTI0LDAsMCwxLC40Mi43MTZ2LjA1OGEuOTMzLjkzMywwLDAsMS0uMy42NTEuOTU3Ljk1NywwLDAsMS0uNjc3LjIzNGMtMS4wNzksMC0yLjE1OCwwLTMuMjM3LDBRMjUuNzg2LDEwLjU1NiwyNS43ODYsOS42NTVaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yLDE1Ljk0NGEuOTEzLjkxMywwLDAsMSwuODg4LS44NDJjMS4xMDktLjAwNywyLjIxOSwwLDMuMzI4LDBxMCwuOSwwLDEuOGMtMS4xMDksMC0yLjIxNywwLTMuMzI2LDBBLjkxNS45MTUsMCwwLDEsMiwxNi4wNjNaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk0yNS43ODYsMTUuMWMxLjEwOSwwLDIuMjE4LDAsMy4zMjYsMGEuOTE0LjkxNCwwLDAsMSwuODg5LjgzNXYuMTE3YS45NDYuOTQ2LDAsMCwxLS4zMzEuNjQxLjk3My45NzMsMCwwLDEtLjY1MS4yMDdIMjUuNzg2UTI1Ljc4NSwxNiwyNS43ODYsMTUuMVpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTIuNDMzLDIwLjY3OGExLjEyMSwxLjEyMSwwLDAsMSwuNjQzLS4xMzZjMS4wNDMuMDA2LDIuMDg2LS4wMDYsMy4xMjkuMDA2LjAyOC42LDAsMS4yLjAxMiwxLjgtMS4xMSwwLTIuMjIxLDAtMy4zMzEsMEEuOTExLjkxMSwwLDAsMSwyLDIxLjQ4M1YyMS40QS45MjUuOTI1LDAsMCwxLDIuNDMzLDIwLjY3OFpcIiBzdHlsZT1cImZpbGw6IzFhMzQ4ZlwiLz48cGF0aCBkPVwiTTI1Ljc4NiwyMC41NDNjMS4xMDgsMCwyLjIxNiwwLDMuMzI0LDBhLjkxNC45MTQsMCwwLDEsLjg5Ljg0N3YuMDlhLjkxMS45MTEsMCwwLDEtLjg4OC44NTljLTEuMTA5LjAwNy0yLjIxOCwwLTMuMzI2LDBDMjUuNzg2LDIxLjc0MywyNS43ODUsMjEuMTQzLDI1Ljc4NiwyMC41NDNaXCIgc3R5bGU9XCJmaWxsOiMxYTM0OGZcIi8+PHBhdGggZD1cIk05LjY1NiwyNS43ODFoMS44YzAsMS4wODEsMCwyLjE2MiwwLDMuMjQzYS45NTcuOTU3LDAsMCwxLS4yMzUuNjc3LjkzMS45MzEsMCwwLDEtLjY1My4zaC0uMDUyYS45MDcuOTA3LDAsMCwxLS44Ni0uODgyQzkuNjUxLDI4LjAwNiw5LjY1OCwyNi44OTQsOS42NTYsMjUuNzgxWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMTUuMSwyNS43ODFoMS44YzAsMS4xMSwwLDIuMjIsMCwzLjMzYS45MTQuOTE0LDAsMCwxLS44MzYuODg5aC0uMTE2YS45NC45NCwwLDAsMS0uNjE5LS4zMDYuOTYyLjk2MiwwLDAsMS0uMjI4LS42NzNRMTUuMSwyNy40LDE1LjEsMjUuNzgxWlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMjAuNTQ3LDI5LjEwNmMwLTEuMTA4LDAtMi4yMTcsMC0zLjMyNWgxLjhjMCwxLjA0OCwwLDIuMSwwLDMuMTQ0YTEuMTc4LDEuMTc4LDAsMCwxLS4xMDUuNTkuOTIuOTIsMCwwLDEtLjc1Ni40ODRIMjEuNEEuOTExLjkxMSwwLDAsMSwyMC41NDcsMjkuMTA2WlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNMjQuNzMyLDguMzQ5QTIuNDI5LDIuNDI5LDAsMCwwLDIzLjMxLDcuMTMxLDMuMjQ1LDMuMjQ1LDAsMCwwLDIyLjI1NCw3Yy00LjMuMDA4LTguNi0uMDExLTEyLjkwNS4wMUEyLjQzNiwyLjQzNiwwLDAsMCw3LjE1Nyw4LjYwNiwzLjYxMSwzLjYxMSwwLDAsMCw3LDkuOTM0cTAsNi4yNSwwLDEyLjVhMi42NzMsMi42NzMsMCwwLDAsLjI2OCwxLjIxOUEyLjQzMSwyLjQzMSwwLDAsMCw4LjY4OCwyNC44NywzLjc1NiwzLjc1NiwwLDAsMCw5LjkyNywyNUgyMi4wN2EzLjc2MiwzLjc2MiwwLDAsMCwxLjI0My0uMTI3QTIuNDI5LDIuNDI5LDAsMCwwLDI0Ljg3NSwyMy4zLDMuOCwzLjgsMCwwLDAsMjUsMjIuMDcxcTAtNi4yNSwwLTEyLjVBMi42ODYsMi42ODYsMCwwLDAsMjQuNzMyLDguMzQ5WlwiIHN0eWxlPVwiZmlsbDojMWEzNDhmXCIvPjxwYXRoIGQ9XCJNNy41LDguMzA3bC4wODQtLjJxLjk2OCwwLDEuOTM1LjAyNGguMzk0cS4xNzksMCwuMzk0LS4wMTIuNzc2LS4wMzYsMi44MDctLjAzNi40MDYsMCwuNzg4LjAwNnQuNzQxLjAxOGEuMjM0LjIzNCwwLDAsMSwuMTA4LjEwOGwtLjAyNC4xOTFxLS4wNzIuMTE5LS4zNTguMTE5aC0uMWExMC4zLDEwLjMsMCwwLDAtMS4xLjA1NCwyLjE3OSwyLjE3OSwwLDAsMC0xLC4yNDUuNDMyLjQzMiwwLDAsMC0uMTU1LjM0Niw0LjA1LDQuMDUsMCwwLDAsLjM5NCwxLjRsMS44MTgsNC4yMTcuNjM0LDEuNHEuOTIxLDIuMjIyLDEuODE5LDQuNTM5LjEuMjUxLjE3OS40NTRsLjgtMS45NTlxLjYyLTEuNDgxLDEuMjUyLTMuMTU0bC44MjMtMi4yNDZxLjAyNC0uMDcyLjEzMS0uNDc4YTE3LjAyNiwxNy4wMjYsMCwwLDAsMS4xNTctNCwuNTYxLjU2MSwwLDAsMC0uMTYxLS4zNjQsMS4xNjUsMS4xNjUsMCwwLDAtLjUyLS4zLDcuNzIzLDcuNzIzLDAsMCwwLS45MzItLjE0M2wtLjg4NC0uMTA4YS4zMzcuMzM3LDAsMCwxLS4xMDgtLjJsLjAzNi0uMSwzLjg3LS4wMzZIMjMuNmEzLjEsMy4xLDAsMCwxLC44ODUuMDg0bC4wMTIuMWEuNjQxLjY0MSwwLDAsMS0uMDcyLjI1MSwyLjQ0OSwyLjQ0OSwwLDAsMS0uNTI2LjExOSwzLjYsMy42LDAsMCwwLTEuMjQ0LjI4MSwxLjgxNSwxLjgxNSwwLDAsMC0uNS42ODdsLTMuMTM0LDcuNzY1cS0xLjQ2NiwzLjUtMi4wODYsNS40MjNsLS4zNDUsMS4wMzlhLjUzMS41MzEsMCwwLDEtLjI2My4xLDEuMzgzLDEuMzgzLDAsMCwxLS4zLS4wMzZxLTEuNDIyLTMuNjc2LTIuMzE4LTUuNjgxTDEwLjA1NSw5LjkyYTMuMjQ3LDMuMjQ3LDAsMCwwLS41OTEtLjg5LDUuNDYzLDUuNDYzLDAsMCwwLTEuMzc5LS40MjQsNC4zNDcsNC4zNDcsMCwwLDEtLjQ2Ni0uMTE5QS4zMjYuMzI2LDAsMCwxLDcuNSw4LjMwN1pcIiBzdHlsZT1cImZpbGw6I2M1YzJmZlwiLz5gLFxuXHRcIlZIRExcIjogYDxwYXRoIGQ9XCJNMiwySDMwVjMwSDJabTEuNjg5LjA2N0ExLjYyNCwxLjYyNCwwLDAsMCwyLjA2MywzLjY5MlYyOC4zMTRBMS42MjUsMS42MjUsMCwwLDAsMy42ODksMjkuOTRIMjguMzE2YTEuNjI1LDEuNjI1LDAsMCwwLDEuNjI2LTEuNjI2VjMuNjkyYTEuNjI0LDEuNjI0LDAsMCwwLTEuNjI2LTEuNjI1Wk0zLjAwOCwyOC4wNzlhLjkxMS45MTEsMCwwLDAsLjkxMS45MTJIMjguMDgzYS45MTEuOTExLDAsMCwwLC45MTEtLjkxMlYzLjkxOWEuOTEuOTEsMCwwLDAtLjkxMS0uOTExSDMuOTE5YS45MS45MSwwLDAsMC0uOTExLjkxMVpcIiBzdHlsZT1cImZpbGw6IzBkOWIzNVwiLz48cG9seWdvbiBwb2ludHM9XCIyNS41MiA1LjUwMiAxOC44NTggMjYuNDkxIDEzLjE1NCAyNi40OTEgNi40OTIgNS41MDIgMTAuNTA4IDUuNTAyIDE2LjAyOSAyMi43OTUgMjEuNTA0IDUuNTAyIDI1LjUyIDUuNTAyXCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+YCxcblx0XCJ2aW1cIjogYDxkZWZzPjxjbGlwUGF0aCBpZD1cImFcIj48cG9seWdvbiBwb2ludHM9XCIyIDIgMzAgMiAzMCAzMCAyIDMwIDIgMiAyIDJcIiBzdHlsZT1cImZpbGw6bm9uZTtjbGlwLXJ1bGU6ZXZlbm9kZFwiLz48L2NsaXBQYXRoPjwvZGVmcz48dGl0bGU+ZmlsZV90eXBlX3ZpbTwvdGl0bGU+PHBvbHlnb24gcG9pbnRzPVwiMjkuOTg5IDE1Ljg1NiAxNS44NTYgMi4wMTEgMi4wMTEgMTYuMTM2IDE1Ljg1NiAyOS45ODkgMjkuOTg5IDE1Ljg1NiAyOS45ODkgMTUuODU2XCIgc3R5bGU9XCJmaWxsOiMyMzFmMjA7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PGcgc3R5bGU9XCJjbGlwLXBhdGg6dXJsKCNhKVwiPjxwb2x5Z29uIHBvaW50cz1cIjI5Ljk4OSAxNS44NTYgMTUuODU2IDIuMDExIDIuMDExIDE2LjEzNiAxNS44NTYgMjkuOTg5IDI5Ljk4OSAxNS44NTYgMjkuOTg5IDE1Ljg1NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjwvZz48cG9seWdvbiBwb2ludHM9XCIyOC41NzUgMTUuODU2IDI5LjQyMiAxNS44NTYgMTUuODU2IDI5LjQyMiAxNS44NTYgMjguNTc1IDI4LjU3NSAxNS44NTYgMjguNTc1IDE1Ljg1NlwiIHN0eWxlPVwiZmlsbDojMjk2OTVkO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI4LjU3NSAxNS44NTYgMjkuNDIyIDE1Ljg1NiAxNS44NTYgMjkuNDIyIDE1Ljg1NiAyOC41NzUgMjguNTc1IDE1Ljg1NiAyOC41NzUgMTUuODU2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMi41NzggMTYuMTM2IDMuNDI1IDE2LjEzNiAxNS44NTYgMjguNTc1IDE1Ljg1NiAyOS40MjIgMi41NzggMTYuMTM2IDIuNTc4IDE2LjEzNlwiIHN0eWxlPVwiZmlsbDojMzE3MzY3O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIuNTc4IDE2LjEzNiAzLjQyNSAxNi4xMzYgMTUuODU2IDI4LjU3NSAxNS44NTYgMjkuNDIyIDIuNTc4IDE2LjEzNiAyLjU3OCAxNi4xMzZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNS44NTYgMy40MTggMTUuODU2IDIuNTc4IDIuNTc4IDE2LjEzNiAzLjQyNSAxNi4xMzYgMTUuODU2IDMuNDE4IDE1Ljg1NiAzLjQxOFwiIHN0eWxlPVwiZmlsbDojNjBjMmFjO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljg1NiAzLjQxOCAxNS44NTYgMi41NzggMi41NzggMTYuMTM2IDMuNDI1IDE2LjEzNiAxNS44NTYgMy40MTggMTUuODU2IDMuNDE4XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTUuODU2IDIuNTc4IDE1Ljg1NiAzLjQxOCAyOC41NzUgMTUuODU2IDI5LjQyMiAxNS44NTYgMTUuODU2IDIuNTc4IDE1Ljg1NiAyLjU3OFwiIHN0eWxlPVwiZmlsbDojNDNiNTRhO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE1Ljg1NiAyLjU3OCAxNS44NTYgMy40MTggMjguNTc1IDE1Ljg1NiAyOS40MjIgMTUuODU2IDE1Ljg1NiAyLjU3OCAxNS44NTYgMi41NzhcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNS44NTYgMjguNTc1IDI4LjU3NSAxNS44NTYgMTUuODU2IDMuNDE4IDMuNDI1IDE2LjEzNiAxNS44NTYgMjguNTc1IDE1Ljg1NiAyOC41NzVcIiBzdHlsZT1cImZpbGw6IzNjODM3NjtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNS44NTYgMjguNTc1IDI4LjU3NSAxNS44NTYgMTUuODU2IDMuNDE4IDMuNDI1IDE2LjEzNiAxNS44NTYgMjguNTc1IDE1Ljg1NiAyOC41NzVcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxOC40OTggNi4yNDYgMTkuMzQ1IDcuMSAxMy41MDIgMTMuMDI4IDEzLjUwMiA3LjEgMTQuMDY5IDcuMSAxNC45MTYgNi4yNDYgMTQuOTE2IDMuOTkyIDE0LjA2OSAzLjEzOCA0LjY1MiAzLjEzOCAzLjgwNSAzLjk5MiAzLjgwNSA2LjI0NiA0LjY1MiA3LjEgNS4zMTIgNy4xIDUuMzEyIDI2LjMxNCA2LjM0NiAyNy4xNjEgOS4yNjcgMjcuMTYxIDI5LjUxNiA2LjI0NiAyOS41MTYgMy45OTIgMjguNjY5IDMuMTM4IDE5LjQzOCAzLjEzOCAxOC40OTggMy45OTIgMTguNDk4IDYuMjQ2IDE4LjQ5OCA2LjI0NlwiIHN0eWxlPVwiZmlsbDojMjMxZjIwO2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjE4LjQ5OCA2LjI0NiAxOS4zNDUgNy4xIDEzLjUwMiAxMy4wMjggMTMuNTAyIDcuMSAxNC4wNjkgNy4xIDE0LjkxNiA2LjI0NiAxNC45MTYgMy45OTIgMTQuMDY5IDMuMTM4IDQuNjUyIDMuMTM4IDMuODA1IDMuOTkyIDMuODA1IDYuMjQ2IDQuNjUyIDcuMSA1LjMxMiA3LjEgNS4zMTIgMjYuMzE0IDYuMzQ2IDI3LjE2MSA5LjI2NyAyNy4xNjEgMjkuNTE2IDYuMjQ2IDI5LjUxNiAzLjk5MiAyOC42NjkgMy4xMzggMTkuNDM4IDMuMTM4IDE4LjQ5OCAzLjk5MiAxOC40OTggNi4yNDYgMTguNDk4IDYuMjQ2XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiNC45MzIgNi41MzMgNC4zNjUgNS45NjYgNC4zNjUgNC4yNzIgNC45MzIgMy43MDUgMTMuNzg5IDMuNjk4IDE0LjM0OSA0LjI3MiAxMy43ODkgNC41NDQgMTMuNTAyIDQuMjcyIDQuOTMyIDUuNjc5IDQuOTMyIDYuNTMzIDQuOTMyIDYuNTMzXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiNC45MzIgNi41MzMgNC4zNjUgNS45NjYgNC4zNjUgNC4yNzIgNC45MzIgMy43MDUgMTMuNzg5IDMuNjk4IDE0LjM0OSA0LjI3MiAxMy43ODkgNC41NDQgMTMuNTAyIDQuMjcyIDQuOTMyIDUuNjc5IDQuOTMyIDYuNTMzIDQuOTMyIDYuNTMzXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi42MjYgMjYuNTk0IDUuOTY2IDI2LjAyNyA1Ljk2NiA2LjUyNiA2LjYyNiA1Ljk2NiA2LjYyNiAyNi41OTQgNi42MjYgMjYuNTk0XCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi42MjYgMjYuNTk0IDUuOTY2IDI2LjAyNyA1Ljk2NiA2LjUyNiA2LjYyNiA1Ljk2NiA2LjYyNiAyNi41OTQgNi42MjYgMjYuNTk0XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjAuNzU5IDYuNTMzIDIxLjMyNiA1Ljk2NiAyMS4zMjYgNy4xIDExLjkwMiAxNi43MDMgMTIuOTQyIDE0LjQ0MiAyMC43NTkgNi41MzMgMjAuNzU5IDYuNTMzXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjAuNzU5IDYuNTMzIDIxLjMyNiA1Ljk2NiAyMS4zMjYgNy4xIDExLjkwMiAxNi43MDMgMTIuOTQyIDE0LjQ0MiAyMC43NTkgNi41MzMgMjAuNzU5IDYuNTMzXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiNi44MiA1LjY4NiA2LjYyNiA1Ljk2NiA1Ljk2NiA2LjUzMyA0LjkzMiA2LjUzMyA0LjkzMiA1LjM5OSA2LjgyIDUuNjg2IDYuODIgNS42ODZcIiBzdHlsZT1cImZpbGw6IzkyOTQ5NztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCI2LjgyIDUuNjg2IDYuNjI2IDUuOTY2IDUuOTY2IDYuNTMzIDQuOTMyIDYuNTMzIDQuOTMyIDUuMzk5IDYuODIgNS42ODYgNi44MiA1LjY4NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjEyLjk0MiA2LjUzMyAxMi45NDIgMTQuNDQyIDExLjkwMiAxNi42OTYgMTEuOTAyIDUuOTU4IDEzLjUwMiA1Ljk1OCAxMy43ODkgNS42NzggMTMuNTAyIDQuMjcyIDE0LjM0OSA0LjI3MiAxNC4zNDkgNS45NjYgMTMuNzg5IDYuNTMzIDEyLjk0MiA2LjUzMyAxMi45NDIgNi41MzNcIiBzdHlsZT1cImZpbGw6IzkyOTQ5NztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxMi45NDIgNi41MzMgMTIuOTQyIDE0LjQ0MiAxMS45MDIgMTYuNjk2IDExLjkwMiA1Ljk1OCAxMy41MDIgNS45NTggMTMuNzg5IDUuNjc4IDEzLjUwMiA0LjI3MiAxNC4zNDkgNC4yNzIgMTQuMzQ5IDUuOTY2IDEzLjc4OSA2LjUzMyAxMi45NDIgNi41MzMgMTIuOTQyIDYuNTMzXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTkuNjI1IDYuNTMzIDE5LjA2NSA1Ljk2NiAxOS4wNjUgNC4yNzIgMTkuNzE4IDMuNzA1IDI4LjI5NSAzLjcwNSAyOC45NTYgNC4yNzIgMjguMDA4IDUuMTE5IDE5LjYyNSA1LjY3OSAxOS42MjUgNi41MzMgMTkuNjI1IDYuNTMzXCIgc3R5bGU9XCJmaWxsOiNmZmY7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTkuNjI1IDYuNTMzIDE5LjA2NSA1Ljk2NiAxOS4wNjUgNC4yNzIgMTkuNzE4IDMuNzA1IDI4LjI5NSAzLjcwNSAyOC45NTYgNC4yNzIgMjguMDA4IDUuMTE5IDE5LjYyNSA1LjY3OSAxOS42MjUgNi41MzMgMTkuNjI1IDYuNTMzXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjguOTU2IDUuOTY2IDkuMDc0IDI2LjU5NCA2LjYyNiAyNi41OTQgNi42MjYgMjUuNzQ3IDguNDIgMjUuNzQ3IDI4LjI5NSA1LjM5OSAyOC4wMDggNC4yNzIgMjguOTU2IDQuMjcyIDI4Ljk1NiA1Ljk2NiAyOC45NTYgNS45NjZcIiBzdHlsZT1cImZpbGw6IzkyOTQ5NztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIyOC45NTYgNS45NjYgOS4wNzQgMjYuNTk0IDYuNjI2IDI2LjU5NCA2LjYyNiAyNS43NDcgOC40MiAyNS43NDcgMjguMjk1IDUuMzk5IDI4LjAwOCA0LjI3MiAyOC45NTYgNC4yNzIgMjguOTU2IDUuOTY2IDI4Ljk1NiA1Ljk2NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjIxLjUxMiA1LjY4NiAyMS4zMTkgNS45NjYgMjAuNzU5IDYuNTMzIDE5LjYyNSA2LjUzMyAxOS42MjUgNS4zOTkgMjEuNTEyIDUuNjg2IDIxLjUxMiA1LjY4NlwiIHN0eWxlPVwiZmlsbDojOTI5NDk3O2ZpbGwtcnVsZTpldmVub2RkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjIxLjUxMiA1LjY4NiAyMS4zMTkgNS45NjYgMjAuNzU5IDYuNTMzIDE5LjYyNSA2LjUzMyAxOS42MjUgNS4zOTkgMjEuNTEyIDUuNjg2IDIxLjUxMiA1LjY4NlwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjExLjkwMiAxNi42OTYgMTEuOTAyIDUuOTU4IDEzLjUwMiA1Ljk1OCAxMy43ODkgNS42NzkgMTMuNzg5IDQuNTQ0IDEzLjUwMiA0LjI2NSA1LjIxMiA0LjI2NSA0LjkzMiA0LjU0NCA0LjkzMiA1LjY3OSA1LjIxMiA1Ljk1OCA2LjYyNiA1Ljk1OCA2LjYyNiAyNS43NDcgNi45OTIgMjYuMDI3IDguNjA3IDI2LjAyNyAyOC4zODkgNS4zOTkgMjguMzg5IDQuNTg4IDI4LjEwMiA0LjI2NSAxOS45MTIgNC4yNjUgMTkuNjI1IDQuNTQ0IDE5LjYyNSA1LjY4NiAxOS45MTIgNS45NjYgMjEuMzI2IDUuOTY2IDIxLjMyNiA3LjEgMTEuOTAyIDE2LjY5NiAxMS45MDIgMTYuNjk2XCIgc3R5bGU9XCJmaWxsOiNkMGQyZDM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTEuOTAyIDE2LjY5NiAxMS45MDIgNS45NTggMTMuNTAyIDUuOTU4IDEzLjc4OSA1LjY3OSAxMy43ODkgNC41NDQgMTMuNTAyIDQuMjY1IDUuMjEyIDQuMjY1IDQuOTMyIDQuNTQ0IDQuOTMyIDUuNjc5IDUuMjEyIDUuOTU4IDYuNjI2IDUuOTU4IDYuNjI2IDI1Ljc0NyA2Ljk5MiAyNi4wMjcgOC42MDcgMjYuMDI3IDI4LjM4OSA1LjM5OSAyOC4zODkgNC41ODggMjguMTAyIDQuMjY1IDE5LjkxMiA0LjI2NSAxOS42MjUgNC41NDQgMTkuNjI1IDUuNjg2IDE5LjkxMiA1Ljk2NiAyMS4zMjYgNS45NjYgMjEuMzI2IDcuMSAxMS45MDIgMTYuNjk2IDExLjkwMiAxNi42OTZcIiBzdHlsZT1cImZpbGw6bm9uZTtzdHJva2U6IzIzMWYyMDtzdHJva2UtbWl0ZXJsaW1pdDoxMDtzdHJva2Utd2lkdGg6MC4yMTYwMDAwMDU2MDI4MzdweFwiLz48cG9seWdvbiBwb2ludHM9XCIxNy4wNDEgMTYuNzExIDE3LjcwMSAxNi4xNDQgMTkuMzk1IDE2LjE0NCAxOS44NjkgMTYuNzExIDE5LjMwMiAxOC40MDUgMTguNjQ5IDE4Ljk3MiAxNi45NTUgMTguOTcyIDE2LjQ3NCAxOC40MDUgMTcuMDQxIDE2LjcxMSAxNy4wNDEgMTYuNzExXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjA7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTcuMDQxIDE2LjcxMSAxNy43MDEgMTYuMTQ0IDE5LjM5NSAxNi4xNDQgMTkuODY5IDE2LjcxMSAxOS4zMDIgMTguNDA1IDE4LjY0OSAxOC45NzIgMTYuOTU1IDE4Ljk3MiAxNi40NzQgMTguNDA1IDE3LjA0MSAxNi43MTEgMTcuMDQxIDE2LjcxMVwiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE3LjYwOCAyNi4wMzQgMTkuMzA5IDIwLjk1MyAxOC43NDIgMjAuOTUzIDE5LjMwOSAxOS4yNTEgMjEuODQzIDE5LjI1MSAyMi40MSAxOS44MTkgMjIuNzkgMTkuODE5IDIzLjM1IDE5LjI1MSAyNS4yMzggMTkuMjUxIDI1LjgwNSAxOS44MTkgMjYuMTc4IDE5LjgxOSAyNi43NDUgMTkuMjUxIDI4LjgxMiAxOS4yNTEgMjkuNTY2IDIwLjM4NiAyOC4zMzEgMjQuNDA1IDI4Ljg5MSAyNC40MDUgMjguMzQ2IDI2LjAzNCAyNC45NTEgMjYuMDM0IDI2LjI3OCAyMi4wNzkgMjUuNDMxIDIyLjA3OSAyNC42NDkgMjQuMzkxIDI1LjIwOSAyNC4zOTEgMjQuNjc4IDI2LjAzNCAyMS4yODMgMjYuMDM0IDIyLjYwMyAyMi4wNzkgMjEuNzU2IDIyLjA3OSAyMC45NjcgMjQuNDA1IDIxLjUzNCAyNC40MDUgMjEuMDAzIDI2LjAzNCAxNy42MDggMjYuMDM0IDE3LjYwOCAyNi4wMzRcIiBzdHlsZT1cImZpbGw6IzIzMWYyMDtmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNy42MDggMjYuMDM0IDE5LjMwOSAyMC45NTMgMTguNzQyIDIwLjk1MyAxOS4zMDkgMTkuMjUxIDIxLjg0MyAxOS4yNTEgMjIuNDEgMTkuODE5IDIyLjc5IDE5LjgxOSAyMy4zNSAxOS4yNTEgMjUuMjM4IDE5LjI1MSAyNS44MDUgMTkuODE5IDI2LjE3OCAxOS44MTkgMjYuNzQ1IDE5LjI1MSAyOC44MTIgMTkuMjUxIDI5LjU2NiAyMC4zODYgMjguMzMxIDI0LjQwNSAyOC44OTEgMjQuNDA1IDI4LjM0NiAyNi4wMzQgMjQuOTUxIDI2LjAzNCAyNi4yNzggMjIuMDc5IDI1LjQzMSAyMi4wNzkgMjQuNjQ5IDI0LjM5MSAyNS4yMDkgMjQuMzkxIDI0LjY3OCAyNi4wMzQgMjEuMjgzIDI2LjAzNCAyMi42MDMgMjIuMDc5IDIxLjc1NiAyMi4wNzkgMjAuOTY3IDI0LjQwNSAyMS41MzQgMjQuNDA1IDIxLjAwMyAyNi4wMzQgMTcuNjA4IDI2LjAzNCAxNy42MDggMjYuMDM0XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjguNTU0IDE5LjgxOSAyOC45OTIgMjAuNDQzIDI3LjU5OSAyNC45MDcgMjguMTU5IDI0LjkwNyAyNy45NzIgMjUuNDY3IDI1LjcxMSAyNS40NjcgMjcuMDMyIDIxLjUxMiAyNS4wNTEgMjEuNTEyIDIzLjkyNCAyNC45MDcgMjQuNDg0IDI0LjkwNyAyNC4yOTcgMjUuNDY3IDIyLjAzNiAyNS40NjcgMjMuMzU3IDIxLjUxMiAyMS4zNzYgMjEuNTEyIDIwLjI0OSAyNC45MDcgMjAuODE2IDI0LjkwNyAyMC42MjIgMjUuNDY3IDE4LjM2MSAyNS40NjcgMjAuMDYzIDIwLjM4NiAxOS40OTUgMjAuMzg2IDE5LjY4MiAxOS44MTkgMjEuNzU2IDE5LjgxOSAyMi4zMjMgMjAuMzg2IDIyLjg4MyAyMC4zODYgMjMuNDUgMTkuODE5IDI1LjE0NCAxOS44MTkgMjUuNzExIDIwLjM4NiAyNi4yNzggMjAuMzg2IDI2Ljg0NSAxOS44MTkgMjguNTU0IDE5LjgxOSAyOC41NTQgMTkuODE5XCIgc3R5bGU9XCJmaWxsOiNkMGQyZDM7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBvbHlnb24gcG9pbnRzPVwiMjguNTU0IDE5LjgxOSAyOC45OTIgMjAuNDQzIDI3LjU5OSAyNC45MDcgMjguMTU5IDI0LjkwNyAyNy45NzIgMjUuNDY3IDI1LjcxMSAyNS40NjcgMjcuMDMyIDIxLjUxMiAyNS4wNTEgMjEuNTEyIDIzLjkyNCAyNC45MDcgMjQuNDg0IDI0LjkwNyAyNC4yOTcgMjUuNDY3IDIyLjAzNiAyNS40NjcgMjMuMzU3IDIxLjUxMiAyMS4zNzYgMjEuNTEyIDIwLjI0OSAyNC45MDcgMjAuODE2IDI0LjkwNyAyMC42MjIgMjUuNDY3IDE4LjM2MSAyNS40NjcgMjAuMDYzIDIwLjM4NiAxOS40OTUgMjAuMzg2IDE5LjY4MiAxOS44MTkgMjEuNzU2IDE5LjgxOSAyMi4zMjMgMjAuMzg2IDIyLjg4MyAyMC4zODYgMjMuNDUgMTkuODE5IDI1LjE0NCAxOS44MTkgMjUuNzExIDIwLjM4NiAyNi4yNzggMjAuMzg2IDI2Ljg0NSAxOS44MTkgMjguNTU0IDE5LjgxOSAyOC41NTQgMTkuODE5XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBhdGggZD1cIk0xOS4wMjIsMTkuMjUxLDE3LjI5MiwyNC40aC41ODlsLS41NiwxLjYzN0gxMy45MzNsMS42OTQtNS4wODJIMTUuMDZsMy45NjItMS43Wm0tMy45NjIsMS43LjU2Ny0xLjdoMy40bC0zLjk2MiwxLjdaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjA7ZmlsbC1ydWxlOmV2ZW5vZGRcIi8+PHBhdGggZD1cIk0xOS4wMjIsMTkuMjUxLDE3LjI5MiwyNC40aC41ODlsLS41NiwxLjYzN0gxMy45MzNsMS42OTQtNS4wODJIMTUuMDZsMy45NjItMS43Wm0tMy45NjIsMS43LjU2Ny0xLjdoMy40bC0zLjk2MiwxLjdaXCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+PHBvbHlnb24gcG9pbnRzPVwiMTYuOTQ3IDI1LjQ2NyAxNy4xMzQgMjQuOTA3IDE2LjU2NyAyNC45MDcgMTguMjY4IDE5LjgxOSAxNS45MTQgMTkuODE5IDE1LjcyIDIwLjM4NiAxNi4zOCAyMC4zODYgMTQuNjg2IDI1LjQ2NyAxNi45NDcgMjUuNDY3IDE2Ljk0NyAyNS40NjdcIiBzdHlsZT1cImZpbGw6I2QwZDJkMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxNi45NDcgMjUuNDY3IDE3LjEzNCAyNC45MDcgMTYuNTY3IDI0LjkwNyAxOC4yNjggMTkuODE5IDE1LjkxNCAxOS44MTkgMTUuNzIgMjAuMzg2IDE2LjM4IDIwLjM4NiAxNC42ODYgMjUuNDY3IDE2Ljk0NyAyNS40NjcgMTYuOTQ3IDI1LjQ2N1wiIHN0eWxlPVwiZmlsbDpub25lO3N0cm9rZTojMjMxZjIwO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjIxNjAwMDAwNTYwMjgzN3B4XCIvPjxwb2x5Z29uIHBvaW50cz1cIjE4LjgyOCAxOC4xMjUgMTkuMjA4IDE2Ljk5MSAxOS4wMjIgMTYuNzExIDE3Ljg4OCAxNi43MTEgMTcuNTE0IDE2Ljk5MSAxNy4xMzQgMTguMTI1IDE3LjMyOCAxOC40MDUgMTguNDYyIDE4LjQwNSAxOC44MjggMTguMTI1IDE4LjgyOCAxOC4xMjVcIiBzdHlsZT1cImZpbGw6I2QwZDJkMztmaWxsLXJ1bGU6ZXZlbm9kZFwiLz48cG9seWdvbiBwb2ludHM9XCIxOC44MjggMTguMTI1IDE5LjIwOCAxNi45OTEgMTkuMDIyIDE2LjcxMSAxNy44ODggMTYuNzExIDE3LjUxNCAxNi45OTEgMTcuMTM0IDE4LjEyNSAxNy4zMjggMTguNDA1IDE4LjQ2MiAxOC40MDUgMTguODI4IDE4LjEyNSAxOC44MjggMTguMTI1XCIgc3R5bGU9XCJmaWxsOm5vbmU7c3Ryb2tlOiMyMzFmMjA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjAuMjE2MDAwMDA1NjAyODM3cHhcIi8+YCxcblx0XCJWaXN1YWwgQmFzaWNcIjogYDxwYXRoIGQ9XCJNNi42Nyw3LjgzNiw5LDE4LjkxNSwxMS4zMzYsNy44MzZIMTZMMTEuMzM2LDI0LjE2NEg2LjY3MkwyLDcuODM2WlwiIHN0eWxlPVwiZmlsbDojMDA1MTlhXCIvPjxwYXRoIGQ9XCJNMTguMzMxLDcuODM2aDcuNmE0LjA4LDQuMDgsMCwwLDEsMi45LDEuNzQ5LDMuNzgsMy43OCwwLDAsMSwuNTcxLDIuMDQsMy45ODUsMy45ODUsMCwwLDEtLjU3MSwyLjAzNCw0LjEwOCw0LjEwOCwwLDAsMS0yLjM0MSwxLjc2Myw0LjEsNC4xLDAsMCwxLDIuOTI5LDEuNzU2LDMuOCwzLjgsMCwwLDEsLjU4LDIuMSw0LjY2Myw0LjY2MywwLDAsMS0uNTc5LDIuNTQ2LDUuMDQ3LDUuMDQ3LDAsMCwxLTMuNSwyLjMzOEgxOC4zMzFaTTIzLDE0LjI1MmgxLjE2NmExLjc1NCwxLjc1NCwwLDAsMCwwLTMuNUgyM1ptMCw3SDI0LjM5YTIuMDQ3LDIuMDQ3LDAsMCwwLDAtNC4wODlIMjNaXCIgc3R5bGU9XCJmaWxsOiMwMDUxOWFcIi8+YCxcblx0XCJXZWJBc3NlbWJseVwiOiBgPHBhdGggZD1cIk0xOS4xNTMsMi4zNVYyLjVhMy4yLDMuMiwwLDEsMS02LjQsMGgwVjIuMzVIMlYzMC4yNjlIMjkuOTE5VjIuMzVaXCIgc3R5bGU9XCJmaWxsOiM2NTRmZjBcIi8+PHBhdGggZD1cIk04LjQ4NSwxNy40aDEuODVMMTEuNiwyNC4xMjNoLjAyM0wxMy4xNCwxNy40aDEuNzMxbDEuMzcxLDYuODFoLjAyN2wxLjQ0LTYuODFoMS44MTVsLTIuMzU4LDkuODg1SDE1LjMyOWwtMS4zNi02LjcyOGgtLjAzNmwtMS40NTYsNi43MjhoLTEuODdabTEzLjEyNCwwaDIuOTE3bDIuOSw5Ljg4NUgyNS41MTVsLS42My0yLjJIMjEuNTYybC0uNDg2LDIuMkgxOS4yMTdabTEuMTEsMi40MzctLjgwNywzLjYyN2gyLjUxMkwyMy41LDE5LjgzMlpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz5gLFxuXHRcIldvbGZyYW0gbGFuZ3VhZ2VcIjogYDxwYXRoIGQ9XCJNMzAsMjAuNTUsMjUuOTQsMTYsMzAsMTEuNDVsLTUuOTQ4LTEuMjk0LjU5NS02LjA2N0wxOS4wNzEsNi41NDMsMTUuOTkzLDEuMjc5LDEyLjkyOSw2LjU0Myw3LjM1Myw0LjA4OWwuNTk1LDYuMDY3TDIsMTEuNDUsNi4wNTksMTYsMiwyMC41NWw1Ljk0OCwxLjI5NC0uNTk1LDYuMDY3LDUuNTc2LTIuNDU0LDMuMDc4LDUuMjY0LDMuMDYzLTUuMjY0LDUuNTkxLDIuNDU0LS42MS02LjA2N1pcIiBzdHlsZT1cImZpbGw6I2QxMFwiLz48cGF0aCBkPVwiTTE5LjM1MywxMS40NWE2Ljk2OCw2Ljk2OCwwLDAsMS0zLjQyLjg2Miw1LjQ0Niw1LjQ0NiwwLDAsMS0zLjIxMi0uODYyQTcuMSw3LjEsMCwwLDEsMTIuNSwxNC44YTYuMjI1LDYuMjI1LDAsMCwxLTEuODc0LDIuOTE0LDcuNDU0LDcuNDU0LDAsMCwxLDMuMTM4LDEuMTksOS42NTksOS42NTksMCwwLDEsMi4yMTYsMi43MjEsOC4xOTQsOC4xOTQsMCwwLDEsMi4xNDEtMi42OTEsNy42MDUsNy42MDUsMCwwLDEsMy4yNDItMS4yLDEyLjU2MiwxMi41NjIsMCwwLDEtMS45MzMtMi45NDRBNi43MTgsNi43MTgsMCwwLDEsMTkuMzUzLDExLjQ1Wm0tMS45LDYuNTQzYTUuMjMzLDUuMjMzLDAsMCwwLTEuNDU3LDEuNjM2LDYuMjM2LDYuMjM2LDAsMCwwLTEuNS0xLjYyMSw1LjE5MSw1LjE5MSwwLDAsMC0xLjk0OC0uODQ4LDYuODM5LDYuODM5LDAsMCwwLDEuMTE1LTIuMDA3LDYuMTgsNi4xOCwwLDAsMCwuMjIzLTIuMDgyLDYuMzE3LDYuMzE3LDAsMCwwLDIuMDgyLjQ0Niw2LjU1Miw2LjU1MiwwLDAsMCwyLjE3MS0uNDYxLDQuNTIxLDQuNTIxLDAsMCwwLC4wNzQsMi4xNTYsNi43MSw2LjcxLDAsMCwwLDEuMjQ5LDEuOTMzQTcuMDMxLDcuMDMxLDAsMCwwLDE3LjQ1LDE3Ljk5M1ptNC4yMzgtNC4wMTVjLS4zNTctMS4xNzUuNjU0LTYuNzA2LjY1NC02LjcwNlMxOC41NSw5Ljg0NCwxNS44ODgsOS44NDRzLTYuMjMtMi41NzItNi4yMy0yLjU3MiwxLjE3NSw0LjAxNS40NjEsNi41ODctNC4zODcsNS40NzItNC4zODcsNS40NzIsNC43ODguMjgzLDYuNiwxLjUsMy42NTgsNS45NDgsMy42NTgsNS45NDgsMi40NTQtNS4yLDMuNDgtNS45NDgsNi44LTEuNSw2LjgtMS41LTQuMjIzLTQuMTc4LTQuNTgtNS4zNTNabS0yLjg0LDUuOTYzYTkuNDQ0LDkuNDQ0LDAsMCwwLTIuODQsNC4xNzhzLTEuNDEzLTMuMTUyLTIuOTc0LTQuMjIzUzguMywxOC41NDMsOC4zLDE4LjU0M3MyLjQ1NC0yLjE3MSwzLjA0OC00LjFhMTEuOTIzLDExLjkyMywwLDAsMC0uMS00Ljk1MiwxMS4zLDExLjMsMCwwLDAsNC42NjksMS42MjFjMi4wMzcsMCw0Ljg0OC0xLjYyMSw0Ljg0OC0xLjYyMXMtLjgxOCwzLjAzMy0uMTY0LDQuOTIyLDMuMTA4LDQuMTM0LDMuMTA4LDQuMTM0YTEwLjU1NywxMC41NTcsMCwwLDAtNC44NjIsMS40WlwiIHN0eWxlPVwiZmlsbDojZmZmXCIvPmAsXG5cdFwiWE1MXCI6IGA8cGF0aCBkPVwiTTIwLjQyLDIxLjE1N2wyLjIxMSwyLjIxMUwzMCwxNiwyMi42MzEsOC42MzEsMjAuNDIsMTAuODQzLDI1LjU4LDE2WlwiIHN0eWxlPVwiZmlsbDojZjE2NjJhXCIvPjxwYXRoIGQ9XCJNMTEuNTgsMTAuODQzLDkuMzY5LDguNjMxLDIsMTZsNy4zNjksNy4zNjksMi4yMTEtMi4yMTFMNi40MiwxNlpcIiBzdHlsZT1cImZpbGw6I2YxNjYyYVwiLz48cGF0aCBkPVwiTTE3LjQxMSw3LjY3N2wxLjYuNDM3LTQuNDIsMTYuMjA5LTEuNi0uNDM3LDQuNDItMTYuMjA5WlwiIHN0eWxlPVwiZmlsbDojZjE2NjJhXCIvPmAsXG5cdFwiWFF1ZXJ5XCI6IGA8cGF0aCBkPVwiTTIwLjQyLDIxLjE1N2wyLjIxMSwyLjIxMUwzMCwxNiwyMi42MzEsOC42MzEsMjAuNDIsMTAuODQzLDI1LjU4LDE2Wk0xMS41OCwxMC44NDMsOS4zNjksOC42MzEsMiwxNmw3LjM2OSw3LjM2OSwyLjIxMS0yLjIxMUw2LjQyLDE2Wm01LjgzMS0zLjE2NiwxLjYuNDM3LTQuNDIsMTYuMjA5LTEuNi0uNDM3WlwiIHN0eWxlPVwiZmlsbDojZjE2NjJhXCIvPjxwYXRoIGQ9XCJNMjAuMzMyLDE4LjQ2MmEzLjM1NCwzLjM1NCwwLDAsMSwuOTc1LTEuNDIzLDQuMDE0LDQuMDE0LDAsMCwxLDEuNjE3LS44QTkuMTE4LDkuMTE4LDAsMCwxLDI1LjEzOCwxNmE1LjQ3Miw1LjQ3MiwwLDAsMSwzLjY4MSwxLjAzOUEzLjUsMy41LDAsMCwxLDMwLDE5LjgwOGE0LjQ3LDQuNDcsMCwwLDEtLjI0LDEuNDkxLDMuMTI0LDMuMTI0LDAsMCwxLS44MzgsMS4yMzlsLTEuNjc1LDEuNmExLjUxMiwxLjUxMiwwLDAsMC0uNDI0Ljc4OSw1LjMwNyw1LjMwNywwLDAsMC0uMSwxLjFIMjN2LS41NGE2LjMyLDYuMzIsMCwwLDEsLjIwNy0xLjc3OCwyLjg4NiwyLjg4NiwwLDAsMSwuNzgtMS4yNGwxLjM1Mi0xLjI4OWExLjg0LDEuODQsMCwwLDAsLjU2My0uODk0LDMuNjgyLDMuNjgyLDAsMCwwLC4xLS44LDEuNSwxLjUsMCwwLDAtLjI1Mi0uOS45LjksMCwwLDAtLjc3OS0uMzQ2LDEuMjU1LDEuMjU1LDAsMCwwLS40ODMuMDg2LjcyNC43MjQsMCwwLDAtLjM0NC4zMzcsMi4zNDcsMi4zNDcsMCwwLDAtLjIxNy43MjEsNy42MTQsNy42MTQsMCwwLDAtLjA4MSwxLjI0SDIwQTYuMTU1LDYuMTU1LDAsMCwxLDIwLjMzMiwxOC40NjJabTYuNDU3LDguNVYzMEgyMi45MzZWMjYuOTYyWlwiIHN0eWxlPVwiZmlsbDojZmNiYTAwXCIvPmAsXG5cdFwiWUFNTFwiOiBgPHBhdGggZD1cIk0yLDEyLjIxOGMuNzU1LDAsMS41MS0uMDA4LDIuMjY0LDBsLjA1My4wMzhRNS43LDEzLjYzOCw3LjA3OCwxNS4wMTRjLjg5MS0uOTA2LDEuOC0xLjc5NCwyLjctMi43LjA1My0uMDUyLjExLS4xMTMuMTkyLS4xLjYwOCwwLDEuMjE1LDAsMS44MjMsMGExLjQsMS40LDAsMCwxLC4zNTMuMDE5Yy0uNy42Ny0xLjM3NywxLjM2OS0yLjA2OSwyLjA1TDUuNTQ1LDE4LjhjLS4zMzEuMzI0LS42NDguNjYzLS45ODkuOTc1LS43NTQuMDIyLTEuNTExLjAwNy0yLjI2Ni4wMDcsMS4yMjMtMS4yMDksMi40MzEtMi40MzMsMy42NTgtMy42MzdDNC42MjcsMTQuODQxLDMuMzE4LDEzLjUyNSwyLDEyLjIxOFpcIiBzdHlsZT1cImZpbGw6I2ZmZTg4NVwiLz48cGF0aCBkPVwiTTEyLjcsMTIuMjE4Yy42MTMsMCwxLjIyNiwwLDEuODM5LDBxMCwzLjc4MywwLDcuNTY2Yy0uNjExLDAtMS4yMjIuMDEyLTEuODMyLS4wMDgsMC0xLjY2NCwwLTMuMzI5LDAtNC45OTQtMS42LDEuNjA3LTMuMjA5LDMuMi00LjgxMSw0LjgtLjA4OS4wOC0uMTY2LjIxNy0uMzA1LjE5NC0uODI0LS4wMDYtMS42NDksMC0yLjQ3NCwwUTguOTE2LDE2LDEyLjcsMTIuMjE4WlwiIHN0eWxlPVwiZmlsbDojZmZlODg1XCIvPjxwYXRoIGQ9XCJNMTQuOTU4LDEyLjIyYy40Ny0uMDA5LjkzOSwwLDEuNDA5LDAsLjgzNi44NTMsMS42OSwxLjY4OSwyLjUzNiwyLjUzMnExLjI2OC0xLjI2NywyLjUzOS0yLjUzMi43LDAsMS40LDAtLjAwOCwzLjc4NCwwLDcuNTY3Yy0uNDcxLDAtLjk0My4wMDYtMS40MTQsMHEuMDA4LTIuMzg3LDAtNC43NzNjLS44NDQuODQzLTEuNjc2LDEuNy0yLjUyNiwyLjUzNi0uODU2LS44MzUtMS42ODctMS42OTUtMi41MzItMi41NDEsMCwxLjU5NC0uMDA2LDMuMTg4LjAwNiw0Ljc4MS0uNDcyLDAtLjk0My4wMDUtMS40MTUsMFExNC45NTgsMTYsMTQuOTU4LDEyLjIyWlwiIHN0eWxlPVwiZmlsbDojZmZlODg1XCIvPjxwYXRoIGQ9XCJNMjMuMjU5LDEyLjIxN2MuNDcyLDAsLjk0NC0uMDA3LDEuNDE2LDBxLS4wMDcsMy4wODMsMCw2LjE2NmMxLjI2LDAsMi41MjEsMCwzLjc4MiwwLC4wNjMuMDA2LjE0NC0uMDEyLjE5MS4wNDUuNDQ4LjQ1NC45MDcuOSwxLjM1MywxLjM1NHEtMy4zNzEuMDA3LTYuNzQxLDBRMjMuMjY3LDE2LDIzLjI1OSwxMi4yMTdaXCIgc3R5bGU9XCJmaWxsOiNmZmU4ODVcIi8+YCxcblx0XCJZQU5HXCI6IGA8cGF0aCBkPVwiTTguODc3LDIzLjE1OWMwLTUuNTM1LDMuOTkyLTcuMTY4LDcuODk0LTcuMTY4LDMuMzU3LDAsNS45ODgtMy44MTEsNS45ODgtNi42MjQsMC0zLjYyMS0yLjQ4Ny01LjgzMS00Ljg4Mi03LjEyQTEzLjg4MSwxMy44ODEsMCwxLDAsMTQuNSwyOS44QzEwLjQ5MSwyOC4yNDgsOC44NzcsMjUuMzI0LDguODc3LDIzLjE1OVpcIiBzdHlsZT1cImZpbGw6I2ZmZlwiLz48cGF0aCBkPVwiTTE0LjQ4MiwyOS45MTdBMTQsMTQsMCwwLDEsMTYsMmExNC4xNTQsMTQuMTU0LDAsMCwxLDEuODkzLjEzMWwuMDQuMDEzYzIuMjU1LDEuMjEzLDQuOTQ0LDMuNDUyLDQuOTQ0LDcuMjIzLDAsMi43MTUtMi41NjQsNi43NDEtNi4xMDYsNi43NDEtMi45LDAtNy43NzYuOTE2LTcuNzc2LDcuMDUsMCwyLjAyMiwxLjQ1MSw0Ljk0Niw1LjU0Miw2LjUzMVpNMTYsMi4yMzZBMTMuNzY1LDEzLjc2NSwwLDAsMCwxMy42MzcsMjkuNTZjLTMuNTgxLTEuNjg0LTQuODc3LTQuNDQ3LTQuODc3LTYuNCwwLTYuNTc2LDUuNi03LjI4Niw4LjAxMi03LjI4NiwzLjQwNiwwLDUuODctMy44ODYsNS44Ny02LjUwNiwwLTMuNjQ1LTIuNjA2LTUuODItNC44LTcuMDA2QTEzLjkyOCwxMy45MjgsMCwwLDAsMTYsMi4yMzZaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PHBhdGggZD1cIk0yOS44ODIsMTZhMTMuODgyLDEzLjg4MiwwLDAsMC0xMi0xMy43NTJjMi40LDEuMjg5LDQuODgyLDMuNSw0Ljg4Miw3LjEyLDAsMi44MTMtMi42MzEsNi42MjQtNS45ODgsNi42MjQtMy45LDAtNy44OTQsMS42MzMtNy44OTQsNy4xNjgsMCwyLjE2NiwxLjYxMyw1LjA4OSw1LjYxOCw2LjY0MUExMy44NzUsMTMuODc1LDAsMCwwLDI5Ljg4MiwxNlpcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz48cGF0aCBkPVwiTTE2LDMwYTE0LjIsMTQuMiwwLDAsMS0xLjUxOC0uMDgzbC0uMDMtLjAwN2MtNC4yLTEuNjI4LTUuNjkzLTQuNjU0LTUuNjkzLTYuNzUsMC02LjU3Niw1LjYtNy4yODYsOC4wMTItNy4yODYsMy40MDYsMCw1Ljg3LTMuODg2LDUuODctNi41MDYsMC0zLjY1NS0yLjYyMS01LjgzMy00LjgyLTcuMDE2bC4wNzItLjIyMUExNCwxNCwwLDAsMSwxNiwzMFptLTEuNDc3LS4zMTZBMTMuNzU2LDEzLjc1NiwwLDAsMCwyOS43NjQsMTYsMTMuODA3LDEzLjgwNywwLDAsMCwxOC41LDIuNDY2YzIuMTE1LDEuMjcyLDQuMzc3LDMuNDQxLDQuMzc3LDYuOSwwLDIuNzE1LTIuNTY0LDYuNzQxLTYuMTA2LDYuNzQxLTIuOSwwLTcuNzc2LjkxNi03Ljc3Niw3LjA1QzksMjUuMTc4LDEwLjQ0MywyOC4xLDE0LjUyMywyOS42ODRaXCIgc3R5bGU9XCJmaWxsOiMyMzFmMjBcIi8+PGNpcmNsZSBjeD1cIjE1Ljk0M1wiIGN5PVwiMjIuNzg3XCIgcj1cIjEuNTA2XCIgc3R5bGU9XCJmaWxsOiNmZmZcIi8+PGNpcmNsZSBjeD1cIjE2LjAwN1wiIGN5PVwiOS4xNDJcIiByPVwiMS41MDZcIiBzdHlsZT1cImZpbGw6IzIzMWYyMFwiLz5gLFxuXHRcIlppZ1wiOiBgPHBvbHlnb24gcG9pbnRzPVwiNS43MzMgMTkuNzMxIDUuNzMzIDEyLjI2NCA4LjUzMyAxMi4yNjQgOC41MzMgOC41MzEgMiA4LjUzMSAyIDIzLjQ2NCA1LjU0NyAyMy40NjQgOC45MDcgMTkuNzMxIDUuNzMzIDE5LjczMVwiIHN0eWxlPVwiZmlsbDojZjdhNDFkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI2LjQ1MyA4LjUzMSAyMy4wOTMgMTIuMjY0IDI2LjI2NyAxMi4yNjQgMjYuMjY3IDE5LjczMSAyMy40NjcgMTkuNzMxIDIzLjQ2NyAyMy40NjQgMzAgMjMuNDY0IDMwIDguNTMxIDI2LjQ1MyA4LjUzMVwiIHN0eWxlPVwiZmlsbDojZjdhNDFkXCIvPjxwb2x5Z29uIHBvaW50cz1cIjI2Ljg3NSA2LjcwNyAyMC41MTMgOC41MzEgOS40NjcgOC41MzEgOS40NjcgMTIuMjY0IDE2Ljg0NyAxMi4yNjQgNS4xMTUgMjUuMjkzIDExLjQ5NyAyMy40NjQgMjIuNTMzIDIzLjQ2NCAyMi41MzMgMTkuNzMxIDE1LjE0OCAxOS43MzEgMjYuODc1IDYuNzA3XCIgc3R5bGU9XCJmaWxsOiNmN2E0MWRcIi8+YFxufVxuZXhwb3J0IGNvbnN0IExBTkdVQUdFX0NPTE9VUlMgOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHtcblx0XCIuZ2l0aWdub3JlXCI6ICcjZGQ0YzM1Jyxcblx0XCIuaGdpZ25vcmVcIjogJyNiZmJmYmYnLFxuXHRcIi5ucG1pZ25vcmVcIjogJyNjYjM4MzcnLFxuXHRcIi5wcm9wZXJ0aWVzXCI6ICcjOTliOGM0Jyxcblx0XCI2NTAyIEFzc2VtYmx5XCI6ICcjMDAwMGJmJyxcblx0XCJBY3Rpb25TY3JpcHRcIjogJyNjNDE3MTgnLFxuXHRcIkFkYVwiOiAnIzBmMjNjMycsXG5cdFwiQUxcIjogJyMyZWE5OGUnLFxuXHRcIkFOVExSNFwiOiAnI2U0NGEzMicsXG5cdFwiQXBhY2hlIENvbmZpZ3VyYXRpb25cIjogJyNjOTIwMzcnLFxuXHRcIkFwZXhcIjogJyMwZjliZDcnLFxuXHRcIkFQTFwiOiAnI2QyZDJkMicsXG5cdFwiQXBwbGVTY3JpcHRcIjogJyNhOGMyYWInLFxuXHRcIkFyZHVpbm9cIjogJyMyZDkwOTQnLFxuXHRcIkFSTSBBc3NlbWJseVwiOiAnIzAwMDBiZicsXG5cdFwiQXNjaWlEb2NcIjogJyNlNDAwNDYnLFxuXHRcIkFTUC5ORVQgKEMjKVwiOiAnIzMzYTlkYycsXG5cdFwiQXV0b0hvdGtleVwiOiAnI2Q4ZDhkOCcsXG5cdFwiQXV0b0l0XCI6ICcjNWQ4M2FjJyxcblx0XCJBdnJvIElETFwiOiAnIzAwNDBmZicsXG5cdFwiQVdLXCI6ICcjZDJkMmQyJyxcblx0XCJCYXRjaFwiOiAnI2Q5YjQwMCcsXG5cdFwiQyNcIjogJyMzNjg4MzInLFxuXHRcIkNcIjogJyMwMDVmOTEnLFxuXHRcIkMrK1wiOiAnIzk4NGM5MycsXG5cdFwiQ2xvanVyZVwiOiAnIzkxZGM0NycsXG5cdFwiQ01ha2VcIjogJyMwMWEzMDAnLFxuXHRcIkNPQk9MXCI6ICcjMDA1Y2E1Jyxcblx0XCJDb2ZmZWVTY3JpcHRcIjogJyM2ZjRlMzcnLFxuXHRcIkNyeXN0YWxcIjogJyNjOGM4YzgnLFxuXHRcIkNTU1wiOiAnIzE1NzJiNicsXG5cdFwiQ1NWXCI6ICcjYzJjMmMyJyxcblx0XCJEXCI6ICcjYjAzOTMxJyxcblx0XCJEYXJ0XCI6ICcjNThiNmYwJyxcblx0XCJEaGFsbFwiOiAnI2I3YjdiNycsXG5cdFwiRGlmZlwiOiAnI2MwMDAwMCcsXG5cdFwiRGphbmdvL0ppbmphMlwiOiAnI2ZmMDAwMCcsXG5cdFwiRG9ja2VyXCI6ICcjMDA5NmU2Jyxcblx0XCJET1QgKEdyYXBodml6KVwiOiAnIzRlZDFmOCcsXG5cdFwiRWRpdG9yQ29uZmlnXCI6ICcjZTNlM2Y4Jyxcblx0XCJFSlNcIjogJyM5MGE5M2EnLFxuXHRcIkVsaXhpclwiOiAnIzQ1MjQ1OScsXG5cdFwiRWxtXCI6ICcjOGNkNjM2Jyxcblx0XCJFUkJcIjogJyM5MjFhMWUnLFxuXHRcIkVybGFuZ1wiOiAnI2EyMDAzZScsXG5cdFwiRiNcIjogJyMzNzhiYmEnLFxuXHRcIkZpcmVzdG9yZSBzZWN1cml0eSBydWxlc1wiOiAnI2Y2ODIwYycsXG5cdFwiRmxvd1wiOiAnI2ZmYjA0NycsXG5cdFwiRm9ydHJhblwiOiAnIzczNGY5NicsXG5cdFwiRnJlZU1hcmtlciBUZW1wbGF0ZSBMYW5ndWFnZVwiOiAnIzAwNTBiMicsXG5cdFwiR2FtZU1ha2VyIExhbmd1YWdlXCI6ICcjOGJjMzRhJyxcblx0XCJHLWNvZGVcIjogJyNiYTAwMDAnLFxuXHRcIkdEU2NyaXB0XCI6ICcjNDc4Y2JmJyxcblx0XCJHaXRcIjogJyNkZDRjMzUnLFxuXHRcIkdMU0xcIjogJyM0Mzg2YjUnLFxuXHRcIkdvIG1vZHVsZVwiOiAnI2NlMzI2MicsXG5cdFwiR29cIjogJyMwMGFjZDcnLFxuXHRcIkdyYWRsZVwiOiAnIzAwNjUzMycsXG5cdFwiR3JhcGhRTFwiOiAnI2UxMDA5OCcsXG5cdFwiR3Jvb3Z5XCI6ICcjNjM5OGFhJyxcblx0XCJIYW1sXCI6ICcjZWNkZmE3Jyxcblx0XCJIYW5kbGViYXJzXCI6ICcjYzE5NzcwJyxcblx0XCJIYXNrZWxsXCI6ICcjQzA0NTA0Jyxcblx0XCJIYXhlXCI6ICcjZjY4NzEyJyxcblx0XCJITFNMXCI6ICcjMDAwMGZmJyxcblx0XCJIVE1MXCI6ICcjZTQ0ZjI2Jyxcblx0XCJIVFRQXCI6ICcjM2I2MWE2Jyxcblx0XCJJZHJpc1wiOiAnIzhhMDgxOScsXG5cdFwiSW5pXCI6ICcjOTliOGM0Jyxcblx0XCJJb1wiOiAnI2MyYzJjMicsXG5cdFwiSmF2YVwiOiAnIzUzODJhMScsXG5cdFwiSmF2YVNjcmlwdFwiOiAnI2Y1ZGUxOScsXG5cdFwiSlNPTlwiOiAnI2Y1ZGUxOScsXG5cdFwiSlNPTjVcIjogJyM5MDkwOTAnLFxuXHRcIkp1bGlhXCI6ICcjNDA2M2Q4Jyxcblx0XCJLb3RsaW5cIjogJyM5ZDRiOWQnLFxuXHRcIkt1c3RvXCI6ICcjNTliNGQ5Jyxcblx0XCJMYVRlWFwiOiAnI2NmY2ZjZicsXG5cdFwiTGVzc1wiOiAnIzJhNGY4NCcsXG5cdFwiTGlxdWlkXCI6ICcjMDA0OTk5Jyxcblx0XCJMaXNwXCI6ICcjODM4MWM1Jyxcblx0XCJMaXZlU2NyaXB0XCI6ICcjMzE3ZWFjJyxcblx0XCJMb2cgZmlsZVwiOiAnIzAwYmQwMicsXG5cdFwiTE9MQ09ERVwiOiAnIzhkMjcwMScsXG5cdFwiTHVhXCI6ICcjMDUwMDgwJyxcblx0XCJNYXJrZG93blwiOiAnIzc1NTgzOCcsXG5cdFwiTUFUTEFCXCI6ICcjZWY2YzNlJyxcblx0XCJNQVhTY3JpcHRcIjogJyMwMDY5NmInLFxuXHRcIk1FTFwiOiAnIzA2YTBhMicsXG5cdFwiTW9uZ29EQlwiOiAnIzQxYTI0NycsXG5cdFwibmdpbnhcIjogJyMwMTk2MzknLFxuXHRcIk5pbVwiOiAnI2ZmZTk1MycsXG5cdFwiTml4XCI6ICcjNTI3N2MzJyxcblx0XCJOU0lTXCI6ICcjYTQyZDI2Jyxcblx0XCJPYmplY3QgUGFzY2FsXCI6ICcjRkY2MzQ0Jyxcblx0XCJPYmplY3RpdmUtQ1wiOiAnI2MyYzJjMicsXG5cdFwiT0NhbWxcIjogJyNmMjkxMDQnLFxuXHRcIk9jdGF2ZVwiOiAnIzc3Y2NlMScsXG5cdFwiT3BlbkNMXCI6ICcjRkYxQzFBJyxcblx0XCJQYXNjYWxcIjogJyNGRjYzNDQnLFxuXHRcIlBlcmxcIjogJyMzYTNjNWInLFxuXHRcIlBIUFwiOiAnIzRjNmI5NicsXG5cdFwiUEwvU1FMXCI6ICcjZmYwMDAwJyxcblx0XCJQbGFpbiB0ZXh0XCI6ICcjYzJjMmMyJyxcblx0XCJQbGFudFVNTFwiOiAnI0ExMUY0MScsXG5cdFwiUG93ZXJRdWVyeVwiOiAnI2NmY2ZjZicsXG5cdFwiUG93ZXJTaGVsbFwiOiAnIzUzOTFmZScsXG5cdFwiUHJvY2Vzc2luZ1wiOiAnIzFjNGM3MCcsXG5cdFwiUHJvbG9nXCI6ICcjZWMxYzI0Jyxcblx0XCJQcm90b2NvbCBCdWZmZXJzXCI6ICcjOTdmZjI3Jyxcblx0XCJQdWdcIjogJyM0NDI4MjMnLFxuXHRcIlB1cHBldFwiOiAnI2ZmYWUxYScsXG5cdFwiUHVyZVNjcmlwdFwiOiAnIzE2MTcxYicsXG5cdFwiUHl0aG9uXCI6ICcjMzY3MUExJyxcblx0XCJRIChrZGIrIGRhdGFiYXNlKVwiOiAnIzFlNzhiMycsXG5cdFwiUSNcIjogYCMzMzMzY2NgLFxuXHRcIlFNTFwiOiAnIzQxY2Q1MicsXG5cdFwiUlwiOiAnIzI3NmRjMycsXG5cdFwiUmFja2V0XCI6ICcjOWYxZDIwJyxcblx0XCJSYXpvciBDI1wiOiAnIzM2ODgzMicsXG5cdFwiUmVhY3QgSlNYXCI6ICcjMDBkOGZmJyxcblx0XCJSZWFjdCBUU1hcIjogJyMwMDdhY2MnLFxuXHRcIlJlYXNvblwiOiAnI2RkNGIzOScsXG5cdFwiUmVnb1wiOiAnIzc4OTI5YScsXG5cdFwiUmVTY3JpcHRcIjogJyNlODRmNGYnLFxuXHRcInJlU1QgKHJlU3RydWN0dXJlZFRleHQpXCI6ICcjY2UzZjMxJyxcblx0XCJSb2JvdCBGcmFtZXdvcmtcIjogYGAsXG5cdFwiUnVieVwiOiAnI2IzMTMwMScsXG5cdFwiUnVzdFwiOiAnI2EwNGYxMicsXG5cdFwiU0FTXCI6ICcjMDAyYmI1Jyxcblx0XCJTYXNzIChTYXNzKVwiOiAnI2NkNjc5OScsXG5cdFwiU2FzcyAoU0NTUylcIjogJyNjZDY3OTknLFxuXHRcIlNjYWxhXCI6IGAjZTYyZDJhIGAsXG5cdFwiU2hlbGwgc2Vzc2lvblwiOiAnI2Q5YjQwMCcsXG5cdFwiU2hlbGxcIjogJyNkOWI0MDAnLFxuXHRcIlNtYXJ0eVwiOiAnI2Y2ZTIwMCcsXG5cdFwiU29saWRpdHkgKEV0aGVyZXVtKVwiOiAnI2MxYzFjMScsXG5cdFwiU29sdXRpb24gZmlsZVwiOiAnIzg1NGNjNycsXG5cdFwiU1BBUlFMXCI6ICcjMGM0NzljJyxcblx0XCJTUUZcIjogJyNjMmMyYzInLFxuXHRcIlNRRjogU3RhdHVzIFF1byBGdW5jdGlvbiAoQXJtYSAzKVwiOiAnI2MyYzJjMicsXG5cdFwiU1FMXCI6ICcjZmZkYTQ0Jyxcblx0XCJTcXVpcnJlbFwiOiAnI2EwNWEyYycsXG5cdFwiU3RhblwiOiAnI2IyMDAxZCcsXG5cdFwiU3RhdGEgQWRvXCI6ICcjM2M2ZThmJyxcblx0XCJTdHlsdXNcIjogJyNjMmMyYzInLFxuXHRcIlNWR1wiOiAnI2ZmYjEzYicsXG5cdFwiU3dpZnRcIjogJyNGQTVEMkQnLFxuXHRcIlN5c3RlbWQgY29uZmlndXJhdGlvbiBmaWxlXCI6ICcjMzBkNDc1Jyxcblx0XCJUNCB0ZW1wbGF0aW5nXCI6ICcjMWU4OGU1Jyxcblx0XCJUNCBUZXh0IFRlbXBsYXRlcyAoQyMpXCI6ICcjMWU4OGU1Jyxcblx0XCJUNCBUZXh0IFRlbXBsYXRlcyAoVkIpXCI6ICcjMWU4OGU1Jyxcblx0XCJUY2xcIjogJyNlZmYxY2InLFxuXHRcIlRlbXBsYXRlIFRvb2xraXQgMlwiOiAnIzNiY2VmYycsXG5cdFwiVGVYXCI6ICcjY2ZjZmNmJyxcblx0XCJUZXh0aWxlXCI6ICcjZmZlN2FjJyxcblx0XCJUT01MXCI6ICcjYmZiZmJmJyxcblx0XCJUU0NvbmZpZ1wiOiAnIzAwN2FjYycsXG5cdFwiVHdpZ1wiOiAnIzc4ZGM1MCcsXG5cdFwiVHlwZVNjcmlwdFwiOiAnIzMxNzhjNicsXG5cdFwiVHlwb1NjcmlwdFwiOiAnI2ZmODcwMCcsXG5cdFwiVlwiOiAnIzVkODdiZicsXG5cdFwiVmFsYVwiOiAnIzQwMzc1NycsXG5cdFwiVkIuTmV0XCI6ICcjMDA1MTlhJyxcblx0XCJWQkFcIjogJyNkODdiMzAnLFxuXHRcIlZlbG9jaXR5XCI6ICcjMjYyNjkyJyxcblx0XCJWZXJpbG9nXCI6ICcjMWEzNDhmJyxcblx0XCJWSERMXCI6ICcjMGQ5YjM1Jyxcblx0XCJ2aW1cIjogJyM0M2I1NGEnLFxuXHRcIlZpc3VhbCBCYXNpY1wiOiAnIzAwNTE5YScsXG5cdFwiV2ViQXNzZW1ibHlcIjogJyM2NTRmZjAnLFxuXHRcIldvbGZyYW0gbGFuZ3VhZ2VcIjogJyNkMDEwMDAnLFxuXHRcIlhNTFwiOiAnI2YxNjYyYScsXG5cdFwiWFF1ZXJ5XCI6ICcjZjE2NjJhJyxcblx0XCJZQU1MXCI6ICcjZmZlODg1Jyxcblx0XCJZQU5HXCI6ICcjMjMxZjIwJyxcblx0XCJaaWdcIjogJyNmN2E0MWQnXG59XG4iLCAiaW1wb3J0IHsgQXBwLCBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nLCBOb3RpY2UsIFRleHRDb21wb25lbnQsIERyb3Bkb3duQ29tcG9uZW50LCBTbGlkZXJDb21wb25lbnQsIFRvZ2dsZUNvbXBvbmVudCwgRXh0cmFCdXR0b25Db21wb25lbnQgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBQaWNrciBmcm9tIFwiQHNpbW9ud2VwL3BpY2tyXCI7XG5pbXBvcnQgeyBDb2xvclRyYW5zbGF0b3IgfSBmcm9tIFwiY29sb3J0cmFuc2xhdG9yXCI7XG5cbmltcG9ydCBDb2RlU3R5bGVyUGx1Z2luIGZyb20gXCIuL21haW5cIjtcbmltcG9ydCB7IENvbG91ciwgQ1NTLCBIRVgsIERpc3BsYXksIENvZGVTdHlsZXJTZXR0aW5ncywgQ29kZVN0eWxlclRoZW1lQ29sb3VycywgUEFSQU1FVEVSUywgREVGQVVMVF9TRVRUSU5HUywgTEFOR1VBR0VfTkFNRVMsIExBTkdVQUdFX0lDT05TX0RBVEEgfSBmcm9tICcuL1NldHRpbmdzJztcblxuY29uc3QgRElTUExBWV9PUFRJT05TOiBSZWNvcmQ8RGlzcGxheSxzdHJpbmc+ID0ge1xuXHRcIm5vbmVcIjogXCJOZXZlclwiLFxuXHRcImlmX2hlYWRlcl9zaG93blwiOiBcIklmIEhlYWRlciBTaG93blwiLFxuXHRcImFsd2F5c1wiOiBcIkFsd2F5c1wiLFxufVxuXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcblx0cGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luO1xuXHRwaWNrcnM6IFJlY29yZDxzdHJpbmcsUGlja3JSZXNldHRhYmxlPjtcblx0ZGlzYWJsZWFibGVDb21wb25lbnRzOiBSZWNvcmQ8c3RyaW5nLEFycmF5PFRvZ2dsZUNvbXBvbmVudCB8IFNsaWRlckNvbXBvbmVudCB8IFRleHRDb21wb25lbnQgfCBFeHRyYUJ1dHRvbkNvbXBvbmVudD4+XG5cblx0Y29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogQ29kZVN0eWxlclBsdWdpbikge1xuXHRcdHN1cGVyKGFwcCwgcGx1Z2luKTtcblx0XHR0aGlzLnBsdWdpbiA9IHBsdWdpbjtcblx0XHR0aGlzLnBpY2tycyA9IHt9XG5cdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHMgPSB7fTtcblx0fVxuXG5cdC8qKlxuXHQgKiAgQnVpbGRzIHRoZSBodG1sIHBhZ2UgdGhhdCBpcyBzaG93ZWQgaW4gdGhlIHNldHRpbmdzLlxuXHQgKi9cblx0ZGlzcGxheSgpIHtcblx0XHRjb25zdCB7Y29udGFpbmVyRWx9ID0gdGhpcztcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHt0ZXh0OiAnU2V0dGluZ3MgZm9yIHRoZSBDb2RlIFN0eWxlciBQbHVnaW4uJ30pO1xuXG5cdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHMgPSB7XG5cdFx0XHQnbGluZU51bWJlcnMnOiBbXSxcblx0XHRcdCd3cmFwTGluZXMnOiBbXSxcblx0XHRcdCdoZWFkZXJMYW5ndWFnZVRhZ3MnOiBbXSxcblx0XHRcdCdoZWFkZXJMYW5ndWFnZUljb25zJzogW10sXG5cdFx0XHQnZWRpdG9yQWN0aXZlTGluZUhpZ2hsaWdodCc6IFtdLFxuXHRcdFx0J2NvZGVibG9ja0FjdGl2ZUxpbmVIaWdobGlnaHQnOiBbXSxcblx0XHRcdCdncmFkaWVudEhpZ2hsaWdodGluZyc6IFtdLFxuXHRcdFx0J2xhbmd1YWdlQm9yZGVyQ29sb3VyJzogW10sXG5cdFx0fTtcblxuXHRcdC8vID09PT09PT09PT0gR2VuZXJhbCA9PT09PT09PT09XG5cblx0XHRsZXQgaWdub3JlVGltZW91dDogTm9kZUpTLlRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57fSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSWdub3JlIENvZGVibG9ja3MnKVxuXHRcdFx0LnNldERlc2MoJ0RlZmluZSBsYW5ndWFnZXMgaW4gYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCB3aGljaCB0aGUgcGx1Z2luIHNob3VsZCBjb21wbGV0ZWx5IGlnbm9yZS4gWW91IGNhbiB1c2UgYSB3aWxkY2FyZCAoKikgZWl0aGVyIGF0IHRoZSBiZWdpbm5pbmcsIG9yIGF0IHRoZSBlbmQuIEZvciBleGFtcGxlOiBhZC0qIHdpbGwgZXhjbHVkZSBjb2RlYmxvY2tzIHdoZXJlIHRoZSBsYW5ndWFnZSBzdGFydHMgd2l0aCBhZC0gZS5nLjogYWQtaW5mbywgYWQtZXJyb3IgZXRjLicpXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdlLmcuIGRhdGF2aWV3LCBkYXRhdmlld2pzIGV0Yy4nKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRDb2RlYmxvY2tzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRDb2RlYmxvY2tzID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0Y2xlYXJUaW1lb3V0KGlnbm9yZVRpbWVvdXQpO1xuXHRcdFx0XHRcdGlnbm9yZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT50aGlzLnBsdWdpbi5yZXJlbmRlclByZXZpZXcoKSwxMDAwKTtcblx0XHRcdFx0fSkpO1xuXHRcdFx0XHQvL1RPRE8gKEBtYXl1cmFua3YpIFJlLXJlbmRlciAoTFApXG5cdFx0bGV0IGV4Y2x1ZGVUaW1lb3V0OiBOb2RlSlMuVGltZW91dCA9IHNldFRpbWVvdXQoKCk9Pnt9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdFeGNsdWRlIExhbmd1YWdlcycpXG5cdFx0XHQuc2V0RGVzYygnRGVmaW5lIGxhbmd1YWdlcyBpbiBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IHdoaWNoIHRoZSBwbHVnaW4gc2hvdWxkIG5vdCBkZWNvcmF0ZS4gWW91IGNhbiB1c2UgYSB3aWxkY2FyZCAoKikgZWl0aGVyIGF0IHRoZSBiZWdpbm5pbmcsIG9yIGF0IHRoZSBlbmQuIEZvciBleGFtcGxlOiBhZC0qIHdpbGwgZXhjbHVkZSBjb2RlYmxvY2tzIHdoZXJlIHRoZSBsYW5ndWFnZSBzdGFydHMgd2l0aCBhZC0gZS5nLjogYWQtaW5mbywgYWQtZXJyb3IgZXRjLicpXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdlLmcuIGFkLSosIHB5dGhvbiBldGMuJylcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXMgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHRjbGVhclRpbWVvdXQoZXhjbHVkZVRpbWVvdXQpO1xuXHRcdFx0XHRcdGV4Y2x1ZGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKT0+dGhpcy5wbHVnaW4ucmVyZW5kZXJQcmV2aWV3KCksMTAwMCk7XG5cdFx0XHRcdH0pKTtcblx0XHRcdFx0Ly9UT0RPIChAbWF5dXJhbmt2KSBSZS1yZW5kZXIgKExQKVxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ1N0eWxlIENvZGUgb24gRXhwb3J0Jylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBzdHlsaW5nIHdpbGwgYmUgYXBwbGllZCB3aGVuIGV4cG9ydGluZyB0byBQREYuJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVjb3JhdGVQcmludClcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmRlY29yYXRlUHJpbnQgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgICAgICBcblx0XHRcdFx0fSkpO1xuXG5cdFx0Ly8gPT09PT09PT09PSBUaGVtZXMgPT09PT09PT09PVxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHt0ZXh0OiAnVGhlbWUgU2V0dGluZ3MnfSk7XG5cblx0XHRsZXQgdGhlbWVEcm9wZG93bjogRHJvcGRvd25Db21wb25lbnQ7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZShcIlNlbGVjdCBUaGVtZVwiKVxuXHRcdFx0LmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xuXHRcdFx0XHR0aGVtZURyb3Bkb3duID0gZHJvcGRvd247XG5cdFx0XHRcdHRoaXMudXBkYXRlRHJvcGRvd24odGhlbWVEcm9wZG93bix0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG5cdFx0XHRcdHRoZW1lRHJvcGRvd24ub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZSA9IHZhbHVlO1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0pXG5cdFx0XHRcdFx0dGhpcy5kaXNwbGF5KCk7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRidXR0b24uc2V0VG9vbHRpcChcIlVwZGF0ZSB0aGVtZVwiKTtcblx0XHRcdFx0YnV0dG9uLnNldEljb24oJ3NhdmUnKTtcblx0XHRcdFx0YnV0dG9uLm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lIGluIERFRkFVTFRfU0VUVElOR1MudGhlbWVzKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnWW91IGNhbm5vdCB1cGRhdGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdID0gc3RydWN0dXJlZENsb25lKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG5cdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lfSB0aGVtZSBzYXZlZCBzdWNjZXNzZnVsbHkhYCk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcblx0XHRcdFx0YnV0dG9uLnNldFRvb2x0aXAoXCJEZWxldGUgdGhlbWVcIik7XG5cdFx0XHRcdGJ1dHRvbi5zZXRJY29uKCd0cmFzaCcpO1xuXHRcdFx0XHRidXR0b24ub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWUudHJpbSgpLmxlbmd0aCA9PT0gMClcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoJ1NlbGVjdCBhIHRoZW1lIGZpcnN0IHRvIGRlbGV0ZScpOyAvL05PU09OQVJcblx0XHRcdFx0XHRlbHNlIGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lIGluIERFRkFVTFRfU0VUVElOR1MudGhlbWVzKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnWW91IGNhbm5vdCBkZWxldGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0ZGVsZXRlIHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lfSB0aGVtZSBkZWxldGVkIHN1Y2Nlc3NmdWxseSFgKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lID0gXCJEZWZhdWx0XCI7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdKVxuXHRcdFx0XHRcdFx0dGhpcy51cGRhdGVEcm9wZG93bih0aGVtZURyb3Bkb3duLHRoaXMucGx1Z2luLnNldHRpbmdzKTtcblx0XHRcdFx0XHRcdHRoaXMuZGlzcGxheSgpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdGxldCBuZXdUaGVtZU5hbWU6IFRleHRDb21wb25lbnQ7XG5cdFx0bGV0IG5ld1RoZW1lRGVmYXVsdDogVG9nZ2xlQ29tcG9uZW50O1xuXHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lID0gJyc7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnQWRkIE5ldyBUaGVtZScpXG5cdFx0XHQuc2V0RGVzYygnQ3JlYXRlIGEgbmV3IHRoZW1lIGZyb20gdGhlIGN1cnJlbnQgc2V0dGluZ3MuJylcblx0XHRcdC5hZGRUZXh0KHRleHQgPT4ge25ld1RoZW1lTmFtZSA9IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdOZXcgdGhlbWUgbmFtZScpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZSlcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lID0gdmFsdWU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xuXHRcdFx0XHRidXR0b24uc2V0VG9vbHRpcChcIlNhdmUgdGhlbWVcIik7XG5cdFx0XHRcdGJ1dHRvbi5zZXRJY29uKCdwbHVzJyk7XG5cdFx0XHRcdGJ1dHRvbi5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUudHJpbSgpLmxlbmd0aCA9PT0gMClcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoJ1NldCBhIG5hbWUgZm9yIHlvdXIgdGhlbWUnKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0ZWxzZSBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUgaW4gREVGQVVMVF9TRVRUSU5HUy50aGVtZXMpXG5cdFx0XHRcdFx0XHRuZXcgTm90aWNlKCdZb3UgY2FuXFwndCBvdmVyd3JpdGUgdGhlIGRlZmF1bHQgdGhlbWVzJyk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld1RoZW1lIGluIHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lcykge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWVdID0gc3RydWN0dXJlZENsb25lKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoYCR7dGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWV9IHRoZW1lIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5IWApOyAvL05PU09OQVJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZV0gPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lKTtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShgJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZX0gdGhlbWUgc2F2ZWQgc3VjY2Vzc2Z1bGx5IWApOyAvL05PU09OQVJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdUaGVtZTtcblx0XHRcdFx0XHRcdHRoaXMudXBkYXRlRHJvcGRvd24odGhlbWVEcm9wZG93bix0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XG5cdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3VGhlbWUgPSAnJztcblx0XHRcdFx0XHRcdG5ld1RoZW1lTmFtZS5zZXRWYWx1ZShcIlwiKTtcblx0XHRcdFx0XHRcdG5ld1RoZW1lRGVmYXVsdC5zZXRWYWx1ZShmYWxzZSk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6ICdDb2RlYmxvY2sgQXBwZWFyYW5jZSd9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdDb2RlYmxvY2sgQmFja2dyb3VuZCBDb2xvdXInKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnY29kZWJsb2NrX2JhY2tncm91bmQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmNvZGVibG9jay5iYWNrZ3JvdW5kQ29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmNvZGVibG9jay5iYWNrZ3JvdW5kQ29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnQ29kZWJsb2NrIFRleHQgQ29sb3VyJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2NvZGVibG9ja190ZXh0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5jb2RlYmxvY2sudGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5jb2RlYmxvY2sudGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ1Vud3JhcCBjb2RlYmxvY2sgbGluZXMnKVxuXHRcdFx0LnNldERlc2MoJ0Nob29zZSB3aGV0aGVyIHRvIHVud3JhcCBsaW5lcyBpbiByZWFkaW5nIG1vZGUnKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLnVud3JhcExpbmVzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay51bndyYXBMaW5lcyA9IHZhbHVlO1xuXHRcdFx0XHRcdGlmICghdmFsdWUpXG5cdFx0XHRcdFx0XHR3cmFwTGluZXNBY3RpdmVUb2dnbGUuc2V0VmFsdWUoZmFsc2UpO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWyd3cmFwTGluZXMnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgIFxuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnJlcmVuZGVyUHJldmlldygpO1xuXHRcdFx0XHR9KSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnQ29kZWJsb2NrIEN1cnZhdHVyZScpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lcyBob3cgcm91bmRlZCB0aGUgY29kZWJsb2NrcyBhcHBlYXIgaW4gcGl4ZWxzLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoMCwyNSwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmN1cnZhdHVyZSlcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2suY3VydmF0dXJlID0gdmFsdWU7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBjdXJ2YXR1cmUnKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2suY3VydmF0dXJlID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmNvZGVibG9jay5jdXJ2YXR1cmU7XG5cdFx0XHRcdFx0XHRyZXNldHRhYmxlU2xpZGVyLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2suY3VydmF0dXJlKTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFx0XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6ICdHdXR0ZXIgQXBwZWFyYW5jZSd9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdFbmFibGUgTGluZSBOdW1iZXJzJylcblx0XHRcdC5zZXREZXNjKCdJZiBkaXNhYmxlZCwgdGhlIGJlbG93IHNldHRpbmdzIGFyZSBkaXNhYmxlZCB0b28uJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycylcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMgPSB2YWx1ZTtcblx0XHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGluZU51bWJlcnMnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKCF2YWx1ZSl9KTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgICAgICBcblx0XHRcdFx0fSkpO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0d1dHRlciBCYWNrZ3JvdW5kIENvbG91cicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdndXR0ZXJfYmFja2dyb3VuZCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uZ3V0dGVyLmJhY2tncm91bmRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uZ3V0dGVyLmJhY2tncm91bmRDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdFx0KCkgPT4gIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMsXG5cdFx0XHQpfSk7XG5cdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2xpbmVOdW1iZXJzJ10ucHVzaCh0aGlzLnBpY2tyc1snZ3V0dGVyX2JhY2tncm91bmQnXS5yZXNldEJ1dHRvbik7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnTGluZSBOdW1iZXIgQ29sb3VyJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2xpbmVfbnVtYmVyJyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIudGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5ndXR0ZXIudGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0XHQoKSA9PiAhdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycyxcblx0XHRcdCl9KTtcblx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGluZU51bWJlcnMnXS5wdXNoKHRoaXMucGlja3JzWydsaW5lX251bWJlciddLnJlc2V0QnV0dG9uKTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdIaWdobGlnaHQgTGluZSBOdW1iZXJzJylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBoaWdobGlnaHRzIHdpbGwgYWxzbyBoaWdobGlnaHQgdGhlIGxpbmUgbnVtYmVycy4nKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4ge2NvbnN0IGhpZ2hsaWdodExpbmVOdW1iZXJzVG9nZ2xlID0gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuZ3V0dGVyLmhpZ2hsaWdodClcblx0XHRcdFx0LnNldERpc2FibGVkKCF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLmxpbmVOdW1iZXJzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmd1dHRlci5oaWdobGlnaHQgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2xpbmVOdW1iZXJzJ10ucHVzaChoaWdobGlnaHRMaW5lTnVtYmVyc1RvZ2dsZSk7XG5cdFx0XHR9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmRpY2F0ZSBDdXJyZW50IExpbmUgTnVtYmVyJylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCB0aGUgY3VycmVudCBsaW5lIG51bWJlciBpbiBjb2RlYmxvY2tzIHdpbGwgYmUgaW5kaWNhdGVkIHdpdGggYSBzZXBhcmF0ZSBjb2xvdXIuJylcblx0XHRcdC5zZXRDbGFzcygnY29kZS1zdHlsZXItc3BhY2VkJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHtjb25zdCBpbmRpY2F0ZUN1cnJlbnRMaW5lTnVtYmVyVG9nZ2xlID0gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuZ3V0dGVyLmFjdGl2ZUxpbmUpXG5cdFx0XHRcdC5zZXREaXNhYmxlZCghdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmNvZGVibG9jay5saW5lTnVtYmVycylcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5ndXR0ZXIuYWN0aXZlTGluZSA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGluZU51bWJlcnMnXS5wdXNoKGluZGljYXRlQ3VycmVudExpbmVOdW1iZXJUb2dnbGUpO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2FjdGl2ZV9saW5lX251bWJlcicsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uZ3V0dGVyLmFjdGl2ZVRleHRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uZ3V0dGVyLmFjdGl2ZVRleHRDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdFx0KCkgPT4gIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMsXG5cdFx0XHQpfSk7XG5cdFx0XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6ICdIZWFkZXIgQXBwZWFyYW5jZSd9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdIZWFkZXIgQmFja2dyb3VuZCBDb2xvdXInKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnaGVhZGVyX2JhY2tncm91bmQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhlYWRlci5iYWNrZ3JvdW5kQ29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhlYWRlci5iYWNrZ3JvdW5kQ29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHQpfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSGVhZGVyIEZvbnQgU2l6ZScpXG5cdFx0XHQuc2V0RGVzYygnU2V0IHRoZSBmb250IHNpemUgZm9yIGhlYWRlciBsYW5ndWFnZSB0YWdzIGFuZCB0aXRsZXMuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cyg2LDMyLDEpXG5cdFx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIuZm9udFNpemUpXG5cdFx0XHRcdFx0LnNldER5bmFtaWNUb29sdGlwKClcblx0XHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmZvbnRTaXplID0gdmFsdWU7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge2J1dHRvblxuXHRcdFx0XHRcdC5zZXRJY29uKFwicmVzZXRcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGZvbnQgc2l6ZScpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5mb250U2l6ZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5oZWFkZXIuZm9udFNpemU7XG5cdFx0XHRcdFx0XHRyZXNldHRhYmxlU2xpZGVyLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIuZm9udFNpemUpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0hlYWRlciBUaXRsZSBUZXh0IFN0eWxpbmcnKVxuXHRcdFx0LnNldERlc2MoJ1N0eWxlIHRoZSBoZWFkZXIgdGl0bGUgdGV4dCB1c2luZyBib2xkIGFuZCBpdGFsaWMgdG9nZ2xlcywgYnkgc2V0dGluZyBhIGZvbnQgb3IgYnkgc2V0dGluZyBhIHRleHQgY29sb3VyLicpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7dG9nZ2xlXG5cdFx0XHRcdC5zZXRUb29sdGlwKFwiVG9nZ2xlIGJvbGQgdGl0bGUgdGV4dFwiKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0Qm9sZClcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEJvbGQgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4ge3RvZ2dsZVxuXHRcdFx0XHQuc2V0VG9vbHRpcChcIlRvZ2dsZSBpdGFsaWMgdGl0bGUgdGV4dFwiKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0SXRhbGljKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0SXRhbGljID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRUZXh0KHRleHQgPT4ge3RleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdGb250Jylcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEZvbnQpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLnRpdGxlLnRleHRGb250ID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2hlYWRlcl90aXRsZV90ZXh0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIudGl0bGUudGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oZWFkZXIudGl0bGUudGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdGxldCBjb2xsYXBzZVBsYWNlaG9sZGVyVGltZW91dDogTm9kZUpTLlRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57fSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnQ29sbGFwc2UgUGxhY2Vob2xkZXIgVGV4dCcpXG5cdFx0XHQuc2V0RGVzYygnVGl0bGUgcGxhY2Vob2xkZXIgdGV4dCBmb3IgY29sbGFwc2VkIGNvZGUgd2hlbiBubyB0aXRsZSBwYXJhbWV0ZXIgaXMgc2V0LicpXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHRleHRcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKCdDb2xsYXBzZWQgQ29kZScpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmNvbGxhcHNlUGxhY2Vob2xkZXIpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmNvbGxhcHNlUGxhY2Vob2xkZXIgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHRjbGVhclRpbWVvdXQoY29sbGFwc2VQbGFjZWhvbGRlclRpbWVvdXQpO1xuXHRcdFx0XHRcdGNvbGxhcHNlUGxhY2Vob2xkZXJUaW1lb3V0ID0gc2V0VGltZW91dCgoKT0+dGhpcy5wbHVnaW4ucmVyZW5kZXJQcmV2aWV3KCksMTAwMCk7XG5cdFx0XHRcdH0pKTtcblx0XHRcdFx0Ly9UT0RPIChAbWF5dXJhbmt2KSBSZS1yZW5kZXIgKExQKVxuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0hlYWRlciBTZXBhcmF0b3IgQ29sb3VyJylcblx0XHRcdC5zZXREZXNjKCdDb2xvdXIgb2YgdGhlIGxpbmUgc2VwYXJhdGluZyB0aGUgY29kZWJsb2NrIGhlYWRlciBhbmQgdGhlIGNvZGVibG9jay4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnaGVhZGVyX3NlcGFyYXRvcicsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmxpbmVDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmxpbmVDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdCl9KTtcblx0XHRcdFxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoNScsIHt0ZXh0OiAnSGVhZGVyIExhbmd1YWdlIFRhZyBBcHBlYXJhbmNlJ30pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0Rpc3BsYXkgSGVhZGVyIExhbmd1YWdlIFRhZ3MnKVxuXHRcdFx0LnNldERlc2MoJ0RldGVybWluZSB3aGVuIHRvIHNob3cgbGFuZ3VhZ2UgdGFncyBpbiB0aGUgaGVhZGVyLiBcIlRpdGxlIE9ubHlcIiB3aWxsIG9ubHkgc2hvdyBsYW5ndWFnZSB0YWdzIHdoZW4gdGhlIHRpdGxlIHBhcmFtZXRlciBpcyBzZXQuIElmIHNldCB0byBcIk5vbmVcIiwgdGhlIGJlbG93IHNldHRpbmdzIGFyZSBkaXNhYmxlZCB0b28uJylcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IGRyb3Bkb3duXG5cdFx0XHRcdC5hZGRPcHRpb25zKERJU1BMQVlfT1BUSU9OUylcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheSlcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZTogRGlzcGxheSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcuZGlzcGxheSA9IHZhbHVlO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZVRhZ3MnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKHZhbHVlPT09XCJub25lXCIpfSk7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pKTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdIZWFkZXIgTGFuZ3VhZ2UgVGFnIEJhY2tncm91bmQgQ29sb3VyJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2hlYWRlcl9sYW5ndWFnZV90YWdfYmFja2dyb3VuZCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmxhbmd1YWdlVGFnLmJhY2tncm91bmRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmxhbmd1YWdlVGFnLmJhY2tncm91bmRDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdFx0KCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5ID09PSAnbm9uZScsXG5cdFx0XHQpfSk7XG5cdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlVGFncyddLnB1c2godGhpcy5waWNrcnNbJ2hlYWRlcl9sYW5ndWFnZV90YWdfYmFja2dyb3VuZCddLnJlc2V0QnV0dG9uKTtcblx0XHRsZXQgbGFuZ3VhZ2VUYWdzQm9sZFRvZ2dsZTogVG9nZ2xlQ29tcG9uZW50O1xuXHRcdGxldCBsYW5ndWFnZVRhZ3NJdGFsaWNUb2dnbGU6IFRvZ2dsZUNvbXBvbmVudDtcblx0XHRsZXQgbGFuZ3VhZ2VJY29uc0ZvbnRUZXh0OiBUZXh0Q29tcG9uZW50O1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0hlYWRlciBMYW5ndWFnZSBUYWcgVGV4dCBTdHlsaW5nJylcblx0XHRcdC5zZXREZXNjKCdTdHlsZSB0aGUgaGVhZGVyIGxhbmd1YWdlIHRhZyB0ZXh0IHVzaW5nIGJvbGQgYW5kIGl0YWxpYyB0b2dnbGVzLCBieSBzZXR0aW5nIGEgZm9udCBvciBieSBzZXR0aW5nIGEgdGV4dCBjb2xvdXIuJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHtsYW5ndWFnZVRhZ3NCb2xkVG9nZ2xlID0gdG9nZ2xlXG5cdFx0XHRcdC5zZXRUb29sdGlwKFwiVG9nZ2xlIGJvbGQgbGFuZ3VhZ2UgdGFnIHRleHRcIilcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEJvbGQpXG5cdFx0XHRcdC5zZXREaXNhYmxlZCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXk9PT1cIm5vbmVcIilcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEJvbGQgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZVRhZ3MnXS5wdXNoKGxhbmd1YWdlVGFnc0JvbGRUb2dnbGUpO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHtsYW5ndWFnZVRhZ3NJdGFsaWNUb2dnbGUgPSB0b2dnbGVcblx0XHRcdFx0LnNldFRvb2x0aXAoXCJUb2dnbGUgaXRhbGljIGxhbmd1YWdlIHRhZyB0ZXh0XCIpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRJdGFsaWMpXG5cdFx0XHRcdC5zZXREaXNhYmxlZCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXk9PT1cIm5vbmVcIilcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEl0YWxpYyA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlVGFncyddLnB1c2gobGFuZ3VhZ2VUYWdzSXRhbGljVG9nZ2xlKTtcblx0XHRcdH0pXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHtsYW5ndWFnZUljb25zRm9udFRleHQgPSB0ZXh0XG5cdFx0XHRcdC5zZXRQbGFjZWhvbGRlcignRm9udCcpXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRGb250KVxuXHRcdFx0XHQuc2V0RGlzYWJsZWQodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5PT09XCJub25lXCIpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRGb250ID0gdmFsdWU7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snaGVhZGVyTGFuZ3VhZ2VUYWdzJ10ucHVzaChsYW5ndWFnZUljb25zRm9udFRleHQpO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2hlYWRlcl9sYW5ndWFnZV90YWdfdGV4dCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdFx0KCkgPT4gdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5ID09PSAnbm9uZScsXG5cdFx0XHQpfSk7XG5cdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlVGFncyddLnB1c2godGhpcy5waWNrcnNbJ2hlYWRlcl9sYW5ndWFnZV90YWdfdGV4dCddLnJlc2V0QnV0dG9uKTtcblx0XHRcblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDUnLCB7dGV4dDogJ0hlYWRlciBMYW5ndWFnZSBJY29uIEFwcGVhcmFuY2UnfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnRGlzcGxheSBIZWFkZXIgTGFuZ3VhZ2UgSWNvbnMnKVxuXHRcdFx0LnNldERlc2MoJ0RldGVybWluZSB3aGVuIHRvIHNob3cgbGFuZ3VhZ2UgaWNvbnMgd2hlcmUgYXZhaWxhYmxlLiBcIlRpdGxlIE9ubHlcIiB3aWxsIG9ubHkgc2hvdyBsYW5ndWFnZSB0YWdzIHdoZW4gdGhlIHRpdGxlIHBhcmFtZXRlciBpcyBzZXQuIElmIHNldCB0byBcIk5vbmVcIiwgdGhlIGJlbG93IHNldHRpbmdzIGFyZSBkaXNhYmxlZCB0b28uJylcblx0XHRcdC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IGRyb3Bkb3duXG5cdFx0XHRcdC5hZGRPcHRpb25zKERJU1BMQVlfT1BUSU9OUylcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXkpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWU6IERpc3BsYXkpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5ID0gdmFsdWU7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlSWNvbnMnXS5mb3JFYWNoKGNvbXBvbmVudCA9PiB7Y29tcG9uZW50LnNldERpc2FibGVkKHZhbHVlPT09XCJub25lXCIpfSk7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pKTtcblx0XHRsZXQgbGFuZ3VhZ2VJY29uc0NvbG91cmVkVG9nZ2xlOiBUb2dnbGVDb21wb25lbnQ7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnTGFuZ3VhZ2UgSWNvbnMgQ29sb3VyZWQnKVxuXHRcdFx0LnNldERlc2MoJ0lmIGRpc2FibGVkLCBsYW5ndWFnZSBpY29ucyB3aWxsIGJlIGJsYWNrIGFuZCB3aGl0ZS4nKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4ge2xhbmd1YWdlSWNvbnNDb2xvdXJlZFRvZ2dsZSA9IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheUNvbG91cilcblx0XHRcdFx0LnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXk9PT1cIm5vbmVcIilcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VJY29uLmRpc3BsYXlDb2xvdXIgPSB2YWx1ZTtcblx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2hlYWRlckxhbmd1YWdlSWNvbnMnXS5wdXNoKGxhbmd1YWdlSWNvbnNDb2xvdXJlZFRvZ2dsZSk7XG5cdFx0XHR9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdMYW5ndWFnZSBJY29uIFNpemUnKVxuXHRcdFx0LnNldERlc2MoJ1NldCB0aGUgc2l6ZSBvZiB0aGUgZGlzcGxheWVkIGxhbmd1YWdlIGljb25zLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge1xuXHRcdFx0XHRsZXQgcmVzZXR0YWJsZVNsaWRlcjogU2xpZGVyQ29tcG9uZW50O1xuXHRcdFx0XHRzZXR0aW5nLmFkZFNsaWRlcigoc2xpZGVyKSA9PiB7cmVzZXR0YWJsZVNsaWRlciA9IHNsaWRlclxuXHRcdFx0XHRcdC5zZXRMaW1pdHMoMTAsNDAsMSlcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplKVxuXHRcdFx0XHRcdC5zZXREaXNhYmxlZCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5PT09XCJub25lXCIpXG5cdFx0XHRcdFx0LnNldER5bmFtaWNUb29sdGlwKClcblx0XHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuaWNvblNpemUgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZUljb25zJ10ucHVzaChyZXNldHRhYmxlU2xpZGVyKTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGxldCByZXNldEJ1dHRvbjogRXh0cmFCdXR0b25Db21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge3Jlc2V0QnV0dG9uID0gYnV0dG9uXG5cdFx0XHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0XHRcdC5zZXREaXNhYmxlZCh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5PT09XCJub25lXCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBpY29uIHNpemUnKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5pY29uU2l6ZSA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5hZHZhbmNlZC5pY29uU2l6ZTtcblx0XHRcdFx0XHRcdHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmljb25TaXplKTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydoZWFkZXJMYW5ndWFnZUljb25zJ10ucHVzaChyZXNldEJ1dHRvbik7XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHRcdFxuXHRcdGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoNCcsIHt0ZXh0OiAnSGlnaGxpZ2h0aW5nIEFwcGVhcmFuY2UnfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnRWRpdG9yIEFjdGl2ZSBMaW5lIEhpZ2hsaWdodCcpXG5cdFx0XHQuc2V0RGVzYygnSWYgZW5hYmxlZCwgaGlnaGxpZ2h0cyB0aGUgYWN0aXZlIGxpbmUgb3V0c2lkZSBjb2RlYmxvY2tzLicpXG5cdFx0XHQuc2V0Q2xhc3MoJ2NvZGUtc3R5bGVyLXNwYWNlZCcpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB7cmV0dXJuIHRvZ2dsZVxuXHRcdFx0XHQuc2V0VG9vbHRpcCgnVG9nZ2xlIGVkaXRvciBhY3RpdmUgbGluZSBoaWdobGlnaHRpbmcnKVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlRWRpdG9yTGluZSlcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmUgPSB2YWx1ZTtcblx0XHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snZWRpdG9yQWN0aXZlTGluZUhpZ2hsaWdodCddLmZvckVhY2goY29tcG9uZW50ID0+IHtjb21wb25lbnQuc2V0RGlzYWJsZWQoIXZhbHVlKX0pO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdlZGl0b3JfYWN0aXZlX2xpbmVfaGlnaGxpZ2h0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmFjdGl2ZUVkaXRvckxpbmVDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lQ29sb3VyID0gc2F2ZUNvbG91cn0sXG5cdFx0XHRcdCgpID0+ICF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lLFxuXHRcdFx0KX0pO1xuXHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydlZGl0b3JBY3RpdmVMaW5lSGlnaGxpZ2h0J10ucHVzaCh0aGlzLnBpY2tyc1snZWRpdG9yX2FjdGl2ZV9saW5lX2hpZ2hsaWdodCddLnJlc2V0QnV0dG9uKTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdDb2RlYmxvY2sgQWN0aXZlIExpbmUgSGlnaGxpZ2h0Jylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBoaWdobGlnaHRzIHRoZSBhY3RpdmUgbGluZSBpbnNpZGUgY29kZWJsb2Nrcy4nKVxuXHRcdFx0LnNldENsYXNzKCdjb2RlLXN0eWxlci1zcGFjZWQnKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4ge3JldHVybiB0b2dnbGVcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmUpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVDb2RlYmxvY2tMaW5lID0gdmFsdWU7IFxuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydjb2RlYmxvY2tBY3RpdmVMaW5lSGlnaGxpZ2h0J10uZm9yRWFjaChjb21wb25lbnQgPT4ge2NvbXBvbmVudC5zZXREaXNhYmxlZCghdmFsdWUpfSk7XG5cdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2NvZGVibG9ja19hY3RpdmVfbGluZV9oaWdobGlnaHQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZUNvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmVDb2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdFx0KCkgPT4gIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmUsXG5cdFx0XHQpfSk7XG5cdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2NvZGVibG9ja0FjdGl2ZUxpbmVIaWdobGlnaHQnXS5wdXNoKHRoaXMucGlja3JzWydjb2RlYmxvY2tfYWN0aXZlX2xpbmVfaGlnaGxpZ2h0J10ucmVzZXRCdXR0b24pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0RlZmF1bHQgSGlnaGxpZ2h0IENvbG91cicpXG5cdFx0XHQuc2V0RGVzYygnVXNlZCBieSB0aGUgXFwnaGxcXCcgcGFyYW1ldGVyLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdkZWZhdWx0X2hpZ2hsaWdodCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5kZWZhdWx0Q29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmhpZ2hsaWdodHMuZGVmYXVsdENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdGxldCBuZXdIaWdobGlnaHRUZXh0OiBUZXh0Q29tcG9uZW50O1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoXCJBZGQgQWx0ZXJuYXRpdmUgSGlnaGxpZ2h0XCIpXG5cdFx0XHQuc2V0RGVzYygnRGVmaW5lIGEgbmV3IGFsdGVybmF0aXZlIGhpZ2hsaWdodCBuYW1lLiBUaGUgY29sb3VyIGNhbiBiZSBtb2RpZmllZCBhZnRlciBpdCBpcyBhZGRlZC4nKVxuXHRcdFx0LmFkZFRleHQodmFsdWUgPT4ge25ld0hpZ2hsaWdodFRleHQgPSB2YWx1ZVxuXHRcdFx0XHQuc2V0UGxhY2Vob2xkZXIoJ2UuZy4gZXJyb3IsIHdhcm4nKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0ID0gdmFsdWU7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5hZGRCdXR0b24oKGJ1dHRvbikgPT4ge1xuXHRcdFx0XHRidXR0b24uc2V0QnV0dG9uVGV4dChcIkFkZFwiKTtcblx0XHRcdFx0YnV0dG9uLm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHQudHJpbSgpID09PSBcIlwiKVxuXHRcdFx0XHRcdFx0bmV3IE5vdGljZShcIlBsZWFzZSBlbnRlciBhIGNvbG91ciBuYW1lLlwiKTsgLy9OT1NPTkFSXG5cdFx0XHRcdFx0ZWxzZSBpZiAoIS9eW15cXGRdXFx3KiQvLnRlc3QodGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0KSlcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoYFwiJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHR9XCIgaXMgbm90IGEgdmFsaWQgY29sb3VyIG5hbWUuYCk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2UgaWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodC50cmltKCkudG9Mb3dlckNhc2UoKSA9PT0gJ2hsJylcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJDYW5ub3Qgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgaGlnaGxpZ2h0IHBhcmFtZXRlci5cIik7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2UgaWYgKFBBUkFNRVRFUlMuaW5jbHVkZXModGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0LnRyaW0oKS50b0xvd2VyQ2FzZSgpKSlcblx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoXCJDYW5ub3QgdXNlIG90aGVyIGRlZmF1bHQgcGFyYW1ldGVycy5cIik7IC8vTk9TT05BUlxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodCBpbiB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuY29sb3Vycy5saWdodC5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0cylcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShgQSBoaWdobGlnaHQgd2l0aCB0aGUgbmFtZSBcIiR7dGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0fVwiIGFscmVhZHkgZXhpc3RzLmApOyAvL05PU09OQVJcblx0XHRcdFx0XHRcdFx0Ly9UT0RPIChAbWF5dXJhbmt2KSBGdXR1cmU6IEZvY3VzIG9uIGV4aXN0aW5nIGhpZ2hsaWdodGVyIC0gYHJlbmRlck1hdGNoZXNgXG5cdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbmV3Q29sb3VyID0gZ2V0UmFuZG9tQ29sb3VyKCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzLmxpZ2h0LmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVIaWdobGlnaHRzW3RoaXMucGx1Z2luLnNldHRpbmdzLm5ld0hpZ2hsaWdodF0gPSBuZXdDb2xvdXI7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzLmRhcmsuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbdGhpcy5wbHVnaW4uc2V0dGluZ3MubmV3SGlnaGxpZ2h0XSA9IG5ld0NvbG91cjtcblx0XHRcdFx0XHRcdFx0dGhpcy51cGRhdGVBbHRlcm5hdGl2ZUhpZ2hsaWdodHMoYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyKTtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZShgQWRkZWQgaGlnaGxpZ2h0IFwiJHt0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHR9XCIuYCk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5uZXdIaWdobGlnaHQgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHRuZXdIaWdobGlnaHRUZXh0LnNldFZhbHVlKFwiXCIpO1xuXHRcdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4ucmVyZW5kZXJQcmV2aWV3KCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdGNvbnN0IGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lciA9IGNvbnRhaW5lckVsLmNyZWF0ZURpdigpO1xuXHRcdHRoaXMudXBkYXRlQWx0ZXJuYXRpdmVIaWdobGlnaHRzKGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcik7XG5cblx0XHRjb250YWluZXJFbC5jcmVhdGVFbCgnaDQnLCB7dGV4dDogJ0lubGluZSBDb2RlIEFwcGVhcmFuY2UnfSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnU3ludGF4IEhpZ2hsaWdodCBJbmxpbmUgQ29kZScpXG5cdFx0XHQuc2V0RGVzYygnSWYgZW5hYmxlZCwgaW4gcmVhZGluZyBtb2RlLCBpbmxpbmUgY29kZSB3aWxsIGJlIHN5bnRheCBoaWdobGlnaHRlZCBiYXNlZCBvbiBhIGxhbmd1YWdlIHNldCB3aXRoIGB7bGFuZ3VhZ2V9IGhpZ2hsaWdodGVkX2lubGluZV9jb2RlYC4gU2VlIHRoZSBSRUFETUUgZm9yIG1vcmUgaW5mb3JtYXRpb24uJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxuXHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5zeW50YXhIaWdobGlnaHQpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnN5bnRheEhpZ2hsaWdodCA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5yZXJlbmRlclByZXZpZXcoKTtcblx0XHRcdFx0fSkpO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0lubGluZSBDb2RlIEJhY2tncm91bmQgQ29sb3VyJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2lubGluZV9iYWNrZ3JvdW5kJyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5pbmxpbmUuYmFja2dyb3VuZENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5pbmxpbmUuYmFja2dyb3VuZENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0lubGluZSBDb2RlIFRleHQgQ29sb3VyJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J2lubGluZV90ZXh0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5pbmxpbmUudGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5pbmxpbmUudGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0lubGluZSBDb2RlIEFjdGl2ZSBUZXh0IENvbG91cicpXG5cdFx0XHQuc2V0RGVzYygnVGhlIHRleHQgY29sb3VyIHdoZW4gZWRpdGluZyBpbmxpbmUgY29kZS4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnaW5saW5lX2FjdGl2ZV90ZXh0Jyxcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiByZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5pbmxpbmUuYWN0aXZlVGV4dENvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5pbmxpbmUuYWN0aXZlVGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0lubGluZSBDb2RlIEZvbnQgV2VpZ2h0Jylcblx0XHRcdC5zZXREZXNjKCdEZXRlcm1pbmVzIGhvdyBib2xkIGlubGluZSBjb2RlIGFwcGVhcnMuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cygxLDksMSlcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5mb250V2VpZ2h0KVxuXHRcdFx0XHRcdC5zZXREeW5hbWljVG9vbHRpcCgpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5mb250V2VpZ2h0ID0gdmFsdWU7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTsgICAgXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBmb250IHdlaWdodCcpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5mb250V2VpZ2h0ID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmlubGluZS5mb250V2VpZ2h0O1xuXHRcdFx0XHRcdFx0cmVzZXR0YWJsZVNsaWRlci5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLmZvbnRXZWlnaHQpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSW5saW5lIENvZGUgQ3VydmF0dXJlJylcblx0XHRcdC5zZXREZXNjKCdEZXRlcm1pbmVzIGhvdyByb3VuZGVkIGlubGluZSBjb2RlIGFwcGVhciBpbiBwaXhlbHMuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cygwLDEyLDEpXG5cdFx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuY3VydmF0dXJlKVxuXHRcdFx0XHRcdC5zZXREeW5hbWljVG9vbHRpcCgpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5jdXJ2YXR1cmUgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge2J1dHRvblxuXHRcdFx0XHRcdC5zZXRJY29uKFwicmVzZXRcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGN1cnZhdHVyZScpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5jdXJ2YXR1cmUgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuaW5saW5lLmN1cnZhdHVyZTtcblx0XHRcdFx0XHRcdHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5jdXJ2YXR1cmUpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSW5saW5lIENvZGUgVmVydGljYWwgUGFkZGluZycpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lcyBob3cgbXVjaCB2ZXJ0aWNhbCBpbm5lciBwYWRkaW5nIGluIHBpeGVscyBpbmxpbmUgY29kZSBoYXMuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cygwLDEwLDEpXG5cdFx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUucGFkZGluZ1ZlcnRpY2FsKVxuXHRcdFx0XHRcdC5zZXREeW5hbWljVG9vbHRpcCgpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5wYWRkaW5nVmVydGljYWwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge2J1dHRvblxuXHRcdFx0XHRcdC5zZXRJY29uKFwicmVzZXRcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IHZlcnRpY2FsIHBhZGRpbmcnKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUucGFkZGluZ1ZlcnRpY2FsID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmlubGluZS5wYWRkaW5nVmVydGljYWw7XG5cdFx0XHRcdFx0XHRyZXNldHRhYmxlU2xpZGVyLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUucGFkZGluZ1ZlcnRpY2FsKTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0lubGluZSBDb2RlIEhvcml6b250YWwgUGFkZGluZycpXG5cdFx0XHQuc2V0RGVzYygnRGV0ZXJtaW5lcyBob3cgbXVjaCBob3Jpem9udGFsIGlubmVyIHBhZGRpbmcgaW4gcGl4ZWxzIGlubGluZSBjb2RlIGhhcy4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHtcblx0XHRcdFx0bGV0IHJlc2V0dGFibGVTbGlkZXI6IFNsaWRlckNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRTbGlkZXIoKHNsaWRlcikgPT4ge3Jlc2V0dGFibGVTbGlkZXIgPSBzbGlkZXJcblx0XHRcdFx0XHQuc2V0TGltaXRzKDAsMTAsMSlcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5wYWRkaW5nSG9yaXpvbnRhbClcblx0XHRcdFx0XHQuc2V0RHluYW1pY1Rvb2x0aXAoKVxuXHRcdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUucGFkZGluZ0hvcml6b250YWwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge2J1dHRvblxuXHRcdFx0XHRcdC5zZXRJY29uKFwicmVzZXRcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGhvcml6b250YWwgcGFkZGluZycpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5wYWRkaW5nSG9yaXpvbnRhbCA9IHRoaXMucGx1Z2luLnNldHRpbmdzLnRoZW1lc1t0aGlzLnBsdWdpbi5zZXR0aW5ncy5zZWxlY3RlZFRoZW1lXS5zZXR0aW5ncy5pbmxpbmUucGFkZGluZ0hvcml6b250YWw7XG5cdFx0XHRcdFx0XHRyZXNldHRhYmxlU2xpZGVyLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUucGFkZGluZ0hvcml6b250YWwpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnSW5saW5lIENvZGUgSG9yaXpvbnRhbCBNYXJnaW4nKVxuXHRcdFx0LnNldERlc2MoJ0RldGVybWluZXMgaG93IG11Y2ggaG9yaXpvbnRhbCBvdXRlciBtYXJnaW4gaXMgYWRkZWQgdG8gdGhlIGlubGluZSBjb2RlIGluIHBpeGVscy4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHtcblx0XHRcdFx0bGV0IHJlc2V0dGFibGVTbGlkZXI6IFNsaWRlckNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRTbGlkZXIoKHNsaWRlcikgPT4ge3Jlc2V0dGFibGVTbGlkZXIgPSBzbGlkZXJcblx0XHRcdFx0XHQuc2V0TGltaXRzKDAsOCwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLm1hcmdpbkhvcml6b250YWwpXG5cdFx0XHRcdFx0LnNldER5bmFtaWNUb29sdGlwKClcblx0XHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLm1hcmdpbkhvcml6b250YWwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHNldHRpbmcuYWRkRXh0cmFCdXR0b24oKGJ1dHRvbikgPT4ge2J1dHRvblxuXHRcdFx0XHRcdC5zZXRJY29uKFwicmVzZXRcIilcblx0XHRcdFx0XHQuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0IGhvcml6b250YWwgbWFyZ2luJylcblx0XHRcdFx0XHQub25DbGljaygoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLm1hcmdpbkhvcml6b250YWwgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuaW5saW5lLm1hcmdpbkhvcml6b250YWw7XG5cdFx0XHRcdFx0XHRyZXNldHRhYmxlU2xpZGVyLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUubWFyZ2luSG9yaXpvbnRhbCk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdJbmxpbmUgQ29kZSBUaXRsZSBDb2xvdXInKVxuXHRcdFx0LnNldERlc2MoJ1RoZSB0ZXh0IGNvbG91ciBvZiBpbmxpbmUgY29kZSB0aXRsZXMuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0dGhpcy5wbHVnaW4sY29udGFpbmVyRWwsc2V0dGluZyxcblx0XHRcdFx0J3RpdGxlX3RleHQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmlubGluZS50aXRsZVRleHRDb2xvdXIsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaW5saW5lLnRpdGxlVGV4dENvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0lubGluZSBDb2RlIFRpdGxlIEZvbnQgV2VpZ2h0Jylcblx0XHRcdC5zZXREZXNjKCdEZXRlcm1pbmVzIGhvdyBib2xkIGlubGluZSBjb2RlIHRpdGxlcyBhcHBlYXIuJylcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cygxLDksMSlcblx0XHRcdFx0XHQuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS50aXRsZUZvbnRXZWlnaHQpXG5cdFx0XHRcdFx0LnNldER5bmFtaWNUb29sdGlwKClcblx0XHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnRpdGxlRm9udFdlaWdodCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7ICAgIFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7YnV0dG9uXG5cdFx0XHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgZm9udCB3ZWlnaHQnKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUudGl0bGVGb250V2VpZ2h0ID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmlubGluZS50aXRsZUZvbnRXZWlnaHQ7XG5cdFx0XHRcdFx0XHRyZXNldHRhYmxlU2xpZGVyLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUudGl0bGVGb250V2VpZ2h0KTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gPT09PT09PT09PSBBZHZhbmNlZCA9PT09PT09PT09XG5cdFx0Y29udGFpbmVyRWwuY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdBZHZhbmNlZCBTZXR0aW5ncyd9KTtcblx0XHRcblxuXHRcdGxldCB3cmFwTGluZXNBY3RpdmVUb2dnbGU6IFRvZ2dsZUNvbXBvbmVudDtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdXcmFwIExpbmVzIG9uIENsaWNrJylcblx0XHRcdC5zZXREZXNjKCdJZiBlbmFibGVkLCBpbiByZWFkaW5nIG1vZGUsIGhvbGRpbmcgY2xpY2sgb24gYSBjb2RlYmxvY2sgd2lsbCB3cmFwIHRoZSBsaW5lcyBmb3IgYmV0dGVyIHZpc2liaWxpdHkuIFRoaXMgY2FuIG9ubHkgYmUgdXNlZCBpZiB0aGUgXCJVbndyYXAgTGluZXNcIiBzZXR0aW5nIGlzIGVuYWJsZWQuJylcblx0XHRcdC5hZGRUb2dnbGUodG9nZ2xlID0+IHt3cmFwTGluZXNBY3RpdmVUb2dnbGUgPSB0b2dnbGVcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2sud3JhcExpbmVzQWN0aXZlKVxuXHRcdFx0XHQuc2V0RGlzYWJsZWQoIXRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5jb2RlYmxvY2sudW53cmFwTGluZXMpXG5cdFx0XHRcdC5vbkNoYW5nZSgodmFsdWUpID0+IHtcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuY29kZWJsb2NrLndyYXBMaW5lc0FjdGl2ZSA9IHZhbHVlO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyBcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5yZXJlbmRlclByZXZpZXcoKTsgICBcblx0XHRcdFx0fSlcblx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ3dyYXBMaW5lcyddLnB1c2god3JhcExpbmVzQWN0aXZlVG9nZ2xlKTtcblx0XHRcdH0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0J1dHRvbiBDb2xvdXInKVxuXHRcdFx0LnNldERlc2MoJ1VzZWQgZm9yIFVJIGJ1dHRvbnMgbGlrZSB0aGUgY29weSBjb2RlIGJ1dHRvbi4nKVxuXHRcdFx0LnRoZW4oKHNldHRpbmcpID0+IHt0aGlzLmNyZWF0ZVBpY2tyKFxuXHRcdFx0XHR0aGlzLnBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLFxuXHRcdFx0XHQnZGVmYXVsdF9oaWdobGlnaHQnLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMpID0+IHJlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmFkdmFuY2VkLmJ1dHRvbkNvbG91cixcblx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5hZHZhbmNlZC5idXR0b25Db2xvdXIgPSBzYXZlQ29sb3VyfSxcblx0XHRcdCl9KTtcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdCdXR0b24gQWN0aXZlIENvbG91cicpXG5cdFx0XHQuc2V0RGVzYygnQ29sb3VyIGJ1dHRvbnMgdXNlIHdoZW4gYWN0aXZhdGVkLicpXG5cdFx0XHQudGhlbigoc2V0dGluZykgPT4ge3RoaXMuY3JlYXRlUGlja3IoXG5cdFx0XHRcdHRoaXMucGx1Z2luLGNvbnRhaW5lckVsLHNldHRpbmcsXG5cdFx0XHRcdCdkZWZhdWx0X2hpZ2hsaWdodCcsXG5cdFx0XHRcdChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3VycykgPT4gcmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uYWR2YW5jZWQuYnV0dG9uQWN0aXZlQ29sb3VyLFxuXHRcdFx0XHQocmVsZXZhbnRUaGVtZUNvbG91cnM6IENvZGVTdHlsZXJUaGVtZUNvbG91cnMsIHNhdmVDb2xvdXI6IENvbG91cikgPT4ge3JlbGV2YW50VGhlbWVDb2xvdXJzW2dldEN1cnJlbnRNb2RlKCldLmFkdmFuY2VkLmJ1dHRvbkFjdGl2ZUNvbG91ciA9IHNhdmVDb2xvdXJ9LFxuXHRcdFx0KX0pO1xuXHRcdG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuXHRcdFx0LnNldE5hbWUoJ0dyYWRpZW50IEhpZ2hsaWdodGluZycpXG5cdFx0XHQuc2V0RGVzYygnSWYgZW5hYmxlZCwgaGlnaGxpZ2h0cyBmYWRlIGF3YXkgdG8gdGhlIHJpZ2h0LiBUaGUgc2xpZGVyIHNldHMgdGhlIGdyYWRpZW50IGNvbG91ciBzdG9wIGFzIGEgcGVyY2VudGFnZS4nKVxuXHRcdFx0LmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzKVxuXHRcdFx0XHQub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0cyA9IHZhbHVlO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydncmFkaWVudEhpZ2hsaWdodGluZyddLmZvckVhY2goY29tcG9uZW50ID0+IHtjb21wb25lbnQuc2V0RGlzYWJsZWQoIXZhbHVlKX0pO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KSlcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cygwLDEwMCwxKVxuXHRcdFx0XHRcdC5zZXRWYWx1ZSgrdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0c0NvbG91clN0b3Auc2xpY2UoMCwtMSkpXG5cdFx0XHRcdFx0LnNldERpc2FibGVkKCF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzKVxuXHRcdFx0XHRcdC5zZXREeW5hbWljVG9vbHRpcCgpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0c0NvbG91clN0b3AgPSBgJHt2YWx1ZX0lYDtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snZ3JhZGllbnRIaWdobGlnaHRpbmcnXS5wdXNoKHJlc2V0dGFibGVTbGlkZXIpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0bGV0IHJlc2V0QnV0dG9uOiBFeHRyYUJ1dHRvbkNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7cmVzZXRCdXR0b24gPSBidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldERpc2FibGVkKCF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzKVxuXHRcdFx0XHRcdC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgY29sb3VyIHN0b3AnKVxuXHRcdFx0XHRcdC5vbkNsaWNrKCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHNDb2xvdXJTdG9wID0gdGhpcy5wbHVnaW4uc2V0dGluZ3MudGhlbWVzW3RoaXMucGx1Z2luLnNldHRpbmdzLnNlbGVjdGVkVGhlbWVdLnNldHRpbmdzLmFkdmFuY2VkLmdyYWRpZW50SGlnaGxpZ2h0c0NvbG91clN0b3A7XG5cdFx0XHRcdFx0XHRyZXNldHRhYmxlU2xpZGVyLnNldFZhbHVlKCt0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQuZ3JhZGllbnRIaWdobGlnaHRzQ29sb3VyU3RvcC5zbGljZSgwLC0xKSk7XG5cdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snZ3JhZGllbnRIaWdobGlnaHRpbmcnXS5wdXNoKHJlc2V0QnV0dG9uKTtcblx0XHRcdFx0fSlcblx0XHRcdH0pXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG5cdFx0XHQuc2V0TmFtZSgnTGFuZ3VhZ2UgQ29sb3VyZWQgQm9yZGVycycpXG5cdFx0XHQuc2V0RGVzYygnSWYgZW5hYmxlZCwgbGFuZ3VhZ2VzIHdpdGggaWNvbnMgZGlzcGxheSBhIGxlZnQgYm9yZGVyIHdpdGggdGhlIGNvbG91ciBvZiB0aGUgaWNvbi4gVGhlIHNsaWRlciBzZXRzIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyLicpXG5cdFx0XHQuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGVcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlckNvbG91cilcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlckNvbG91ciA9IHZhbHVlO1xuXHRcdFx0XHRcdHRoaXMuZGlzYWJsZWFibGVDb21wb25lbnRzWydsYW5ndWFnZUJvcmRlckNvbG91ciddLmZvckVhY2goY29tcG9uZW50ID0+IHtjb21wb25lbnQuc2V0RGlzYWJsZWQoIXZhbHVlKX0pO1xuXHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpO1xuXHRcdFx0XHR9KSlcblx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdGxldCByZXNldHRhYmxlU2xpZGVyOiBTbGlkZXJDb21wb25lbnQ7XG5cdFx0XHRcdHNldHRpbmcuYWRkU2xpZGVyKChzbGlkZXIpID0+IHtyZXNldHRhYmxlU2xpZGVyID0gc2xpZGVyXG5cdFx0XHRcdFx0LnNldExpbWl0cygwLDIwLDEpXG5cdFx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlcldpZHRoKVxuXHRcdFx0XHRcdC5zZXREaXNhYmxlZCghdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyQ29sb3VyKVxuXHRcdFx0XHRcdC5zZXREeW5hbWljVG9vbHRpcCgpXG5cdFx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyV2lkdGggPSB2YWx1ZTtcblx0XHRcdFx0XHRcdChhc3luYyAoKSA9PiB7YXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCl9KSgpOyAgICBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR0aGlzLmRpc2FibGVhYmxlQ29tcG9uZW50c1snbGFuZ3VhZ2VCb3JkZXJDb2xvdXInXS5wdXNoKHJlc2V0dGFibGVTbGlkZXIpO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0bGV0IHJlc2V0QnV0dG9uOiBFeHRyYUJ1dHRvbkNvbXBvbmVudDtcblx0XHRcdFx0c2V0dGluZy5hZGRFeHRyYUJ1dHRvbigoYnV0dG9uKSA9PiB7cmVzZXRCdXR0b24gPSBidXR0b25cblx0XHRcdFx0XHQuc2V0SWNvbihcInJlc2V0XCIpXG5cdFx0XHRcdFx0LnNldERpc2FibGVkKCF0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJDb2xvdXIpXG5cdFx0XHRcdFx0LnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCBjb2xvdXIgc3RvcCcpXG5cdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyV2lkdGggPSB0aGlzLnBsdWdpbi5zZXR0aW5ncy50aGVtZXNbdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uc2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJXaWR0aDtcblx0XHRcdFx0XHRcdHJlc2V0dGFibGVTbGlkZXIuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyV2lkdGgpO1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0dGhpcy5kaXNhYmxlYWJsZUNvbXBvbmVudHNbJ2xhbmd1YWdlQm9yZGVyQ29sb3VyJ10ucHVzaChyZXNldEJ1dHRvbik7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcblx0XHRcdC5zZXROYW1lKCdSZWRpcmVjdCBMYW5ndWFnZSBTZXR0aW5ncycpXG5cdFx0XHQuc2V0RGVzYygnVXNlIHRoaXMgdGV4dGJveCB0byByZWRpcmVjdCBzcGVjaWZpYyBsYW5ndWFnZSBjb2xvdXJzIGFuZCBpY29ucyBhcyBhIEpTT04gd2l0aCBsYW5ndWFnZSBuYW1lcyBhcyBrZXlzIGFuZCBlaXRoZXIgYSBjb2xvdXIga2V5LCBhbiBpY29uIGtleSBvciBib3RoIGFzIHRoZSB2YWx1ZSBmb3IgYSBnaXZlbiBsYW5ndWFnZS4gQ29sb3VycyBzaG91bGQgYmUgcGFzc2VkIGFzIENTUyBjb2xvdXJzIGFuZCBpY29ucyBzaG91bGQgYmUgcGFzc2VkIGFzIGEgc3RyaW5nIG9mIHRoZSBpbnNpZGUgb2YgYW4gc3ZnIGVsZW1lbnQuIFRoaXMgc2V0dGluZyBpcyB0aGVtZSBpbmRlcGVuZGVudC4nKVxuXHRcdFx0LnNldENsYXNzKCdjb2RlLXN0eWxlci1zZXR0aW5nLXRleHQtYXJlYScpXG5cdFx0XHQuYWRkVGV4dEFyZWEodGV4dEFyZWEgPT4gdGV4dEFyZWFcblx0XHRcdFx0LnNldFZhbHVlKEpTT04uc3RyaW5naWZ5KHRoaXMucGx1Z2luLnNldHRpbmdzLnJlZGlyZWN0TGFuZ3VhZ2VzKT09PSd7fSc/Jyc6SlNPTi5zdHJpbmdpZnkodGhpcy5wbHVnaW4uc2V0dGluZ3MucmVkaXJlY3RMYW5ndWFnZXMsbnVsbCw0KSlcblx0XHRcdFx0LnNldFBsYWNlaG9sZGVyKEpTT04uc3RyaW5naWZ5KHt0b21sOiB7Y29sb3VyOiAnIzAxMjM0NScsIGljb246IExBTkdVQUdFX0lDT05TX0RBVEFbJ0FQTCddfX0sbnVsbCw0KSlcblx0XHRcdFx0Lm9uQ2hhbmdlKCh2YWx1ZSk9Pntcblx0XHRcdFx0XHRpZiAodmFsdWUgPT09ICcnKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZWRpcmVjdExhbmd1YWdlcyA9IHt9O1xuXHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLnJlZGlyZWN0TGFuZ3VhZ2VzID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMucmVkaXJlY3RMYW5ndWFnZXMoKTtcblx0XHRcdFx0XHRcdFx0KGFzeW5jICgpID0+IHthd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoIHtcblx0XHRcdFx0XHRcdFx0bmV3IE5vdGljZSgnSW52YWxpZCBKU09OJyk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkpO1xuXHRcdFx0XHQvL1RPRE8gKEBtYXl1cmFua3YpIFJlLXJlbmRlciAoVGVzdClcblxuXG5cdFx0Ly8gPT09PT09PT09PSBEb25hdGlvbiA9PT09PT09PT09XG5cdFx0Y29uc3QgZG9uYXRpb25EaXYgPSBjb250YWluZXJFbC5jcmVhdGVFbChcImRpdlwiLCB7IGNsczogXCJjb2RlLXN0eWxlci1kb25hdGlvblwiLCB9KTsgICAgXG5cdFx0Y29uc3QgZG9uYXRpb25UZXh0ID0gY3JlYXRlRWwoXCJwXCIsIHt0ZXh0OiBcIklmIHlvdSBsaWtlIHRoaXMgcGx1Z2luLCBhbmQgd291bGQgbGlrZSB0byBoZWxwIHN1cHBvcnQgY29udGludWVkIGRldmVsb3BtZW50LCB1c2UgdGhlIGJ1dHRvbiBiZWxvdyFcIn0pO1xuXHRcdGRvbmF0aW9uRGl2LmFwcGVuZENoaWxkKGRvbmF0aW9uVGV4dCk7XG5cdFx0Y29uc3QgZG9uYXRpb25CdXR0b24gPSBjcmVhdGVFbChcImFcIiwgeyBocmVmOiBcImh0dHBzOi8vd3d3LmJ1eW1lYWNvZmZlZS5jb20vbWF5dXJhbmt2MlwifSk7XG5cdFx0ZG9uYXRpb25CdXR0b24uaW5uZXJIVE1MID0gYDxpbWcgc3JjPVwiaHR0cHM6Ly9pbWcuYnV5bWVhY29mZmVlLmNvbS9idXR0b24tYXBpLz90ZXh0PUJ1eSBtZSBhIGNvZmZlZSZlbW9qaT0mc2x1Zz1tYXl1cmFua3YyJmJ1dHRvbl9jb2xvdXI9ZTNlN2VmYTAmZm9udF9jb2xvdXI9MjYyNjI2JmZvbnRfZmFtaWx5PUludGVyJm91dGxpbmVfY29sb3VyPTI2MjYyNiZjb2ZmZWVfY29sb3VyPWEwNTIyZFwiIGhlaWdodD1cIjQycHhcIj5gO1xuXHRcdGRvbmF0aW9uRGl2LmFwcGVuZENoaWxkKGRvbmF0aW9uQnV0dG9uKTtcblx0fVxuXG5cdC8vIFNldHRpbmcgUGFyc2luZ1xuXHRyZWRpcmVjdExhbmd1YWdlcygpIHtcblx0XHRPYmplY3QuZW50cmllcyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZWRpcmVjdExhbmd1YWdlcykuZm9yRWFjaCgoW2xhbmd1YWdlTmFtZSwgbGFuZ3VhZ2VTZXR0aW5nc106IFtzdHJpbmcsIHtjb2xvdXI/OiBDb2xvdXIsIGljb24/OiBzdHJpbmd9XSk9Pntcblx0XHRcdGlmICgnaWNvbicgaW4gbGFuZ3VhZ2VTZXR0aW5ncykge1xuXHRcdFx0XHRpZiAoTEFOR1VBR0VfTkFNRVNbbGFuZ3VhZ2VOYW1lXSBpbiB0aGlzLnBsdWdpbi5sYW5ndWFnZUljb25zKVxuXHRcdFx0XHRcdFVSTC5yZXZva2VPYmplY3RVUkwodGhpcy5wbHVnaW4ubGFuZ3VhZ2VJY29uc1tMQU5HVUFHRV9OQU1FU1tsYW5ndWFnZU5hbWVdXSk7XG5cdFx0XHRcdHRoaXMucGx1Z2luLmxhbmd1YWdlSWNvbnNbTEFOR1VBR0VfTkFNRVNbbGFuZ3VhZ2VOYW1lXV0gPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiPiR7bGFuZ3VhZ2VTZXR0aW5ncy5pY29ufTwvc3ZnPmBdLCB7IHR5cGU6IFwiaW1hZ2Uvc3ZnK3htbFwiIH0pKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdC8vIFNldHRpbmcgQ3JlYXRpb25cblx0Y3JlYXRlUGlja3IocGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luLCBjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIHNldHRpbmc6IFNldHRpbmcsIGlkOiBzdHJpbmcsIGdldFJlbGV2YW50VGhlbWVDb2xvdXI6IChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycyk9PkNvbG91ciwgc2F2ZVJlbGV2YW50VGhlbWVDb2xvdXI6IChyZWxldmFudFRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycywgc2F2ZUNvbG91cjogQ29sb3VyKT0+dm9pZCwgZGlzYWJsZWQ/OiAoKT0+Ym9vbGVhbikge1xuXHRcdGNvbnN0IHBpY2tyOiBQaWNrclJlc2V0dGFibGUgPSBuZXcgUGlja3JSZXNldHRhYmxlKHBsdWdpbixjb250YWluZXJFbCxzZXR0aW5nLGdldFJlbGV2YW50VGhlbWVDb2xvdXIsc2F2ZVJlbGV2YW50VGhlbWVDb2xvdXIpO1xuXHRcdHBpY2tyXG5cdFx0XHQub24oJ3Nob3cnLCAoY29sb3VyOiBQaWNrci5IU1ZhQ29sb3IsIGluc3RhbmNlOiBQaWNrcikgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIGRpc2FibGVkICE9PSAndW5kZWZpbmVkJyAmJiBkaXNhYmxlZCgpKVxuXHRcdFx0XHRcdGluc3RhbmNlLmhpZGUoKVxuXHRcdFx0XHQvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IChpbnN0YW5jZS5nZXRSb290KCkgYXMgYW55KS5pbnRlcmFjdGlvbi5yZXN1bHQuc2VsZWN0KCkpKVxuXHRcdFx0fSlcblx0XHRcdC5vbignc2F2ZScsIChjb2xvdXI6IFBpY2tyLkhTVmFDb2xvciwgaW5zdGFuY2U6IFBpY2tyUmVzZXR0YWJsZSkgPT4ge1xuXHRcdFx0XHRjb25zdCBzYXZlZENvbG91cjogQ29sb3VyID0gYCMke2NvbG91ci50b0hFWEEoKS50b1N0cmluZygpLnN1YnN0cmluZygxKX1gO1xuXHRcdFx0XHRpbnN0YW5jZS5oaWRlKCk7XG5cdFx0XHRcdGluc3RhbmNlLmFkZFN3YXRjaChzYXZlZENvbG91cik7XG5cdFx0XHRcdGluc3RhbmNlLnNhdmVDb2xvdXIoc2F2ZWRDb2xvdXIpO1xuXHRcdFx0fSlcblx0XHRcdC5vbignY2FuY2VsJywgKGluc3RhbmNlOiBQaWNrclJlc2V0dGFibGUpID0+IHtpbnN0YW5jZS5oaWRlKCl9KTtcblx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtwaWNrci5yZXNldEJ1dHRvbiA9IGJ1dHRvblxuXHRcdFx0LnNldEljb24oXCJyZXNldFwiKVxuXHRcdFx0LnNldERpc2FibGVkKHR5cGVvZiBkaXNhYmxlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgZGlzYWJsZWQoKSlcblx0XHRcdC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQgY29sb3VyJylcblx0XHRcdC5vbkNsaWNrKCgpID0+IHtwaWNrci5yZXNldENvbG91cigpfSk7XG5cdFx0fSk7XG5cdFx0dGhpcy5waWNrcnNbaWRdPXBpY2tyO1xuXHR9XG5cdFxuXHQvLyBTZXR0aW5nIFRhYiBVcGRhdGVzXG5cdHVwZGF0ZURyb3Bkb3duKGRyb3Bkb3duOiBEcm9wZG93bkNvbXBvbmVudCwgc2V0dGluZ3M6IENvZGVTdHlsZXJTZXR0aW5ncykge1xuXHRcdGRyb3Bkb3duLnNlbGVjdEVsLmVtcHR5KCk7XG5cdFx0T2JqZWN0LmtleXMoc2V0dGluZ3MudGhlbWVzKS5mb3JFYWNoKCh0aGVtZV9uYW1lOiBzdHJpbmcpID0+IHtcblx0XHRcdGRyb3Bkb3duLmFkZE9wdGlvbih0aGVtZV9uYW1lLCB0aGVtZV9uYW1lKTsgICAgICAgICAgICBcblx0XHR9KVxuXHRcdGRyb3Bkb3duLnNldFZhbHVlKHNldHRpbmdzLnNlbGVjdGVkVGhlbWUpO1xuXHR9XG5cdHVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXI6IEhUTUxEaXZFbGVtZW50KSB7XG5cdFx0YWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyLmVtcHR5KCk7XG5cdFx0T2JqZWN0LmtleXModGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMpLmZvckVhY2goKGFsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZSkgPT4ge1xuXHRcdFx0bmV3IFNldHRpbmcoYWx0ZXJuYXRpdmVIaWdobGlnaHRzQ29udGFpbmVyKVxuXHRcdFx0XHQuc2V0TmFtZShhbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWUpXG5cdFx0XHRcdC5zZXREZXNjKGBUbyBoaWdobGlnaHQgbGluZXMgd2l0aCB0aGlzIGhpZ2hsaWdodCwgdXNlIHRoZSAke2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZX0gcGFyYW1ldGVyLmApXG5cdFx0XHRcdC50aGVuKChzZXR0aW5nKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5jcmVhdGVQaWNrcihcblx0XHRcdFx0XHRcdHRoaXMucGx1Z2luLGFsdGVybmF0aXZlSGlnaGxpZ2h0c0NvbnRhaW5lcixzZXR0aW5nLFxuXHRcdFx0XHRcdFx0YGFsdGVybmF0aXZlX2hpZ2hsaWdodF8ke2FsdGVybmF0aXZlSGlnaGxpZ2h0TmFtZX1gLFxuXHRcdFx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKSA9PiBhbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWUgaW4gcmVsZXZhbnRUaGVtZUNvbG91cnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHM/cmVsZXZhbnRUaGVtZUNvbG91cnNbZ2V0Q3VycmVudE1vZGUoKV0uaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lXTp0aGlzLnBsdWdpbi5zZXR0aW5ncy5jdXJyZW50VGhlbWUuY29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1thbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWVdLFxuXHRcdFx0XHRcdFx0KHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpID0+IHtyZWxldmFudFRoZW1lQ29sb3Vyc1tnZXRDdXJyZW50TW9kZSgpXS5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1thbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWVdID0gc2F2ZUNvbG91cn0sXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRzZXR0aW5nLmFkZEV4dHJhQnV0dG9uKChidXR0b24pID0+IHtidXR0b25cblx0XHRcdFx0XHRcdC5zZXRJY29uKFwidHJhc2hcIilcblx0XHRcdFx0XHRcdC5zZXRUb29sdGlwKFwiRGVsZXRlIGhpZ2hsaWdodFwiKVxuXHRcdFx0XHRcdFx0Lm9uQ2xpY2soKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRkZWxldGUgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHNbYWx0ZXJuYXRpdmVIaWdobGlnaHROYW1lXVxuXHRcdFx0XHRcdFx0XHRkZWxldGUgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMuZGFyay5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0c1thbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWVdXG5cdFx0XHRcdFx0XHRcdG5ldyBOb3RpY2UoYFJlbW92ZWQgaGlnaGxpZ2h0IFwiJHthbHRlcm5hdGl2ZUhpZ2hsaWdodE5hbWV9XCIuYCk7IC8vTk9TT05BUlxuXHRcdFx0XHRcdFx0XHR0aGlzLnVwZGF0ZUFsdGVybmF0aXZlSGlnaGxpZ2h0cyhhbHRlcm5hdGl2ZUhpZ2hsaWdodHNDb250YWluZXIpO1xuXHRcdFx0XHRcdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpfSkoKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHR9KTtcblx0fVxufVxuXG5jbGFzcyBQaWNrclJlc2V0dGFibGUgZXh0ZW5kcyBQaWNrciB7XG5cdHNhdmVDb2xvdXI6IChzYXZlQ29sb3VyOiBDb2xvdXIpPT52b2lkO1xuXHRyZXNldENvbG91cjogKCk9PnZvaWQ7XG5cdGdldEN1cnJlbnRDb2xvdXI6IChhY2Nlc3NUaGVtZTogYm9vbGVhbik9PnZvaWQ7XG5cdHJlc2V0QnV0dG9uOiBFeHRyYUJ1dHRvbkNvbXBvbmVudDtcblxuXHRjb25zdHJ1Y3RvcihwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4sIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCwgc2V0dGluZzogU2V0dGluZywgZ2V0UmVsZXZhbnRUaGVtZUNvbG91cjogKHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzKT0+Q29sb3VyLCBzYXZlUmVsZXZhbnRUaGVtZUNvbG91cjogKHJlbGV2YW50VGhlbWVDb2xvdXJzOiBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBzYXZlQ29sb3VyOiBDb2xvdXIpPT52b2lkLCB0b29sdGlwPzogc3RyaW5nKSB7XG5cdFx0Y29uc3Qgc2V0dGluZ3M6IFBpY2tyLk9wdGlvbnMgPSB7XG5cdFx0XHRlbDogc2V0dGluZy5jb250cm9sRWwuY3JlYXRlRGl2KHtjbHM6IFwicGlja2VyXCJ9KSxcblx0XHRcdHRoZW1lOiAnbmFubycsXG5cdFx0XHRkZWZhdWx0OiBnZXRDb2xvdXIoZ2V0UmVsZXZhbnRUaGVtZUNvbG91cihwbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMpKSxcblx0XHRcdHBvc2l0aW9uOiBcImxlZnQtbWlkZGxlXCIsXG5cdFx0XHRsb2NrT3BhY2l0eTogZmFsc2UsXG5cdFx0XHRjb21wb25lbnRzOiB7XG5cdFx0XHRcdHByZXZpZXc6IHRydWUsXG5cdFx0XHRcdGh1ZTogdHJ1ZSxcblx0XHRcdFx0b3BhY2l0eTogdHJ1ZSxcblx0XHRcdFx0aW50ZXJhY3Rpb246IHtcblx0XHRcdFx0XHRoZXg6IHRydWUsXG5cdFx0XHRcdFx0cmdiYTogdHJ1ZSxcblx0XHRcdFx0XHRoc2xhOiBmYWxzZSxcblx0XHRcdFx0XHRpbnB1dDogdHJ1ZSxcblx0XHRcdFx0XHRjYW5jZWw6IHRydWUsXG5cdFx0XHRcdFx0c2F2ZTogdHJ1ZSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHRpMThuOiB7XG5cdFx0XHRcdCd1aTpkaWFsb2cnOiAnQ29sb3VyIHBpY2tlciBkaWFsb2cnLFxuXHRcdFx0XHQnYnRuOnRvZ2dsZSc6ICh0eXBlb2YgdG9vbHRpcCAhPT0gJ3VuZGVmaW5lZCcpP3Rvb2x0aXA6J1NlbGVjdCBjb2xvdXInLFxuXHRcdFx0XHQnYnRuOnN3YXRjaCc6ICdDb2xvdXIgc3dhdGNoJyxcblx0XHRcdFx0J2J0bjpsYXN0LWNvbG9yJzogJ1VzZSBwcmV2aW91cyBjb2xvdXInLFxuXHRcdFx0fVxuXHRcdH07XG5cdFx0aWYgKGNvbnRhaW5lckVsLnBhcmVudEVsZW1lbnQgIT09IG51bGwpXG5cdFx0XHRzZXR0aW5ncy5jb250YWluZXIgPSBjb250YWluZXJFbC5wYXJlbnRFbGVtZW50O1xuXHRcdHN1cGVyKHNldHRpbmdzKTtcblx0XHR0aGlzLnNhdmVDb2xvdXIgPSAoc2F2ZUNvbG91cjogQ29sb3VyKSA9PiB7XG5cdFx0XHRzYXZlUmVsZXZhbnRUaGVtZUNvbG91cihwbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMsc2F2ZUNvbG91cik7XG5cdFx0XHQoYXN5bmMgKCkgPT4ge2F3YWl0IHBsdWdpbi5zYXZlU2V0dGluZ3MoKX0pKCk7XG5cdFx0fTtcblx0XHR0aGlzLnJlc2V0Q29sb3VyID0gKCkgPT4ge1xuXHRcdFx0Y29uc3QgcmVzZXRDb2xvdXI6IENvbG91ciA9IGdldFJlbGV2YW50VGhlbWVDb2xvdXIocGx1Z2luLnNldHRpbmdzLnRoZW1lc1twbHVnaW4uc2V0dGluZ3Muc2VsZWN0ZWRUaGVtZV0uY29sb3Vycyk7XG5cdFx0XHR0aGlzLnNldENvbG9yKGdldENvbG91cihyZXNldENvbG91cikpO1xuXHRcdFx0dGhpcy5zYXZlQ29sb3VyKHJlc2V0Q29sb3VyKTtcblx0XHR9O1xuXHR9XG59XG5cbi8vIENvbG91ciBNYW5hZ2VtZW50XG5mdW5jdGlvbiBnZXRSYW5kb21Db2xvdXIoKTogQ29sb3VyIHtcblx0Y29uc3QgbGV0dGVycyA9IFwiMDEyMzQ1Njc4OUFCQ0RFRlwiO1xuXHRsZXQgY29sb3VyID0gXCJcIjtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCA2OyBpKyspXG5cdFx0Y29sb3VyICs9IGxldHRlcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTYpXTtcblx0cmV0dXJuIGAjJHtjb2xvdXJ9RkZgO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3NzKHBvc3NpYmxlQ3NzOiBzdHJpbmcpOiBwb3NzaWJsZUNzcyBpcyBDU1Mge1xuXHRyZXR1cm4gcG9zc2libGVDc3Muc3RhcnRzV2l0aCgnLS0nKSAmJiB0eXBlb2YgcG9zc2libGVDc3MgPT09ICdzdHJpbmcnO1xufVxuZnVuY3Rpb24gY2FsYyhjYWxjU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBzcGxpdFN0cmluZyA9IGNhbGNTdHJpbmcudHJpbSgpLnJlcGxhY2UoLyhcXGQqKSUvZywnJDEnKS5zcGxpdCgnICcpO1xuXHRjb25zdCBvcGVyYXRvcnM6IHtba2V5OiBzdHJpbmddOiAobnVtMTpudW1iZXIsIG51bTI6bnVtYmVyKSA9PiBudW1iZXJ9ID0ge1xuXHRcdCcrJzogKG51bTE6bnVtYmVyLCBudW0yOm51bWJlcik6bnVtYmVyID0+IE1hdGgubWF4KG51bTErbnVtMiwwKSxcblx0XHQnLSc6IChudW0xOm51bWJlciAsbnVtMjpudW1iZXIpOm51bWJlciA9PiBNYXRoLm1heChudW0xLW51bTIsMCksXG5cdH1cblx0aWYgKHNwbGl0U3RyaW5nLmxlbmd0aCA9PT0gMylcblx0XHRpZiAoc3BsaXRTdHJpbmdbMV0gaW4gb3BlcmF0b3JzKVxuXHRcdFx0cmV0dXJuIGAke29wZXJhdG9yc1tzcGxpdFN0cmluZ1sxXV0ocGFyc2VGbG9hdChzcGxpdFN0cmluZ1swXSkscGFyc2VGbG9hdChzcGxpdFN0cmluZ1syXSkpfSVgXG5cdFxuXHRjb25zb2xlLndhcm4oJ1dhcm5pbmc6IENvdWxkblxcJ3QgcGFyc2UgY2FsYyBzdHJpbmcnKTtcblx0cmV0dXJuIGNhbGNTdHJpbmc7XG59XG5mdW5jdGlvbiBnZXRDc3NWYXJpYWJsZShjc3NWYXJpYWJsZTogQ1NTKTogSEVYIHtcblx0Y29uc3QgdmFyaWFibGVWYWx1ZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmdldFByb3BlcnR5VmFsdWUoY3NzVmFyaWFibGUpLnRyaW0oKTtcblx0aWYgKHR5cGVvZiB2YXJpYWJsZVZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhcmlhYmxlVmFsdWUudHJpbSgpLnN0YXJ0c1dpdGgoJyMnKSlcblx0XHRyZXR1cm4gYCMke3ZhcmlhYmxlVmFsdWUudHJpbSgpLnN1YnN0cmluZygxKX1gO1xuXHRlbHNlIGlmICh2YXJpYWJsZVZhbHVlLnN0YXJ0c1dpdGgoJ3JnYicpKVxuXHRcdHJldHVybiBgIyR7Q29sb3JUcmFuc2xhdG9yLnRvSEVYQSh2YXJpYWJsZVZhbHVlLnJlcGxhY2UoL2NhbGNcXCgoLio/KVxcKS9nLChtYXRjaCxjYXB0dXJlKT0+Y2FsYyhjYXB0dXJlKSkpLnN1YnN0cmluZygxKX1gO1xuXHRlbHNlIGlmICh2YXJpYWJsZVZhbHVlLnN0YXJ0c1dpdGgoJ2hzbCcpKVxuXHRcdHJldHVybiBgIyR7Q29sb3JUcmFuc2xhdG9yLnRvSEVYQSh2YXJpYWJsZVZhbHVlLnJlcGxhY2UoL2NhbGNcXCgoLio/KVxcKS9nLChtYXRjaCxjYXB0dXJlKT0+Y2FsYyhjYXB0dXJlKSkpLnN1YnN0cmluZygxKX1gO1xuXHRlbHNlXG5cdFx0Y29uc29sZS53YXJuKGBXYXJuaW5nOiBDb3VsZG4ndCBkZXRlcm1pbmUgY29sb3VyIGZvcm1hdCAtICR7dmFyaWFibGVWYWx1ZX1gKTtcblx0cmV0dXJuIGAjJHtDb2xvclRyYW5zbGF0b3IudG9IRVhBKHZhcmlhYmxlVmFsdWUpLnN1YnN0cmluZygxKX1gO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbG91cih0aGVtZUNvbG91cjogQ29sb3VyKTogQ29sb3VyIHtcblx0cmV0dXJuIGlzQ3NzKHRoZW1lQ29sb3VyKT9nZXRDc3NWYXJpYWJsZSh0aGVtZUNvbG91cik6dGhlbWVDb2xvdXI7XG59XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRNb2RlKCkge1xuXHRjb25zdCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpO1xuXHRpZiAoYm9keSAhPT0gbnVsbCl7XG5cdFx0aWYgKGJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCd0aGVtZS1saWdodCcpKVxuXHRcdFx0cmV0dXJuIFwibGlnaHRcIjtcblx0XHRlbHNlIGlmIChib2R5LmNsYXNzTGlzdC5jb250YWlucygndGhlbWUtZGFyaycpKVxuXHRcdFx0cmV0dXJuIFwiZGFya1wiO1xuXHR9XG5cdGNvbnNvbGUud2FybignV2FybmluZzogQ291bGRuXFwndCBnZXQgY3VycmVudCB0aGVtZScpO1xuXHRyZXR1cm4gXCJsaWdodFwiO1xufVxuIiwgInZhciB0PWZ1bmN0aW9uKCl7cmV0dXJuIHQ9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlLHI9MSxuPWFyZ3VtZW50cy5sZW5ndGg7cjxuO3IrKylmb3IodmFyIGkgaW4gZT1hcmd1bWVudHNbcl0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJih0W2ldPWVbaV0pO3JldHVybiB0fSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZnVuY3Rpb24gZSh0LGUscil7aWYocnx8Mj09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKHZhciBuLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspIW4mJmkgaW4gZXx8KG58fChuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsMCxpKSksbltpXT1lW2ldKTtyZXR1cm4gdC5jb25jYXQobnx8QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkpfXZhciByLG4saSxvOyFmdW5jdGlvbih0KXt0LkhFWD1cIkhFWFwiLHQuUkdCPVwiUkdCXCIsdC5IU0w9XCJIU0xcIix0LkNNWUs9XCJDTVlLXCJ9KHJ8fChyPXt9KSksZnVuY3Rpb24odCl7dC5BTkFMT0dPVVM9XCJBTkFMT0dPVVNcIix0LkNPTVBMRU1FTlRBUlk9XCJDT01QTEVNRU5UQVJZXCIsdC5TUExJVF9DT01QTEVNRU5UQVJZPVwiU1BMSVRfQ09NUExFTUVOVEFSWVwiLHQuVFJJQURJQz1cIlRSSUFESUNcIix0LlRFVFJBRElDPVwiVEVUUkFESUNcIix0LlNRVUFSRT1cIlNRVUFSRVwifShufHwobj17fSkpLGZ1bmN0aW9uKHQpe3QuQURESVRJVkU9XCJBRERJVElWRVwiLHQuU1VCVFJBQ1RJVkU9XCJTVUJUUkFDVElWRVwifShpfHwoaT17fSkpLGZ1bmN0aW9uKHQpe3QuYmxhY2s9XCIjMDAwMDAwXCIsdC5zaWx2ZXI9XCIjQzBDMEMwXCIsdC5ncmF5PVwiIzgwODA4MFwiLHQud2hpdGU9XCIjRkZGRkZGXCIsdC5tYXJvb249XCIjODAwMDAwXCIsdC5yZWQ9XCIjRkYwMDAwXCIsdC5wdXJwbGU9XCIjODAwMDgwXCIsdC5mdWNoc2lhPVwiI0ZGMDBGRlwiLHQuZ3JlZW49XCIjMDA4MDAwXCIsdC5saW1lPVwiIzAwRkYwMFwiLHQub2xpdmU9XCIjODA4MDAwXCIsdC55ZWxsb3c9XCIjRkZGRjAwXCIsdC5uYXZ5PVwiIzAwMDA4MFwiLHQuYmx1ZT1cIiMwMDAwRkZcIix0LnRlYWw9XCIjMDA4MDgwXCIsdC5hcXVhPVwiIzAwRkZGRlwiLHQub3JhbmdlPVwiI0ZGQTUwMFwiLHQuYWxpY2VibHVlPVwiI0YwRjhGRlwiLHQuYW50aXF1ZXdoaXRlPVwiI0ZBRUJEN1wiLHQuYXF1YW1hcmluZT1cIiM3RkZGRDRcIix0LmF6dXJlPVwiI0YwRkZGRlwiLHQuYmVpZ2U9XCIjRjVGNURDXCIsdC5iaXNxdWU9XCIjRkZFNEM0XCIsdC5ibGFuY2hlZGFsbW9uZD1cIiNGRkVCQ0RcIix0LmJsdWV2aW9sZXQ9XCIjOEEyQkUyXCIsdC5icm93bj1cIiNBNTJBMkFcIix0LmJ1cmx5d29vZD1cIiNERUI4ODdcIix0LmNhZGV0Ymx1ZT1cIiM1RjlFQTBcIix0LmNoYXJ0cmV1c2U9XCIjN0ZGRjAwXCIsdC5jaG9jb2xhdGU9XCIjRDI2OTFFXCIsdC5jb3JhbD1cIiNGRjdGNTBcIix0LmNvcm5mbG93ZXJibHVlPVwiIzY0OTVFRFwiLHQuY29ybnNpbGs9XCIjRkZGOERDXCIsdC5jcmltc29uPVwiI0RDMTQzQ1wiLHQuY3lhbj1cIiMwMEZGRkZcIix0LmRhcmtibHVlPVwiIzAwMDA4QlwiLHQuZGFya2N5YW49XCIjMDA4QjhCXCIsdC5kYXJrZ29sZGVucm9kPVwiI0I4ODYwQlwiLHQuZGFya2dyYXk9XCIjQTlBOUE5XCIsdC5kYXJrZ3JlZW49XCIjMDA2NDAwXCIsdC5kYXJrZ3JleT1cIiNBOUE5QTlcIix0LmRhcmtraGFraT1cIiNCREI3NkJcIix0LmRhcmttYWdlbnRhPVwiIzhCMDA4QlwiLHQuZGFya29saXZlZ3JlZW49XCIjNTU2QjJGXCIsdC5kYXJrb3JhbmdlPVwiI0ZGOEMwMFwiLHQuZGFya29yY2hpZD1cIiM5OTMyQ0NcIix0LmRhcmtyZWQ9XCIjOEIwMDAwXCIsdC5kYXJrc2FsbW9uPVwiI0U5OTY3QVwiLHQuZGFya3NlYWdyZWVuPVwiIzhGQkM4RlwiLHQuZGFya3NsYXRlYmx1ZT1cIiM0ODNEOEJcIix0LmRhcmtzbGF0ZWdyYXk9XCIjMkY0RjRGXCIsdC5kYXJrc2xhdGVncmV5PVwiIzJGNEY0RlwiLHQuZGFya3R1cnF1b2lzZT1cIiMwMENFRDFcIix0LmRhcmt2aW9sZXQ9XCIjOTQwMEQzXCIsdC5kZWVwcGluaz1cIiNGRjE0OTNcIix0LmRlZXBza3libHVlPVwiIzAwQkZGRlwiLHQuZGltZ3JheT1cIiM2OTY5NjlcIix0LmRpbWdyZXk9XCIjNjk2OTY5XCIsdC5kb2RnZXJibHVlPVwiIzFFOTBGRlwiLHQuZmlyZWJyaWNrPVwiI0IyMjIyMlwiLHQuZmxvcmFsd2hpdGU9XCIjRkZGQUYwXCIsdC5mb3Jlc3RncmVlbj1cIiMyMjhCMjJcIix0LmdhaW5zYm9ybz1cIiNEQ0RDRENcIix0Lmdob3N0d2hpdGU9XCIjRjhGOEZGXCIsdC5nb2xkPVwiI0ZGRDcwMFwiLHQuZ29sZGVucm9kPVwiI0RBQTUyMFwiLHQuZ3JlZW55ZWxsb3c9XCIjQURGRjJGXCIsdC5ncmV5PVwiIzgwODA4MFwiLHQuaG9uZXlkZXc9XCIjRjBGRkYwXCIsdC5ob3RwaW5rPVwiI0ZGNjlCNFwiLHQuaW5kaWFucmVkPVwiI0NENUM1Q1wiLHQuaW5kaWdvPVwiIzRCMDA4MlwiLHQuaXZvcnk9XCIjRkZGRkYwXCIsdC5raGFraT1cIiNGMEU2OENcIix0LmxhdmVuZGVyPVwiI0U2RTZGQVwiLHQubGF2ZW5kZXJibHVzaD1cIiNGRkYwRjVcIix0Lmxhd25ncmVlbj1cIiM3Q0ZDMDBcIix0LmxlbW9uY2hpZmZvbj1cIiNGRkZBQ0RcIix0LmxpZ2h0Ymx1ZT1cIiNBREQ4RTZcIix0LmxpZ2h0Y29yYWw9XCIjRjA4MDgwXCIsdC5saWdodGN5YW49XCIjRTBGRkZGXCIsdC5saWdodGdvbGRlbnJvZHllbGxvdz1cIiNGQUZBRDJcIix0LmxpZ2h0Z3JheT1cIiNEM0QzRDNcIix0LmxpZ2h0Z3JlZW49XCIjOTBFRTkwXCIsdC5saWdodGdyZXk9XCIjRDNEM0QzXCIsdC5saWdodHBpbms9XCIjRkZCNkMxXCIsdC5saWdodHNhbG1vbj1cIiNGRkEwN0FcIix0LmxpZ2h0c2VhZ3JlZW49XCIjMjBCMkFBXCIsdC5saWdodHNreWJsdWU9XCIjODdDRUZBXCIsdC5saWdodHNsYXRlZ3JheT1cIiM3Nzg4OTlcIix0LmxpZ2h0c2xhdGVncmV5PVwiIzc3ODg5OVwiLHQubGlnaHRzdGVlbGJsdWU9XCIjQjBDNERFXCIsdC5saWdodHllbGxvdz1cIiNGRkZGRTBcIix0LmxpbWVncmVlbj1cIiMzMkNEMzJcIix0LmxpbmVuPVwiI0ZBRjBFNlwiLHQubWFnZW50YT1cIiNGRjAwRkZcIix0Lm1lZGl1bWFxdWFtYXJpbmU9XCIjNjZDREFBXCIsdC5tZWRpdW1ibHVlPVwiIzAwMDBDRFwiLHQubWVkaXVtb3JjaGlkPVwiI0JBNTVEM1wiLHQubWVkaXVtcHVycGxlPVwiIzkzNzBEQlwiLHQubWVkaXVtc2VhZ3JlZW49XCIjM0NCMzcxXCIsdC5tZWRpdW1zbGF0ZWJsdWU9XCIjN0I2OEVFXCIsdC5tZWRpdW1zcHJpbmdncmVlbj1cIiMwMEZBOUFcIix0Lm1lZGl1bXR1cnF1b2lzZT1cIiM0OEQxQ0NcIix0Lm1lZGl1bXZpb2xldHJlZD1cIiNDNzE1ODVcIix0Lm1pZG5pZ2h0Ymx1ZT1cIiMxOTE5NzBcIix0Lm1pbnRjcmVhbT1cIiNGNUZGRkFcIix0Lm1pc3R5cm9zZT1cIiNGRkU0RTFcIix0Lm1vY2Nhc2luPVwiI0ZGRTRCNVwiLHQubmF2YWpvd2hpdGU9XCIjRkZERUFEXCIsdC5vbGRsYWNlPVwiI0ZERjVFNlwiLHQub2xpdmVkcmFiPVwiIzZCOEUyM1wiLHQub3JhbmdlcmVkPVwiI0ZGNDUwMFwiLHQub3JjaGlkPVwiI0RBNzBENlwiLHQucGFsZWdvbGRlbnJvZD1cIiNFRUU4QUFcIix0LnBhbGVncmVlbj1cIiM5OEZCOThcIix0LnBhbGV0dXJxdW9pc2U9XCIjQUZFRUVFXCIsdC5wYWxldmlvbGV0cmVkPVwiI0RCNzA5M1wiLHQucGFwYXlhd2hpcD1cIiNGRkVGRDVcIix0LnBlYWNocHVmZj1cIiNGRkRBQjlcIix0LnBlcnU9XCIjQ0Q4NTNGXCIsdC5waW5rPVwiI0ZGQzBDQlwiLHQucGx1bT1cIiNEREEwRERcIix0LnBvd2RlcmJsdWU9XCIjQjBFMEU2XCIsdC5yb3N5YnJvd249XCIjQkM4RjhGXCIsdC5yb3lhbGJsdWU9XCIjNDE2OUUxXCIsdC5zYWRkbGVicm93bj1cIiM4QjQ1MTNcIix0LnNhbG1vbj1cIiNGQTgwNzJcIix0LnNhbmR5YnJvd249XCIjRjRBNDYwXCIsdC5zZWFncmVlbj1cIiMyRThCNTdcIix0LnNlYXNoZWxsPVwiI0ZGRjVFRVwiLHQuc2llbm5hPVwiI0EwNTIyRFwiLHQuc2t5Ymx1ZT1cIiM4N0NFRUJcIix0LnNsYXRlYmx1ZT1cIiM2QTVBQ0RcIix0LnNsYXRlZ3JheT1cIiM3MDgwOTBcIix0LnNsYXRlZ3JleT1cIiM3MDgwOTBcIix0LnNub3c9XCIjRkZGQUZBXCIsdC5zcHJpbmdncmVlbj1cIiMwMEZGN0ZcIix0LnN0ZWVsYmx1ZT1cIiM0NjgyQjRcIix0LnRhbj1cIiNEMkI0OENcIix0LnRoaXN0bGU9XCIjRDhCRkQ4XCIsdC50b21hdG89XCIjRkY2MzQ3XCIsdC50dXJxdW9pc2U9XCIjNDBFMEQwXCIsdC52aW9sZXQ9XCIjRUU4MkVFXCIsdC53aGVhdD1cIiNGNURFQjNcIix0LndoaXRlc21va2U9XCIjRjVGNUY1XCIsdC55ZWxsb3dncmVlbj1cIiM5QUNEMzJcIix0LnJlYmVjY2FwdXJwbGU9XCIjNjYzMzk5XCJ9KG98fChvPXt9KSk7dmFyIGEsdSxjLHMsZCxoLGwsZj1PYmplY3Qua2V5cyhvKSxnPXtIRVg6W1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXSxSR0I6W1wiclwiLFwiZ1wiLFwiYlwiLFwiYVwiXSxIU0w6W1wiaFwiLFwic1wiLFwibFwiLFwiYVwiXSxDTVlLOltcImNcIixcIm1cIixcInlcIixcImtcIixcImFcIl19LHA9e0JHUjpyLlJHQixBQkdSOnIuUkdCLEhMUzpyLkhTTCxBSExTOnIuSFNMLENLTVk6ci5DTVlLLEFDS01ZOnIuQ01ZS30sYj0oKGE9e30pW3IuSEVYXT0vXiMoPzooW2EtZlxcZF0pKFthLWZcXGRdKShbYS1mXFxkXSkoW2EtZlxcZF0pP3woW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pPykkL2ksYVtyLlJHQl09L15yZ2JhP1xccypcXChcXHMqKD86KCg/OlxcZCpcXC4pP1xcZCslPylcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyU/KVxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKD86XFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCspKT98KCg/OlxcZCpcXC4pP1xcZCslPylcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqKCg/OlxcZCpcXC4pP1xcZCslPykoPzpcXHMqXFwvXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKT8pXFxzKlxcKSQvLGFbci5IU0xdPS9eaHNsYT9cXHMqXFwoXFxzKig/OigtPyg/OlxcZCpcXC4pP1xcZCsoPzpkZWd8Z3JhZHxyYWR8dHVybik/KVxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrKSVcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyklKD86XFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCspKT98KC0/KD86XFxkKlxcLik/XFxkKyg/OmRlZ3xncmFkfHJhZHx0dXJuKT8pXFxzKigoPzpcXGQqXFwuKT9cXGQrKSVcXHMqKCg/OlxcZCpcXC4pP1xcZCspJSg/OlxccypcXC9cXHMqKCg/OlxcZCpcXC4pP1xcZCslPykpPylcXHMqXFwpJC8sYVtyLkNNWUtdPS9eKD86ZGV2aWNlLWNteWt8Y215aylcXHMqXFwoXFxzKig/OigoPzpcXGQqXFwuKT9cXGQrJT8pXFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqLFxccyooKD86XFxkKlxcLik/XFxkKyU/KVxccyosXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKD86XFxzKixcXHMqKCg/OlxcZCpcXC4pP1xcZCspKT98KCg/OlxcZCpcXC4pP1xcZCslPylcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqKCg/OlxcZCpcXC4pP1xcZCslPylcXHMqKCg/OlxcZCpcXC4pP1xcZCslPykoPzpcXHMqXFwvXFxzKigoPzpcXGQqXFwuKT9cXGQrJT8pKT8pXFxzKlxcKSQvLGEpLEY9L14oLT8oPzpcXGQqXFwuKT9cXGQrKSgoPzpkZWd8Z3JhZHxyYWR8dHVybik/KSQvLG09L14oXFxkKyg/OlxcLlxcZCspP3xcXC5cXGQrKSUkLyx5PS9eMHgoW2EtZlxcZF17MSwyfSkkL2ksQT0vXFx7KFxcZCspXFx9L2csRT1cIlRoZSBwcm92aWRlZCBzdHJpbmcgY29sb3IgZG9lc24ndCBoYXZlIGEgY29ycmVjdCBmb3JtYXRcIix2PVwiVGhlIHByb3ZpZGVkIGNvbG9yIG9iamVjdCBkb2Vzbid0IGhhdmUgdGhlIHByb3BlciBrZXlzIG9yIGZvcm1hdFwiLEg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9LEI9ZnVuY3Rpb24odCl7cmV0dXJuK1wiXCIuY29uY2F0KHQpLnJlcGxhY2UobSxcIiQxXCIpfSxDPWZ1bmN0aW9uKHQpe3JldHVybiBtLnRlc3QoXCJcIi5jb25jYXQodCkpP0IodCk6TWF0aC5taW4oK3QsMTAwKX0sTT1mdW5jdGlvbih0KXtyZXR1cm4gMT09PXQubGVuZ3RoJiYodCs9dCkscGFyc2VJbnQodCwxNil9LFI9ZnVuY3Rpb24odCl7dmFyIGU9Ryh0LDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiAxPT09ZS5sZW5ndGg/XCIweDBcIi5jb25jYXQoZSk6XCIweFwiLmNvbmNhdChlKX0sRD1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT0hMSksIWUmJm0udGVzdCh0KT9NYXRoLm1pbigyNTUqQih0KS8xMDAsMjU1KTp5LnRlc3QodCk/KDM9PT10Lmxlbmd0aCYmKHQrPXQuc2xpY2UoLTEpKSxlP0codCkvMjU1OkcodCkpOk1hdGgubWluKCt0LGU/MToyNTUpfSxTPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1pbihtLnRlc3QodCk/Qih0KS8xMDA6K3QsMSl9LEw9ZnVuY3Rpb24odCl7cmV0dXJuIGUoW10sdCwhMCkuc29ydCgpLmpvaW4oXCJcIikudG9VcHBlckNhc2UoKX0sRz1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPTYpO3ZhciByPU1hdGgucG93KDEwLGUpO3JldHVybiBNYXRoLnJvdW5kKCt0KnIpL3J9LGs9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBNYXRoLm1heChlLE1hdGgubWluKHQscikpfSxPPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gcjwwJiYocis9Nikscj49NiYmKHItPTYpLEcocjwxPzI1NSooKGUtdCkqcit0KTpyPDM/MjU1KmU6cjw0PzI1NSooKGUtdCkqKDQtcikrdCk6MjU1KnQpfSxYPWZ1bmN0aW9uKHQsZSxyKXtlLz0xMDA7dmFyIG49KHIvPTEwMCk8PS41P3IqKGUrMSk6citlLXIqZSxpPTIqci1uO3JldHVybntyOk8oaSxuLCh0Lz02MCkrMiksZzpPKGksbix0KSxiOk8oaSxuLHQtMil9fSxZPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybntyOkcoMjU1KigxLXQpKihuPTEtbikpLGc6RygyNTUqKDEtZSkqbiksYjpHKDI1NSooMS1yKSpuKX19LGo9ZnVuY3Rpb24odCxlLHIpe3QvPTI1NSxlLz0yNTUsci89MjU1O3ZhciBuPTEtTWF0aC5tYXgodCxlLHIpLGk9MS1uLG89aSYmKGktZSkvaSxhPWkmJihpLXIpL2k7cmV0dXJue2M6RygxMDAqKGkmJihpLXQpL2kpKSxtOkcoMTAwKm8pLHk6RygxMDAqYSksazpHKDEwMCpuKX19LEs9ZnVuY3Rpb24odCxlLHIsbil7dm9pZCAwPT09biYmKG49MSksdC89MjU1LGUvPTI1NSxyLz0yNTUsbj1NYXRoLm1pbihuLDEpO3ZhciBpPU1hdGgubWF4KHQsZSxyKSxvPU1hdGgubWluKHQsZSxyKSxhPWktbyx1PTAsYz0wLHM9KGkrbykvMjtpZigwIT09YSl7c3dpdGNoKGkpe2Nhc2UgdDp1PShlLXIpL2ElNjticmVhaztjYXNlIGU6dT0oci10KS9hKzI7YnJlYWs7Y2FzZSByOnU9KHQtZSkvYSs0fSh1PUcoNjAqdSkpPDAmJih1Kz0zNjApLGM9YS8oMS1NYXRoLmFicygyKnMtMSkpfXJldHVybntoOnUsczpHKDEwMCpjKSxsOkcoMTAwKnMpLGE6bn19LEk9ZnVuY3Rpb24odCxlKXtpZih0PDAmJih0Kz0zNjApLHQ+MzYwJiYodC09MzYwKSwzNjA9PT10fHwwPT09dClyZXR1cm4gdDt2YXIgcj1bWzAsMTIwXSxbMTIwLDE4MF0sWzE4MCwyNDBdLFsyNDAsMzYwXV0sbj1bWzAsNjBdLFs2MCwxMjBdLFsxMjAsMjQwXSxbMjQwLDM2MF1dLGk9ZT9uOnIsbz0wLGE9MCx1PTAsYz0wO3JldHVybihlP3I6bikuZmluZCgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gdD49ZVswXSYmdDxlWzFdJiYobz1lWzBdLGE9ZVsxXSx1PWlbcl1bMF0sYz1pW3JdWzFdLCEwKX0pKSx1KyhjLXUpLyhhLW8pKih0LW8pfSxQPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9ITEpO3ZhciByPUwoT2JqZWN0LmtleXModCkpO3JldHVybiBnW3Bbcl1dLnJlZHVjZSgoZnVuY3Rpb24ocixuKXt2YXIgaSxvLGE9dFtuXTtyZXR1cm4gdm9pZCAwIT09YSYmKGU/ci5wdXNoKChpPUcoYSwwKSwxPT09KG89RyhpLDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpKS5sZW5ndGgmJihvPVwiMFwiLmNvbmNhdChvKSksbykpOnIucHVzaChhKSkscn0pLFtdKX0sVD1mdW5jdGlvbih0LGUpe3JldHVybiB0LnJlcGxhY2UoQSwoZnVuY3Rpb24odCxyKXtyZXR1cm5cIlwiLmNvbmNhdChlWytyLTFdKX0pKX0sdz0oKHU9e30pW3IuSEVYXT1mdW5jdGlvbih0KXt2YXIgZT1QKHQsITApLHI9ND09PWUubGVuZ3RoP1wiI3sxfXsyfXszfXs0fVwiOlwiI3sxfXsyfXszfVwiO3JldHVybiBUKHIsZSl9LHVbci5SR0JdPWZ1bmN0aW9uKHQpe3ZhciBlPVAodCkscj00PT09ZS5sZW5ndGg/XCJyZ2JhKHsxfSx7Mn0sezN9LHs0fSlcIjpcInJnYih7MX0sezJ9LHszfSlcIjtyZXR1cm4gVChyLGUpfSx1W3IuSFNMXT1mdW5jdGlvbih0KXt2YXIgZT1QKHQpLHI9ND09PWUubGVuZ3RoP1wiaHNsYSh7MX0sezJ9JSx7M30lLHs0fSlcIjpcImhzbCh7MX0sezJ9JSx7M30lKVwiO3JldHVybiBUKHIsZSl9LHVbci5DTVlLXT1mdW5jdGlvbih0KXt2YXIgZT1QKHQpLHI9NT09PWUubGVuZ3RoP1wiY215ayh7MX0lLHsyfSUsezN9JSx7NH0lLHs1fSlcIjpcImNteWsoezF9JSx7Mn0lLHszfSUsezR9JSlcIjtyZXR1cm4gVChyLGUpfSx1KSx4PWZ1bmN0aW9uKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXt2YXIgZT10Lm1hdGNoKEYpLHI9K2VbMV07c3dpdGNoKGVbMl0pe2Nhc2VcInJhZFwiOnQ9RygxODAqci9NYXRoLlBJKTticmVhaztjYXNlXCJ0dXJuXCI6dD1HKDM2MCpyKTticmVhaztkZWZhdWx0OnQ9cn19cmV0dXJuKHQ+MzYwfHx0PDApJiYodC09MzYwKk1hdGguZmxvb3IodC8zNjApKSx0fSxOPWZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1tLnRlc3QodCk/Qih0KS8xMDA6K3QpLGlzTmFOKCt0KXx8dD4xPzE6Ryh0KX0sVj1mdW5jdGlvbihyLG4sbyl7cmV0dXJuIG4ucmVkdWNlKChmdW5jdGlvbihuLGEpe3JldHVybiBlKGUoW10sbiwhMCksW3QodCh7fSxyKSx7aDpvPT09aS5BRERJVElWRT94KHIuaCthKTp4KEkoSShyLmgsITEpK2EsITApKX0pXSwhMSl9KSxbdCh7fSxyKV0pfSxVPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFYodCxbMzAsLTMwXSxlKX0scT1mdW5jdGlvbih0LGUpe3JldHVybiBWKHQsWzE4MF0sZSl9LCQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gVih0LFsxNTAsLTE1MF0sZSl9LF89ZnVuY3Rpb24odCxlKXtyZXR1cm4gVih0LFsxMjAsLTEyMF0sZSl9LFE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gVih0LFs2MCwtMTIwLDE4MF0sZSl9LHo9ZnVuY3Rpb24odCxlKXtyZXR1cm4gVih0LFs5MCwtOTAsMTgwXSxlKX0sSj1mdW5jdGlvbih0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9mdW5jdGlvbih0KXt2YXIgZTtpZihPYmplY3Qua2V5cyhyKS5zb21lKChmdW5jdGlvbihyKXtpZihiW3JdLnRlc3QodCkpcmV0dXJuIGU9ciwhMH0pKSwhZSYmfmYuaW5kZXhPZih0KSYmKGU9ci5IRVgpLCFlKXRocm93IG5ldyBFcnJvcihFKTtyZXR1cm4gZX0odCk6ZnVuY3Rpb24odCl7dmFyIGUsbj0hMSxpPUwoT2JqZWN0LmtleXModCkpO2lmKHBbaV0mJihlPXBbaV0pLGUmJmU9PT1yLlJHQil7dmFyIG89T2JqZWN0LmVudHJpZXModCkuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIXkudGVzdChcIlwiLmNvbmNhdCh0WzFdKSl9KSksYT1PYmplY3QuZW50cmllcyh0KS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4hKG0udGVzdChcIlwiLmNvbmNhdCh0WzFdKSl8fCF5LnRlc3QoXCJcIi5jb25jYXQodFsxXSkpJiYhaXNOYU4oK3RbMV0pJiYrdFsxXTw9MjU1KX0pKTtvJiZhJiYobj0hMCksb3x8KGU9ci5IRVgpfWlmKCFlfHxuKXRocm93IG5ldyBFcnJvcih2KTtyZXR1cm4gZX0odCl9LFc9KChjPXt9KVtyLkhFWF09ZnVuY3Rpb24odCl7dmFyIGU9KH5mLmluZGV4T2YodCk/b1t0XTp0KS5tYXRjaChiLkhFWCkscj17cjpNKGVbMV18fGVbNV0pLGc6TShlWzJdfHxlWzZdKSxiOk0oZVszXXx8ZVs3XSl9LG49ZVs0XXx8ZVs4XTtyZXR1cm4gdm9pZCAwIT09biYmKHIuYT1NKG4pLzI1NSkscn0sY1tyLlJHQl09ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaChiLlJHQikscj1EKGVbMV18fGVbNV0pLG49RChlWzJdfHxlWzZdKSxpPUQoZVszXXx8ZVs3XSksbz1lWzRdfHxlWzhdLGE9e3I6TWF0aC5taW4ociwyNTUpLGc6TWF0aC5taW4obiwyNTUpLGI6TWF0aC5taW4oaSwyNTUpfTtyZXR1cm4gdm9pZCAwIT09byYmKGEuYT1OKG8pKSxhfSxjW3IuSFNMXT1mdW5jdGlvbih0KXt2YXIgZT10Lm1hdGNoKGIuSFNMKSxyPXgoZVsxXXx8ZVs1XSksbj1DKGVbMl18fGVbNl0pLGk9QyhlWzNdfHxlWzddKSxvPWVbNF18fGVbOF0sYT1YKHIsbixpKTtyZXR1cm4gdm9pZCAwIT09byYmKGEuYT1OKG8pKSxhfSxjW3IuQ01ZS109ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaChiLkNNWUspLHI9UyhlWzFdfHxlWzZdKSxuPVMoZVsyXXx8ZVs3XSksaT1TKGVbM118fGVbOF0pLG89UyhlWzRdfHxlWzldKSxhPWVbNV18fGVbMTBdLHU9WShyLG4saSxvKTtyZXR1cm4gdm9pZCAwIT09YSYmKHUuYT1OKGEpKSx1fSxjKSxaPSgocz17fSlbci5IRVhdPWZ1bmN0aW9uKHQpe3ZhciBlPXtyOkQoXCJcIi5jb25jYXQodC5yKSksZzpEKFwiXCIuY29uY2F0KHQuZykpLGI6RChcIlwiLmNvbmNhdCh0LmIpKX07cmV0dXJuIEgodCxcImFcIikmJihlLmE9TWF0aC5taW4oRChcIlwiLmNvbmNhdCh0LmEpLCEwKSwxKSksZX0sc1tyLlJHQl09ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuSEVYKHQpfSxzW3IuSFNMXT1mdW5jdGlvbih0KXt2YXIgZT1DKFwiXCIuY29uY2F0KHQucykpLHI9QyhcIlwiLmNvbmNhdCh0LmwpKSxuPVgoeCh0LmgpLGUscik7cmV0dXJuIEgodCxcImFcIikmJihuLmE9Tih0LmEpKSxufSxzW3IuQ01ZS109ZnVuY3Rpb24odCl7dmFyIGU9UyhcIlwiLmNvbmNhdCh0LmMpKSxyPVMoXCJcIi5jb25jYXQodC5tKSksbj1TKFwiXCIuY29uY2F0KHQueSkpLGk9UyhcIlwiLmNvbmNhdCh0LmspKSxvPVkoZSxyLG4saSk7cmV0dXJuIEgodCxcImFcIikmJihvLmE9Tih0LmEpKSxvfSxzKSx0dD1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1KKHQpKSxcInN0cmluZ1wiPT10eXBlb2YgdD9XW2VdKHQpOlpbZV0odCl9LGV0PSgoZD17fSlbci5IRVhdPWZ1bmN0aW9uKHQpe3JldHVybntyOlIodC5yKSxnOlIodC5nKSxiOlIodC5iKX19LGQuSEVYQT1mdW5jdGlvbih0KXt2YXIgZT1ldC5IRVgodCk7cmV0dXJuIGUuYT1IKHQsXCJhXCIpP1IoMjU1KnQuYSk6XCIweEZGXCIsZX0sZFtyLlJHQl09ZnVuY3Rpb24odCxlKXtyZXR1cm4gSCh0LFwiYVwiKSYmZGVsZXRlIHQuYSxvdCh0LGUpfSxkLlJHQkE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5hPUgodCxcImFcIik/Ryh0LmEpOjEsb3QodCxlKX0sZFtyLkhTTF09ZnVuY3Rpb24odCxlKXt2YXIgcj1LKHQucix0LmcsdC5iKTtyZXR1cm4gZGVsZXRlIHIuYSxhdChyLGUpfSxkLkhTTEE9ZnVuY3Rpb24odCxlKXt2YXIgcj1ldC5IU0wodCxlKTtyZXR1cm4gci5hPUgodCxcImFcIik/Ryh0LmEsZSk6MSxyfSxkW3IuQ01ZS109ZnVuY3Rpb24odCxlKXtyZXR1cm4gdXQoaih0LnIsdC5nLHQuYiksZSl9LGQuQ01ZS0E9ZnVuY3Rpb24odCxlKXt2YXIgcj1ldC5DTVlLKHQsZSk7cmV0dXJuIHIuYT1IKHQsXCJhXCIpP0codC5hLGUpOjEscn0sZCkscnQ9ZnVuY3Rpb24oZSxuLGksbyl7dmFyIGE9SihlKSx1PVwic3RyaW5nXCI9PXR5cGVvZiBlLGM9dHQoZSxhKSxzPVwic3RyaW5nXCI9PXR5cGVvZiBlJiZIKGMsXCJhXCIpfHxcInN0cmluZ1wiIT10eXBlb2YgZSYmSChlLFwiYVwiKSxkPUsoYy5yLGMuZyxjLmIsYy5hKTtzfHxkZWxldGUgZC5hO3ZhciBoPWk/ZC5sLyhuKzEpOigxMDAtZC5sKS8obisxKSxsPUFycmF5KG4pLmZpbGwobnVsbCkubWFwKChmdW5jdGlvbihlLHIpe3JldHVybiB0KHQoe30sZCkse2w6ZC5sK2gqKHIrMSkqKDEtMioraSl9KX0pKTtzd2l0Y2goYSl7Y2FzZSByLkhFWDpkZWZhdWx0OnJldHVybiBsLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHI9WChlLmgsZS5zLGUubCk7cmV0dXJuIHMmJihyLmE9ZS5hKSx1P3M/dy5IRVgob3QodCh0KHt9LHIpLHthOkcoMjU1KnIuYSl9KSxvKSk6dy5IRVgob3QocixvKSk6cz9ldC5IRVhBKHIpOmV0LkhFWChyKX0pKTtjYXNlIHIuUkdCOnJldHVybiBsLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9WCh0LmgsdC5zLHQubCk7cmV0dXJuIHMmJihlLmE9dC5hKSx1P3cuUkdCKG90KGUsbykpOnM/ZXQuUkdCQShlLG8pOmV0LlJHQihlLG8pfSkpO2Nhc2Ugci5IU0w6cmV0dXJuIGwubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdT93LkhTTChhdChlLG8pKTpzP2V0LkhTTEEodCh0KHt9LFgoZS5oLGUucyxlLmwpKSx7YTplLmF9KSxvKTpldC5IU0woWChlLmgsZS5zLGUubCksbyl9KSl9fSxudD0oKGg9e2J1aWxkSGFybW9ueTpmdW5jdGlvbih0LGUsbixpKXt2YXIgbz1KKHQpLGE9dHQodCxvKSx1PUsoYS5yLGEuZyxhLmIsYS5hKSxjPVwic3RyaW5nXCI9PXR5cGVvZiB0JiZIKGEsXCJhXCIpfHxcInN0cmluZ1wiIT10eXBlb2YgdCYmSCh0LFwiYVwiKSxzPVwic3RyaW5nXCI9PXR5cGVvZiB0O3N3aXRjaChvKXtjYXNlIHIuSEVYOmRlZmF1bHQ6cmV0dXJuIGM/dGhpcy5IRVhBKGF0KHUsMCksZSxuLHMpOnRoaXMuSEVYKGF0KHUsMCksZSxuLHMpO2Nhc2Ugci5IU0w6cmV0dXJuIGM/dGhpcy5IU0xBKHUsZSxuLHMsaSk6dGhpcy5IU0wodSxlLG4scyxpKTtjYXNlIHIuUkdCOnJldHVybiBjP3RoaXMuUkdCQSh1LGUsbixzLGkpOnRoaXMuUkdCKHUsZSxuLHMsaSl9fX0pW3IuSEVYXT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gZSh0LHIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIG4/dy5IRVgoWCh0LmgsdC5zLHQubCkpOmV0LkhFWChYKHQuaCx0LnMsdC5sKSl9KSl9LGguSEVYQT1mdW5jdGlvbihlLHIsbixpKXtyZXR1cm4gcihlLG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGk/dy5IRVgodCh0KHt9LFgoZS5oLGUucyxlLmwpKSx7YToyNTUqTihlLmEpfSkpOmV0LkhFWEEodCh0KHt9LFgoZS5oLGUucyxlLmwpKSx7YTpOKGUuYSl9KSl9KSl9LGhbci5SR0JdPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIGUodCxyKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuP3cuUkdCKG90KFgodC5oLHQucyx0LmwpLGkpKTpldC5SR0IoWCh0LmgsdC5zLHQubCksaSl9KSl9LGguUkdCQT1mdW5jdGlvbihlLHIsbixpLG8pe3JldHVybiByKGUsbikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gaT93LlJHQihvdCh0KHQoe30sWChlLmgsZS5zLGUubCkpLHthOk4oZS5hKX0pLG8pKTpldC5SR0JBKHQodCh7fSxYKGUuaCxlLnMsZS5sKSkse2E6TihlLmEpfSksbyl9KSl9LGhbci5IU0xdPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIGUodCxyKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuP3cuSFNMKGF0KHtoOnQuaCxzOnQucyxsOnQubH0saSkpOmV0LkhTTChYKHQuaCx0LnMsdC5sKSxpKX0pKX0saC5IU0xBPWZ1bmN0aW9uKGUscixuLGksbyl7cmV0dXJuIHIoZSxuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBpP3cuSFNMKGF0KHQodCh7fSxlKSx7YTpOKGUuYSl9KSxvKSk6ZXQuSFNMQSh0KHQoe30sWChlLmgsZS5zLGUubCkpLHthOk4oZS5hKX0pLG8pfSkpfSxoKSxpdD0oKGw9e21peDpmdW5jdGlvbihlLHIpe3ZhciBuLG8sYSx1LGMscyxkLGgsbCxmLGcscCxiLEYsbSx5PWUubWFwKChmdW5jdGlvbih0KXt2YXIgZT1KKHQpO3JldHVybiB0dCh0LGUpfSkpLEE9cj09PWkuU1VCVFJBQ1RJVkU/eS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLG8sYSx1LGMscyxkLGgsbCxmLGcscD0oZT10LnIscj10Lmcsbj10LmIsaT1NYXRoLm1pbihlLHIsbiksbz1NYXRoLm1pbigyNTUtZSwyNTUtciwyNTUtbiksYT1lLWksdT1yLWksYz1uLWkscz1NYXRoLm1pbihhLHUpLGQ9YS1zLGg9KHUrcykvMixsPShjK3UtcykvMixmPU1hdGgubWF4KGQsaCxsKS9NYXRoLm1heChhLHUsYyksZz1pc05hTihmKXx8Zj09PTEvMHx8Zjw9MD8xOmYse3I6ZC9nK28seTpoL2crbyxiOmwvZytvfSk7cmV0dXJuIEgodCxcImFcIikmJihwLmE9dC5hKSxwfSkpOm51bGw7ZnVuY3Rpb24gRShlKXt2YXIgbj1yPT09aS5BRERJVElWRT97cjowLGc6MCxiOjAsYTowfTp7cjowLHk6MCxiOjAsYTowfTtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7dmFyIG89SChuLFwiYVwiKT9uLmE6MSxhPXtyOk1hdGgubWluKGUucituLnIqbywyNTUpLGI6TWF0aC5taW4oZS5iK24uYipvLDI1NSksYToxLSgxLW8pKigxLWUuYSl9LHU9XCJnXCJpbiBlP2UuZzplLnksYz1cImdcImluIG4/bi5nOm4ueTtyZXR1cm4gdCh0KHt9LGEpLHI9PT1pLkFERElUSVZFP3tnOk1hdGgubWluKHUrYypvLDI1NSl9Ont5Ok1hdGgubWluKHUrYypvLDI1NSl9KX0pLG4pfWlmKHI9PT1pLkFERElUSVZFKW49RSh5KTtlbHNle3ZhciB2PUUoQSk7bz12LnIsYT12LnksdT12LmIsYz1NYXRoLm1pbihvLGEsdSkscz1NYXRoLm1pbigyNTUtbywyNTUtYSwyNTUtdSksZD1vLWMsaD1hLWMsbD11LWMsZj1NYXRoLm1pbihoLGwpLGc9ZCtoLWYscD1oK2YsYj0yKihsLWYpLEY9TWF0aC5tYXgoZyxwLGIpL01hdGgubWF4KGQsaCxsKSxtPWlzTmFOKEYpfHxGPT09MS8wfHxGPD0wPzE6Riwobj17cjpnL20rcyxnOnAvbStzLGI6Yi9tK3N9KS5hPXYuYX1yZXR1cm57cjpHKG4uciksZzpHKG4uZyksYjpHKG4uYiksYTprKG4uYSwwLDEpfX19KVtyLkhFWF09ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMubWl4KHQsZSk7cmV0dXJuIGRlbGV0ZSBuLmEscj93LkhFWChuKTpldC5IRVgobil9LGwuSEVYQT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5taXgodCxlKTtyZXR1cm4gbi5hPXI/MjU1Kk4obi5hKTpOKG4uYSkscj93LkhFWChuKTpldC5IRVhBKG4pfSxsW3IuUkdCXT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLm1peCh0LGUpO3JldHVybiBkZWxldGUgaS5hLHI/dy5SR0IoaSk6ZXQuUkdCKGksbil9LGwuUkdCQT1mdW5jdGlvbih0LGUscixuKXt2YXIgaT10aGlzLm1peCh0LGUpO3JldHVybiByP3cuUkdCKGkpOmV0LlJHQkEoaSxuKX0sbFtyLkhTTF09ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9dGhpcy5taXgodCxlKSxvPUsoaS5yLGkuZyxpLmIpO3JldHVybiBkZWxldGUgaS5hLGRlbGV0ZSBvLmEscj93LkhTTChvKTpldC5IU0woaSxuKX0sbC5IU0xBPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPXRoaXMubWl4KHQsZSksbz1LKGkucixpLmcsaS5iLGkuYSk7cmV0dXJuIHI/dy5IU0wobyk6ZXQuSFNMQShpLG4pfSxsKSxvdD1mdW5jdGlvbihlLHIpe3JldHVybiB0KHtyOkcoZS5yLHIpLGc6RyhlLmcsciksYjpHKGUuYixyKX0sSChlLFwiYVwiKT97YTpHKGUuYSxyKX06e30pfSxhdD1mdW5jdGlvbihlLHIpe3JldHVybiB0KHtoOkcoZS5oLHIpLHM6RyhlLnMsciksbDpHKGUubCxyKX0sSChlLFwiYVwiKT97YTpHKGUuYSxyKX06e30pfSx1dD1mdW5jdGlvbih0LGUpe3JldHVybntjOkcodC5jLGUpLG06Ryh0Lm0sZSkseTpHKHQueSxlKSxrOkcodC5rLGUpfX0sY3Q9ZnVuY3Rpb24odCxlLHIsbixpLG8pe3ZhciBhPWkodHQodCxlKSxuKTtyZXR1cm4gcj9vKGEpOmF9LHN0PWZ1bmN0aW9uKHQsZSxyLG4saSxvLGEpe3I8MSYmKHI9NSk7dmFyIHU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXItMSxpPShlLnItdC5yKS9uLG89KGUuZy10LmcpL24sYT0oZS5iLXQuYikvbix1PU4odC5hKSxjPShOKGUuYSktdSkvbjtyZXR1cm4gQXJyYXkocikuZmlsbChudWxsKS5tYXAoKGZ1bmN0aW9uKHIscyl7cmV0dXJuIDA9PT1zP3Q6cz09PW4/ZTp7cjpHKHQucitpKnMpLGc6Ryh0LmcrbypzKSxiOkcodC5iK2EqcyksYTpHKHUrYypzKX19KSl9KHR0KHQpLHR0KGUpLHIpO3JldHVybiB1Lm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9byh0LGkpO3JldHVybiBuP2EoZSk6ZX0pKX0sZHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsZSl7dm9pZCAwPT09ZSYmKGU9NiksdGhpcy5yZ2I9dHQodCksdGhpcy5fZGVjaW1hbHM9ZSx0aGlzLnVwZGF0ZUhTTCgpLHRoaXMudXBkYXRlQ01ZSygpfXJldHVybiBlLnByb3RvdHlwZS51cGRhdGVSR0I9ZnVuY3Rpb24oKXt0aGlzLnJnYj10KHQoe30sWCh0aGlzLmhzbC5oLHRoaXMuaHNsLnMsdGhpcy5oc2wubCkpLHthOnRoaXMuaHNsLmF9KX0sZS5wcm90b3R5cGUudXBkYXRlUkdCRnJvbUNNWUs9ZnVuY3Rpb24oKXt0aGlzLnJnYj10KHQoe30sWSh0aGlzLmNteWsuYyx0aGlzLmNteWsubSx0aGlzLmNteWsueSx0aGlzLmNteWsuaykpLHthOnRoaXMucmdiLmF9KX0sZS5wcm90b3R5cGUudXBkYXRlSFNMPWZ1bmN0aW9uKCl7dGhpcy5oc2w9Syh0aGlzLnJnYi5yLHRoaXMucmdiLmcsdGhpcy5yZ2IuYix0aGlzLnJnYi5hKX0sZS5wcm90b3R5cGUudXBkYXRlQ01ZSz1mdW5jdGlvbigpe3RoaXMuY215az1qKHRoaXMucmdiLnIsdGhpcy5yZ2IuZyx0aGlzLnJnYi5iKX0sZS5wcm90b3R5cGUudXBkYXRlUkdCQW5kQ01ZSz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnVwZGF0ZVJHQigpLHRoaXMudXBkYXRlQ01ZSygpLHRoaXN9LGUucHJvdG90eXBlLnVwZGF0ZUhTTEFuZENNWUs9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVIU0woKSx0aGlzLnVwZGF0ZUNNWUsoKSx0aGlzfSxlLnByb3RvdHlwZS51cGRhdGVSR0JBbmRIU0w9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVSR0JGcm9tQ01ZSygpLHRoaXMudXBkYXRlSFNMKCksdGhpc30sZS5wcm90b3R5cGUuc2V0RGVjaW1hbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2RlY2ltYWxzPXQsdGhpc30sZS5wcm90b3R5cGUuc2V0SD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oc2wuaD14KHQpLHRoaXMudXBkYXRlUkdCQW5kQ01ZSygpfSxlLnByb3RvdHlwZS5zZXRTPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhzbC5zPWsodCwwLDEwMCksdGhpcy51cGRhdGVSR0JBbmRDTVlLKCl9LGUucHJvdG90eXBlLnNldEw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaHNsLmw9ayh0LDAsMTAwKSx0aGlzLnVwZGF0ZVJHQkFuZENNWUsoKX0sZS5wcm90b3R5cGUuc2V0Uj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5yZ2Iucj1rKHQsMCwyNTUpLHRoaXMudXBkYXRlSFNMQW5kQ01ZSygpfSxlLnByb3RvdHlwZS5zZXRHPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJnYi5nPWsodCwwLDI1NSksdGhpcy51cGRhdGVIU0xBbmRDTVlLKCl9LGUucHJvdG90eXBlLnNldEI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmdiLmI9ayh0LDAsMjU1KSx0aGlzLnVwZGF0ZUhTTEFuZENNWUsoKX0sZS5wcm90b3R5cGUuc2V0QT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oc2wuYT10aGlzLnJnYi5hPWsodCwwLDEpLHRoaXN9LGUucHJvdG90eXBlLnNldEM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY215ay5jPWsodCwwLDEwMCksdGhpcy51cGRhdGVSR0JBbmRIU0woKX0sZS5wcm90b3R5cGUuc2V0TT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbXlrLm09ayh0LDAsMTAwKSx0aGlzLnVwZGF0ZVJHQkFuZEhTTCgpfSxlLnByb3RvdHlwZS5zZXRZPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNteWsueT1rKHQsMCwxMDApLHRoaXMudXBkYXRlUkdCQW5kSFNMKCl9LGUucHJvdG90eXBlLnNldEs9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY215ay5rPWsodCwwLDEwMCksdGhpcy51cGRhdGVSR0JBbmRIU0woKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiZGVjaW1hbHNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlY2ltYWxzfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5oc2wuaCx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJTXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuaHNsLnMsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiTFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmhzbC5sLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIlJcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5yZ2Iucix0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJHXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMucmdiLmcsdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiQlwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLnJnYi5iLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5oc2wuYSx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJDXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuY215ay5jLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIk1cIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEcodGhpcy5jbXlrLm0sdGhpcy5kZWNpbWFscyl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiWVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRyh0aGlzLmNteWsueSx0aGlzLmRlY2ltYWxzKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJLXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMuY215ay5rLHRoaXMuZGVjaW1hbHMpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhFWE9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXQuSEVYKHRoaXMucmdiKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIRVhBT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiBldC5IRVhBKHRoaXMucmdiKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJSR0JPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJue3I6dGhpcy5SLGc6dGhpcy5HLGI6dGhpcy5CfX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJSR0JBT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0KHQoe30sdGhpcy5SR0JPYmplY3QpLHthOnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhTTE9iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57aDp0aGlzLkgsczp0aGlzLlMsbDp0aGlzLkx9fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhTTEFPYmplY3RcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHQodCh7fSx0aGlzLkhTTE9iamVjdCkse2E6dGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiQ01ZS09iamVjdFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm57Yzp0aGlzLkMsbTp0aGlzLk0seTp0aGlzLlksazp0aGlzLkt9fSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkNNWUtBT2JqZWN0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0KHQoe30sdGhpcy5DTVlLT2JqZWN0KSx7YTp0aGlzLkF9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJIRVhcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuSEVYKHtyOnRoaXMuUixnOnRoaXMuRyxiOnRoaXMuQn0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhFWEFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuSEVYKHtyOnRoaXMuUixnOnRoaXMuRyxiOnRoaXMuQixhOjI1NSp0aGlzLkF9KX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJSR0JcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuUkdCKHtyOnRoaXMuUixnOnRoaXMuRyxiOnRoaXMuQn0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIlJHQkFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHcuUkdCKHtyOnRoaXMuUixnOnRoaXMuRyxiOnRoaXMuQixhOnRoaXMuQX0pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkhTTFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5IU0woe2g6dGhpcy5ILHM6dGhpcy5TLGw6dGhpcy5MfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiSFNMQVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5IU0woe2g6dGhpcy5ILHM6dGhpcy5TLGw6dGhpcy5MLGE6dGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiQ01ZS1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdy5DTVlLKHtjOnRoaXMuQyxtOnRoaXMuTSx5OnRoaXMuWSxrOnRoaXMuS30pfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIkNNWUtBXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB3LkNNWUsoe2M6dGhpcy5DLG06dGhpcy5NLHk6dGhpcy5ZLGs6dGhpcy5LLGE6dGhpcy5BfSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksZS50b0hFWD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSEwKTt2YXIgcj1KKHQpO3JldHVybiBjdCh0LHIsZSwwLGV0LkhFWCx3LkhFWCl9LGUudG9IRVhBPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9ITApO3ZhciByPUoodCk7cmV0dXJuIGN0KHQscixlLDAsZXQuSEVYQSx3LkhFWCl9LGUudG9SR0I9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1yJiYocj02KTt2YXIgbj1KKHQpO3JldHVybiBjdCh0LG4sZSxyLGV0LlJHQix3LlJHQil9LGUudG9SR0JBPWZ1bmN0aW9uKHQsZSxyKXt2b2lkIDA9PT1lJiYoZT0hMCksdm9pZCAwPT09ciYmKHI9Nik7dmFyIG49Sih0KTtyZXR1cm4gY3QodCxuLGUscixldC5SR0JBLHcuUkdCKX0sZS50b0hTTD1mdW5jdGlvbih0LGUscil7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PXImJihyPTYpO3ZhciBuPUoodCk7cmV0dXJuIGN0KHQsbixlLHIsZXQuSFNMLHcuSFNMKX0sZS50b0hTTEE9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1yJiYocj02KTt2YXIgbj1KKHQpO3JldHVybiBjdCh0LG4sZSxyLGV0LkhTTEEsdy5IU0wpfSxlLnRvQ01ZSz1mdW5jdGlvbih0LGUscil7dm9pZCAwPT09ZSYmKGU9ITApLHZvaWQgMD09PXImJihyPTYpO3ZhciBuPUoodCk7cmV0dXJuIGN0KHQsbixlLHIsZXQuQ01ZSyx3LkNNWUspfSxlLnRvQ01ZS0E9ZnVuY3Rpb24odCxlLHIpe3ZvaWQgMD09PWUmJihlPSEwKSx2b2lkIDA9PT1yJiYocj02KTt2YXIgbj1KKHQpO3JldHVybiBjdCh0LG4sZSxyLGV0LkNNWUtBLHcuQ01ZSyl9LGUuZ2V0QmxlbmRIRVg9ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NSksdm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PWkmJihpPTYpLHN0KHQsZSxyLG4saSxldC5IRVgsdy5IRVgpfSxlLmdldEJsZW5kSEVYQT1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiB2b2lkIDA9PT1yJiYocj01KSx2b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09aSYmKGk9Niksc3QodCxlLHIsbixpLGV0LkhFWEEsdy5IRVgpfSxlLmdldEJsZW5kUkdCPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHZvaWQgMD09PXImJihyPTUpLHZvaWQgMD09PW4mJihuPSEwKSx2b2lkIDA9PT1pJiYoaT02KSxzdCh0LGUscixuLGksZXQuUkdCLHcuUkdCKX0sZS5nZXRCbGVuZFJHQkE9ZnVuY3Rpb24odCxlLHIsbixpKXtyZXR1cm4gdm9pZCAwPT09ciYmKHI9NSksdm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PWkmJihpPTYpLHN0KHQsZSxyLG4saSxldC5SR0JBLHcuUkdCKX0sZS5nZXRCbGVuZEhTTD1mdW5jdGlvbih0LGUscixuLGkpe3JldHVybiB2b2lkIDA9PT1yJiYocj01KSx2b2lkIDA9PT1uJiYobj0hMCksdm9pZCAwPT09aSYmKGk9Niksc3QodCxlLHIsbixpLGV0LkhTTCx3LkhTTCl9LGUuZ2V0QmxlbmRIU0xBPWZ1bmN0aW9uKHQsZSxyLG4saSl7cmV0dXJuIHZvaWQgMD09PXImJihyPTUpLHZvaWQgMD09PW4mJihuPSEwKSx2b2lkIDA9PT1pJiYoaT02KSxzdCh0LGUscixuLGksZXQuSFNMQSx3LkhTTCl9LGUuZ2V0TWl4SEVYPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9aS5BRERJVElWRSksdm9pZCAwPT09ciYmKHI9ITApLGl0LkhFWCh0LGUscil9LGUuZ2V0TWl4SEVYQT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PWUmJihlPWkuQURESVRJVkUpLHZvaWQgMD09PXImJihyPSEwKSxpdC5IRVhBKHQsZSxyKX0sZS5nZXRNaXhSR0I9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPWkuQURESVRJVkUpLHZvaWQgMD09PXImJihyPSEwKSx2b2lkIDA9PT1uJiYobj02KSxpdC5SR0IodCxlLHIsbil9LGUuZ2V0TWl4UkdCQT1mdW5jdGlvbih0LGUscixuKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9aS5BRERJVElWRSksdm9pZCAwPT09ciYmKHI9ITApLHZvaWQgMD09PW4mJihuPTYpLGl0LlJHQkEodCxlLHIsbil9LGUuZ2V0TWl4SFNMPWZ1bmN0aW9uKHQsZSxyLG4pe3JldHVybiB2b2lkIDA9PT1lJiYoZT1pLkFERElUSVZFKSx2b2lkIDA9PT1yJiYocj0hMCksdm9pZCAwPT09biYmKG49NiksaXQuSFNMKHQsZSxyLG4pfSxlLmdldE1peEhTTEE9ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIHZvaWQgMD09PWUmJihlPWkuQURESVRJVkUpLHZvaWQgMD09PXImJihyPSEwKSx2b2lkIDA9PT1uJiYobj02KSxpdC5IU0xBKHQsZSxyLG4pfSxlLmdldFNoYWRlcz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPTYpLHJ0KHQsZSwhMCxyKX0sZS5nZXRUaW50cz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHZvaWQgMD09PXImJihyPTYpLHJ0KHQsZSwhMSxyKX0sZS5nZXRIYXJtb255PWZ1bmN0aW9uKHQsZSxyLG8pe3JldHVybiB2b2lkIDA9PT1lJiYoZT1uLkNPTVBMRU1FTlRBUlkpLHZvaWQgMD09PXImJihyPWkuQURESVRJVkUpLHZvaWQgMD09PW8mJihvPTYpLGZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvO3JldHVybihvPXt9LG9bbi5BTkFMT0dPVVNdPW50LmJ1aWxkSGFybW9ueShlLFUsaSxyKSxvW24uQ09NUExFTUVOVEFSWV09bnQuYnVpbGRIYXJtb255KGUscSxpLHIpLG9bbi5TUExJVF9DT01QTEVNRU5UQVJZXT1udC5idWlsZEhhcm1vbnkoZSwkLGksciksb1tuLlRSSUFESUNdPW50LmJ1aWxkSGFybW9ueShlLF8saSxyKSxvW24uVEVUUkFESUNdPW50LmJ1aWxkSGFybW9ueShlLFEsaSxyKSxvW24uU1FVQVJFXT1udC5idWlsZEhhcm1vbnkoZSx6LGksciksbylbdF19KGUsdCxvLHIpfSxlfSgpO2V4cG9ydHtkdCBhcyBDb2xvclRyYW5zbGF0b3IsbiBhcyBIYXJtb255LGkgYXMgTWl4fTtcbiIsICJpbXBvcnQgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IHsgQ29kZVN0eWxlclNldHRpbmdzLCBDb2RlU3R5bGVyVGhlbWVDb2xvdXJzLCBDb2RlU3R5bGVyVGhlbWVNb2RlQ29sb3VycywgQ29kZVN0eWxlclRoZW1lU2V0dGluZ3MsIENvbG91ciwgTEFOR1VBR0VfTkFNRVMsIExBTkdVQUdFX0NPTE9VUlMgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgaXNDc3MgfSBmcm9tIFwiLi9TZXR0aW5nc1RhYlwiO1xuXG5pbnRlcmZhY2UgVGhlbWVTdHlsZSB7XG5cdCdib3JkZXInPzoge1xuXHRcdCdzaXplJzogbnVtYmVyO1xuXHRcdCdzdHlsZSc6IHN0cmluZztcblx0fSxcblx0J2V4dHJhJz86IHN0cmluZztcbn1cblxuY29uc3QgU1RZTEVfSUQgPSAnY29kZS1zdHlsZXItc3R5bGVzJztcbmNvbnN0IFRIRU1FX1NUWUxFUzogUmVjb3JkPHN0cmluZyxUaGVtZVN0eWxlPiA9IHtcblx0J1ByaXNtJzoge1xuXHRcdCdib3JkZXInOiB7XG5cdFx0XHQnc2l6ZSc6IDEsXG5cdFx0XHQnc3R5bGUnOiAnMXB4IHNvbGlkIHZhcigtLXdpbmRvdy1ib3JkZXItY29sb3IpJyxcblx0XHR9LFxuXHR9LFxuXHQnU2hpbW1lcmluZyBGb2N1cyc6IHtcblx0XHQnYm9yZGVyJzoge1xuXHRcdFx0J3NpemUnOiAxLFxuXHRcdFx0J3N0eWxlJzogJ3ZhcigtLXRoaW4tbXV0ZWQtYm9yZGVyKScsXG5cdFx0fSxcblx0fSxcblx0J01pbmltYWwnOiB7XG5cdFx0J2V4dHJhJzogYFxuXHRcdFx0Lm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYuaXMtcmVhZGFibGUtbGluZS13aWR0aCA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIHtcblx0XHRcdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0XHRcdH1cblx0XHRgLFxuXHR9LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3R5bGluZyhzZXR0aW5nczogQ29kZVN0eWxlclNldHRpbmdzLCBhcHA6IEFwcCk6IHZvaWQge1xuXHRjb25zdCBjdXJyZW50VGhlbWUgPSBnZXRDdXJyZW50VGhlbWUoYXBwKTtcblx0bGV0IHN0eWxlVGFnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoU1RZTEVfSUQpO1xuXHRpZiAoIXN0eWxlVGFnKSB7XG5cdFx0c3R5bGVUYWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuXHRcdHN0eWxlVGFnLmlkID0gU1RZTEVfSUQ7XG5cdFx0ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChzdHlsZVRhZyk7XG5cdH1cblx0c3R5bGVUYWcuaW5uZXJUZXh0ID0gKHN0eWxlVGhlbWVDb2xvdXJzKHNldHRpbmdzLmN1cnJlbnRUaGVtZS5jb2xvdXJzKStzdHlsZVRoZW1lU2V0dGluZ3Moc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLGN1cnJlbnRUaGVtZSkrc3R5bGVMYW5ndWFnZUNvbG91cnMoc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLHNldHRpbmdzLnJlZGlyZWN0TGFuZ3VhZ2VzLGN1cnJlbnRUaGVtZSkpLnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csJyAnKTtcblx0YWRkVGhlbWVTZXR0aW5nc0NsYXNzZXMoc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzKTtcbn1cblxuZnVuY3Rpb24gc3R5bGVUaGVtZUNvbG91cnMgKHRoZW1lQ29sb3VyczogQ29kZVN0eWxlclRoZW1lQ29sb3Vycyk6IHN0cmluZyB7XG5cdHJldHVybiBPYmplY3Qua2V5cyh0aGVtZUNvbG91cnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMpLnJlZHVjZSgocmVzdWx0OiBzdHJpbmcsIGFsdGVybmF0aXZlSGlnaGxpZ2h0OiBzdHJpbmcpID0+IHtcblx0XHRyZXR1cm4gcmVzdWx0ICsgYFxuXHRcdFx0Ym9keS5jb2RlLXN0eWxlciAuY29kZS1zdHlsZXItbGluZS1oaWdobGlnaHRlZC0ke2FsdGVybmF0aXZlSGlnaGxpZ2h0LnJlcGxhY2UoL1xccysvZywgJy0nKS50b0xvd2VyQ2FzZSgpfSB7XG5cdFx0XHRcdC0tZ3JhZGllbnQtYmFja2dyb3VuZC1jb2xvdXI6IHZhcigtLWNvZGUtc3R5bGVyLSR7YWx0ZXJuYXRpdmVIaWdobGlnaHQucmVwbGFjZSgvXFxzKy9nLCAnLScpLnRvTG93ZXJDYXNlKCl9LWhpZ2hsaWdodC1jb2xvdXIpICFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cdFx0YDtcblx0fSxgXG5cdFx0Ym9keS5jb2RlLXN0eWxlci50aGVtZS1saWdodCB7XG5cdFx0XHQke2dldFRoZW1lQ29sb3Vycyh0aGVtZUNvbG91cnMubGlnaHQpfVxuXHRcdH1cblx0XHRib2R5LmNvZGUtc3R5bGVyLnRoZW1lLWRhcmsge1xuXHRcdFx0JHtnZXRUaGVtZUNvbG91cnModGhlbWVDb2xvdXJzLmRhcmspfVxuXHRcdH1cblx0YCk7XG59XG5cbmZ1bmN0aW9uIGdldFRoZW1lQ29sb3VycyAodGhlbWVNb2RlQ29sb3VyczogQ29kZVN0eWxlclRoZW1lTW9kZUNvbG91cnMpOiBzdHJpbmcge1xuXHRyZXR1cm4gT2JqZWN0LmVudHJpZXMoe1xuXHRcdCdjb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmNvZGVibG9jay5iYWNrZ3JvdW5kQ29sb3VyLFxuXHRcdCdjb2RlYmxvY2stdGV4dC1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmNvZGVibG9jay50ZXh0Q29sb3VyLFxuXHRcdCdndXR0ZXItYmFja2dyb3VuZC1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmd1dHRlci5iYWNrZ3JvdW5kQ29sb3VyLFxuXHRcdCdndXR0ZXItdGV4dC1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmd1dHRlci50ZXh0Q29sb3VyLFxuXHRcdCdndXR0ZXItYWN0aXZlLXRleHQtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5ndXR0ZXIuYWN0aXZlVGV4dENvbG91cixcblx0XHQnaGVhZGVyLWJhY2tncm91bmQtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5oZWFkZXIuYmFja2dyb3VuZENvbG91cixcblx0XHQnaGVhZGVyLXRpdGxlLXRleHQtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5oZWFkZXIudGl0bGUudGV4dENvbG91cixcblx0XHQnaGVhZGVyLWxhbmd1YWdlLXRhZy1iYWNrZ3JvdW5kLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuaGVhZGVyLmxhbmd1YWdlVGFnLmJhY2tncm91bmRDb2xvdXIsXG5cdFx0J2hlYWRlci1sYW5ndWFnZS10YWctdGV4dC1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Q29sb3VyLFxuXHRcdCdoZWFkZXItc2VwYXJhdG9yLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuaGVhZGVyLmxpbmVDb2xvdXIsXG5cdFx0J2FjdGl2ZS1jb2RlYmxvY2stbGluZS1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmhpZ2hsaWdodHMuYWN0aXZlQ29kZWJsb2NrTGluZUNvbG91cixcblx0XHQnYWN0aXZlLWVkaXRvci1saW5lLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lQ29sb3VyLFxuXHRcdCdkZWZhdWx0LWhpZ2hsaWdodC1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmhpZ2hsaWdodHMuZGVmYXVsdENvbG91cixcblx0XHQnYnV0dG9uLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuYWR2YW5jZWQuYnV0dG9uQ29sb3VyLFxuXHRcdCdidXR0b24tYWN0aXZlLWNvbG91cic6IHRoZW1lTW9kZUNvbG91cnMuYWR2YW5jZWQuYnV0dG9uQWN0aXZlQ29sb3VyLFxuXHRcdCdpbmxpbmUtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5pbmxpbmUudGV4dENvbG91cixcblx0XHQnaW5saW5lLWNvbG91ci1hY3RpdmUnOiB0aGVtZU1vZGVDb2xvdXJzLmlubGluZS5hY3RpdmVUZXh0Q29sb3VyLFxuXHRcdCdpbmxpbmUtYmFja2dyb3VuZC1jb2xvdXInOiB0aGVtZU1vZGVDb2xvdXJzLmlubGluZS5iYWNrZ3JvdW5kQ29sb3VyLFxuXHRcdCdpbmxpbmUtdGl0bGUtY29sb3VyJzogdGhlbWVNb2RlQ29sb3Vycy5pbmxpbmUudGl0bGVUZXh0Q29sb3VyLFxuXHRcdC4uLk9iamVjdC5lbnRyaWVzKHRoZW1lTW9kZUNvbG91cnMuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMpLnJlZHVjZSgocmVzdWx0OiBSZWNvcmQ8c3RyaW5nLENvbG91cj4sW2FsdGVybmF0aXZlSGlnaGxpZ2h0LGNvbG91cl06IFtzdHJpbmcsQ29sb3VyXSk6IFJlY29yZDxzdHJpbmcsQ29sb3VyPiA9PiB7XG5cdFx0XHRyZXN1bHRbYCR7YWx0ZXJuYXRpdmVIaWdobGlnaHQucmVwbGFjZSgvXFxzKy9nLCAnLScpLnRvTG93ZXJDYXNlKCl9LWhpZ2hsaWdodC1jb2xvdXJgXSA9IGNvbG91cjtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fSx7fSlcblx0fSkucmVkdWNlKChyZXN1bHQ6IHN0cmluZywgW2Nzc1ZhcmlhYmxlLGNvbG91cl06IFtzdHJpbmcsQ29sb3VyXSk6IHN0cmluZyA9PiB7XG5cdFx0Y29uc3Qgc3R5bGVDb2xvdXIgPSBpc0Nzcyhjb2xvdXIpP2B2YXIoJHtjb2xvdXJ9KWA6Y29sb3VyO1xuXHRcdHJldHVybiByZXN1bHQgKyBgLS1jb2RlLXN0eWxlci0ke2Nzc1ZhcmlhYmxlfTogJHtzdHlsZUNvbG91cn07YFxuXHR9LGBgKVxufVxuXG5mdW5jdGlvbiBzdHlsZVRoZW1lU2V0dGluZ3MgKHRoZW1lU2V0dGluZ3M6IENvZGVTdHlsZXJUaGVtZVNldHRpbmdzLCBjdXJyZW50VGhlbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBgXG5cdFx0Ym9keS5jb2RlLXN0eWxlciBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSB7XG5cdFx0XHQtLWNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctdGV4dC1ib2xkOiAke3RoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRCb2xkPydib2xkJzonbm9ybWFsJ307XG5cdFx0XHQtLWNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctdGV4dC1pdGFsaWM6ICR7dGhlbWVTZXR0aW5ncy5oZWFkZXIubGFuZ3VhZ2VUYWcudGV4dEl0YWxpYz8naXRhbGljJzonbm9ybWFsJ307XG5cdFx0XHRmb250LWZhbWlseTogJHt0aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Rm9udCE9PScnP3RoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRGb250Oid2YXIoLS1mb250LXRleHQpJ307XG5cdFx0fVxuXHRcdGJvZHkuY29kZS1zdHlsZXIgLmNvZGUtc3R5bGVyLWhlYWRlci10ZXh0IHtcblx0XHRcdC0tY29kZS1zdHlsZXItaGVhZGVyLXRpdGxlLXRleHQtYm9sZDogJHt0aGVtZVNldHRpbmdzLmhlYWRlci50aXRsZS50ZXh0Qm9sZD8nYm9sZCc6J25vcm1hbCd9O1xuXHRcdFx0LS1jb2RlLXN0eWxlci1oZWFkZXItdGl0bGUtdGV4dC1pdGFsaWM6ICR7dGhlbWVTZXR0aW5ncy5oZWFkZXIudGl0bGUudGV4dEl0YWxpYz8naXRhbGljJzonbm9ybWFsJ307XG5cdFx0XHRmb250LWZhbWlseTogJHt0aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy50ZXh0Rm9udCE9PScnP3RoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLnRleHRGb250Oid2YXIoLS1mb250LXRleHQpJ307XG5cdFx0fVxuXHRcdGJvZHkuY29kZS1zdHlsZXIge1xuXHRcdFx0LS1ib3JkZXItcmFkaXVzOiAke3RoZW1lU2V0dGluZ3MuY29kZWJsb2NrLmN1cnZhdHVyZX1weDtcblx0XHRcdC0tbGFuZ3VhZ2UtaWNvbi1zaXplOiAke3RoZW1lU2V0dGluZ3MuYWR2YW5jZWQuaWNvblNpemV9cHg7XG5cdFx0XHQtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3A6ICR7dGhlbWVTZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHM/dGhlbWVTZXR0aW5ncy5hZHZhbmNlZC5ncmFkaWVudEhpZ2hsaWdodHNDb2xvdXJTdG9wOicxMDAlJ307XG5cdFx0XHQtLWhlYWRlci1mb250LXNpemU6ICR7dGhlbWVTZXR0aW5ncy5oZWFkZXIuZm9udFNpemV9cHg7XG5cdFx0XHQtLWxpbmUtd3JhcHBpbmc6ICR7dGhlbWVTZXR0aW5ncy5jb2RlYmxvY2sudW53cmFwTGluZXM/J3ByZSc6J3ByZS13cmFwJ307XG5cdFx0XHQtLWNvZGUtc3R5bGVyLWlubGluZS1mb250LXdlaWdodDogJHt0aGVtZVNldHRpbmdzLmlubGluZS5mb250V2VpZ2h0fTAwO1xuXHRcdFx0LS1jb2RlLXN0eWxlci1pbmxpbmUtYm9yZGVyLXJhZGl1czogJHt0aGVtZVNldHRpbmdzLmlubGluZS5jdXJ2YXR1cmV9cHg7XG5cdFx0XHQtLWNvZGUtc3R5bGVyLWlubGluZS1wYWRkaW5nLXZlcnRpY2FsOiAke3RoZW1lU2V0dGluZ3MuaW5saW5lLnBhZGRpbmdWZXJ0aWNhbH1weDtcblx0XHRcdC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctaG9yaXpvbnRhbDogJHt0aGVtZVNldHRpbmdzLmlubGluZS5wYWRkaW5nSG9yaXpvbnRhbH1weDtcblx0XHRcdC0tY29kZS1zdHlsZXItaW5saW5lLW1hcmdpbi1ob3Jpem9udGFsOiAke3RoZW1lU2V0dGluZ3MuaW5saW5lLm1hcmdpbkhvcml6b250YWx9cHg7XG5cdFx0XHQtLWNvZGUtc3R5bGVyLWlubGluZS10aXRsZS1mb250LXdlaWdodDogJHt0aGVtZVNldHRpbmdzLmlubGluZS50aXRsZUZvbnRXZWlnaHR9MDA7XG5cdFx0XHQkeyF0aGVtZVNldHRpbmdzLmNvZGVibG9jay53cmFwTGluZXNBY3RpdmU/Jyc6Jy0tbGluZS1hY3RpdmUtd3JhcHBpbmc6IHByZS13cmFwOyd9XG5cdFx0XHQke3RoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlSWNvbi5kaXNwbGF5Q29sb3VyPycnOictLWljb24tZmlsdGVyOiBncmF5c2NhbGUoMSk7J31cblx0XHR9XG5cdFx0JHtUSEVNRV9TVFlMRVM/LltjdXJyZW50VGhlbWVdPy5ib3JkZXI/YFxuXHRcdFx0Lm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ10ge1xuXHRcdFx0XHQtLWNvZGUtc3R5bGVyLWhlYWRlci1ib3JkZXI6YCsgLy9AdHMtZXhwZWN0LWVycm9yIERvZXMgRXhpc3Rcblx0XHRcdFx0XHRUSEVNRV9TVFlMRVNbY3VycmVudFRoZW1lXS5ib3JkZXIuc3R5bGUrYDtcblx0XHRcdFx0LS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoLXBhZGRpbmc6IGNhbGModmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkgLSBgKyAvL0B0cy1leHBlY3QtZXJyb3IgRG9lcyBFeGlzdFxuXHRcdFx0XHRcdFRIRU1FX1NUWUxFU1tjdXJyZW50VGhlbWVdLmJvcmRlci5zaXplK2BweCk7XG5cdFx0XHRcdC0tY29sbGFwc2VkLWJvdHRvbS1ib3JkZXI6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1ib3JkZXIpO1xuXHRcdFx0fVxuXHRcdGA6Jyd9XG5cdFx0JHtUSEVNRV9TVFlMRVM/LltjdXJyZW50VGhlbWVdPy5leHRyYT9USEVNRV9TVFlMRVNbY3VycmVudFRoZW1lXS5leHRyYTonJ31cblx0YDtcbn1cblxuZnVuY3Rpb24gc3R5bGVMYW5ndWFnZUNvbG91cnMgKHRoZW1lU2V0dGluZ3M6IENvZGVTdHlsZXJUaGVtZVNldHRpbmdzLCByZWRpcmVjdExhbmd1YWdlczogUmVjb3JkPHN0cmluZyx7Y29sb3VyPzogQ29sb3VyLCBpY29uPzogc3RyaW5nfT4sIGN1cnJlbnRUaGVtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKExBTkdVQUdFX05BTUVTKS5yZWR1Y2UoKHJlc3VsdDogc3RyaW5nLFtsYW5ndWFnZU5hbWUsIGxhbmd1YWdlRGlzcGxheU5hbWVdOiBbc3RyaW5nLHN0cmluZ10pOiBzdHJpbmcgPT4ge1xuXHRcdGlmIChsYW5ndWFnZURpc3BsYXlOYW1lIGluIExBTkdVQUdFX0NPTE9VUlMgfHwgKGxhbmd1YWdlTmFtZSBpbiByZWRpcmVjdExhbmd1YWdlcyAmJiAnY29sb3VyJyBpbiByZWRpcmVjdExhbmd1YWdlc1tsYW5ndWFnZU5hbWVdKSkge1xuXHRcdFx0cmVzdWx0ICs9IGBcblx0XHRcdFx0Lmxhbmd1YWdlLSR7bGFuZ3VhZ2VOYW1lfSB7XG5cdFx0XHRcdFx0LS1sYW5ndWFnZS1ib3JkZXItY29sb3VyOiAke3JlZGlyZWN0TGFuZ3VhZ2VzPy5bbGFuZ3VhZ2VOYW1lXT8uWydjb2xvdXInXSA/PyBMQU5HVUFHRV9DT0xPVVJTW2xhbmd1YWdlRGlzcGxheU5hbWVdfTtcblx0XHRcdFx0XHQtLWxhbmd1YWdlLWJvcmRlci13aWR0aDogJHt0aGVtZVNldHRpbmdzLmFkdmFuY2VkLmxhbmd1YWdlQm9yZGVyQ29sb3VyP3RoZW1lU2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJXaWR0aDowfXB4O1xuXHRcdFx0XHR9XG5cdFx0XHRgO1xuXHRcdFx0aWYgKFRIRU1FX1NUWUxFUz8uW2N1cnJlbnRUaGVtZV0/LmJvcmRlcikge1xuXHRcdFx0XHRyZXN1bHQgKz0gYFxuXHRcdFx0XHRcdC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddLmxhbmd1YWdlLSR7bGFuZ3VhZ2VOYW1lfSAge1xuXHRcdFx0XHRcdFx0LS1sYW5ndWFnZS1ib3JkZXItd2lkdGg6ICR7IC8vQHRzLWV4cGVjdC1lcnJvciBEb2VzIGV4aXN0XG5cdFx0XHRcdFx0XHRcdHRoZW1lU2V0dGluZ3MuYWR2YW5jZWQubGFuZ3VhZ2VCb3JkZXJDb2xvdXI/dGhlbWVTZXR0aW5ncy5hZHZhbmNlZC5sYW5ndWFnZUJvcmRlcldpZHRoK1RIRU1FX1NUWUxFU1tjdXJyZW50VGhlbWVdLmJvcmRlci5zaXplOjBcblx0XHRcdFx0XHRcdH1weDtcblx0XHRcdFx0XHR9YFxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9LCcnKVxufVxuXG5mdW5jdGlvbiBhZGRUaGVtZVNldHRpbmdzQ2xhc3NlcyAodGhlbWVTZXR0aW5nczogQ29kZVN0eWxlclRoZW1lU2V0dGluZ3MpOiB2b2lkIHtcblx0dGhlbWVTZXR0aW5ncy5jb2RlYmxvY2subGluZU51bWJlcnMgPyBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlLXN0eWxlci1zaG93LWxpbmUtbnVtYmVyc1wiKSA6IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImNvZGUtc3R5bGVyLXNob3ctbGluZS1udW1iZXJzXCIpO1xuXHR0aGVtZVNldHRpbmdzLmd1dHRlci5oaWdobGlnaHQgPyBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2NvZGUtc3R5bGVyLWd1dHRlci1oaWdobGlnaHQnKSA6IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCcpO1xuXHR0aGVtZVNldHRpbmdzLmd1dHRlci5hY3RpdmVMaW5lID8gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdjb2RlLXN0eWxlci1ndXR0ZXItYWN0aXZlLWxpbmUnKSA6IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnY29kZS1zdHlsZXItZ3V0dGVyLWFjdGl2ZS1saW5lJyk7XG5cdFxuXHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJjb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHRcIixcImNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1jb2RlYmxvY2tcIixcImNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1lZGl0b3JcIilcblx0aWYgKHRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lICYmIHRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVDb2RlYmxvY2tMaW5lKSAvLyBJbnNpZGUgYW5kIG91dHNpZGUgb2YgY29kZWJsb2NrcyB3aXRoIGRpZmZlcmVudCBjb2xvdXJzXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0XCIpO1xuXHRlbHNlIGlmICh0aGVtZVNldHRpbmdzLmhpZ2hsaWdodHMuYWN0aXZlRWRpdG9yTGluZSAmJiAhdGhlbWVTZXR0aW5ncy5oaWdobGlnaHRzLmFjdGl2ZUNvZGVibG9ja0xpbmUpIC8vIE9ubHkgb3V0c2lkZSBjb2RlYmxvY2tzXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LWVkaXRvclwiKTtcblx0ZWxzZSBpZiAoIXRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVFZGl0b3JMaW5lICYmIHRoZW1lU2V0dGluZ3MuaGlnaGxpZ2h0cy5hY3RpdmVDb2RlYmxvY2tMaW5lKSAvLyBPbmx5IGluc2lkZSBjb2RlYmxvY2tzXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LWNvZGVibG9ja1wiKTtcblx0XG5cdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzXCIsXCJjb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXNcIik7XG5cdGlmICh0aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZVRhZy5kaXNwbGF5ID09PSAnYWx3YXlzJylcblx0XHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoXCJjb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXNcIik7XG5cdGVsc2UgaWYgKHRoZW1lU2V0dGluZ3MuaGVhZGVyLmxhbmd1YWdlVGFnLmRpc3BsYXkgPT09ICdpZl9oZWFkZXJfc2hvd24nKVxuXHRcdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChcImNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzXCIpO1xuXG5cdGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zXCIsXCJjb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXNcIik7XG5cdGlmICh0aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheSA9PT0gJ2Fsd2F5cycpXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzXCIpO1xuXHRlbHNlIGlmICh0aGVtZVNldHRpbmdzLmhlYWRlci5sYW5ndWFnZUljb24uZGlzcGxheSA9PT0gJ2lmX2hlYWRlcl9zaG93bicpXG5cdFx0ZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnNcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVTdHlsZXNBbmRDbGFzc2VzKCk6IHZvaWQge1xuXHRkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTVFlMRV9JRCk/LnJlbW92ZSgpO1xuXHRkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoXG5cdFx0J2NvZGUtc3R5bGVyJyxcblx0XHRcImNvZGUtc3R5bGVyLXNob3ctbGluZS1udW1iZXJzXCIsXG5cdFx0J2NvZGUtc3R5bGVyLWd1dHRlci1oaWdobGlnaHQnLFxuXHRcdCdjb2RlLXN0eWxlci1ndXR0ZXItYWN0aXZlLWxpbmUnLFxuXHRcdFwiY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXNcIixcblx0XHRcImNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5c1wiLFxuXHRcdFwiY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnNcIixcblx0XHRcImNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5c1wiLFxuXHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50VGhlbWUoYXBwOiBBcHApOiBzdHJpbmcge1xuXHQvL0B0cy1leHBlY3QtZXJyb3IgVW5kb2N1bWVudGVkIE9ic2lkaWFuIEFQSVxuXHRyZXR1cm4gYXBwLnZhdWx0LmdldENvbmZpZyhcImNzc1RoZW1lXCIpO1xufVxuIiwgImltcG9ydCB7IGVkaXRvckVkaXRvckZpZWxkLCBlZGl0b3JJbmZvRmllbGQsIGVkaXRvckxpdmVQcmV2aWV3RmllbGQgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IFZpZXdQbHVnaW4sIEVkaXRvclZpZXcsIFZpZXdVcGRhdGUsIERlY29yYXRpb24sIERlY29yYXRpb25TZXQsIFdpZGdldFR5cGUgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuaW1wb3J0IHsgRXh0ZW5zaW9uLCBFZGl0b3JTdGF0ZSwgU3RhdGVGaWVsZCwgU3RhdGVFZmZlY3QsIFN0YXRlRWZmZWN0VHlwZSwgUmFuZ2UsIFJhbmdlU2V0QnVpbGRlciwgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3BlYywgTGluZSwgU2VsZWN0aW9uUmFuZ2UsIEFubm90YXRpb24gfSBmcm9tIFwiQGNvZGVtaXJyb3Ivc3RhdGVcIjtcbmltcG9ydCB7IHN5bnRheFRyZWUsIHRva2VuQ2xhc3NOb2RlUHJvcCB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHsgU3ludGF4Tm9kZVJlZiB9IGZyb20gXCJAbGV6ZXIvY29tbW9uXCI7XG4vL05PU09OQVJcbi8vIGltcG9ydCB7IExhbmd1YWdlU3VwcG9ydCB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiOyAvL05PVEU6IEZvciBmdXR1cmUgQ002IENvbXBhdGliaWxpdHlcbi8vIGltcG9ydCB7IGhpZ2hsaWdodFRyZWUsIGNsYXNzSGlnaGxpZ2h0ZXIgfSBmcm9tIFwiQGxlemVyL2hpZ2hsaWdodFwiOyAvL05PVEU6IEZvciBmdXR1cmUgQ002IENvbXBhdGliaWxpdHlcbi8vIGltcG9ydCB7IGxhbmd1YWdlcyB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZS1kYXRhXCI7IC8vTk9URTogRm9yIGZ1dHVyZSBDTTYgQ29tcGF0aWJpbGl0eVxuXG5pbXBvcnQgeyBDb2RlU3R5bGVyU2V0dGluZ3MsIENvZGVTdHlsZXJUaGVtZVNldHRpbmdzIH0gZnJvbSBcIi4vU2V0dGluZ3NcIjtcbmltcG9ydCB7IENvZGVibG9ja1BhcmFtZXRlcnMsIHBhcnNlQ29kZWJsb2NrUGFyYW1ldGVycywgdGVzdE9wZW5pbmdMaW5lLCBpc0V4Y2x1ZGVkLCBhcnJheXNFcXVhbCwgdHJpbVBhcmFtZXRlckxpbmUsIElubGluZUNvZGVQYXJhbWV0ZXJzLCBwYXJzZUlubGluZUNvZGUgfSBmcm9tIFwiLi9Db2RlYmxvY2tQYXJzaW5nXCI7XG5pbXBvcnQgeyBjcmVhdGVIZWFkZXIsIGNyZWF0ZUlubGluZU9wZW5lciwgZ2V0TGFuZ3VhZ2VJY29uLCBnZXRMaW5lQ2xhc3MsIGdldExpbmVOdW1iZXJEaXNwbGF5IH0gZnJvbSBcIi4vQ29kZWJsb2NrRGVjb3JhdGluZ1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29kZWJsb2NrQ29kZU1pcnJvckV4dGVuc2lvbnMoc2V0dGluZ3M6IENvZGVTdHlsZXJTZXR0aW5ncywgbGFuZ3VhZ2VJY29uczogUmVjb3JkPHN0cmluZyxzdHJpbmc+KSB7XG5cdGNvbnN0IGNvZGVibG9ja0xpbmVOdW1iZXJDaGFyV2lkdGggPSBTdGF0ZUZpZWxkLmRlZmluZTxudW1iZXI+KHtcblx0XHRjcmVhdGUoc3RhdGU6IEVkaXRvclN0YXRlKTogbnVtYmVyIHtcblx0XHRcdHJldHVybiBnZXRDaGFyV2lkdGgoc3RhdGUsc3RhdGUuZmllbGQoZWRpdG9yRWRpdG9yRmllbGQpLmRlZmF1bHRDaGFyYWN0ZXJXaWR0aCk7XG5cdFx0fSxcblx0XHR1cGRhdGUodmFsdWU6IG51bWJlciwgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogbnVtYmVyIHtcblx0XHRcdHJldHVybiBnZXRDaGFyV2lkdGgodHJhbnNhY3Rpb24uc3RhdGUsdmFsdWUpO1xuXHRcdH1cblx0fSlcblx0Y29uc3QgY29kZWJsb2NrTGluZXMgPSBWaWV3UGx1Z2luLmZyb21DbGFzcyhcblx0XHRjbGFzcyBDb2RlYmxvY2tMaW5lcyB7XG5cdFx0XHRzZXR0aW5nczogQ29kZVN0eWxlclNldHRpbmdzO1xuXHRcdFx0Y3VycmVudFNldHRpbmdzOiB7XG5cdFx0XHRcdGV4Y2x1ZGVkQ29kZWJsb2Nrczogc3RyaW5nO1xuXHRcdFx0XHRleGNsdWRlZExhbmd1YWdlczogc3RyaW5nO1xuXHRcdFx0XHRjb2xsYXBzZVBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cdFx0XHRcdGFsdGVybmF0aXZlSGlnaGxpZ2h0czogQXJyYXk8c3RyaW5nPjtcblx0XHRcdH1cblx0XHRcdGRlY29yYXRpb25zOiBEZWNvcmF0aW9uU2V0O1xuXHRcdFx0bXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblx0XHRcblx0XHRcdGNvbnN0cnVjdG9yKHZpZXc6IEVkaXRvclZpZXcpIHtcblx0XHRcdFx0dGhpcy5zZXR0aW5ncyA9IHNldHRpbmdzO1xuXHRcdFx0XHR0aGlzLmN1cnJlbnRTZXR0aW5ncyA9IHtcblx0XHRcdFx0XHRleGNsdWRlZENvZGVibG9ja3M6IHNldHRpbmdzLmV4Y2x1ZGVkQ29kZWJsb2Nrcyxcblx0XHRcdFx0XHRleGNsdWRlZExhbmd1YWdlczogc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXMsXG5cdFx0XHRcdFx0Y29sbGFwc2VQbGFjZWhvbGRlcjogJycsXG5cdFx0XHRcdFx0YWx0ZXJuYXRpdmVIaWdobGlnaHRzOiBbXSxcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0XHR0aGlzLmJ1aWxkRGVjb3JhdGlvbnModmlldyk7XG5cdFx0XHRcdHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnMpID0+IHttdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb246IE11dGF0aW9uUmVjb3JkKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAobXV0YXRpb24udHlwZSA9PT0gXCJhdHRyaWJ1dGVzXCIgJiYgbXV0YXRpb24uYXR0cmlidXRlTmFtZSA9PT0gXCJjbGFzc1wiICYmIChcblx0XHRcdFx0XHRcdFx0KG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiSHlwZXJNRC1jb2RlYmxvY2stYmVnaW5cIikgfHxcblx0XHRcdFx0XHRcdFx0KG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiSHlwZXJNRC1jb2RlYmxvY2tfSHlwZXJNRC1jb2RlYmxvY2stYmdcIikgfHxcblx0XHRcdFx0XHRcdFx0KG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiSHlwZXJNRC1jb2RlYmxvY2stZW5kXCIpXG5cdFx0XHRcdFx0XHQpKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZm9yY2VVcGRhdGUodmlldyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh2aWV3LmNvbnRlbnRET00sICB7XG5cdFx0XHRcdFx0YXR0cmlidXRlczogdHJ1ZSxcblx0XHRcdFx0XHRjaGlsZExpc3Q6IHRydWUsXG5cdFx0XHRcdFx0c3VidHJlZTogdHJ1ZSxcblx0XHRcdFx0XHRhdHRyaWJ1dGVGaWx0ZXI6IFsnY2xhc3MnXSwgLy8gT25seSBvYnNlcnZlIGNoYW5nZXMgdG8gdGhlICdjbGFzcycgYXR0cmlidXRlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFxuXHRcdFx0Zm9yY2VVcGRhdGUodmlldzogRWRpdG9yVmlldykge1xuXHRcdFx0XHR0aGlzLmJ1aWxkRGVjb3JhdGlvbnModmlldyk7XG5cdFx0XHRcdHZpZXcucmVxdWVzdE1lYXN1cmUoKTtcblx0XHRcdH1cblx0XHRcblx0XHRcdHVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUpIHtcblx0XHRcdFx0aWYgKHVwZGF0ZS5kb2NDaGFuZ2VkIHx8IFxuXHRcdFx0XHRcdHVwZGF0ZS52aWV3cG9ydENoYW5nZWQgfHwgXG5cdFx0XHRcdFx0dXBkYXRlLnN0YXRlLmZpZWxkKGVkaXRvckxpdmVQcmV2aWV3RmllbGQpICE9PSB1cGRhdGUuc3RhcnRTdGF0ZS5maWVsZChlZGl0b3JMaXZlUHJldmlld0ZpZWxkKSB8fFxuXHRcdFx0XHRcdHRoaXMuc2V0dGluZ3MuZXhjbHVkZWRDb2RlYmxvY2tzICE9PSB0aGlzLmN1cnJlbnRTZXR0aW5ncy5leGNsdWRlZENvZGVibG9ja3MgfHxcblx0XHRcdFx0XHR0aGlzLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzICE9PSB0aGlzLmN1cnJlbnRTZXR0aW5ncy5leGNsdWRlZExhbmd1YWdlcyB8fFxuXHRcdFx0XHRcdHRoaXMuc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmhlYWRlci5jb2xsYXBzZVBsYWNlaG9sZGVyICE9PSB0aGlzLmN1cnJlbnRTZXR0aW5ncy5jb2xsYXBzZVBsYWNlaG9sZGVyIHx8XG5cdFx0XHRcdFx0IWFycmF5c0VxdWFsKE9iamVjdC5rZXlzKHRoaXMuc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMpLHRoaXMuY3VycmVudFNldHRpbmdzLmFsdGVybmF0aXZlSGlnaGxpZ2h0cylcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0dGhpcy5jdXJyZW50U2V0dGluZ3MgPSBzdHJ1Y3R1cmVkQ2xvbmUoe1xuXHRcdFx0XHRcdFx0ZXhjbHVkZWRDb2RlYmxvY2tzOiB0aGlzLnNldHRpbmdzLmV4Y2x1ZGVkQ29kZWJsb2Nrcyxcblx0XHRcdFx0XHRcdGV4Y2x1ZGVkTGFuZ3VhZ2VzOiB0aGlzLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzLFxuXHRcdFx0XHRcdFx0Y29sbGFwc2VQbGFjZWhvbGRlcjogdGhpcy5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaGVhZGVyLmNvbGxhcHNlUGxhY2Vob2xkZXIsXG5cdFx0XHRcdFx0XHRhbHRlcm5hdGl2ZUhpZ2hsaWdodHM6IE9iamVjdC5rZXlzKHRoaXMuc2V0dGluZ3MuY3VycmVudFRoZW1lLmNvbG91cnMubGlnaHQuaGlnaGxpZ2h0cy5hbHRlcm5hdGl2ZUhpZ2hsaWdodHMpLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHRoaXMuYnVpbGREZWNvcmF0aW9ucyh1cGRhdGUudmlldyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcblx0XHRcdGJ1aWxkRGVjb3JhdGlvbnModmlldzogRWRpdG9yVmlldykge1xuXHRcdFx0XHRpZiAoIXZpZXc/LnZpc2libGVSYW5nZXM/Lmxlbmd0aCB8fCBlZGl0aW5nVmlld0lnbm9yZSh2aWV3LnN0YXRlKSkge1xuXHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSBEZWNvcmF0aW9uLm5vbmU7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGJ1aWxkZXIgPSBuZXcgUmFuZ2VTZXRCdWlsZGVyPERlY29yYXRpb24+KCk7XG5cdFx0XHRcdGNvbnN0IGNvZGVibG9ja3MgPSBmaW5kVW5kdXBsaWNhdGVkQ29kZWJsb2Nrcyh2aWV3KTtcblx0XHRcdFx0Zm9yIChjb25zdCBjb2RlYmxvY2sgb2YgY29kZWJsb2Nrcykge1xuXHRcdFx0XHRcdGxldCBjb2RlYmxvY2tQYXJhbWV0ZXJzOiBDb2RlYmxvY2tQYXJhbWV0ZXJzO1xuXHRcdFx0XHRcdGxldCBleGNsdWRlZENvZGVibG9jayA9IGZhbHNlO1xuXHRcdFx0XHRcdGxldCBsaW5lTnVtYmVyID0gMDtcblx0XHRcdFx0XHRsZXQgbWF4TGluZU51bSA9IDA7XG5cdFx0XHRcdFx0bGV0IGxpbmVOdW1iZXJNYXJnaW46IG51bWJlciB8IHVuZGVmaW5lZCA9IDA7XG5cdFx0XHRcdFx0c3ludGF4VHJlZSh2aWV3LnN0YXRlKS5pdGVyYXRlKHtmcm9tOiBjb2RlYmxvY2suZnJvbSwgdG86IGNvZGVibG9jay50byxcblx0XHRcdFx0XHRcdGVudGVyOiAoc3ludGF4Tm9kZSk9Pntcblx0XHRcdFx0XHRcdFx0Y29uc3QgbGluZSA9IHZpZXcuc3RhdGUuZG9jLmxpbmVBdChzeW50YXhOb2RlLmZyb20pO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBsaW5lVGV4dCA9IHZpZXcuc3RhdGUuc2xpY2VEb2MobGluZS5mcm9tLGxpbmUudG8pO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzdGFydExpbmUgPSBzeW50YXhOb2RlLnR5cGUubmFtZS5pbmNsdWRlcyhcIkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luXCIpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBlbmRMaW5lID0gc3ludGF4Tm9kZS50eXBlLm5hbWUuaW5jbHVkZXMoXCJIeXBlck1ELWNvZGVibG9jay1lbmRcIik7XG5cdFx0XHRcdFx0XHRcdGlmIChzdGFydExpbmUpIHtcblx0XHRcdFx0XHRcdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzID0gcGFyc2VDb2RlYmxvY2tQYXJhbWV0ZXJzKHRyaW1QYXJhbWV0ZXJMaW5lKGxpbmVUZXh0KSx0aGlzLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG5cdFx0XHRcdFx0XHRcdFx0ZXhjbHVkZWRDb2RlYmxvY2sgPSBpc0V4Y2x1ZGVkKGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UsW3RoaXMuc2V0dGluZ3MuZXhjbHVkZWRDb2RlYmxvY2tzLHRoaXMuc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXNdLmpvaW4oJywnKSkgfHwgY29kZWJsb2NrUGFyYW1ldGVycy5pZ25vcmU7XG5cdFx0XHRcdFx0XHRcdFx0bGluZU51bWJlciA9IDA7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGxpbmVOdW1iZXJDb3VudCA9IGxpbmUubnVtYmVyICsgMTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBzdGFydERlbGltaXRlciA9IHRlc3RPcGVuaW5nTGluZShsaW5lVGV4dCk7XG5cdFx0XHRcdFx0XHRcdFx0d2hpbGUgKHN0YXJ0RGVsaW1pdGVyICE9PSB0ZXN0T3BlbmluZ0xpbmUodmlldy5zdGF0ZS5kb2MubGluZShsaW5lTnVtYmVyQ291bnQpLnRleHQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsaW5lTnVtYmVyQ291bnQgKz0gMTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0bWF4TGluZU51bSA9IGxpbmVOdW1iZXJDb3VudCAtIGxpbmUubnVtYmVyIC0gMSArIGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMub2Zmc2V0O1xuXHRcdFx0XHRcdFx0XHRcdGlmIChtYXhMaW5lTnVtLnRvU3RyaW5nKCkubGVuZ3RoID4gMilcblx0XHRcdFx0XHRcdFx0XHRcdGxpbmVOdW1iZXJNYXJnaW4gPSBtYXhMaW5lTnVtLnRvU3RyaW5nKCkubGVuZ3RoICogdmlldy5zdGF0ZS5maWVsZChjb2RlYmxvY2tMaW5lTnVtYmVyQ2hhcldpZHRoKTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRsaW5lTnVtYmVyTWFyZ2luID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChleGNsdWRlZENvZGVibG9jaylcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHRcdGlmIChzeW50YXhOb2RlLnR5cGUubmFtZS5pbmNsdWRlcyhcIkh5cGVyTUQtY29kZWJsb2NrXCIpKSB7XG5cdFx0XHRcdFx0XHRcdFx0YnVpbGRlci5hZGQoc3ludGF4Tm9kZS5mcm9tLHN5bnRheE5vZGUuZnJvbSxEZWNvcmF0aW9uLmxpbmUoe2F0dHJpYnV0ZXM6IHtzdHlsZTogYC0tbGluZS1udW1iZXItZ3V0dGVyLXdpZHRoOiAke2xpbmVOdW1iZXJNYXJnaW4/bGluZU51bWJlck1hcmdpbisncHgnOidjYWxjKHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1taW4td2lkdGgpIC0gMTJweCknfWAsIGNsYXNzOiAodGhpcy5zZXR0aW5ncy5zcGVjaWFsTGFuZ3VhZ2VzLnNvbWUocmVnRXhwID0+IG5ldyBSZWdFeHAocmVnRXhwKS50ZXN0KGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UpKXx8c3RhcnRMaW5lfHxlbmRMaW5lPydjb2RlLXN0eWxlci1saW5lJzpnZXRMaW5lQ2xhc3MoY29kZWJsb2NrUGFyYW1ldGVycyxsaW5lTnVtYmVyLGxpbmUudGV4dCkuam9pbignICcpKSsoW1wiXiRcIl0uY29uY2F0KHRoaXMuc2V0dGluZ3Muc3BlY2lhbExhbmd1YWdlcykuc29tZShyZWdFeHAgPT4gbmV3IFJlZ0V4cChyZWdFeHApLnRlc3QoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSkpPycnOmAgbGFuZ3VhZ2UtJHtjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlfWApfX0pKTtcblx0XHRcdFx0XHRcdFx0XHRidWlsZGVyLmFkZChzeW50YXhOb2RlLmZyb20sc3ludGF4Tm9kZS5mcm9tLERlY29yYXRpb24ubGluZSh7fSkpO1xuXHRcdFx0XHRcdFx0XHRcdGJ1aWxkZXIuYWRkKHN5bnRheE5vZGUuZnJvbSxzeW50YXhOb2RlLmZyb20sRGVjb3JhdGlvbi53aWRnZXQoe3dpZGdldDogbmV3IExpbmVOdW1iZXJXaWRnZXQobGluZU51bWJlcixjb2RlYmxvY2tQYXJhbWV0ZXJzLG1heExpbmVOdW0sc3RhcnRMaW5lfHxlbmRMaW5lKX0pKTtcblx0XHRcdFx0XHRcdFx0XHRsaW5lTnVtYmVyKys7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSBidWlsZGVyLmZpbmlzaCgpO1xuXHRcdFx0fVxuXHRcdFxuXHRcdFx0ZGVzdHJveSgpIHtcblx0XHRcdFx0dGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHtcblx0XHRcdGRlY29yYXRpb25zOiAodmFsdWUpID0+IHZhbHVlLmRlY29yYXRpb25zLFxuXHRcdFx0cHJvdmlkZTogKHBsdWdpbikgPT4gRWRpdG9yVmlldy5hdG9taWNSYW5nZXMub2YoKHZpZXcpPT52aWV3LnN0YXRlLmZpZWxkKGNvZGVibG9ja0NvbGxhcHNlKSB8fCBEZWNvcmF0aW9uLm5vbmUpLFxuXHRcdH1cblx0KTtcblx0Y29uc3QgY29kZWJsb2NrSGVhZGVyID0gU3RhdGVGaWVsZC5kZWZpbmU8RGVjb3JhdGlvblNldD4oe1xuXHRcdGNyZWF0ZShzdGF0ZTogRWRpdG9yU3RhdGUpOiBEZWNvcmF0aW9uU2V0IHtcblx0XHRcdHJldHVybiBEZWNvcmF0aW9uLm5vbmU7ICAgIFxuXHRcdH0sXG5cdFx0dXBkYXRlKHZhbHVlOiBEZWNvcmF0aW9uU2V0LCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBEZWNvcmF0aW9uU2V0IHtcblx0XHRcdGlmIChlZGl0aW5nVmlld0lnbm9yZSh0cmFuc2FjdGlvbi5zdGF0ZSkpXG5cdFx0XHRcdHJldHVybiBEZWNvcmF0aW9uLm5vbmU7XG5cdFx0XHRjb25zdCBidWlsZGVyID0gbmV3IFJhbmdlU2V0QnVpbGRlcjxEZWNvcmF0aW9uPigpO1xuXHRcdFx0bGV0IGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnM7XG5cdFx0XHRsZXQgc3RhcnRMaW5lID0gdHJ1ZTtcblx0XHRcdGxldCBzdGFydERlbGltaXRlciA9ICdgYGAnO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCB0cmFuc2FjdGlvbi5zdGF0ZS5kb2MubGluZXM7IGkrKykge1xuXHRcdFx0XHRjb25zdCBsaW5lID0gdHJhbnNhY3Rpb24uc3RhdGUuZG9jLmxpbmUoaSk7XG5cdFx0XHRcdGNvbnN0IGxpbmVUZXh0ID0gbGluZS50ZXh0LnRvU3RyaW5nKCk7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnREZWxpbWl0ZXIgPSB0ZXN0T3BlbmluZ0xpbmUobGluZVRleHQpO1xuXHRcdFx0XHRpZiAoY3VycmVudERlbGltaXRlcikge1xuXHRcdFx0XHRcdGlmIChzdGFydExpbmUpIHtcblx0XHRcdFx0XHRcdHN0YXJ0TGluZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0c3RhcnREZWxpbWl0ZXIgPSBjdXJyZW50RGVsaW1pdGVyO1xuXHRcdFx0XHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycyA9IHBhcnNlQ29kZWJsb2NrUGFyYW1ldGVycyh0cmltUGFyYW1ldGVyTGluZShsaW5lVGV4dCksc2V0dGluZ3MuY3VycmVudFRoZW1lKTtcblx0XHRcdFx0XHRcdGlmICghaXNFeGNsdWRlZChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlLFtzZXR0aW5ncy5leGNsdWRlZENvZGVibG9ja3Msc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXNdLmpvaW4oJywnKSkgJiYgIWNvZGVibG9ja1BhcmFtZXRlcnMuaWdub3JlKVxuXHRcdFx0XHRcdFx0XHRpZiAoIXNldHRpbmdzLnNwZWNpYWxMYW5ndWFnZXMuc29tZShyZWdFeHAgPT4gbmV3IFJlZ0V4cChyZWdFeHApLnRlc3QoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSkpKVxuXHRcdFx0XHRcdFx0XHRcdGJ1aWxkZXIuYWRkKGxpbmUuZnJvbSxsaW5lLmZyb20sRGVjb3JhdGlvbi53aWRnZXQoe3dpZGdldDogbmV3IEhlYWRlcldpZGdldChjb2RlYmxvY2tQYXJhbWV0ZXJzLHNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncyxsYW5ndWFnZUljb25zKSwgYmxvY2s6IHRydWUsIHNpZGU6IC0xfSkpO1xuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50RGVsaW1pdGVyID09PSBzdGFydERlbGltaXRlcilcblx0XHRcdFx0XHRcdFx0c3RhcnRMaW5lID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBidWlsZGVyLmZpbmlzaCgpO1xuXHRcdH0sXG5cdFx0cHJvdmlkZShmaWVsZDogU3RhdGVGaWVsZDxEZWNvcmF0aW9uU2V0Pik6IEV4dGVuc2lvbiB7XG5cdFx0XHRyZXR1cm4gRWRpdG9yVmlldy5kZWNvcmF0aW9ucy5mcm9tKGZpZWxkKTtcblx0XHR9XG5cdH0pXG5cdGNvbnN0IGNvZGVibG9ja0NvbGxhcHNlID0gU3RhdGVGaWVsZC5kZWZpbmU8RGVjb3JhdGlvblNldD4oe1xuXHRcdGNyZWF0ZShzdGF0ZTogRWRpdG9yU3RhdGUpOiBEZWNvcmF0aW9uU2V0IHtcblx0XHRcdGlmIChlZGl0aW5nVmlld0lnbm9yZShzdGF0ZSkpXG5cdFx0XHRcdHJldHVybiBEZWNvcmF0aW9uLm5vbmU7XG5cdFx0XHRjb25zdCBidWlsZGVyID0gbmV3IFJhbmdlU2V0QnVpbGRlcjxEZWNvcmF0aW9uPigpO1xuXHRcdFx0bGV0IGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnM7XG5cdFx0XHRsZXQgY29sbGFwc2VTdGFydDogTGluZSB8IG51bGwgPSBudWxsO1xuXHRcdFx0bGV0IGNvbGxhcHNlRW5kOiBMaW5lIHwgbnVsbCA9IG51bGw7XG5cdFx0XHRsZXQgc3RhcnRMaW5lID0gdHJ1ZTtcblx0XHRcdGxldCBzdGFydERlbGltaXRlciA9ICdgYGAnO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDE7IGkgPCBzdGF0ZS5kb2MubGluZXM7IGkrKykge1xuXHRcdFx0XHRjb25zdCBsaW5lID0gc3RhdGUuZG9jLmxpbmUoaSk7XG5cdFx0XHRcdGNvbnN0IGxpbmVUZXh0ID0gbGluZS50ZXh0LnRvU3RyaW5nKCk7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnREZWxpbWl0ZXIgPSB0ZXN0T3BlbmluZ0xpbmUobGluZVRleHQpO1xuXHRcdFx0XHRpZiAoY3VycmVudERlbGltaXRlcikge1xuXHRcdFx0XHRcdGlmIChzdGFydExpbmUpIHtcblx0XHRcdFx0XHRcdHN0YXJ0TGluZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0c3RhcnREZWxpbWl0ZXIgPSBjdXJyZW50RGVsaW1pdGVyO1xuXHRcdFx0XHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycyA9IHBhcnNlQ29kZWJsb2NrUGFyYW1ldGVycyh0cmltUGFyYW1ldGVyTGluZShsaW5lVGV4dCksc2V0dGluZ3MuY3VycmVudFRoZW1lKTtcblx0XHRcdFx0XHRcdGlmICghaXNFeGNsdWRlZChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlLFtzZXR0aW5ncy5leGNsdWRlZENvZGVibG9ja3Msc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXNdLmpvaW4oJywnKSkgJiYgIWNvZGVibG9ja1BhcmFtZXRlcnMuaWdub3JlICYmIGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5lbmFibGVkKVxuXHRcdFx0XHRcdFx0XHRpZiAoIXNldHRpbmdzLnNwZWNpYWxMYW5ndWFnZXMuc29tZShyZWdFeHAgPT4gbmV3IFJlZ0V4cChyZWdFeHApLnRlc3QoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSkpKVxuXHRcdFx0XHRcdFx0XHRcdGNvbGxhcHNlU3RhcnQgPSBsaW5lO1xuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmIChjdXJyZW50RGVsaW1pdGVyID09PSBzdGFydERlbGltaXRlcikge1xuXHRcdFx0XHRcdFx0XHRzdGFydExpbmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRpZiAoY29sbGFwc2VTdGFydClcblx0XHRcdFx0XHRcdFx0XHRjb2xsYXBzZUVuZCA9IGxpbmU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChjb2xsYXBzZVN0YXJ0ICYmIGNvbGxhcHNlRW5kKSB7XG5cdFx0XHRcdFx0YnVpbGRlci5hZGQoY29sbGFwc2VTdGFydC5mcm9tLGNvbGxhcHNlRW5kLnRvLERlY29yYXRpb24ucmVwbGFjZSh7ZWZmZWN0OiBjb2xsYXBzZS5vZihEZWNvcmF0aW9uLnJlcGxhY2Uoe2Jsb2NrOiB0cnVlfSkucmFuZ2UoY29sbGFwc2VTdGFydC5mcm9tLGNvbGxhcHNlRW5kLnRvKSksIGJsb2NrOiB0cnVlLCBpbmNsdXNpdmU6IHRydWV9KSk7XG5cdFx0XHRcdFx0Y29sbGFwc2VTdGFydCA9IG51bGw7XG5cdFx0XHRcdFx0Y29sbGFwc2VFbmQgPSBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gYnVpbGRlci5maW5pc2goKTtcblx0XHR9LFxuXHRcdHVwZGF0ZSh2YWx1ZTogRGVjb3JhdGlvblNldCwgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogRGVjb3JhdGlvblNldCB7XG5cdFx0XHR2YWx1ZSA9IHZhbHVlLm1hcCh0cmFuc2FjdGlvbi5jaGFuZ2VzKTtcblx0XHRcdGZvciAoY29uc3QgZWZmZWN0IG9mIHRyYW5zYWN0aW9uLmVmZmVjdHMpIHtcblx0XHRcdFx0aWYgKGVmZmVjdC5pcyhjb2xsYXBzZSkpXG5cdFx0XHRcdFx0dmFsdWUgPSB2YWx1ZS51cGRhdGUoe2FkZDogW2VmZmVjdC52YWx1ZV0sIHNvcnQ6IHRydWV9KTtcblx0XHRcdFx0ZWxzZSBpZiAoZWZmZWN0LmlzKHVuY29sbGFwc2UpKVxuXHRcdFx0XHRcdHZhbHVlID0gdmFsdWUudXBkYXRlKHtmaWx0ZXJGcm9tOiBlZmZlY3QudmFsdWUuZmlsdGVyRnJvbSwgZmlsdGVyVG86IGVmZmVjdC52YWx1ZS5maWx0ZXJUbywgZmlsdGVyOiBlZmZlY3QudmFsdWUuZmlsdGVyfSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0fSxcblx0XHRwcm92aWRlKGZpZWxkOiBTdGF0ZUZpZWxkPERlY29yYXRpb25TZXQ+KTogRXh0ZW5zaW9uIHtcblx0XHRcdHJldHVybiBFZGl0b3JWaWV3LmRlY29yYXRpb25zLmZyb20oZmllbGQpO1xuXHRcdH0sXG5cdH0pXG5cdGNvbnN0IHRlbXBvcmFyaWx5VW5jb2xsYXBzZWQgPSBTdGF0ZUZpZWxkLmRlZmluZTxEZWNvcmF0aW9uU2V0Pih7XG5cdFx0Y3JlYXRlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IERlY29yYXRpb25TZXQge1xuXHRcdFx0cmV0dXJuIERlY29yYXRpb24ubm9uZTtcblx0XHR9LFxuXHRcdHVwZGF0ZSh2YWx1ZTogRGVjb3JhdGlvblNldCwgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogRGVjb3JhdGlvblNldCB7XG5cdFx0XHR2YWx1ZSA9IHZhbHVlLm1hcCh0cmFuc2FjdGlvbi5jaGFuZ2VzKTtcblx0XHRcdGNvbnN0IHVuY29sbGFwc2VBbm5vdGF0aW9uID0gdHJhbnNhY3Rpb24uYW5ub3RhdGlvbih0ZW1wb3JhcnlVbmNvbGxhcHNlQW5ub3RhdGlvbik7XG5cdFx0XHRpZiAodW5jb2xsYXBzZUFubm90YXRpb24pIHtcblx0XHRcdFx0aWYgKHVuY29sbGFwc2VBbm5vdGF0aW9uLnVuY29sbGFwc2UpXG5cdFx0XHRcdFx0dmFsdWUgPSB2YWx1ZS51cGRhdGUoe2FkZDogW3VuY29sbGFwc2VBbm5vdGF0aW9uLmRlY29yYXRpb25SYW5nZV0sIHNvcnQ6IHRydWV9KTtcblx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdHZhbHVlID0gdmFsdWUudXBkYXRlKHtmaWx0ZXJGcm9tOiB1bmNvbGxhcHNlQW5ub3RhdGlvbi5kZWNvcmF0aW9uUmFuZ2UuZnJvbSwgZmlsdGVyVG86IHVuY29sbGFwc2VBbm5vdGF0aW9uLmRlY29yYXRpb25SYW5nZS50bywgZmlsdGVyOiAoZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyLCB2YWx1ZTogRGVjb3JhdGlvbik9PiEoZnJvbSA9PT0gdW5jb2xsYXBzZUFubm90YXRpb24uZGVjb3JhdGlvblJhbmdlLmZyb20gJiYgdG8gPT09IHVuY29sbGFwc2VBbm5vdGF0aW9uLmRlY29yYXRpb25SYW5nZS50byl9KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cdH0pXG5cdGNvbnN0IGlubGluZUNvZGVEZWNvcmF0b3IgPSBWaWV3UGx1Z2luLmZyb21DbGFzcyhcblx0XHRjbGFzcyBJbmxpbmVDb2RlRGVjb3JhdGlvbiB7XG5cdFx0XHRkZWNvcmF0aW9uczogRGVjb3JhdGlvblNldDtcblx0XHRcdHNldHRpbmdzOiBDb2RlU3R5bGVyU2V0dGluZ3M7XG5cdFx0XHRzeW50YXhIaWdobGlnaHQ6IGJvb2xlYW47XG5cdFx0XHQvL05PU09OQVJcblx0XHRcdC8vIGxvYWRlZExhbmd1YWdlczogUmVjb3JkPHN0cmluZyxMYW5ndWFnZVN1cHBvcnQ+OyAvL05PVEU6IEZvciBmdXR1cmUgQ002IENvbXBhdGliaWxpdHlcblxuXHRcdFx0Y29uc3RydWN0b3IodmlldzogRWRpdG9yVmlldykge1xuXHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0XHR0aGlzLnNldHRpbmdzID0gc2V0dGluZ3M7XG5cdFx0XHRcdHRoaXMuc3ludGF4SGlnaGxpZ2h0ID0gc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5zeW50YXhIaWdobGlnaHQ7XG5cdFx0XHRcdHRoaXMuYnVpbGREZWNvcmF0aW9ucyh2aWV3KTtcblx0XHRcdFx0Ly9OT1NPTkFSXG5cdFx0XHRcdC8vIHRoaXMubG9hZGVkTGFuZ3VhZ2VzID0ge307IC8vTk9URTogRm9yIGZ1dHVyZSBDTTYgQ29tcGF0aWJpbGl0eVxuXHRcdFx0fVxuXG5cdFx0XHR1cGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlKSB7XG5cdFx0XHRcdGlmICh1cGRhdGUuZG9jQ2hhbmdlZCB8fCB1cGRhdGUudmlld3BvcnRDaGFuZ2VkIHx8IHVwZGF0ZS5zZWxlY3Rpb25TZXQgfHwgdXBkYXRlLnN0YXRlLmZpZWxkKGVkaXRvckxpdmVQcmV2aWV3RmllbGQpIT09dXBkYXRlLnN0YXJ0U3RhdGUuZmllbGQoZWRpdG9yTGl2ZVByZXZpZXdGaWVsZCkgfHwgdGhpcy5zZXR0aW5ncy5jdXJyZW50VGhlbWUuc2V0dGluZ3MuaW5saW5lLnN5bnRheEhpZ2hsaWdodCAhPT0gdGhpcy5zeW50YXhIaWdobGlnaHQpIHtcblx0XHRcdFx0XHR0aGlzLnN5bnRheEhpZ2hsaWdodCA9IHRoaXMuc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5zeW50YXhIaWdobGlnaHQ7XG5cdFx0XHRcdFx0aWYgKHVwZGF0ZS5kb2NDaGFuZ2VkKSBcblx0XHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLm1hcCh1cGRhdGUuY2hhbmdlcyk7XG5cdFx0XHRcdFx0dGhpcy5idWlsZERlY29yYXRpb25zKHVwZGF0ZS52aWV3KTtcblx0XHRcdFx0Ly9OT1NPTkFSXG5cdFx0XHRcdC8vTk9URTogRm9yIGZ1dHVyZSBDTTYgQ29tcGF0aWJpbGl0eVxuXHRcdFx0XHQvLyBcdGNvbnN0IHRvSGlnaGxpZ2h0ID0gdGhpcy5idWlsZERlY29yYXRpb25zKHVwZGF0ZS52aWV3KTtcblx0XHRcdFx0Ly8gXHR0b0hpZ2hsaWdodC5mb3JFYWNoKChoaWdobGlnaHRTZXQpPT57XG5cdFx0XHRcdC8vIFx0XHRpZiAoIWhpZ2hsaWdodFNldD8ubGFuZ3VhZ2UpXG5cdFx0XHRcdC8vIFx0XHRcdHJldHVybjtcblx0XHRcdFx0Ly8gXHRcdGlmIChoaWdobGlnaHRTZXQubGFuZ3VhZ2UgaW4gdGhpcy5sb2FkZWRMYW5ndWFnZXMpIHtcblx0XHRcdFx0Ly8gXHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHthZGQ6IGxhbmd1YWdlSGlnaGxpZ2h0KGhpZ2hsaWdodFNldCl9KTtcblx0XHRcdFx0Ly8gXHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFx0XHRcdGNvbnN0IGxhbmd1YWdlRGVzY3JpcHRpb24gPSBMYW5ndWFnZURlc2NyaXB0aW9uLm1hdGNoTGFuZ3VhZ2VOYW1lKGxhbmd1YWdlcyxoaWdobGlnaHRTZXQubGFuZ3VhZ2UpO1xuXHRcdFx0XHQvLyBcdFx0XHRpZiAoIWxhbmd1YWdlRGVzY3JpcHRpb24pXG5cdFx0XHRcdC8vIFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHQvLyBcdFx0XHRsYW5ndWFnZURlc2NyaXB0aW9uLmxvYWQoKS50aGVuKChsYW5ndWFnZVN1cHBvcnQpPT57XG5cdFx0XHRcdC8vIFx0XHRcdFx0dGhpcy5sb2FkZWRMYW5ndWFnZXNbaGlnaGxpZ2h0U2V0Lmxhbmd1YWdlXSA9IGxhbmd1YWdlU3VwcG9ydDtcblx0XHRcdFx0Ly8gXHRcdFx0XHR1cGRhdGUudmlldy5kaXNwYXRjaCh7fSk7XG5cdFx0XHRcdC8vIFx0XHRcdFx0dXBkYXRlLnZpZXcuZGlzcGF0Y2goe2Fubm90YXRpb25zOiBzeW50YXhIaWdobGlnaHREZWNvcmF0aW9ucy5vZihtYXJrRGVjb3JhdGlvbnMpfSlcblx0XHRcdFx0Ly8gXHRcdFx0fSk7XG5cdFx0XHRcdC8vIFx0XHR9XG5cdFx0XHRcdC8vIFx0fSk7XG5cdFx0XHRcdC8vIH0gZWxzZSB7XG5cdFx0XHRcdC8vIFx0dXBkYXRlLnRyYW5zYWN0aW9ucy5mb3JFYWNoKCh0cmFuc2FjdGlvbik9Pntcblx0XHRcdFx0Ly8gXHRcdGNvbnN0IG1hcmtEZWNvcmF0aW9ucyA9IHRyYW5zYWN0aW9uLmFubm90YXRpb24oc3ludGF4SGlnaGxpZ2h0RGVjb3JhdGlvbnMpO1xuXHRcdFx0XHQvLyBcdFx0aWYgKG1hcmtEZWNvcmF0aW9ucylcblx0XHRcdFx0Ly8gXHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHthZGQ6IG1hcmtEZWNvcmF0aW9uc30pXG5cdFx0XHRcdC8vIFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YnVpbGREZWNvcmF0aW9ucyh2aWV3OiBFZGl0b3JWaWV3KTogdm9pZCB7IC8vQXJyYXk8e3N0YXJ0OiBudW1iZXIsIHRleHQ6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZ30+IC8vTk9URTogRm9yIGZ1dHVyZSBDTTYgQ29tcGF0aWJpbGl0eSAvL05PU09OQVJcblx0XHRcdFx0aWYgKCF2aWV3Py52aXNpYmxlUmFuZ2VzPy5sZW5ndGggfHwgZWRpdGluZ1ZpZXdJZ25vcmUodmlldy5zdGF0ZSkpIHtcblx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHQvL05PU09OQVJcblx0XHRcdFx0XHQvLyByZXR1cm4gW107Ly9OT1RFOiBGb3IgZnV0dXJlIENNNiBDb21wYXRpYmlsaXR5XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly9OT1NPTkFSXG5cdFx0XHRcdC8vIGxldCB0b0hpZ2hsaWdodDogQXJyYXk8e3N0YXJ0OiBudW1iZXIsIHRleHQ6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZ30+ID0gW107IC8vTk9URTogRm9yIGZ1dHVyZSBDTTYgQ29tcGF0aWJpbGl0eVxuXHRcdFx0XHRmb3IgKGNvbnN0IHtmcm9tLHRvfSBvZiB2aWV3LnZpc2libGVSYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3ludGF4VHJlZSh2aWV3LnN0YXRlKS5pdGVyYXRlKHtmcm9tOiBmcm9tLCB0bzogdG8sXG5cdFx0XHRcdFx0XHRlbnRlcjogKHN5bnRheE5vZGUpPT57XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IG5ldyBTZXQoc3ludGF4Tm9kZS5ub2RlLnR5cGUucHJvcDxzdHJpbmc+KHRva2VuQ2xhc3NOb2RlUHJvcCk/LnNwbGl0KFwiIFwiKSk7XG5cdFx0XHRcdFx0XHRcdGlmICghKHByb3BlcnRpZXMuaGFzKFwiaW5saW5lLWNvZGVcIikgJiYgIXByb3BlcnRpZXMuaGFzKFwiZm9ybWF0dGluZ1wiKSkpXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBwcmV2aW91c1NpYmxpbmcgPSBzeW50YXhOb2RlLm5vZGUucHJldlNpYmxpbmc7XG5cdFx0XHRcdFx0XHRcdGlmICghcHJldmlvdXNTaWJsaW5nKVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0Y29uc3QgZGVsaW1pdGVyU2l6ZSA9IHByZXZpb3VzU2libGluZy50by1wcmV2aW91c1NpYmxpbmcuZnJvbTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgaW5saW5lQ29kZVRleHQgPSB2aWV3LnN0YXRlLmRvYy5zbGljZVN0cmluZyhzeW50YXhOb2RlLmZyb20sIHN5bnRheE5vZGUudG8pO1xuXHRcdFx0XHRcdFx0XHRjb25zdCB7cGFyYW1ldGVycyx0ZXh0fSA9IHBhcnNlSW5saW5lQ29kZShpbmxpbmVDb2RlVGV4dCk7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGVuZE9mUGFyYW1ldGVycyA9IGlubGluZUNvZGVUZXh0Lmxhc3RJbmRleE9mKHRleHQpO1xuXHRcdFx0XHRcdFx0XHRpZiAoIXBhcmFtZXRlcnMpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodGV4dCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHZpZXcuc3RhdGUuc2VsZWN0aW9uLnJhbmdlcy5zb21lKChyYW5nZTogU2VsZWN0aW9uUmFuZ2UpPT5yYW5nZS50byA+PSBzeW50YXhOb2RlLmZyb20tZGVsaW1pdGVyU2l6ZSAmJiByYW5nZS5mcm9tIDw9IHN5bnRheE5vZGUudG8rZGVsaW1pdGVyU2l6ZSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLnVwZGF0ZSh7ZmlsdGVyRnJvbTogc3ludGF4Tm9kZS5mcm9tLCBmaWx0ZXJUbzogc3ludGF4Tm9kZS5mcm9tLCBmaWx0ZXI6IChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIsIHZhbHVlOiBEZWNvcmF0aW9uKT0+ZmFsc2V9KTtcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHthZGQ6IFt7ZnJvbTogc3ludGF4Tm9kZS5mcm9tLCB0bzogc3ludGF4Tm9kZS5mcm9tICsgZW5kT2ZQYXJhbWV0ZXJzLCB2YWx1ZTogRGVjb3JhdGlvbi5yZXBsYWNlKHt9KX1dfSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh2aWV3LnN0YXRlLnNlbGVjdGlvbi5yYW5nZXMuc29tZSgocmFuZ2U6IFNlbGVjdGlvblJhbmdlKT0+cmFuZ2UudG8gPj0gc3ludGF4Tm9kZS5mcm9tLWRlbGltaXRlclNpemUgJiYgcmFuZ2UuZnJvbSA8PSBzeW50YXhOb2RlLnRvK2RlbGltaXRlclNpemUpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zLmJldHdlZW4oc3ludGF4Tm9kZS5mcm9tLCBzeW50YXhOb2RlLmZyb20sIChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIsIGRlY29yYXRpb25WYWx1ZTogRGVjb3JhdGlvbik9Pntcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHtmaWx0ZXJGcm9tOiBmcm9tLCBmaWx0ZXJUbzogdG8sIGZpbHRlcjogKGZyb206IG51bWJlciwgdG86IG51bWJlciwgdmFsdWU6IERlY29yYXRpb24pPT5mYWxzZX0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zID0gdGhpcy5kZWNvcmF0aW9ucy51cGRhdGUoe2FkZDogW3tmcm9tOiBzeW50YXhOb2RlLmZyb20sIHRvOiBzeW50YXhOb2RlLmZyb20gKyBlbmRPZlBhcmFtZXRlcnMsIHZhbHVlOiBEZWNvcmF0aW9uLm1hcmsoe2NsYXNzOiAnY29kZS1zdHlsZXItaW5saW5lLXBhcmFtZXRlcnMnfSl9XX0pO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgZGVjb3JhdGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmRlY29yYXRpb25zLmJldHdlZW4oc3ludGF4Tm9kZS5mcm9tLCBzeW50YXhOb2RlLmZyb20sIChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIsIGRlY29yYXRpb25WYWx1ZTogRGVjb3JhdGlvbik9Pntcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFkZWNvcmF0aW9uVmFsdWUuc3BlYz8uY2xhc3MpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVjb3JhdGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFkZWNvcmF0ZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHthZGQ6IFt7ZnJvbTogc3ludGF4Tm9kZS5mcm9tLCB0bzogc3ludGF4Tm9kZS5mcm9tICsgZW5kT2ZQYXJhbWV0ZXJzLCB2YWx1ZTogRGVjb3JhdGlvbi5yZXBsYWNlKHt9KX1dfSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChwYXJhbWV0ZXJzPy50aXRsZSB8fCAocGFyYW1ldGVycz8uaWNvbiAmJiBnZXRMYW5ndWFnZUljb24ocGFyYW1ldGVycy5sYW5ndWFnZSxsYW5ndWFnZUljb25zKSkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHthZGQ6IFt7ZnJvbTogc3ludGF4Tm9kZS5mcm9tLCB0bzogc3ludGF4Tm9kZS5mcm9tLCB2YWx1ZTogRGVjb3JhdGlvbi5yZXBsYWNlKHt3aWRnZXQ6IG5ldyBPcGVuZXJXaWRnZXQocGFyYW1ldGVycyxsYW5ndWFnZUljb25zKX0pfV19KTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5kZWNvcmF0aW9ucyA9IHRoaXMuZGVjb3JhdGlvbnMudXBkYXRlKHtmaWx0ZXJGcm9tOiBzeW50YXhOb2RlLmZyb20gKyBlbmRPZlBhcmFtZXRlcnMrMSwgZmlsdGVyVG86IHN5bnRheE5vZGUudG8sIGZpbHRlcjogKGZyb206IG51bWJlciwgdG86IG51bWJlciwgZGVjb3JhdGlvblZhbHVlOiBEZWNvcmF0aW9uKT0+ZmFsc2V9KTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIXNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuc3ludGF4SGlnaGxpZ2h0KVxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGVjb3JhdGlvbnMgPSB0aGlzLmRlY29yYXRpb25zLnVwZGF0ZSh7YWRkOiBtb2RlSGlnaGxpZ2h0KHtzdGFydDogc3ludGF4Tm9kZS5mcm9tICsgZW5kT2ZQYXJhbWV0ZXJzLCB0ZXh0OiB0ZXh0LCBsYW5ndWFnZTogcGFyYW1ldGVycy5sYW5ndWFnZX0pfSk7XG5cdFx0XHRcdFx0XHRcdFx0Ly9OT1NPTkFSXG5cdFx0XHRcdFx0XHRcdFx0Ly8gdG9IaWdobGlnaHQucHVzaCh7c3RhcnQ6IHN5bnRheE5vZGUuZnJvbSArIGVuZE9mUGFyYW1ldGVycywgdGV4dDogdGV4dCwgbGFuZ3VhZ2U6IHBhcmFtZXRlcnMubGFuZ3VhZ2V9KTsgLy9OT1RFOiBGb3IgZnV0dXJlIENNNiBDb21wYXRpYmlsaXR5XG5cdFx0XHRcdFx0XHRcdH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblx0XHRcdFx0Ly8gcmV0dXJuIHRvSGlnaGxpZ2h0OyAvL05PVEU6IEZvciBmdXR1cmUgQ002IENvbXBhdGliaWxpdHlcblx0XHRcdH1cblx0XHR9LFxuXHRcdHtcblx0XHRcdGRlY29yYXRpb25zOiAodmFsdWUpID0+IHZhbHVlLmRlY29yYXRpb25zLFxuXHRcdH1cblx0KVxuXHRmdW5jdGlvbiBjdXJzb3JJbnRvQ29sbGFwc2VkVHJhbnNhY3Rpb25GaWx0ZXIoKSB7XG5cdFx0cmV0dXJuIEVkaXRvclN0YXRlLnRyYW5zYWN0aW9uRmlsdGVyLm9mKCh0cmFuc2FjdGlvbikgPT4ge1xuXHRcdFx0Y29uc3QgZXh0cmFUcmFuc2FjdGlvbnM6IEFycmF5PFRyYW5zYWN0aW9uU3BlYz4gPSBbXTtcblx0XHRcdGNvbnN0IGNvbGxhcHNlZFJhbmdlU2V0ID0gdHJhbnNhY3Rpb24uc3RhcnRTdGF0ZS5maWVsZChjb2RlYmxvY2tDb2xsYXBzZSxmYWxzZSk/Lm1hcCh0cmFuc2FjdGlvbi5jaGFuZ2VzKSA/PyBEZWNvcmF0aW9uLm5vbmU7XG5cdFx0XHRjb25zdCB0ZW1wb3JhcmlseVVuY29sbGFwc2VkUmFuZ2VTZXQgPSB0cmFuc2FjdGlvbi5zdGFydFN0YXRlLmZpZWxkKHRlbXBvcmFyaWx5VW5jb2xsYXBzZWQsZmFsc2UpPy5tYXAodHJhbnNhY3Rpb24uY2hhbmdlcykgPz8gRGVjb3JhdGlvbi5ub25lO1xuXHRcdFx0dHJhbnNhY3Rpb24ubmV3U2VsZWN0aW9uLnJhbmdlcy5mb3JFYWNoKChyYW5nZTogU2VsZWN0aW9uUmFuZ2UpPT57XG5cdFx0XHRcdGNvbGxhcHNlZFJhbmdlU2V0LmJldHdlZW4ocmFuZ2UuZnJvbSwgcmFuZ2UudG8sIChjb2xsYXBzZVN0YXJ0RnJvbSwgY29sbGFwc2VFbmRUbywgZGVjb3JhdGlvblZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGNvbGxhcHNlU3RhcnRGcm9tIDw9IHJhbmdlLmhlYWQgJiYgcmFuZ2UuaGVhZCA8PSBjb2xsYXBzZUVuZFRvKVxuXHRcdFx0XHRcdFx0ZXh0cmFUcmFuc2FjdGlvbnMucHVzaCh7ZWZmZWN0czogdW5jb2xsYXBzZS5vZih7ZmlsdGVyOiAoZnJvbSx0bykgPT4gKHRvIDw9IGNvbGxhcHNlU3RhcnRGcm9tIHx8IGZyb20gPj0gY29sbGFwc2VFbmRUbyksIGZpbHRlckZyb206IGNvbGxhcHNlU3RhcnRGcm9tLCBmaWx0ZXJUbzogY29sbGFwc2VFbmRUb30pLCBhbm5vdGF0aW9uczogdGVtcG9yYXJ5VW5jb2xsYXBzZUFubm90YXRpb24ub2Yoe2RlY29yYXRpb25SYW5nZToge2Zyb206IGNvbGxhcHNlU3RhcnRGcm9tLCB0bzogY29sbGFwc2VFbmRUbywgdmFsdWU6IGRlY29yYXRpb25WYWx1ZX0sIHVuY29sbGFwc2U6IHRydWV9KX0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Zm9yIChsZXQgaXRlciA9IHRlbXBvcmFyaWx5VW5jb2xsYXBzZWRSYW5nZVNldC5pdGVyKCk7IGl0ZXIudmFsdWUgIT09IG51bGw7IGl0ZXIubmV4dCgpKSB7XG5cdFx0XHRcdFx0aWYgKCEoaXRlci5mcm9tIDw9IHJhbmdlLmhlYWQgJiYgcmFuZ2UuaGVhZCA8PSBpdGVyLnRvKSlcblx0XHRcdFx0XHRcdGV4dHJhVHJhbnNhY3Rpb25zLnB1c2goe2VmZmVjdHM6IGNvbGxhcHNlLm9mKERlY29yYXRpb24ucmVwbGFjZSh7YmxvY2s6IHRydWV9KS5yYW5nZShpdGVyLmZyb20saXRlci50bykpLCBhbm5vdGF0aW9uczogdGVtcG9yYXJ5VW5jb2xsYXBzZUFubm90YXRpb24ub2Yoe2RlY29yYXRpb25SYW5nZToge2Zyb206IGl0ZXIuZnJvbSwgdG86IGl0ZXIudG8sIHZhbHVlOiBpdGVyLnZhbHVlfSwgdW5jb2xsYXBzZTogZmFsc2V9KX0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGlmIChleHRyYVRyYW5zYWN0aW9ucy5sZW5ndGggIT09IDApXG5cdFx0XHRcdHJldHVybiBbdHJhbnNhY3Rpb24sLi4uZXh0cmFUcmFuc2FjdGlvbnNdO1xuXHRcdFx0cmV0dXJuIHRyYW5zYWN0aW9uO1xuXHRcdH0pO1xuXHR9XG5cblx0Ly90b2RvIEZpbmlzaCB0aGlzIGZpbHRlclxuXHQvLyBmdW5jdGlvbiBtYW5hZ2VDb2xsYXBzZWRUcmFuc2FjdGlvbkZpbHRlcigpIHtcblx0Ly8gXHRyZXR1cm4gRWRpdG9yU3RhdGUudHJhbnNhY3Rpb25GaWx0ZXIub2YoKHRyYW5zYWN0aW9uKSA9PiB7XG5cdC8vIFx0XHRjb25zdCBleHRyYVRyYW5zYWN0aW9uczogQXJyYXk8VHJhbnNhY3Rpb25TcGVjPiA9IFtdO1xuXHQvLyBcdFx0Y29uc3QgY29sbGFwc2VkUmFuZ2VTZXQgPSB0cmFuc2FjdGlvbi5zdGFydFN0YXRlLmZpZWxkKGNvZGVibG9ja0NvbGxhcHNlLGZhbHNlKSA/PyBEZWNvcmF0aW9uLm5vbmU7XG5cdC8vIFx0XHRjb25zdCB0ZW1wb3JhcmlseVVuY29sbGFwc2VkUmFuZ2VTZXQgPSB0cmFuc2FjdGlvbi5zdGFydFN0YXRlLmZpZWxkKHRlbXBvcmFyaWx5VW5jb2xsYXBzZWQsZmFsc2UpID8/IERlY29yYXRpb24ubm9uZTtcblx0Ly8gXHRcdHRyYW5zYWN0aW9uLmNoYW5nZXMuaXRlckNoYW5nZXMoKGZyb21BLHRvQSxmcm9tQix0b0IsaW5zZXJ0ZWQpPT57XG5cdC8vIFx0XHRcdGlmIChmcm9tQiA9PT0gdG9CICYmIGluc2VydGVkLnRvU3RyaW5nKCkgPT09ICcnKSB7XG5cdC8vIFx0XHRcdFx0Y29uc29sZS5sb2coZnJvbUEsdG9BLGZyb21CLHRvQixpbnNlcnRlZClcblx0Ly8gXHRcdFx0XHRjb2xsYXBzZWRSYW5nZVNldC5iZXR3ZWVuKGZyb21BLTEwMCwgdG9BKzEwMCwgKGNvbGxhcHNlU3RhcnRGcm9tLCBjb2xsYXBzZUVuZFRvLCBkZWNvcmF0aW9uVmFsdWUpID0+IHtcblx0Ly8gXHRcdFx0XHRcdGNvbnNvbGUubG9nKGZyb21BLHRvQSxjb2xsYXBzZVN0YXJ0RnJvbSxjb2xsYXBzZUVuZFRvKVxuXHQvLyBcdFx0XHRcdFx0aWYgKChmcm9tQSA8PSBjb2xsYXBzZVN0YXJ0RnJvbSAmJiBjb2xsYXBzZVN0YXJ0RnJvbSA8PSB0b0EpIHx8IChmcm9tQSA8PSBjb2xsYXBzZUVuZFRvICYmIGNvbGxhcHNlRW5kVG8gPD0gdG9BKSlcblx0Ly8gXHRcdFx0XHRcdFx0ZXh0cmFUcmFuc2FjdGlvbnMucHVzaCh7ZWZmZWN0czogdW5jb2xsYXBzZS5vZih7ZmlsdGVyOiAoZnJvbSx0bykgPT4gKHRvIDw9IGNvbGxhcHNlU3RhcnRGcm9tIHx8IGZyb20gPj0gY29sbGFwc2VFbmRUbyksIGZpbHRlckZyb206IGNvbGxhcHNlU3RhcnRGcm9tLCBmaWx0ZXJUbzogY29sbGFwc2VFbmRUb30pLCBhbm5vdGF0aW9uczogdGVtcG9yYXJ5VW5jb2xsYXBzZUFubm90YXRpb24ub2Yoe2RlY29yYXRpb25SYW5nZToge2Zyb206IGNvbGxhcHNlU3RhcnRGcm9tLCB0bzogY29sbGFwc2VFbmRUbywgdmFsdWU6IGRlY29yYXRpb25WYWx1ZX0sIHVuY29sbGFwc2U6IHRydWV9KX0pO1xuXHQvLyBcdFx0XHRcdH0pO1xuXHQvLyBcdFx0XHR9XG5cdC8vIFx0XHR9KTtcblx0Ly8gXHRcdGlmIChleHRyYVRyYW5zYWN0aW9ucy5sZW5ndGggIT09IDApXG5cdC8vIFx0XHRcdGNvbnNvbGUubG9nKCdmb28nLGV4dHJhVHJhbnNhY3Rpb25zKVxuXHQvLyBcdFx0aWYgKGV4dHJhVHJhbnNhY3Rpb25zLmxlbmd0aCAhPT0gMClcblx0Ly8gXHRcdFx0cmV0dXJuIFt0cmFuc2FjdGlvbiwuLi5leHRyYVRyYW5zYWN0aW9uc107XG5cdC8vIFx0XHRyZXR1cm4gdHJhbnNhY3Rpb247XG5cdC8vIFx0fSk7XG5cdC8vIH1cblxuXHRjbGFzcyBMaW5lTnVtYmVyV2lkZ2V0IGV4dGVuZHMgV2lkZ2V0VHlwZSB7XG5cdFx0bGluZU51bWJlcjogbnVtYmVyO1xuXHRcdGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnM7XG5cdFx0bWF4TGluZU51bTogbnVtYmVyXG5cdFx0ZW1wdHk6IGJvb2xlYW47XG5cdFxuXHRcdGNvbnN0cnVjdG9yKGxpbmVOdW1iZXI6IG51bWJlciwgY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycywgbWF4TGluZU51bTogbnVtYmVyLCBlbXB0eTogYm9vbGVhbikge1xuXHRcdFx0c3VwZXIoKTtcblx0XHRcdHRoaXMubGluZU51bWJlciA9IGxpbmVOdW1iZXI7XG5cdFx0XHR0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMgPSBjb2RlYmxvY2tQYXJhbWV0ZXJzO1xuXHRcdFx0dGhpcy5tYXhMaW5lTnVtID0gbWF4TGluZU51bVxuXHRcdFx0dGhpcy5lbXB0eSA9IGVtcHR5O1xuXHRcdH1cblx0XG5cdFx0ZXEob3RoZXI6IExpbmVOdW1iZXJXaWRnZXQpOiBib29sZWFuIHtcblx0XHRcdHJldHVybiB0aGlzLmxpbmVOdW1iZXIgPT09IG90aGVyLmxpbmVOdW1iZXIgJiYgdGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0VuYWJsZWQgPT09IG90aGVyLmNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRW5hYmxlZCAmJiB0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRGlzYWJsZWQgPT09IG90aGVyLmNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRGlzYWJsZWQgJiYgdGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLm9mZnNldCA9PT0gb3RoZXIuY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5vZmZzZXQgJiYgdGhpcy5tYXhMaW5lTnVtID09PSBvdGhlci5tYXhMaW5lTnVtICYmIHRoaXMuZW1wdHkgPT09IG90aGVyLmVtcHR5O1xuXHRcdH1cblx0XG5cdFx0dG9ET00odmlldzogRWRpdG9yVmlldyk6IEhUTUxFbGVtZW50IHtcblx0XHRcdHJldHVybiBjcmVhdGVTcGFuKHthdHRyOiB7c3R5bGU6IHRoaXMubWF4TGluZU51bS50b1N0cmluZygpLmxlbmd0aCA+ICh0aGlzLmxpbmVOdW1iZXIgKyB0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMub2Zmc2V0KS50b1N0cmluZygpLmxlbmd0aD8nd2lkdGg6IHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci13aWR0aCk7JzonJ30sIGNsczogYGNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJHtnZXRMaW5lTnVtYmVyRGlzcGxheSh0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMpfWAsIHRleHQ6IHRoaXMuZW1wdHk/Jyc6KHRoaXMubGluZU51bWJlciArIHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5vZmZzZXQpLnRvU3RyaW5nKCl9KTtcblx0XHR9XG5cdH1cblx0Y2xhc3MgSGVhZGVyV2lkZ2V0IGV4dGVuZHMgV2lkZ2V0VHlwZSB7XG5cdFx0Y29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycztcblx0XHR0aGVtZVNldHRpbmdzOiBDb2RlU3R5bGVyVGhlbWVTZXR0aW5ncztcblx0XHRsYW5ndWFnZUljb25zOiBSZWNvcmQ8c3RyaW5nLHN0cmluZz47XG5cdFx0dmlldzogRWRpdG9yVmlldztcblx0XHRtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuXHRcblx0XHRjb25zdHJ1Y3Rvcihjb2RlYmxvY2tQYXJhbWV0ZXJzOiBDb2RlYmxvY2tQYXJhbWV0ZXJzLCB0aGVtZVNldHRpbmdzOiBDb2RlU3R5bGVyVGhlbWVTZXR0aW5ncywgbGFuZ3VhZ2VJY29uczogUmVjb3JkPHN0cmluZyxzdHJpbmc+KSB7XG5cdFx0XHRzdXBlcigpO1xuXHRcdFx0dGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzID0gY29kZWJsb2NrUGFyYW1ldGVycztcblx0XHRcdHRoaXMudGhlbWVTZXR0aW5ncyA9IHRoZW1lU2V0dGluZ3M7XG5cdFx0XHR0aGlzLmxhbmd1YWdlSWNvbnMgPSBsYW5ndWFnZUljb25zO1xuXHRcdFx0dGhpcy5tdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuXHRcdFx0XHRtdXRhdGlvbnMuZm9yRWFjaChtdXRhdGlvbiA9PiB7XG5cdFx0XHRcdFx0aWYgKChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmhhc0F0dHJpYnV0ZSgnZGF0YS1jbGlja2VkJykpXG5cdFx0XHRcdFx0XHRjb2xsYXBzZU9uQ2xpY2sodGhpcy52aWV3LChtdXRhdGlvbi50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKVxuXHRcdFx0XHR9KVxuXHRcdFx0fSk7ICAgIFxuXHRcdH1cblx0XHRcdFxuXHRcdGVxKG90aGVyOiBIZWFkZXJXaWRnZXQpOiBib29sZWFuIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSA9PSBvdGhlci5jb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlICYmXG5cdFx0XHRcdHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy50aXRsZSA9PSBvdGhlci5jb2RlYmxvY2tQYXJhbWV0ZXJzLnRpdGxlICYmXG5cdFx0XHRcdHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLmVuYWJsZWQgPT0gb3RoZXIuY29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLmVuYWJsZWQgJiZcblx0XHRcdFx0dGhpcy5jb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQucGxhY2Vob2xkZXIgPT0gb3RoZXIuY29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLnBsYWNlaG9sZGVyICYmXG5cdFx0XHRcdHRoaXMudGhlbWVTZXR0aW5ncy5oZWFkZXIuY29sbGFwc2VQbGFjZWhvbGRlciA9PSBvdGhlci50aGVtZVNldHRpbmdzLmhlYWRlci5jb2xsYXBzZVBsYWNlaG9sZGVyICYmXG5cdFx0XHRcdGdldExhbmd1YWdlSWNvbih0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UsdGhpcy5sYW5ndWFnZUljb25zKSA9PSBnZXRMYW5ndWFnZUljb24ob3RoZXIuY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSxvdGhlci5sYW5ndWFnZUljb25zKVxuXHRcdFx0XHQpO1xuXHRcdH1cblx0XHRcdFxuXHRcdHRvRE9NKHZpZXc6IEVkaXRvclZpZXcpOiBIVE1MRWxlbWVudCB7XG5cdFx0XHR0aGlzLnZpZXcgPSB2aWV3O1xuXHRcdFx0Y29uc3QgaGVhZGVyQ29udGFpbmVyID0gY3JlYXRlSGVhZGVyKHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycywgdGhpcy50aGVtZVNldHRpbmdzLCB0aGlzLmxhbmd1YWdlSWNvbnMpO1xuXHRcdFx0aWYgKHRoaXMuY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSE9PScnKVxuXHRcdFx0XHRoZWFkZXJDb250YWluZXIuY2xhc3NMaXN0LmFkZChgbGFuZ3VhZ2UtJHt0aGlzLmNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2V9YClcblx0XHRcdGhlYWRlckNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsaGFuZGxlTW91c2VEb3duKTtcblx0XG5cdFx0XHR0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShoZWFkZXJDb250YWluZXIse1xuXHRcdFx0XHRhdHRyaWJ1dGVzOiB0cnVlLFxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gaGVhZGVyQ29udGFpbmVyO1xuXHRcdH1cblx0XHRcdFx0XG5cdFx0ZGVzdHJveShkb206IEhUTUxFbGVtZW50KSB7XG5cdFx0XHRkb20ucmVtb3ZlQXR0cmlidXRlKFwiZGF0YS1jbGlja2VkXCIpO1xuXHRcdFx0ZG9tLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIixoYW5kbGVNb3VzZURvd24pO1xuXHRcdFx0dGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblx0XHR9XG5cdFxuXHRcdGlnbm9yZUV2ZW50KCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRjbGFzcyBPcGVuZXJXaWRnZXQgZXh0ZW5kcyBXaWRnZXRUeXBlIHtcblx0XHRpbmxpbmVDb2RlUGFyYW1ldGVyczogSW5saW5lQ29kZVBhcmFtZXRlcnM7XG5cdFx0bGFuZ3VhZ2VJY29uczogUmVjb3JkPHN0cmluZyxzdHJpbmc+O1xuXG5cdFx0Y29uc3RydWN0b3IgKGlubGluZUNvZGVQYXJhbWV0ZXJzOiBJbmxpbmVDb2RlUGFyYW1ldGVycywgbGFuZ3VhZ2VJY29uczogUmVjb3JkPHN0cmluZyxzdHJpbmc+KSB7XG5cdFx0XHRzdXBlcigpO1xuXHRcdFx0dGhpcy5pbmxpbmVDb2RlUGFyYW1ldGVycyA9IGlubGluZUNvZGVQYXJhbWV0ZXJzO1xuXHRcdFx0dGhpcy5sYW5ndWFnZUljb25zID0gbGFuZ3VhZ2VJY29ucztcblx0XHR9XG5cblx0XHRlcShvdGhlcjogT3BlbmVyV2lkZ2V0KTogYm9vbGVhbiB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHR0aGlzLmlubGluZUNvZGVQYXJhbWV0ZXJzLmxhbmd1YWdlID09IG90aGVyLmlubGluZUNvZGVQYXJhbWV0ZXJzLmxhbmd1YWdlICYmXG5cdFx0XHRcdHRoaXMuaW5saW5lQ29kZVBhcmFtZXRlcnMudGl0bGUgPT0gb3RoZXIuaW5saW5lQ29kZVBhcmFtZXRlcnMudGl0bGUgJiZcblx0XHRcdFx0dGhpcy5pbmxpbmVDb2RlUGFyYW1ldGVycy5pY29uID09IG90aGVyLmlubGluZUNvZGVQYXJhbWV0ZXJzLmljb24gJiZcblx0XHRcdFx0Z2V0TGFuZ3VhZ2VJY29uKHRoaXMuaW5saW5lQ29kZVBhcmFtZXRlcnMubGFuZ3VhZ2UsdGhpcy5sYW5ndWFnZUljb25zKSA9PSBnZXRMYW5ndWFnZUljb24ob3RoZXIuaW5saW5lQ29kZVBhcmFtZXRlcnMubGFuZ3VhZ2Usb3RoZXIubGFuZ3VhZ2VJY29ucylcblx0XHRcdFx0KTtcblx0XHR9XG5cblx0XHR0b0RPTSh2aWV3OiBFZGl0b3JWaWV3KTogSFRNTEVsZW1lbnQge1xuXHRcdFx0cmV0dXJuIGNyZWF0ZUlubGluZU9wZW5lcih0aGlzLmlubGluZUNvZGVQYXJhbWV0ZXJzLHRoaXMubGFuZ3VhZ2VJY29ucyxbJ2NvZGUtc3R5bGVyLWlubGluZS1vcGVuZXInLCdjbS1pbmxpbmUtY29kZSddKTtcblx0XHR9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGNvbGxhcHNlT25DbGljayh2aWV3OiBFZGl0b3JWaWV3LCB0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG5cdFx0Y29uc3QgcG9zaXRpb24gPSB2aWV3LnBvc0F0RE9NKHRhcmdldCk7XG5cdFx0bGV0IGZvbGRlZCA9IGZhbHNlO1xuXHRcdHZpZXcuc3RhdGUuZmllbGQoY29kZWJsb2NrQ29sbGFwc2UsZmFsc2UpPy5iZXR3ZWVuKHBvc2l0aW9uLHBvc2l0aW9uLCgpPT57XG5cdFx0XHRmb2xkZWQgPSB0cnVlO1xuXHRcdH0pO1xuXG5cdFx0bGV0IGNvbGxhcHNlU3RhcnQ6IExpbmUgfCBudWxsID0gbnVsbDtcblx0XHRsZXQgY29sbGFwc2VFbmQ6IExpbmUgfCBudWxsID0gbnVsbDtcblx0XHRsZXQgc3RhcnRMaW5lID0gdHJ1ZTtcblx0XHRsZXQgc3RhcnREZWxpbWl0ZXIgPSAnYGBgJztcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8IHZpZXcuc3RhdGUuZG9jLmxpbmVzOyBpKyspIHtcblx0XHRcdGNvbnN0IGxpbmUgPSB2aWV3LnN0YXRlLmRvYy5saW5lKGkpO1xuXHRcdFx0Y29uc3QgbGluZVRleHQgPSBsaW5lLnRleHQudG9TdHJpbmcoKTtcblx0XHRcdGNvbnN0IGN1cnJlbnREZWxpbWl0ZXIgPSB0ZXN0T3BlbmluZ0xpbmUobGluZVRleHQpO1xuXHRcdFx0aWYgKGN1cnJlbnREZWxpbWl0ZXIpIHtcblx0XHRcdFx0aWYgKHN0YXJ0TGluZSkge1xuXHRcdFx0XHRcdHN0YXJ0TGluZSA9IGZhbHNlO1xuXHRcdFx0XHRcdHN0YXJ0RGVsaW1pdGVyID0gY3VycmVudERlbGltaXRlcjtcblx0XHRcdFx0XHRpZiAocG9zaXRpb24gPT09IGxpbmUuZnJvbSlcblx0XHRcdFx0XHRcdGNvbGxhcHNlU3RhcnQgPSBsaW5lO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlmIChjdXJyZW50RGVsaW1pdGVyID09PSBzdGFydERlbGltaXRlcikge1xuXHRcdFx0XHRcdFx0c3RhcnRMaW5lID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGlmIChjb2xsYXBzZVN0YXJ0KVxuXHRcdFx0XHRcdFx0XHRjb2xsYXBzZUVuZCA9IGxpbmU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoY29sbGFwc2VTdGFydCAmJiBjb2xsYXBzZUVuZCkge1xuXHRcdFx0XHRpZiAoZm9sZGVkKVxuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goe2VmZmVjdHM6IHVuY29sbGFwc2Uub2Yoe2ZpbHRlcjogKGZyb20sdG8pID0+ICh0byA8PSAoY29sbGFwc2VTdGFydCBhcyBMaW5lKS5mcm9tIHx8IGZyb20gPj0gKGNvbGxhcHNlRW5kIGFzIExpbmUpLnRvKSwgZmlsdGVyRnJvbTogY29sbGFwc2VFbmQuZnJvbSwgZmlsdGVyVG86IGNvbGxhcHNlRW5kLnRvfSl9KTtcblx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdHZpZXcuZGlzcGF0Y2goe2VmZmVjdHM6IGNvbGxhcHNlLm9mKERlY29yYXRpb24ucmVwbGFjZSh7YmxvY2s6IHRydWV9KS5yYW5nZShjb2xsYXBzZVN0YXJ0LmZyb20sY29sbGFwc2VFbmQudG8pKX0pO1xuXHRcdFx0XHR2aWV3LnJlcXVlc3RNZWFzdXJlKCk7XG5cdFx0XHRcdGNvbGxhcHNlU3RhcnQgPSBudWxsO1xuXHRcdFx0XHRjb2xsYXBzZUVuZCA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0QXR0cmlidXRlKFwiZGF0YS1jbGlja2VkXCIsXCJ0cnVlXCIpO1xuXHR9XG5cblx0Y29uc3QgY29sbGFwc2U6IFN0YXRlRWZmZWN0VHlwZTxSYW5nZTxEZWNvcmF0aW9uPj4gPSBTdGF0ZUVmZmVjdC5kZWZpbmUoKTtcblx0Y29uc3QgdW5jb2xsYXBzZTogU3RhdGVFZmZlY3RUeXBlPHtmaWx0ZXI6IChmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpID0+IGJvb2xlYW4sIGZpbHRlckZyb206IG51bWJlciwgZmlsdGVyVG86IG51bWJlcn0+ID0gU3RhdGVFZmZlY3QuZGVmaW5lKCk7XG5cdGNvbnN0IHRlbXBvcmFyeVVuY29sbGFwc2VBbm5vdGF0aW9uID0gQW5ub3RhdGlvbi5kZWZpbmU8e2RlY29yYXRpb25SYW5nZTogUmFuZ2U8RGVjb3JhdGlvbj4sIHVuY29sbGFwc2U6IGJvb2xlYW59PigpO1xuXG5cdHJldHVybiBbY29kZWJsb2NrTGluZU51bWJlckNoYXJXaWR0aCxjb2RlYmxvY2tMaW5lcyxjb2RlYmxvY2tIZWFkZXIsY29kZWJsb2NrQ29sbGFwc2UsdGVtcG9yYXJpbHlVbmNvbGxhcHNlZCxpbmxpbmVDb2RlRGVjb3JhdG9yLGN1cnNvckludG9Db2xsYXBzZWRUcmFuc2FjdGlvbkZpbHRlcigpXTtcbn1cblxuZnVuY3Rpb24gZ2V0Q2hhcldpZHRoKHN0YXRlOiBFZGl0b3JTdGF0ZSwgZGVmYXVsdF92YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcblx0Y29uc3QgY2hhcldpZHRocyA9IEFycmF5LmZyb20oc3RhdGUuZmllbGQoZWRpdG9yRWRpdG9yRmllbGQpLmNvbnRlbnRET00ucXVlcnlTZWxlY3RvckFsbChcIi5IeXBlck1ELWNvZGVibG9jay1lbmRcIikpLnJlZHVjZSgocmVzdWx0OiBBcnJheTxudW1iZXI+LGJlZ2lubmluZ0VsZW1lbnQ6IEhUTUxFbGVtZW50KTogQXJyYXk8bnVtYmVyPiA9PiB7XG5cdFx0Y29uc3QgbmV4dEVsZW1lbnQgPSBiZWdpbm5pbmdFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0aWYgKCFuZXh0RWxlbWVudClcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0Y29uc3QgbGluZU51bWJlckVsZW1lbnQgPSBuZXh0RWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXVwiKSBhcyBIVE1MRWxlbWVudDtcblx0XHRpZiAoIWxpbmVOdW1iZXJFbGVtZW50IHx8IGxpbmVOdW1iZXJFbGVtZW50LmlubmVyVGV4dC5sZW5ndGggPD0gMilcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0Y29uc3QgY29tcHV0ZWRTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShsaW5lTnVtYmVyRWxlbWVudCwgbnVsbCk7XG5cdFx0cmVzdWx0LnB1c2goKGxpbmVOdW1iZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC0gcGFyc2VGbG9hdChjb21wdXRlZFN0eWxlcy5wYWRkaW5nTGVmdCkgLSBwYXJzZUZsb2F0KGNvbXB1dGVkU3R5bGVzLnBhZGRpbmdSaWdodCkpIC8gbGluZU51bWJlckVsZW1lbnQuaW5uZXJUZXh0Lmxlbmd0aClcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9LFtdKVxuXHRpZiAoY2hhcldpZHRocy5sZW5ndGggPT09IDApXG5cdFx0cmV0dXJuIGRlZmF1bHRfdmFsdWU7XG5cdHJldHVybiBjaGFyV2lkdGhzLnJlZHVjZSgocmVzdWx0LHZhbHVlKT0+cmVzdWx0K3ZhbHVlLDApIC8gY2hhcldpZHRocy5sZW5ndGg7XG59XG5cbmZ1bmN0aW9uIGZpbmRVbmR1cGxpY2F0ZWRDb2RlYmxvY2tzKHZpZXc6IEVkaXRvclZpZXcpOiBBcnJheTxTeW50YXhOb2RlUmVmPiB7XG5cdGNvbnN0IGNvZGVibG9ja3MgPSBmaW5kVmlzaWJsZUNvZGVibG9ja3Modmlldyk7XG5cdGNvbnN0IHVuZHVwbGljYXRlZENvZGVibG9ja3M6IEFycmF5PFN5bnRheE5vZGVSZWY+ID0gW107XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgY29kZWJsb2Nrcy5sZW5ndGg7IGkrKylcblx0XHRpZiAoaSA9PT0gMCB8fCBjb2RlYmxvY2tzW2ldLmZyb20gIT09IGNvZGVibG9ja3NbaSAtIDFdLmZyb20pXG5cdFx0XHR1bmR1cGxpY2F0ZWRDb2RlYmxvY2tzLnB1c2goY29kZWJsb2Nrc1tpXSk7XG5cdHJldHVybiB1bmR1cGxpY2F0ZWRDb2RlYmxvY2tzO1xufVxuZnVuY3Rpb24gZmluZFZpc2libGVDb2RlYmxvY2tzKHZpZXc6IEVkaXRvclZpZXcpOiBBcnJheTxTeW50YXhOb2RlUmVmPiB7XG5cdHJldHVybiBmaW5kQ29kZWJsb2Nrcyh2aWV3KS5maWx0ZXIoKGNvZGVibG9jaykgPT4ge1xuXHRcdHJldHVybiB2aWV3LnZpc2libGVSYW5nZXMuc29tZSgodmlzaWJsZVJhbmdlKSA9PiBjb2RlYmxvY2suZnJvbSA8IHZpc2libGVSYW5nZS50byAmJiBjb2RlYmxvY2sudG8gPiB2aXNpYmxlUmFuZ2UuZnJvbSlcblx0fSlcbn1cbmZ1bmN0aW9uIGZpbmRDb2RlYmxvY2tzKHZpZXc6IEVkaXRvclZpZXcpOiBBcnJheTxTeW50YXhOb2RlUmVmPiB7XG5cdGNvbnN0IGNvZGVibG9ja3M6IEFycmF5PFN5bnRheE5vZGVSZWY+ID0gW107XG5cdHN5bnRheFRyZWUodmlldy5zdGF0ZSkuaXRlcmF0ZSh7XG5cdFx0ZW50ZXI6IChzeW50YXhOb2RlKSA9PiB7XG5cdFx0XHRpZiAoc3ludGF4Tm9kZS50eXBlLm5hbWUuaW5jbHVkZXMoXCJIeXBlck1ELWNvZGVibG9jay1iZWdpblwiKSB8fCBzeW50YXhOb2RlLnR5cGUubmFtZSA9PT0gXCJIeXBlck1ELWNvZGVibG9ja19IeXBlck1ELWNvZGVibG9jay1iZ1wiIHx8IHN5bnRheE5vZGUudHlwZS5uYW1lLmluY2x1ZGVzKFwiSHlwZXJNRC1jb2RlYmxvY2stZW5kXCIpKVxuXHRcdFx0XHRjb2RlYmxvY2tzLnB1c2goc3ludGF4Tm9kZSk7XG5cdFx0fVxuXHR9KVxuXHRyZXR1cm4gY29kZWJsb2Nrcztcbn1cblxuLy9OT1NPTkFSXG4vLyBmdW5jdGlvbiBsYW5ndWFnZUhpZ2hsaWdodCh7c3RhcnQsdGV4dCxsYW5ndWFnZX06IHtzdGFydDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGxhbmd1YWdlOiBzdHJpbmd9LGxvYWRlZExhbmd1YWdlczogUmVjb3JkPHN0cmluZyxMYW5ndWFnZVN1cHBvcnQ+KTogQXJyYXk8UmFuZ2U8RGVjb3JhdGlvbj4+IHtcbi8vIFx0Ly9OT1RFOiBVc2VzIGNvZGVtaXJyb3IgNiBpbXBsZW1lbnRhdGlvbiB3aGljaCBPYnNpZGlhbiBkb2VzIG5vdCBjdXJyZW50bHkgdXNlXG4vLyBcdGxldCBtYXJrRGVjb3JhdGlvbnM6IEFycmF5PFJhbmdlPERlY29yYXRpb24+PiA9IFtdO1xuLy8gXHRjb25zdCB0cmVlID0gbG9hZGVkTGFuZ3VhZ2VzW2xhbmd1YWdlXS5sYW5ndWFnZS5wYXJzZXIucGFyc2UodGV4dCk7XG4vLyBcdGhpZ2hsaWdodFRyZWUodHJlZSxjbGFzc0hpZ2hsaWdodGVyLChmcm9tLHRvLHRva2VuKSA9PiB7IC8vdG9kbyAoQG1heXVyYW5rdikgQ2hhbmdlIHRoaXMgaGlnaGxpZ2h0ZXJcbi8vIFx0XHRpZiAodG9rZW4pXG4vLyBcdFx0XHRtYXJrRGVjb3JhdGlvbnMucHVzaCh7ZnJvbTogc3RhcnQrZnJvbSwgdG86IHN0YXJ0K3RvLCB2YWx1ZTogRGVjb3JhdGlvbi5tYXJrKHtjbGFzczogdG9rZW59KX0pO1xuLy8gXHR9KTtcbi8vIFx0cmV0dXJuIG1hcmtEZWNvcmF0aW9ucztcbi8vIH1cbmZ1bmN0aW9uIG1vZGVIaWdobGlnaHQgKHtzdGFydCx0ZXh0LGxhbmd1YWdlfToge3N0YXJ0OiBudW1iZXIsIHRleHQ6IHN0cmluZywgbGFuZ3VhZ2U6IHN0cmluZ30pOiBBcnJheTxSYW5nZTxEZWNvcmF0aW9uPj4ge1xuXHQvL05PVEU6IFVzZXMgQ29kZU1pcnJvciA1IGltcGxlbWVudGF0aW9uIHdoaWNoIE9ic2lkaWFuIGN1cnJlbnRseSB1c2VzXG5cdGNvbnN0IG1hcmtEZWNvcmF0aW9uczogQXJyYXk8UmFuZ2U8RGVjb3JhdGlvbj4+ID0gW107XG5cdC8vQHRzLWV4cGVjdC1lcnJvciBVbmRvY3VtZW50ZWQgT2JzaWRpYW4gQVBJXG5cdGNvbnN0IG1vZGUgPSB3aW5kb3cuQ29kZU1pcnJvci5nZXRNb2RlKHdpbmRvdy5Db2RlTWlycm9yLmRlZmF1bHRzLHdpbmRvdy5Db2RlTWlycm9yLmZpbmRNb2RlQnlOYW1lKGxhbmd1YWdlKT8ubWltZSk7IC8vIEFsdGVybmF0aXZlczogYHRleHQveC0ke3BhcmFtZXRlcnMubGFuZ3VhZ2V9YCwgd2luZG93LkNvZGVNaXJyb3IuZmluZE1vZGVCeU5hbWUoJ2pzJykubWltZVxuXHRjb25zdCBzdGF0ZSA9IHdpbmRvdy5Db2RlTWlycm9yLnN0YXJ0U3RhdGUobW9kZSk7XG5cdGlmIChtb2RlPy50b2tlbikge1xuXHRcdGNvbnN0IHN0cmVhbSA9IG5ldyB3aW5kb3cuQ29kZU1pcnJvci5TdHJpbmdTdHJlYW0odGV4dCk7XG5cdFx0d2hpbGUgKCFzdHJlYW0uZW9sKCkpIHtcblx0XHRcdGNvbnN0IHN0eWxlID0gbW9kZS50b2tlbihzdHJlYW0sc3RhdGUpO1xuXHRcdFx0aWYgKHN0eWxlKVxuXHRcdFx0XHRtYXJrRGVjb3JhdGlvbnMucHVzaCh7ZnJvbTogc3RhcnQrc3RyZWFtLnN0YXJ0LCB0bzogc3RhcnQrc3RyZWFtLnBvcywgdmFsdWU6IERlY29yYXRpb24ubWFyayh7Y2xhc3M6IGBjbS0ke3N0eWxlfWB9KX0pXG5cdFx0XHRzdHJlYW0uc3RhcnQgPSBzdHJlYW0ucG9zO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbWFya0RlY29yYXRpb25zO1xufVxuXG5mdW5jdGlvbiBlZGl0aW5nVmlld0lnbm9yZShzdGF0ZTogRWRpdG9yU3RhdGUpOiBib29sZWFuIHtcblx0aWYgKCFzdGF0ZS5maWVsZChlZGl0b3JMaXZlUHJldmlld0ZpZWxkKSlcblx0XHRyZXR1cm4gdHJ1ZTtcblx0Y29uc3QgZmlsZVBhdGggPSBzdGF0ZS5maWVsZChlZGl0b3JJbmZvRmllbGQpPy5maWxlPy5wYXRoO1xuXHRpZiAodHlwZW9mIGZpbGVQYXRoICE9PSAndW5kZWZpbmVkJylcblx0XHRyZXR1cm4gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRDYWNoZShmaWxlUGF0aCk/LmZyb250bWF0dGVyPy5bJ2NvZGUtc3R5bGVyLWlnbm9yZSddID09PSB0cnVlO1xuXHRyZXR1cm4gZmFsc2U7XG59XG4iLCAiaW1wb3J0IHsgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuaW1wb3J0IENvZGVTdHlsZXJQbHVnaW4gZnJvbSBcIi4vbWFpblwiO1xuaW1wb3J0IHsgQ29kZVN0eWxlclRoZW1lIH0gZnJvbSBcIi4vU2V0dGluZ3NcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2RlYmxvY2tQYXJhbWV0ZXJzIHtcblx0bGFuZ3VhZ2U6IHN0cmluZztcblx0dGl0bGU6IHN0cmluZztcblx0Zm9sZDoge1xuXHRcdGVuYWJsZWQ6IGJvb2xlYW47XG5cdFx0cGxhY2Vob2xkZXI6IHN0cmluZztcblx0fVxuXHRsaW5lTnVtYmVyczoge1xuXHRcdGFsd2F5c0VuYWJsZWQ6IGJvb2xlYW47XG5cdFx0YWx3YXlzRGlzYWJsZWQ6IGJvb2xlYW47XG5cdFx0b2Zmc2V0OiBudW1iZXI7XG5cdH0sXG5cdGxpbmVVbndyYXA6IHtcblx0XHRhbHdheXNFbmFibGVkOiBib29sZWFuO1xuXHRcdGFsd2F5c0Rpc2FibGVkOiBib29sZWFuO1xuXHRcdGFjdGl2ZVdyYXA6IGJvb2xlYW47XG5cdH0sXG5cdGhpZ2hsaWdodHM6IHtcblx0XHRkZWZhdWx0OiBIaWdobGlnaHRzO1xuXHRcdGFsdGVybmF0aXZlOiBSZWNvcmQ8c3RyaW5nLEhpZ2hsaWdodHM+XG5cdH0sXG5cdGlnbm9yZTogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSW5saW5lQ29kZVBhcmFtZXRlcnMge1xuXHRsYW5ndWFnZTogc3RyaW5nO1xuXHR0aXRsZTogc3RyaW5nO1xuXHRpY29uOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhpZ2hsaWdodHMge1xuXHRsaW5lTnVtYmVyczogQXJyYXk8bnVtYmVyPjtcblx0cGxhaW5UZXh0OiBBcnJheTxzdHJpbmc+O1xuXHRyZWd1bGFyRXhwcmVzc2lvbnM6IEFycmF5PFJlZ0V4cD47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwYXJzZUNvZGVibG9ja1NvdXJjZShjb2RlU2VjdGlvbjogQXJyYXk8c3RyaW5nPiwgc291cmNlUGF0aDogc3RyaW5nLCBwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4pOiBQcm9taXNlPHtjb2RlYmxvY2tzUGFyYW1ldGVyczogQXJyYXk8Q29kZWJsb2NrUGFyYW1ldGVycz4sIG5lc3RlZDogYm9vbGVhbn0+IHtcblx0Ly9AdHMtZXhwZWN0LWVycm9yIFVuZG9jdW1lbnRlZCBPYnNpZGlhbiBBUElcblx0Y29uc3QgcGx1Z2luczogUmVjb3JkPHN0cmluZyxhbnk+ID0gcGx1Z2luLmFwcC5wbHVnaW5zLnBsdWdpbnM7XG5cdGNvbnN0IGFkbW9uaXRpb25zOiBib29sZWFuID0gJ29ic2lkaWFuLWFkbW9uaXRpb24nIGluIHBsdWdpbnM7XG5cdGNvbnN0IGNvZGVibG9ja3M6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG5cdGNvbnN0IGNvZGVibG9ja3NQYXJhbWV0ZXJzOiBBcnJheTxDb2RlYmxvY2tQYXJhbWV0ZXJzPiA9IFtdO1xuXHRmdW5jdGlvbiBwYXJzZUNvZGVibG9ja1NlY3Rpb24oY29kZVNlY3Rpb246IEFycmF5PHN0cmluZz4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGNvZGVTZWN0aW9uLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgIHJldHVybjtcblx0XHRcbiAgICAgICAgY29uc3Qgb3BlbmluZ0NvZGVibG9ja0xpbmUgPSBnZXRPcGVuaW5nTGluZShjb2RlU2VjdGlvbik7XG5cdFx0aWYgKCFvcGVuaW5nQ29kZWJsb2NrTGluZSlcbiAgICAgICAgICAgIHJldHVybjtcblx0XHRcblx0XHRjb25zdCBvcGVuRGVsaW1pdGVyID0gL15cXHMqKD86PlxccyopKigoPzpgYGArfH5+fispKS4qJC8uZXhlYyhvcGVuaW5nQ29kZWJsb2NrTGluZSk/LlsxXTtcblx0XHRpZiAoIW9wZW5EZWxpbWl0ZXIpXG4gICAgICAgICAgICByZXR1cm47XG5cblx0XHRjb25zdCBvcGVuRGVsaW1pdGVySW5kZXggPSBjb2RlU2VjdGlvbi5pbmRleE9mKG9wZW5pbmdDb2RlYmxvY2tMaW5lKTtcblx0XHRjb25zdCBjbG9zZURlbGltaXRlckluZGV4ID0gY29kZVNlY3Rpb24uc2xpY2Uob3BlbkRlbGltaXRlckluZGV4KzEpLmZpbmRJbmRleCgobGluZSk9PmxpbmUuaW5kZXhPZihvcGVuRGVsaW1pdGVyKSE9PS0xKTtcblx0XHRpZiAoIWFkbW9uaXRpb25zIHx8ICEvXlxccyooPzo+XFxzKikqKD86YGBgK3x+fn4rKSAqYWQtLiokLy50ZXN0KG9wZW5pbmdDb2RlYmxvY2tMaW5lKSlcbiAgICAgICAgICAgIGNvZGVibG9ja3MucHVzaChjb2RlU2VjdGlvbi5zbGljZSgwLG9wZW5EZWxpbWl0ZXJJbmRleCsyK2Nsb3NlRGVsaW1pdGVySW5kZXgpKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBwYXJzZUNvZGVibG9ja1NlY3Rpb24oY29kZVNlY3Rpb24uc2xpY2Uob3BlbkRlbGltaXRlckluZGV4KzEsb3BlbkRlbGltaXRlckluZGV4KzErY2xvc2VEZWxpbWl0ZXJJbmRleCkpO1xuICAgICAgICBcblx0XHRwYXJzZUNvZGVibG9ja1NlY3Rpb24oY29kZVNlY3Rpb24uc2xpY2Uob3BlbkRlbGltaXRlckluZGV4KzErY2xvc2VEZWxpbWl0ZXJJbmRleCsxKSk7XG5cdH1cblx0cGFyc2VDb2RlYmxvY2tTZWN0aW9uKGNvZGVTZWN0aW9uKTtcblx0Zm9yIChjb25zdCBjb2RlYmxvY2tMaW5lcyBvZiBjb2RlYmxvY2tzKSB7XG5cdFx0Y29uc3QgcGFyYW1ldGVyTGluZSA9IGdldFBhcmFtZXRlckxpbmUoY29kZWJsb2NrTGluZXMpO1xuXHRcdGlmICghcGFyYW1ldGVyTGluZSlcblx0XHRcdGNvbnRpbnVlO1xuXHRcdGxldCBjb2RlYmxvY2tQYXJhbWV0ZXJzID0gcGFyc2VDb2RlYmxvY2tQYXJhbWV0ZXJzKHBhcmFtZXRlckxpbmUscGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZSk7XG5cdFx0XHRcblx0XHRpZiAoaXNFeGNsdWRlZChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlLHBsdWdpbi5zZXR0aW5ncy5leGNsdWRlZENvZGVibG9ja3MpKVxuXHRcdFx0Y29udGludWU7XG5cdFx0XG5cdFx0Y29kZWJsb2NrUGFyYW1ldGVycyA9IGF3YWl0IHBsdWdpbkFkanVzdFBhcmFtZXRlcnMoY29kZWJsb2NrUGFyYW1ldGVycyxwbHVnaW5zLGNvZGVibG9ja0xpbmVzLHNvdXJjZVBhdGgpO1xuXHRcdGNvZGVibG9ja3NQYXJhbWV0ZXJzLnB1c2goY29kZWJsb2NrUGFyYW1ldGVycyk7XG5cdH1cblx0cmV0dXJuIHtjb2RlYmxvY2tzUGFyYW1ldGVyczogY29kZWJsb2Nrc1BhcmFtZXRlcnMsIG5lc3RlZDogY29kZWJsb2Nrc1swXT8hYXJyYXlzRXF1YWwoY29kZVNlY3Rpb24sY29kZWJsb2Nrc1swXSk6dHJ1ZX1cbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUlubGluZUNvZGUoY29kZVRleHQ6IHN0cmluZyk6IHtwYXJhbWV0ZXJzOiBJbmxpbmVDb2RlUGFyYW1ldGVycyB8IG51bGwsIHRleHQ6IHN0cmluZ30ge1xuXHRcblx0Y29uc3QgbWF0Y2ggPSAvXih7fSA/KT97KFtefV0qKX0gPyguKikkLy5leGVjKGNvZGVUZXh0KTtcblx0XG5cdGlmICghbWF0Y2g/LlsxXSAmJiAhKG1hdGNoPy5bMl0gJiYgbWF0Y2g/LlszXSkpXG5cdFx0cmV0dXJuIHtwYXJhbWV0ZXJzOiBudWxsLCB0ZXh0OiAnJ307XG5cdGVsc2UgaWYgKG1hdGNoPy5bMV0pXG5cdFx0cmV0dXJuIHtwYXJhbWV0ZXJzOiBudWxsLCB0ZXh0OiBtYXRjaFswXS5zdWJzdHJpbmcobWF0Y2hbMV0ubGVuZ3RoKX07XG5cdGVsc2Vcblx0XHRyZXR1cm4ge3BhcmFtZXRlcnM6IHBhcnNlSW5saW5lQ29kZVBhcmFtZXRlcnMobWF0Y2hbMl0pLCB0ZXh0OiBtYXRjaFszXX07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNvZGVibG9ja1BhcmFtZXRlcnMocGFyYW1ldGVyTGluZTogc3RyaW5nLCB0aGVtZTogQ29kZVN0eWxlclRoZW1lKTogQ29kZWJsb2NrUGFyYW1ldGVycyB7XG5cdGNvbnN0IGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnMgPSB7XG5cdFx0bGFuZ3VhZ2U6ICcnLFxuXHRcdHRpdGxlOiAnJyxcblx0XHRmb2xkOiB7XG5cdFx0XHRlbmFibGVkOiBmYWxzZSxcblx0XHRcdHBsYWNlaG9sZGVyOiAnJyxcblx0XHR9LFxuXHRcdGxpbmVOdW1iZXJzOiB7XG5cdFx0XHRhbHdheXNFbmFibGVkOiBmYWxzZSxcblx0XHRcdGFsd2F5c0Rpc2FibGVkOiBmYWxzZSxcblx0XHRcdG9mZnNldDogMCxcblx0XHR9LFxuXHRcdGxpbmVVbndyYXA6IHtcblx0XHRcdGFsd2F5c0VuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0YWx3YXlzRGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0YWN0aXZlV3JhcDogZmFsc2UsXG5cdFx0fSxcblx0XHRoaWdobGlnaHRzOiB7XG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdGxpbmVOdW1iZXJzOiBbXSxcblx0XHRcdFx0cGxhaW5UZXh0OiBbXSxcblx0XHRcdFx0cmVndWxhckV4cHJlc3Npb25zOiBbXSxcblx0XHRcdH0sXG5cdFx0XHRhbHRlcm5hdGl2ZToge30sXG5cdFx0fSxcblx0XHRpZ25vcmU6IGZhbHNlLFxuXHR9XG5cdGlmIChwYXJhbWV0ZXJMaW5lLnN0YXJ0c1dpdGgoJ2BgYCcpKSB7XG5cdFx0cGFyYW1ldGVyTGluZSA9IHBhcmFtZXRlckxpbmUucmVwbGFjZSgvXmBgYCsoPz1bXmBdfCQpLywnJyk7XG5cdH0gZWxzZSBpZiAocGFyYW1ldGVyTGluZS5zdGFydHNXaXRoKCd+fn4nKSkge1xuXHRcdHBhcmFtZXRlckxpbmUgPSBwYXJhbWV0ZXJMaW5lLnJlcGxhY2UoL15+fn4rKD89W15+XXwkKS8sJycpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBjb2RlYmxvY2tQYXJhbWV0ZXJzO1xuXHR9XG5cdGNvbnN0IGxhbmd1YWdlQnJlYWsgPSBwYXJhbWV0ZXJMaW5lLmluZGV4T2YoJyAnKTtcblx0Y29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSA9IHBhcmFtZXRlckxpbmUuc2xpY2UoMCxsYW5ndWFnZUJyZWFrICE9PSAtMT9sYW5ndWFnZUJyZWFrOnBhcmFtZXRlckxpbmUubGVuZ3RoKS50b0xvd2VyQ2FzZSgpO1xuXHRpZiAobGFuZ3VhZ2VCcmVhayA9PT0gLTEpXG5cdFx0cmV0dXJuIGNvZGVibG9ja1BhcmFtZXRlcnM7XG5cdGNvbnN0IHBhcmFtZXRlclN0cmluZ3MgPSBwYXJhbWV0ZXJMaW5lLnNsaWNlKGxhbmd1YWdlQnJlYWsrMSkubWF0Y2goLyg/OlteXFxzXCInXSt8XCJbXlwiXSpcInwnW14nXSonKSsvZyk7XG5cdGlmICghcGFyYW1ldGVyU3RyaW5ncylcblx0XHRyZXR1cm4gY29kZWJsb2NrUGFyYW1ldGVycztcblx0cGFyYW1ldGVyU3RyaW5ncy5mb3JFYWNoKChwYXJhbWV0ZXJTdHJpbmcpID0+IHBhcnNlQ29kZWJsb2NrUGFyYW1ldGVyU3RyaW5nKHBhcmFtZXRlclN0cmluZyxjb2RlYmxvY2tQYXJhbWV0ZXJzLHRoZW1lKSk7XG5cdHJldHVybiBjb2RlYmxvY2tQYXJhbWV0ZXJzO1xufVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBsdWdpbkFkanVzdFBhcmFtZXRlcnMoY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycywgcGx1Z2luczogUmVjb3JkPHN0cmluZyxhbnk+LCBjb2RlYmxvY2tMaW5lczogQXJyYXk8c3RyaW5nPiwgc291cmNlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxDb2RlYmxvY2tQYXJhbWV0ZXJzPiB7XG5cdGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlID09PSAncHJldmlldycpIHtcblx0XHRpZiAoJ29ic2lkaWFuLWNvZGUtcHJldmlldycgaW4gcGx1Z2lucykge1xuXHRcdFx0Y29uc3QgY29kZVByZXZpZXdQYXJhbXMgPSBhd2FpdCBwbHVnaW5zWydvYnNpZGlhbi1jb2RlLXByZXZpZXcnXS5jb2RlKGNvZGVibG9ja0xpbmVzLnNsaWNlKDEsLTEpLmpvaW4oJ1xcbicpLHNvdXJjZVBhdGgpO1xuXHRcdFx0aWYgKCFjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0Rpc2FibGVkICYmICFjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0VuYWJsZWQpIHtcblx0XHRcdFx0aWYgKHR5cGVvZiBjb2RlUHJldmlld1BhcmFtcy5zdGFydCA9PT0gJ251bWJlcicpXG5cdFx0XHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5vZmZzZXQgPSBjb2RlUHJldmlld1BhcmFtcy5zdGFydCAtIDE7XG5cdFx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRW5hYmxlZCA9IGNvZGVQcmV2aWV3UGFyYW1zLmxpbmVOdW1iZXI7XG5cdFx0XHR9XG5cdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmhpZ2hsaWdodHMuZGVmYXVsdC5saW5lTnVtYmVycyA9IFsuLi5uZXcgU2V0KGNvZGVibG9ja1BhcmFtZXRlcnMuaGlnaGxpZ2h0cy5kZWZhdWx0LmxpbmVOdW1iZXJzLmNvbmNhdChBcnJheS5mcm9tKHBsdWdpbnNbJ29ic2lkaWFuLWNvZGUtcHJldmlldyddLmFuYWx5emVIaWdoTGlnaHRMaW5lcyhjb2RlUHJldmlld1BhcmFtcy5saW5lcyxjb2RlUHJldmlld1BhcmFtcy5oaWdobGlnaHQpLChbbnVtLF9dOiBbbnVtYmVyLG51bWJlcl0pPT4obnVtKSkpKV07XG5cdFx0XHRpZiAoY29kZWJsb2NrUGFyYW1ldGVycy50aXRsZSA9PT0gJycpXG5cdFx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMudGl0bGUgPSBjb2RlUHJldmlld1BhcmFtcy5maWxlUGF0aC5zcGxpdCgnXFxcXCcpLnBvcCgpLnNwbGl0KCcvJykucG9wKCk7XG5cdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlID0gY29kZVByZXZpZXdQYXJhbXMubGFuZ3VhZ2U7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UgPT09ICdpbmNsdWRlJykge1xuXHRcdGlmICgnZmlsZS1pbmNsdWRlJyBpbiBwbHVnaW5zKSB7XG5cdFx0XHRjb25zdCBmaWxlSW5jbHVkZUxhbmd1YWdlID0gY29kZWJsb2NrTGluZXNbMF0ubWF0Y2goL2luY2x1ZGUoPzpbOlxcc10rKD88bGFuZz5cXHcrKSk/Lyk/Lmdyb3Vwcz8ubGFuZztcblx0XHRcdGlmICh0eXBlb2YgZmlsZUluY2x1ZGVMYW5ndWFnZSAhPT0gJ3VuZGVmaW5lZCcpXG5cdFx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UgPSBmaWxlSW5jbHVkZUxhbmd1YWdlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gY29kZWJsb2NrUGFyYW1ldGVyc1xufVxuZnVuY3Rpb24gcGFyc2VJbmxpbmVDb2RlUGFyYW1ldGVycyhwYXJhbWV0ZXJMaW5lOiBzdHJpbmcpOiBJbmxpbmVDb2RlUGFyYW1ldGVycyB7XG5cdGNvbnN0IGlubGluZUNvZGVQYXJhbWV0ZXJzOiBJbmxpbmVDb2RlUGFyYW1ldGVycyA9IHtcblx0XHRsYW5ndWFnZTogJycsXG5cdFx0dGl0bGU6ICcnLFxuXHRcdGljb246IGZhbHNlLFxuXHR9XG5cdGNvbnN0IGxhbmd1YWdlQnJlYWsgPSBwYXJhbWV0ZXJMaW5lLmluZGV4T2YoJyAnKTtcblx0aW5saW5lQ29kZVBhcmFtZXRlcnMubGFuZ3VhZ2UgPSBwYXJhbWV0ZXJMaW5lLnNsaWNlKDAsbGFuZ3VhZ2VCcmVhayAhPT0gLTE/bGFuZ3VhZ2VCcmVhazpwYXJhbWV0ZXJMaW5lLmxlbmd0aCkudG9Mb3dlckNhc2UoKTtcblx0aWYgKGxhbmd1YWdlQnJlYWsgPT09IC0xKVxuXHRcdHJldHVybiBpbmxpbmVDb2RlUGFyYW1ldGVycztcblx0Y29uc3QgcGFyYW1ldGVyU3RyaW5ncyA9IHBhcmFtZXRlckxpbmUuc2xpY2UobGFuZ3VhZ2VCcmVhaysxKS5tYXRjaCgvKD86W15cXHNcIiddK3xcIlteXCJdKlwifCdbXiddKicpKy9nKTtcblx0aWYgKCFwYXJhbWV0ZXJTdHJpbmdzKVxuXHRcdHJldHVybiBpbmxpbmVDb2RlUGFyYW1ldGVycztcblx0cGFyYW1ldGVyU3RyaW5ncy5mb3JFYWNoKChwYXJhbWV0ZXJTdHJpbmcpID0+IHBhcnNlSW5saW5lQ29kZVBhcmFtZXRlclN0cmluZyhwYXJhbWV0ZXJTdHJpbmcsaW5saW5lQ29kZVBhcmFtZXRlcnMpKTtcblx0cmV0dXJuIGlubGluZUNvZGVQYXJhbWV0ZXJzO1xufVxuXG5mdW5jdGlvbiBwYXJzZUNvZGVibG9ja1BhcmFtZXRlclN0cmluZyhwYXJhbWV0ZXJTdHJpbmc6IHN0cmluZywgY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycywgdGhlbWU6IENvZGVTdHlsZXJUaGVtZSk6IHZvaWQge1xuXHRpZiAocGFyYW1ldGVyU3RyaW5nLnN0YXJ0c1dpdGgoJ3RpdGxlOicpKSB7XG5cdFx0Y29uc3QgdGl0bGVNYXRjaCA9IC8oW1wiJ10/KShbXlxcMV0rKVxcMS8uZXhlYyhwYXJhbWV0ZXJTdHJpbmcuc2xpY2UoJ3RpdGxlOicubGVuZ3RoKSk7XG5cdFx0aWYgKHRpdGxlTWF0Y2gpXG5cdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLnRpdGxlID0gdGl0bGVNYXRjaFsyXS50cmltKCk7XG5cdH0gZWxzZSBpZiAocGFyYW1ldGVyU3RyaW5nLnN0YXJ0c1dpdGgoJ2ZvbGQ6JykpIHtcblx0XHRjb25zdCBmb2xkUGxhY2Vob2xkZXJNYXRjaCA9IC8oW1wiJ10/KShbXlxcMV0rKVxcMS8uZXhlYyhwYXJhbWV0ZXJTdHJpbmcuc2xpY2UoJ2ZvbGQ6Jy5sZW5ndGgpKTtcblx0XHRpZiAoZm9sZFBsYWNlaG9sZGVyTWF0Y2gpIHtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZCA9IHtcblx0XHRcdFx0ZW5hYmxlZDogdHJ1ZSxcblx0XHRcdFx0cGxhY2Vob2xkZXI6IGZvbGRQbGFjZWhvbGRlck1hdGNoWzJdLnRyaW0oKSxcblx0XHRcdH1cblx0XHR9XG5cdH0gZWxzZSBpZiAocGFyYW1ldGVyU3RyaW5nID09PSAnZm9sZCcpIHtcblx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQgPSB7XG5cdFx0XHRlbmFibGVkOiB0cnVlLFxuXHRcdFx0cGxhY2Vob2xkZXI6ICcnLFxuXHRcdH1cblx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcgPT09ICdpZ25vcmUnKSB7XG5cdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5pZ25vcmUgPSB0cnVlO1xuXHR9IGVsc2UgaWYgKHBhcmFtZXRlclN0cmluZy5zdGFydHNXaXRoKCdsbjonKSkge1xuXHRcdHBhcmFtZXRlclN0cmluZyA9IHBhcmFtZXRlclN0cmluZy5zbGljZSgnbG46Jy5sZW5ndGgpXG5cdFx0aWYgKC9eXFxkKyQvLnRlc3QocGFyYW1ldGVyU3RyaW5nKSkge1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycyA9IHtcblx0XHRcdFx0YWx3YXlzRW5hYmxlZDogdHJ1ZSxcblx0XHRcdFx0YWx3YXlzRGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0XHRvZmZzZXQ6IHBhcnNlSW50KHBhcmFtZXRlclN0cmluZyktMSxcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKHBhcmFtZXRlclN0cmluZy50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpIHtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMgPSB7XG5cdFx0XHRcdGFsd2F5c0VuYWJsZWQ6IHRydWUsXG5cdFx0XHRcdGFsd2F5c0Rpc2FibGVkOiBmYWxzZSxcblx0XHRcdFx0b2Zmc2V0OiAwLFxuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAocGFyYW1ldGVyU3RyaW5nLnRvTG93ZXJDYXNlKCkgPT09ICdmYWxzZScpIHtcblx0XHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMgPSB7XG5cdFx0XHRcdGFsd2F5c0VuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0XHRhbHdheXNEaXNhYmxlZDogdHJ1ZSxcblx0XHRcdFx0b2Zmc2V0OiAwLFxuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcgPT09ICd3cmFwJykge1xuXHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcCA9IHtcblx0XHRcdGFsd2F5c0VuYWJsZWQ6IGZhbHNlLFxuXHRcdFx0YWx3YXlzRGlzYWJsZWQ6IHRydWUsXG5cdFx0XHRhY3RpdmVXcmFwOiBmYWxzZSxcblx0XHR9XG5cdH0gZWxzZSBpZiAocGFyYW1ldGVyU3RyaW5nID09PSAndW53cmFwJykge1xuXHRcdGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcCA9IHtcblx0XHRcdGFsd2F5c0VuYWJsZWQ6IHRydWUsXG5cdFx0XHRhbHdheXNEaXNhYmxlZDogZmFsc2UsXG5cdFx0XHRhY3RpdmVXcmFwOiBmYWxzZSxcblx0XHR9XG5cdH0gZWxzZSBpZiAocGFyYW1ldGVyU3RyaW5nLnN0YXJ0c1dpdGgoJ3Vud3JhcDonKSkge1xuXHRcdHBhcmFtZXRlclN0cmluZyA9IHBhcmFtZXRlclN0cmluZy5zbGljZSgndW53cmFwOicubGVuZ3RoKVxuXHRcdGlmIChwYXJhbWV0ZXJTdHJpbmcudG9Mb3dlckNhc2UoKSA9PT0gJ2luYWN0aXZlJykge1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lVW53cmFwID0ge1xuXHRcdFx0XHRhbHdheXNFbmFibGVkOiB0cnVlLFxuXHRcdFx0XHRhbHdheXNEaXNhYmxlZDogZmFsc2UsXG5cdFx0XHRcdGFjdGl2ZVdyYXA6IHRydWUsXG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnKSB7XG5cdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVVbndyYXAgPSB7XG5cdFx0XHRcdGFsd2F5c0VuYWJsZWQ6IHRydWUsXG5cdFx0XHRcdGFsd2F5c0Rpc2FibGVkOiBmYWxzZSxcblx0XHRcdFx0YWN0aXZlV3JhcDogZmFsc2UsXG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykge1xuXHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5saW5lVW53cmFwID0ge1xuXHRcdFx0XHRhbHdheXNFbmFibGVkOiBmYWxzZSxcblx0XHRcdFx0YWx3YXlzRGlzYWJsZWQ6IHRydWUsXG5cdFx0XHRcdGFjdGl2ZVdyYXA6IGZhbHNlLFxuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRjb25zdCBoaWdobGlnaHRNYXRjaCA9IC9eKFxcdyspOiguKykkLy5leGVjKHBhcmFtZXRlclN0cmluZyk7XG5cdFx0aWYgKGhpZ2hsaWdodE1hdGNoKSB7XG5cdFx0XHRjb25zdCBoaWdobGlnaHRzID0gcGFyc2VIaWdobGlnaHRlZExpbmVzKGhpZ2hsaWdodE1hdGNoWzJdKTtcblx0XHRcdGlmIChoaWdobGlnaHRNYXRjaFsxXSA9PT0gJ2hsJylcblx0XHRcdFx0Y29kZWJsb2NrUGFyYW1ldGVycy5oaWdobGlnaHRzLmRlZmF1bHQgPSBoaWdobGlnaHRzO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHRpZiAoaGlnaGxpZ2h0TWF0Y2hbMV0gaW4gdGhlbWUuY29sb3Vycy5saWdodC5oaWdobGlnaHRzLmFsdGVybmF0aXZlSGlnaGxpZ2h0cylcblx0XHRcdFx0XHRjb2RlYmxvY2tQYXJhbWV0ZXJzLmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmVbaGlnaGxpZ2h0TWF0Y2hbMV1dID0gaGlnaGxpZ2h0cztcblx0XHR9XG5cdH1cbn1cbmZ1bmN0aW9uIHBhcnNlSGlnaGxpZ2h0ZWRMaW5lcyhoaWdobGlnaHRlZExpbmVzU3RyaW5nOiBzdHJpbmcpOiBIaWdobGlnaHRzIHtcblx0Y29uc3QgaGlnaGxpZ2h0UnVsZXMgPSBoaWdobGlnaHRlZExpbmVzU3RyaW5nLnNwbGl0KCcsJyk7XG5cdGNvbnN0IGxpbmVOdW1iZXJzOiBTZXQ8bnVtYmVyPiA9IG5ldyBTZXQoKTtcblx0Y29uc3QgcGxhaW5UZXh0OiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcblx0Y29uc3QgcmVndWxhckV4cHJlc3Npb25zOiBTZXQ8UmVnRXhwPiA9IG5ldyBTZXQoKTtcblx0aGlnaGxpZ2h0UnVsZXMuZm9yRWFjaChoaWdobGlnaHRSdWxlID0+IHtcblx0XHRpZiAoL1xcZCstXFxkKy8udGVzdChoaWdobGlnaHRSdWxlKSkgeyAvLyBOdW1iZXIgUmFuZ2Vcblx0XHRcdGNvbnN0IFtzdGFydCxlbmRdID0gaGlnaGxpZ2h0UnVsZS5zcGxpdCgnLScpLm1hcChudW0gPT4gcGFyc2VJbnQobnVtKSk7XG5cdFx0XHRpZiAoc3RhcnQgJiYgZW5kICYmIHN0YXJ0IDw9IGVuZClcblx0XHRcdFx0QXJyYXkuZnJvbSh7bGVuZ3RoOmVuZC1zdGFydCsxfSwgKF8sbnVtKSA9PiBudW0gKyBzdGFydCkuZm9yRWFjaChsaW5lTnVtYmVyID0+IGxpbmVOdW1iZXJzLmFkZChsaW5lTnVtYmVyKSk7XG5cdFx0fSBlbHNlIGlmICgvXlxcLyguKilcXC8kLy50ZXN0KGhpZ2hsaWdodFJ1bGUpKSB7IC8vIFJlZ2V4XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRyZWd1bGFyRXhwcmVzc2lvbnMuYWRkKG5ldyBSZWdFeHAoaGlnaGxpZ2h0UnVsZS5yZXBsYWNlKC9eXFwvKC4qKVxcLyQvLFwiJDFcIikpKTtcblx0XHRcdH0gY2F0Y2gge1xuXHRcdFx0XHQvL3Bhc3Ncblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKC9cIi4qXCIvLnRlc3QoaGlnaGxpZ2h0UnVsZSkpIHsgLy8gUGxhaW4gVGV4dFxuXHRcdFx0cGxhaW5UZXh0LmFkZChoaWdobGlnaHRSdWxlLnN1YnN0cmluZygxLGhpZ2hsaWdodFJ1bGUubGVuZ3RoLTEpKTtcblx0XHR9IGVsc2UgaWYgKC8nLionLy50ZXN0KGhpZ2hsaWdodFJ1bGUpKSB7IC8vIFBsYWluIFRleHRcblx0XHRcdHBsYWluVGV4dC5hZGQoaGlnaGxpZ2h0UnVsZS5zdWJzdHJpbmcoMSxoaWdobGlnaHRSdWxlLmxlbmd0aC0xKSk7XG5cdFx0fSBlbHNlIGlmICgvXFxELy50ZXN0KGhpZ2hsaWdodFJ1bGUpKSB7IC8vIFBsYWluIFRleHRcblx0XHRcdHBsYWluVGV4dC5hZGQoaGlnaGxpZ2h0UnVsZSk7XG5cdFx0fSBlbHNlIGlmICgvXFxkKy8udGVzdChoaWdobGlnaHRSdWxlKSkgeyAvLyBQbGFpbiBOdW1iZXJcblx0XHRcdGxpbmVOdW1iZXJzLmFkZChwYXJzZUludChoaWdobGlnaHRSdWxlKSk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHtcblx0XHRsaW5lTnVtYmVyczogWy4uLmxpbmVOdW1iZXJzXSxcblx0XHRwbGFpblRleHQ6IFsuLi5wbGFpblRleHRdLFxuXHRcdHJlZ3VsYXJFeHByZXNzaW9uczogWy4uLnJlZ3VsYXJFeHByZXNzaW9uc10sXG5cdH07XG59XG5leHBvcnQgZnVuY3Rpb24gaXNFeGNsdWRlZChsYW5ndWFnZTogc3RyaW5nLCBleGNsdWRlZExhbmd1YWdlc1N0cmluZzogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHJldHVybiBwYXJzZVJlZ2V4RXhjbHVkZWRMYW5ndWFnZXMoZXhjbHVkZWRMYW5ndWFnZXNTdHJpbmcpLnNvbWUocmVnZXhFeGNsdWRlZExhbmd1YWdlID0+IHtcblx0XHRpZiAocmVnZXhFeGNsdWRlZExhbmd1YWdlLnRlc3QobGFuZ3VhZ2UpKVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdH0pO1xufVxuZnVuY3Rpb24gcGFyc2VSZWdleEV4Y2x1ZGVkTGFuZ3VhZ2VzKGV4Y2x1ZGVkTGFuZ3VhZ2VzU3RyaW5nOiBzdHJpbmcpOiBBcnJheTxSZWdFeHA+IHtcblx0cmV0dXJuIGV4Y2x1ZGVkTGFuZ3VhZ2VzU3RyaW5nLnNwbGl0KFwiLFwiKS5tYXAocmVnZXhMYW5ndWFnZSA9PiBuZXcgUmVnRXhwKGBeJHtyZWdleExhbmd1YWdlLnRyaW0oKS5yZXBsYWNlKC9cXCovZywnLisnKX0kYCwnaScpKVxufVxuZnVuY3Rpb24gcGFyc2VJbmxpbmVDb2RlUGFyYW1ldGVyU3RyaW5nKHBhcmFtZXRlclN0cmluZzogc3RyaW5nLCBpbmxpbmVDb2RlUGFyYW1ldGVyczogSW5saW5lQ29kZVBhcmFtZXRlcnMpOiB2b2lkIHtcblx0aWYgKHBhcmFtZXRlclN0cmluZy5zdGFydHNXaXRoKCd0aXRsZTonKSkge1xuXHRcdGNvbnN0IHRpdGxlTWF0Y2ggPSAvKFtcIiddPykoW15cXDFdKylcXDEvLmV4ZWMocGFyYW1ldGVyU3RyaW5nLnNsaWNlKCd0aXRsZTonLmxlbmd0aCkpO1xuXHRcdGlmICh0aXRsZU1hdGNoKVxuXHRcdFx0aW5saW5lQ29kZVBhcmFtZXRlcnMudGl0bGUgPSB0aXRsZU1hdGNoWzJdLnRyaW0oKTtcblx0fSBlbHNlIGlmIChwYXJhbWV0ZXJTdHJpbmcgPT09ICdpY29uJyB8fCAocGFyYW1ldGVyU3RyaW5nLnN0YXJ0c1dpdGgoJ2ljb246JykgJiYgcGFyYW1ldGVyU3RyaW5nLnRvTG93ZXJDYXNlKCkgPT09ICdpY29uOnRydWUnKSkge1xuXHRcdGlubGluZUNvZGVQYXJhbWV0ZXJzLmljb24gPSB0cnVlO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXJhbWV0ZXJMaW5lKGNvZGVibG9ja0xpbmVzOiBBcnJheTxzdHJpbmc+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0bGV0IG9wZW5pbmdDb2RlYmxvY2tMaW5lID0gZ2V0T3BlbmluZ0xpbmUoY29kZWJsb2NrTGluZXMpO1xuXHRpZiAob3BlbmluZ0NvZGVibG9ja0xpbmUgJiYgKG9wZW5pbmdDb2RlYmxvY2tMaW5lICE9PSBjb2RlYmxvY2tMaW5lc1swXSB8fCAvPlxccyooPzpbYH5dKS8udGVzdChvcGVuaW5nQ29kZWJsb2NrTGluZSkpKVxuXHRcdG9wZW5pbmdDb2RlYmxvY2tMaW5lID0gY2xlYW5QYXJhbWV0ZXJMaW5lKG9wZW5pbmdDb2RlYmxvY2tMaW5lKTtcblx0cmV0dXJuIG9wZW5pbmdDb2RlYmxvY2tMaW5lXG59XG5mdW5jdGlvbiBnZXRPcGVuaW5nTGluZShjb2RlYmxvY2tMaW5lczogQXJyYXk8c3RyaW5nPik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBjb2RlYmxvY2tMaW5lcy5maW5kKChsaW5lOiBzdHJpbmcpPT5Cb29sZWFuKHRlc3RPcGVuaW5nTGluZShsaW5lKSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRlc3RPcGVuaW5nTGluZShjb2RlYmxvY2tMaW5lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBsaW5lTWF0Y2ggPSAvXihcXHMqKD86PlxccyopKikoYGBgK3x+fn4rKS8uZXhlYyhjb2RlYmxvY2tMaW5lKTtcblx0aWYgKCFsaW5lTWF0Y2gpXG5cdFx0cmV0dXJuICcnO1xuXHRpZiAoY29kZWJsb2NrTGluZS5pbmRleE9mKGxpbmVNYXRjaFsyXSxsaW5lTWF0Y2hbMV0ubGVuZ3RoK2xpbmVNYXRjaFsyXS5sZW5ndGgrMSk9PT0tMSlcblx0XHRyZXR1cm4gbGluZU1hdGNoWzJdO1xuXHRyZXR1cm4gJyc7XG59XG5mdW5jdGlvbiBjbGVhblBhcmFtZXRlckxpbmUocGFyYW1ldGVyTGluZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIHRyaW1QYXJhbWV0ZXJMaW5lKHBhcmFtZXRlckxpbmUpLnJlcGxhY2UoL14oPzo+XFxzKikqKGBgYCt8fn5+KykvLCckMScpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRyaW1QYXJhbWV0ZXJMaW5lKHBhcmFtZXRlckxpbmU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBwYXJhbWV0ZXJMaW5lLnRyaW0oKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEZpbGVDb250ZW50TGluZXMoc291cmNlUGF0aDogc3RyaW5nLCBwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4pOiBQcm9taXNlPEFycmF5PHN0cmluZz4gfCB1bmRlZmluZWQ+IHtcblx0Y29uc3QgZmlsZSA9IHBsdWdpbi5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHNvdXJjZVBhdGgpO1xuXHRpZiAoIWZpbGUpIHtcblx0XHRjb25zb2xlLmVycm9yKGBGaWxlIG5vdCBmb3VuZDogJHtzb3VyY2VQYXRofWApO1xuXHRcdHJldHVybjtcblx0fVxuXHRjb25zdCBmaWxlQ29udGVudCA9IGF3YWl0IHBsdWdpbi5hcHAudmF1bHQuY2FjaGVkUmVhZCg8VEZpbGU+IGZpbGUpLmNhdGNoKChlcnJvcikgPT4ge1xuXHRcdGNvbnNvbGUuZXJyb3IoYEVycm9yIHJlYWRpbmcgZmlsZTogJHtlcnJvci5tZXNzYWdlfWApO1xuXHRcdHJldHVybiAnJztcblx0fSk7XG5cdGlmICghZmlsZUNvbnRlbnQpXG5cdFx0cmV0dXJuO1xuXHRyZXR1cm4gZmlsZUNvbnRlbnQuc3BsaXQoL1xcbi9nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5c0VxdWFsKGFycmF5MTogQXJyYXk8dW5rbm93bj4sYXJyYXkyOiBBcnJheTx1bmtub3duPik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gYXJyYXkxLmxlbmd0aCA9PT0gYXJyYXkyLmxlbmd0aCAmJiBhcnJheTEuZXZlcnkoKGVsKSA9PiBhcnJheTIuaW5jbHVkZXMoZWwpKTtcbn1cbiIsICJpbXBvcnQgeyBMQU5HVUFHRV9OQU1FUywgQ29kZVN0eWxlclRoZW1lU2V0dGluZ3MgfSBmcm9tIFwiLi9TZXR0aW5nc1wiO1xuaW1wb3J0IHsgQ29kZWJsb2NrUGFyYW1ldGVycywgSGlnaGxpZ2h0cywgSW5saW5lQ29kZVBhcmFtZXRlcnMgfSBmcm9tIFwiLi9Db2RlYmxvY2tQYXJzaW5nXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVIZWFkZXIoY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycywgdGhlbWVTZXR0aW5nczogQ29kZVN0eWxlclRoZW1lU2V0dGluZ3MsIGxhbmd1YWdlSWNvbnM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPik6IEhUTUxFbGVtZW50IHtcblx0Y29uc3QgaGVhZGVyQ29udGFpbmVyID0gY3JlYXRlRGl2KHtjbHM6IGBjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJHsoY29kZWJsb2NrUGFyYW1ldGVycy5mb2xkLmVuYWJsZWQgfHwgY29kZWJsb2NrUGFyYW1ldGVycy50aXRsZSAhPT0gJycpPyctc3BlY2lmaWMnOicnfWB9KTtcblx0aWYgKGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UgIT09ICcnKXtcblx0XHRjb25zdCBpY29uVVJMID0gZ2V0TGFuZ3VhZ2VJY29uKGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UsbGFuZ3VhZ2VJY29ucylcblx0XHRpZiAoaWNvblVSTCAhPT0gbnVsbClcblx0XHRcdGhlYWRlckNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVhdGVJbWFnZVdyYXBwZXIoaWNvblVSTCxjcmVhdGVEaXYoKSkpO1xuXHRcdGhlYWRlckNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVhdGVEaXYoe2NsczogYGNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctJHtjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlfWAsIHRleHQ6IGdldExhbmd1YWdlVGFnKGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UpfSkpO1xuXHR9XG5cdFxuXHRsZXQgaGVhZGVyVGV4dCA9ICcnO1xuXHRpZiAoY29kZWJsb2NrUGFyYW1ldGVycy50aXRsZSAhPT0gJycpXG5cdFx0aGVhZGVyVGV4dCA9IGNvZGVibG9ja1BhcmFtZXRlcnMudGl0bGU7XG5cdGVsc2UgaWYgKGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5lbmFibGVkKVxuXHRcdGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQucGxhY2Vob2xkZXIhPT0nJylcblx0XHRcdGhlYWRlclRleHQgPSBjb2RlYmxvY2tQYXJhbWV0ZXJzLmZvbGQucGxhY2Vob2xkZXI7XG5cdFx0ZWxzZVxuXHRcdFx0aGVhZGVyVGV4dCA9IHRoZW1lU2V0dGluZ3MuaGVhZGVyLmNvbGxhcHNlUGxhY2Vob2xkZXIhPT0nJz90aGVtZVNldHRpbmdzLmhlYWRlci5jb2xsYXBzZVBsYWNlaG9sZGVyOidDb2xsYXBzZWQgQ29kZSc7XG5cdGhlYWRlckNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVhdGVEaXYoe2NsczogXCJjb2RlLXN0eWxlci1oZWFkZXItdGV4dFwiLCB0ZXh0OiBoZWFkZXJUZXh0fSkpOyAgIFxuXG5cdHJldHVybiBoZWFkZXJDb250YWluZXI7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW5saW5lT3BlbmVyKGlubGluZUNvZGVQYXJhbWV0ZXJzOiBJbmxpbmVDb2RlUGFyYW1ldGVycywgbGFuZ3VhZ2VJY29uczogUmVjb3JkPHN0cmluZyxzdHJpbmc+LCBjb250YWluZXJDbGFzc2VzOiBBcnJheTxzdHJpbmc+ID0gWydjb2RlLXN0eWxlci1pbmxpbmUtb3BlbmVyJ10pOiBIVE1MRWxlbWVudCB7XG5cdGNvbnN0IG9wZW5lckNvbnRhaW5lciA9IGNyZWF0ZVNwYW4oe2NsczogY29udGFpbmVyQ2xhc3Nlcy5qb2luKCcgJyl9KTtcblx0aWYgKGlubGluZUNvZGVQYXJhbWV0ZXJzLmljb24pIHtcblx0XHRjb25zdCBpY29uVVJMID0gZ2V0TGFuZ3VhZ2VJY29uKGlubGluZUNvZGVQYXJhbWV0ZXJzLmxhbmd1YWdlLGxhbmd1YWdlSWNvbnMpO1xuXHRcdGlmIChpY29uVVJMICE9PSBudWxsKVxuXHRcdFx0b3BlbmVyQ29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0ZUltYWdlV3JhcHBlcihpY29uVVJMLGNyZWF0ZVNwYW4oKSxgY29kZS1zdHlsZXItaW5saW5lLWljb25gKSk7XG5cdH1cblx0aWYgKGlubGluZUNvZGVQYXJhbWV0ZXJzLnRpdGxlKVxuXHRcdG9wZW5lckNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuKHtjbHM6IGBjb2RlLXN0eWxlci1pbmxpbmUtdGl0bGVgLCB0ZXh0OiBpbmxpbmVDb2RlUGFyYW1ldGVycy50aXRsZX0pKTtcblx0cmV0dXJuIG9wZW5lckNvbnRhaW5lcjtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUltYWdlV3JhcHBlcihpY29uVVJMOiBzdHJpbmcsIGltYWdlV3JhcHBlcjogSFRNTEVsZW1lbnQsIGltZ0NsYXNzID0gXCJjb2RlLXN0eWxlci1pY29uXCIpOiBIVE1MRWxlbWVudCB7XG5cdGNvbnN0IGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG5cdGltZy5jbGFzc0xpc3QuYWRkKGltZ0NsYXNzKTtcblx0aW1nLnNyYyA9IGljb25VUkw7XG5cdGltYWdlV3JhcHBlci5hcHBlbmRDaGlsZChpbWcpO1xuXHRyZXR1cm4gaW1hZ2VXcmFwcGVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VJY29uKGxhbmd1YWdlOiBzdHJpbmcsIGxhbmd1YWdlSWNvbnM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPikge1xuXHRsYW5ndWFnZSA9IGdldExhbmd1YWdlVGFnKGxhbmd1YWdlKTtcblx0aWYgKGxhbmd1YWdlIGluIGxhbmd1YWdlSWNvbnMpXG5cdFx0cmV0dXJuIGxhbmd1YWdlSWNvbnNbbGFuZ3VhZ2VdO1xuXHRyZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGdldExhbmd1YWdlVGFnKGxhbmd1YWdlOiBzdHJpbmcpIHtcblx0aWYgKGxhbmd1YWdlIGluIExBTkdVQUdFX05BTUVTKVxuXHRcdHJldHVybiBMQU5HVUFHRV9OQU1FU1tsYW5ndWFnZV07XG5cdGVsc2UgaWYgKGxhbmd1YWdlICE9PSAnJylcblx0XHRyZXR1cm4gbGFuZ3VhZ2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBsYW5ndWFnZS5zbGljZSgxKTtcblx0cmV0dXJuIFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5lQ2xhc3MoY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycywgbGluZU51bWJlcjogbnVtYmVyLCBsaW5lOiBzdHJpbmcpOiBBcnJheTxzdHJpbmc+IHtcblx0bGV0IGNsYXNzTGlzdDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXHRpZiAoY29kZWJsb2NrUGFyYW1ldGVycy5oaWdobGlnaHRzLmRlZmF1bHQubGluZU51bWJlcnMuaW5jbHVkZXMobGluZU51bWJlcitjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLm9mZnNldCkgfHwgY29kZWJsb2NrUGFyYW1ldGVycy5oaWdobGlnaHRzLmRlZmF1bHQucGxhaW5UZXh0LnNvbWUodGV4dCA9PiBsaW5lLmluZGV4T2YodGV4dCkgPiAtMSkgfHwgY29kZWJsb2NrUGFyYW1ldGVycy5oaWdobGlnaHRzLmRlZmF1bHQucmVndWxhckV4cHJlc3Npb25zLnNvbWUocmVnRXhwID0+IHJlZ0V4cC50ZXN0KGxpbmUpKSlcblx0XHRjbGFzc0xpc3QucHVzaCgnY29kZS1zdHlsZXItbGluZS1oaWdobGlnaHRlZCcpO1xuXHRPYmplY3QuZW50cmllcyhjb2RlYmxvY2tQYXJhbWV0ZXJzLmhpZ2hsaWdodHMuYWx0ZXJuYXRpdmUpLmZvckVhY2goKFthbHRlcm5hdGl2ZUhpZ2hsaWdodCxoaWdobGlnaHRlZExpbmVzXTogW3N0cmluZyxIaWdobGlnaHRzXSkgPT4ge1xuXHRcdGlmIChoaWdobGlnaHRlZExpbmVzLmxpbmVOdW1iZXJzLmluY2x1ZGVzKGxpbmVOdW1iZXIrY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5vZmZzZXQpIHx8IGhpZ2hsaWdodGVkTGluZXMucGxhaW5UZXh0LnNvbWUodGV4dCA9PiBsaW5lLmluZGV4T2YodGV4dCkgPiAtMSkgfHwgaGlnaGxpZ2h0ZWRMaW5lcy5yZWd1bGFyRXhwcmVzc2lvbnMuc29tZShyZWdFeHAgPT4gcmVnRXhwLnRlc3QobGluZSkpKVxuXHRcdFx0Y2xhc3NMaXN0LnB1c2goYGNvZGUtc3R5bGVyLWxpbmUtaGlnaGxpZ2h0ZWQtJHthbHRlcm5hdGl2ZUhpZ2hsaWdodC5yZXBsYWNlKC9cXHMrL2csICctJykudG9Mb3dlckNhc2UoKX1gKTtcblx0fSlcblx0aWYgKGNsYXNzTGlzdC5sZW5ndGggPT09IDApXG5cdFx0Y2xhc3NMaXN0ID0gWydjb2RlLXN0eWxlci1saW5lJ11cblx0cmV0dXJuIGNsYXNzTGlzdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRMaW5lTnVtYmVyRGlzcGxheShjb2RlYmxvY2tQYXJhbWV0ZXJzOiBDb2RlYmxvY2tQYXJhbWV0ZXJzKTogc3RyaW5nIHtcblx0bGV0IGxpbmVOdW1iZXJEaXNwbGF5ID0gJyc7XG5cdGlmICghY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5hbHdheXNFbmFibGVkICYmIGNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRGlzYWJsZWQpXG5cdFx0bGluZU51bWJlckRpc3BsYXkgPSAnLWhpZGUnO1xuXHRlbHNlIGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxpbmVOdW1iZXJzLmFsd2F5c0VuYWJsZWQgJiYgIWNvZGVibG9ja1BhcmFtZXRlcnMubGluZU51bWJlcnMuYWx3YXlzRGlzYWJsZWQpXG5cdFx0bGluZU51bWJlckRpc3BsYXkgPSAnLXNwZWNpZmljJztcblx0cmV0dXJuIGxpbmVOdW1iZXJEaXNwbGF5O1xufVxuIiwgImltcG9ydCB7IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uLCBDYWNoZWRNZXRhZGF0YSwgc2FuaXRpemVIVE1MVG9Eb20sIEZyb250TWF0dGVyQ2FjaGUsIE1hcmtkb3duUmVuZGVyZXIsIENvbXBvbmVudCB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHt1bmlmaWVkfSBmcm9tIFwidW5pZmllZFwiO1xuaW1wb3J0IHJlbWFya1BhcnNlIGZyb20gXCJyZW1hcmstcGFyc2VcIjtcbmltcG9ydCB7dmlzaXR9IGZyb20gXCJ1bmlzdC11dGlsLXZpc2l0XCI7XG5cbmltcG9ydCBDb2RlU3R5bGVyUGx1Z2luIGZyb20gXCIuL21haW5cIjtcbmltcG9ydCB7IFRSQU5TSVRJT05fTEVOR1RIIH0gZnJvbSBcIi4vU2V0dGluZ3NcIjtcbmltcG9ydCB7IENvZGVibG9ja1BhcmFtZXRlcnMsIElubGluZUNvZGVQYXJhbWV0ZXJzLCBnZXRGaWxlQ29udGVudExpbmVzLCBpc0V4Y2x1ZGVkLCBwYXJzZUNvZGVibG9ja1NvdXJjZSwgcGFyc2VJbmxpbmVDb2RlIH0gZnJvbSBcIi4vQ29kZWJsb2NrUGFyc2luZ1wiO1xuaW1wb3J0IHsgY3JlYXRlSGVhZGVyLCBjcmVhdGVJbmxpbmVPcGVuZXIsIGdldExpbmVDbGFzcyBhcyBnZXRMaW5lQ2xhc3NlcywgZ2V0TGluZU51bWJlckRpc3BsYXkgfSBmcm9tIFwiLi9Db2RlYmxvY2tEZWNvcmF0aW5nXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkaW5nVmlld0NvZGVibG9ja0RlY29yYXRpbmdQb3N0UHJvY2Vzc29yKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB7c291cmNlUGF0aCxnZXRTZWN0aW9uSW5mbyxmcm9udG1hdHRlcn06IHtzb3VyY2VQYXRoOiBzdHJpbmcsIGdldFNlY3Rpb25JbmZvOiAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uIHwgbnVsbCwgZnJvbnRtYXR0ZXI6IEZyb250TWF0dGVyQ2FjaGUgfCB1bmRlZmluZWR9LCBwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4sIGVkaXRpbmdFbWJlZHMgPSBmYWxzZSkge1xuXHRjb25zdCBjYWNoZTogQ2FjaGVkTWV0YWRhdGEgfCBudWxsID0gcGx1Z2luLmFwcC5tZXRhZGF0YUNhY2hlLmdldENhY2hlKHNvdXJjZVBhdGgpO1xuXHRpZiAoIXNvdXJjZVBhdGggfHwgIWVsZW1lbnQgfHwgKGZyb250bWF0dGVyID8/IGNhY2hlPy5mcm9udG1hdHRlcik/LlsnY29kZS1zdHlsZXItaWdub3JlJ10gPT09IHRydWUpXG5cdFx0cmV0dXJuO1xuXG5cdGVkaXRpbmdFbWJlZHMgPSBlZGl0aW5nRW1iZWRzIHx8IEJvb2xlYW4oZWxlbWVudC5tYXRjaFBhcmVudChcIi5jbS1lbWJlZC1ibG9ja1wiKSk7XG5cdGNvbnN0IHNwZWNpZmljID0gIWVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi52aWV3LWNvbnRlbnQgPiAqXCIpO1xuXHRjb25zdCBwcmludGluZyA9IEJvb2xlYW4oZWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiZGl2LnByaW50ID4gKlwiKSk7XG5cdGlmIChwcmludGluZyAmJiAhcGx1Z2luLnNldHRpbmdzLmRlY29yYXRlUHJpbnQpXG5cdFx0cmV0dXJuO1xuXG5cdGNvbnN0IGNvZGVibG9ja1ByZUVsZW1lbnRzOiBBcnJheTxIVE1MRWxlbWVudD4gPSBhd2FpdCBnZXRDb2RlYmxvY2tQcmVFbGVtZW50cyhlbGVtZW50LHNwZWNpZmljLGVkaXRpbmdFbWJlZHMpO1xuXHRpZiAoY29kZWJsb2NrUHJlRWxlbWVudHMubGVuZ3RoID09PSAwICYmICEoZWRpdGluZ0VtYmVkcyAmJiBzcGVjaWZpYykpXG5cdFx0cmV0dXJuO1xuXG5cdGNvbnN0IGNvZGVibG9ja1NlY3Rpb25JbmZvOiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiB8IG51bGwgPSBnZXRTZWN0aW9uSW5mbyhjb2RlYmxvY2tQcmVFbGVtZW50c1swXSk7XG5cdGlmIChjb2RlYmxvY2tTZWN0aW9uSW5mbyAmJiBzcGVjaWZpYyAmJiAhZWRpdGluZ0VtYmVkcylcblx0XHRhd2FpdCByZW5kZXJTcGVjaWZpY1JlYWRpbmdTZWN0aW9uKGNvZGVibG9ja1ByZUVsZW1lbnRzLHNvdXJjZVBhdGgsY29kZWJsb2NrU2VjdGlvbkluZm8scGx1Z2luKTtcblx0ZWxzZSBpZiAoc3BlY2lmaWMgJiYgIXByaW50aW5nKVxuXHRcdGF3YWl0IHJldHJpZ2dlclByb2Nlc3NvcihlbGVtZW50LHtzb3VyY2VQYXRoLGdldFNlY3Rpb25JbmZvLGZyb250bWF0dGVyfSxwbHVnaW4sZWRpdGluZ0VtYmVkcyk7XG5cdGVsc2Vcblx0XHRhd2FpdCByZW5kZXJEb2N1bWVudChjb2RlYmxvY2tQcmVFbGVtZW50cyxzb3VyY2VQYXRoLGNhY2hlLGVkaXRpbmdFbWJlZHMscHJpbnRpbmcscGx1Z2luKTtcbn1cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkaW5nVmlld0lubGluZURlY29yYXRpbmdQb3N0UHJvY2Vzc29yKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCB7c291cmNlUGF0aH06IHtzb3VyY2VQYXRoOiBzdHJpbmcsIGdldFNlY3Rpb25JbmZvOiAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uIHwgbnVsbCwgZnJvbnRtYXR0ZXI6IEZyb250TWF0dGVyQ2FjaGUgfCB1bmRlZmluZWR9LCBwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4pIHtcblx0aWYgKCFzb3VyY2VQYXRoIHx8ICFlbGVtZW50KVxuXHRcdHJldHVybjtcblx0Zm9yIChjb25zdCBpbmxpbmVDb2RlRWxlbWVudCBvZiBBcnJheS5mcm9tKGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnOm5vdChwcmUpID4gY29kZScpKSkge1xuXHRcdGF3YWl0IHJlbWFrZUlubGluZUNvZGUoaW5saW5lQ29kZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQscGx1Z2luKTtcblx0fVxufVxuZXhwb3J0IGZ1bmN0aW9uIGRlc3Ryb3lSZWFkaW5nTW9kZUVsZW1lbnRzKCk6IHZvaWQge1xuXHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmNvZGUtc3R5bGVyLXByZS1wYXJlbnRcIikuZm9yRWFjaChjb2RlYmxvY2tQcmVQYXJlbnQgPT4ge1xuXHRcdGNvZGVibG9ja1ByZVBhcmVudC5jbGFzc0xpc3QucmVtb3ZlKCdjb2RlLXN0eWxlci1wcmUtcGFyZW50Jyk7XG5cdH0pO1xuXHRbXG5cdFx0Li4uQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwicHJlLmNvZGUtc3R5bGVyLXByZSBkaXZbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ11cIikpLFxuXHRcdC4uLkFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInByZS5jb2RlLXN0eWxlci1wcmUgZGl2W2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXVwiKSksXG5cdFx0Li4uQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiOm5vdChwcmUpID4gY29kZSBzcGFuLmNvZGUtc3R5bGVyLWlubGluZS1vcGVuZXJcIikpLFxuXHRdLmZvckVhY2goZWxlbWVudCA9PiBlbGVtZW50LnJlbW92ZSgpKTtcblx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInByZS5jb2RlLXN0eWxlci1wcmVcIikuZm9yRWFjaCgoY29kZWJsb2NrUHJlRWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcblx0XHRjb2RlYmxvY2tQcmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2NvZGUtc3R5bGVyLXByZScpO1xuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnY29kZS1zdHlsZXItY29sbGFwc2VkJyk7XG5cdFx0Y29kZWJsb2NrUHJlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnLS10cnVlLWhlaWdodCcpO1xuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tbGluZS1udW1iZXItbWFyZ2luJyk7XG5cdFx0Y29kZWJsb2NrUHJlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWF4LWhlaWdodCcpO1xuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3doaXRlLXNwYWNlJyk7XG5cdH0pO1xuXHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmUgPiBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQnKS5mb3JFYWNoKChleGVjdXRlQ29kZU91dHB1dDogSFRNTEVsZW1lbnQpID0+IHtcblx0XHRleGVjdXRlQ29kZU91dHB1dC5jbGFzc0xpc3QucmVtb3ZlKCdleGVjdXRlLWNvZGUtb3V0cHV0Jyk7XG5cdFx0ZXhlY3V0ZUNvZGVPdXRwdXQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tdHJ1ZS1oZWlnaHQnKTtcblx0XHRleGVjdXRlQ29kZU91dHB1dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWF4LWhlaWdodCcpO1xuXHR9KTtcblx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlID4gY29kZTpudGgtb2YtdHlwZSgxKScpLmZvckVhY2goKGNvZGVibG9ja0NvZGVFbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuXHRcdGNvZGVibG9ja0NvZGVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLXRydWUtaGVpZ2h0Jyk7XG5cdFx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJy0tbGluZS13cmFwcGluZycpO1xuXHRcdGNvZGVibG9ja0NvZGVFbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCctLWxpbmUtYWN0aXZlLXdyYXBwaW5nJyk7XG5cdFx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ21heC1oZWlnaHQnKTtcblx0XHRjb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnd2hpdGUtc3BhY2UnKTtcblx0XHRjb2RlYmxvY2tDb2RlRWxlbWVudC5pbm5lckhUTUwgPSBBcnJheS5mcm9tKGNvZGVibG9ja0NvZGVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2NvZGUgPiBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXScpKS5yZWR1Y2UoKHJlY29uc3RydWN0ZWRDb2RlYmxvY2tMaW5lczogQXJyYXk8c3RyaW5nPiwgY29kZWJsb2NrTGluZTogSFRNTEVsZW1lbnQpOiBBcnJheTxzdHJpbmc+ID0+IHtcblx0XHRcdGNvbnN0IGNvZGVibG9ja0xpbmVUZXh0ID0gKGNvZGVibG9ja0xpbmUuZmlyc3RDaGlsZCBhcyBIVE1MRWxlbWVudCk7XG5cdFx0XHRpZiAoY29kZWJsb2NrTGluZVRleHQpXG5cdFx0XHRcdHJlY29uc3RydWN0ZWRDb2RlYmxvY2tMaW5lcy5wdXNoKGNvZGVibG9ja0xpbmVUZXh0LmlubmVySFRNTCk7XG5cdFx0XHRyZXR1cm4gcmVjb25zdHJ1Y3RlZENvZGVibG9ja0xpbmVzXG5cdFx0fSxbXSkuam9pbignXFxuJykrJ1xcbic7XG5cdH0pO1xuXHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiOm5vdChwcmUpID4gY29kZVwiKS5mb3JFYWNoKChpbmxpbmVDb2RlRWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcblx0XHRpbmxpbmVDb2RlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdjb2RlLXN0eWxlci1oaWdobGlnaHRlZCcpO1xuXHRcdGlubGluZUNvZGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2NvZGUtc3R5bGVyLWhpZ2hsaWdodC1pZ25vcmUnKTtcblx0XHRpbmxpbmVDb2RlRWxlbWVudC5pbm5lclRleHQgPSBpbmxpbmVDb2RlRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJwYXJhbWV0ZXJzXCIpICsgaW5saW5lQ29kZUVsZW1lbnQuaW5uZXJUZXh0O1xuXHR9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyU3BlY2lmaWNSZWFkaW5nU2VjdGlvbihjb2RlYmxvY2tQcmVFbGVtZW50czogQXJyYXk8SFRNTEVsZW1lbnQ+LCBzb3VyY2VQYXRoOiBzdHJpbmcsIGNvZGVibG9ja1NlY3Rpb25JbmZvOiBNYXJrZG93blNlY3Rpb25JbmZvcm1hdGlvbiwgcGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luKTogUHJvbWlzZTx2b2lkPiB7XG5cdGNvbnN0IGNvZGVibG9ja3NQYXJhbWV0ZXJzID0gKGF3YWl0IHBhcnNlQ29kZWJsb2NrU291cmNlKEFycmF5LmZyb20oe2xlbmd0aDogY29kZWJsb2NrU2VjdGlvbkluZm8ubGluZUVuZC1jb2RlYmxvY2tTZWN0aW9uSW5mby5saW5lU3RhcnQrMX0sIChfLG51bSkgPT4gbnVtICsgY29kZWJsb2NrU2VjdGlvbkluZm8ubGluZVN0YXJ0KS5tYXAoKGxpbmVOdW1iZXIpPT5jb2RlYmxvY2tTZWN0aW9uSW5mby50ZXh0LnNwbGl0KCdcXG4nKVtsaW5lTnVtYmVyXSksc291cmNlUGF0aCxwbHVnaW4pKS5jb2RlYmxvY2tzUGFyYW1ldGVycztcblx0aWYgKGNvZGVibG9ja1ByZUVsZW1lbnRzLmxlbmd0aCAhPT0gY29kZWJsb2Nrc1BhcmFtZXRlcnMubGVuZ3RoKVxuXHRcdHJldHVybjtcblx0Zm9yIChjb25zdCBba2V5LGNvZGVibG9ja1ByZUVsZW1lbnRdIG9mIGNvZGVibG9ja1ByZUVsZW1lbnRzLmVudHJpZXMoKSkge1xuXHRcdGNvbnN0IGNvZGVibG9ja1BhcmFtZXRlcnMgPSBjb2RlYmxvY2tzUGFyYW1ldGVyc1trZXldO1xuXHRcdGNvbnN0IGNvZGVibG9ja0NvZGVFbGVtZW50ID0gY29kZWJsb2NrUHJlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdwcmUgPiBjb2RlJyk7XG5cdFx0aWYgKCFjb2RlYmxvY2tDb2RlRWxlbWVudClcblx0XHRcdHJldHVybjtcblx0XHRpZiAoQXJyYXkuZnJvbShjb2RlYmxvY2tDb2RlRWxlbWVudC5jbGFzc0xpc3QpLnNvbWUoY2xhc3NOYW1lID0+IC9ebGFuZ3VhZ2UtXFxTKy8udGVzdChjbGFzc05hbWUpKSlcblx0XHRcdHdoaWxlKCFjb2RlYmxvY2tDb2RlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJpcy1sb2FkZWRcIikpXG5cdFx0XHRcdGF3YWl0IHNsZWVwKDIpO1xuXHRcdGlmIChpc0V4Y2x1ZGVkKGNvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2UscGx1Z2luLnNldHRpbmdzLmV4Y2x1ZGVkTGFuZ3VhZ2VzKSB8fCBjb2RlYmxvY2tQYXJhbWV0ZXJzLmlnbm9yZSlcblx0XHRcdGNvbnRpbnVlO1xuXHRcdGF3YWl0IHJlbWFrZUNvZGVibG9jayhjb2RlYmxvY2tDb2RlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxjb2RlYmxvY2tQcmVFbGVtZW50LGNvZGVibG9ja1BhcmFtZXRlcnMsdHJ1ZSxwbHVnaW4pO1xuXHR9XG59XG5hc3luYyBmdW5jdGlvbiByZXRyaWdnZXJQcm9jZXNzb3IoZWxlbWVudDogSFRNTEVsZW1lbnQsIGNvbnRleHQ6IHtzb3VyY2VQYXRoOiBzdHJpbmcsIGdldFNlY3Rpb25JbmZvOiAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IE1hcmtkb3duU2VjdGlvbkluZm9ybWF0aW9uIHwgbnVsbCwgZnJvbnRtYXR0ZXI6IEZyb250TWF0dGVyQ2FjaGUgfCB1bmRlZmluZWR9LCBwbHVnaW46IENvZGVTdHlsZXJQbHVnaW4sIGVkaXRpbmdFbWJlZHM6IGJvb2xlYW4pIHtcblx0YXdhaXQgc2xlZXAoNTApO1xuXHRlZGl0aW5nRW1iZWRzID0gZWRpdGluZ0VtYmVkcyB8fCBCb29sZWFuKGVsZW1lbnQubWF0Y2hQYXJlbnQoXCIuY20tZW1iZWQtYmxvY2tcIikpO1xuXHRpZiAoZWRpdGluZ0VtYmVkcyB8fCAhZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJhZG1vbml0aW9uLWNvbnRlbnRcIikpIHtcblx0XHRjb25zdCBjb250ZW50RWwgPSBlbGVtZW50Lm1hdGNoUGFyZW50KCcudmlldy1jb250ZW50JykgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0YXdhaXQgcmVhZGluZ1ZpZXdDb2RlYmxvY2tEZWNvcmF0aW5nUG9zdFByb2Nlc3Nvcihjb250ZW50RWwgfHwgKGVsZW1lbnQubWF0Y2hQYXJlbnQoJ2Rpdi5wcmludCcpIGFzIEhUTUxFbGVtZW50KSxjb250ZXh0LHBsdWdpbixlZGl0aW5nRW1iZWRzKTsgLy8gUmUtcmVuZGVyIHdob2xlIGRvY3VtZW50XG5cdH1cbn1cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlckRvY3VtZW50KGNvZGVibG9ja1ByZUVsZW1lbnRzOiBBcnJheTxIVE1MRWxlbWVudD4sIHNvdXJjZVBhdGg6IHN0cmluZywgY2FjaGU6IENhY2hlZE1ldGFkYXRhIHwgbnVsbCwgZWRpdGluZ0VtYmVkczogYm9vbGVhbiwgcHJpbnRpbmc6IGJvb2xlYW4sIHBsdWdpbjogQ29kZVN0eWxlclBsdWdpbikge1xuXHRjb25zdCBjb2RlYmxvY2tzUGFyYW1ldGVyczogQXJyYXk8Q29kZWJsb2NrUGFyYW1ldGVycz4gPSBhd2FpdCBnZXRDb2RlYmxvY2tzUGFyYW1ldGVycyhzb3VyY2VQYXRoLGNhY2hlLHBsdWdpbixlZGl0aW5nRW1iZWRzKTtcblx0aWYgKGNvZGVibG9ja3NQYXJhbWV0ZXJzLmxlbmd0aCAhPT0gY29kZWJsb2NrUHJlRWxlbWVudHMubGVuZ3RoKVxuXHRcdHJldHVybjtcblxuXHR0cnkge1xuXHRcdGZvciAoY29uc3QgW2tleSxjb2RlYmxvY2tQcmVFbGVtZW50XSBvZiBBcnJheS5mcm9tKGNvZGVibG9ja1ByZUVsZW1lbnRzKS5lbnRyaWVzKCkpIHtcblx0XHRcdGNvbnN0IGNvZGVibG9ja1BhcmFtZXRlcnMgPSBjb2RlYmxvY2tzUGFyYW1ldGVyc1trZXldO1xuXHRcdFx0Y29uc3QgY29kZWJsb2NrQ29kZUVsZW1lbnQ6IEhUTUxQcmVFbGVtZW50IHwgbnVsbCA9IGNvZGVibG9ja1ByZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcInByZSA+IGNvZGVcIik7XG5cdFx0XHRpZiAoIWNvZGVibG9ja0NvZGVFbGVtZW50KVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHRpZiAoQXJyYXkuZnJvbShjb2RlYmxvY2tDb2RlRWxlbWVudC5jbGFzc0xpc3QpLnNvbWUoY2xhc3NOYW1lID0+IC9ebGFuZ3VhZ2UtXFxTKy8udGVzdChjbGFzc05hbWUpKSlcblx0XHRcdFx0d2hpbGUoIWNvZGVibG9ja0NvZGVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcImlzLWxvYWRlZFwiKSlcblx0XHRcdFx0XHRhd2FpdCBzbGVlcCgyKTtcblx0XHRcdGlmIChjb2RlYmxvY2tDb2RlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiY29kZSBbY2xhc3MqPSdjb2RlLXN0eWxlci1saW5lJ11cIikpXG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0aWYgKGlzRXhjbHVkZWQoY29kZWJsb2NrUGFyYW1ldGVycy5sYW5ndWFnZSxwbHVnaW4uc2V0dGluZ3MuZXhjbHVkZWRMYW5ndWFnZXMpIHx8IGNvZGVibG9ja1BhcmFtZXRlcnMuaWdub3JlKVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdGF3YWl0IHJlbWFrZUNvZGVibG9jayhjb2RlYmxvY2tDb2RlRWxlbWVudCxjb2RlYmxvY2tQcmVFbGVtZW50LGNvZGVibG9ja1BhcmFtZXRlcnMsIXByaW50aW5nLHBsdWdpbik7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdGNvbnNvbGUuZXJyb3IoYEVycm9yIHJlbmRlcmluZyBkb2N1bWVudDogJHtlcnJvci5tZXNzYWdlfWApO1xuXHRcdHJldHVybjtcblx0fVxufVxuXG5hc3luYyBmdW5jdGlvbiByZW1ha2VDb2RlYmxvY2soY29kZWJsb2NrQ29kZUVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb2RlYmxvY2tQcmVFbGVtZW50OiBIVE1MRWxlbWVudCwgY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycywgZHluYW1pYzogYm9vbGVhbiwgcGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luKSB7XG5cdGlmIChkeW5hbWljKVxuXHRcdHBsdWdpbi5leGVjdXRlQ29kZU11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShjb2RlYmxvY2tQcmVFbGVtZW50LHtjaGlsZExpc3Q6IHRydWUsc3VidHJlZTogdHJ1ZSxhdHRyaWJ1dGVzOiB0cnVlLGNoYXJhY3RlckRhdGE6IHRydWV9KTsgLy8gQWRkIEV4ZWN1dGUgQ29kZSBPYnNlcnZlclxuXHRcblx0aW5zZXJ0SGVhZGVyKGNvZGVibG9ja1ByZUVsZW1lbnQsY29kZWJsb2NrUGFyYW1ldGVycyxwbHVnaW4sZHluYW1pYyk7XG5cdFxuXHRjb2RlYmxvY2tQcmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoLi4uZ2V0UHJlQ2xhc3Nlcyhjb2RlYmxvY2tQYXJhbWV0ZXJzLGR5bmFtaWMpKTtcblx0aWYgKGNvZGVibG9ja1ByZUVsZW1lbnQucGFyZW50RWxlbWVudClcblx0XHRjb2RlYmxvY2tQcmVFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChgY29kZS1zdHlsZXItcHJlLXBhcmVudGApO1xuXHRcblx0aWYgKCFjb2RlYmxvY2tDb2RlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiY29kZSBbY2xhc3MqPSdjb2RlLXN0eWxlci1saW5lJ11cIikpIC8vIElnbm9yZSBzdHlsZWQgbGluZXNcblx0XHRkZWNvcmF0ZUNvZGVibG9ja0xpbmVzKGNvZGVibG9ja0NvZGVFbGVtZW50LGNvZGVibG9ja1BhcmFtZXRlcnMpXG59XG5hc3luYyBmdW5jdGlvbiByZW1ha2VJbmxpbmVDb2RlKGlubGluZUNvZGVFbGVtZW50OiBIVE1MRWxlbWVudCwgcGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChpbmxpbmVDb2RlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ2NvZGUtc3R5bGVyLWlubGluZScpKVxuXHRcdHJldHVybjtcblx0Y29uc3QgaW5saW5lQ29kZVRleHQgPSBpbmxpbmVDb2RlRWxlbWVudC5pbm5lclRleHQ7XG5cdGNvbnN0IHtwYXJhbWV0ZXJzLHRleHR9ID0gcGFyc2VJbmxpbmVDb2RlKGlubGluZUNvZGVUZXh0KTtcblx0aWYgKHBhcmFtZXRlcnMgJiYgcGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuc3ludGF4SGlnaGxpZ2h0KVxuXHRcdGlubGluZUNvZGVFbGVtZW50LmlubmVySFRNTCA9IGF3YWl0IGdldEhpZ2hsaWdodGVkSFRNTChwYXJhbWV0ZXJzLHRleHQscGx1Z2luKTtcblx0ZWxzZSBpZiAoKCFwYXJhbWV0ZXJzICYmIHRleHQpIHx8IChwYXJhbWV0ZXJzICYmICFwbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLmlubGluZS5zeW50YXhIaWdobGlnaHQpKVxuXHRcdGlubGluZUNvZGVFbGVtZW50LmlubmVySFRNTCA9IHRleHQ7XG5cdGVsc2Vcblx0XHRyZXR1cm47XG5cdFxuXHRpbmxpbmVDb2RlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjb2RlLXN0eWxlci1pbmxpbmUnKTtcblx0aWYgKHBhcmFtZXRlcnMpIHtcblx0XHRjb25zdCBwYXJhbWV0ZXJTdHJpbmcgPSBpbmxpbmVDb2RlVGV4dC5zdWJzdHJpbmcoMCxpbmxpbmVDb2RlVGV4dC5sYXN0SW5kZXhPZih0ZXh0KSk7XG5cdFx0aW5saW5lQ29kZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwicGFyYW1ldGVyc1wiLHBhcmFtZXRlclN0cmluZyk7IC8vIFN0b3JlIHBhcmFtZXRlciBzdHJpbmcgYXMgYXR0cmlidXRlIHNvIG9yaWdpbmFsIHRleHQgY2FuIGJlIHJlc3RvcmVkIG9uIHBsdWdpbiByZW1vdmFsXG5cdFx0aWYgKHBhcmFtZXRlcnMuaWNvbiB8fCBwYXJhbWV0ZXJzLnRpdGxlKVxuXHRcdFx0aW5saW5lQ29kZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNyZWF0ZUlubGluZU9wZW5lcihwYXJhbWV0ZXJzLHBsdWdpbi5sYW5ndWFnZUljb25zKSxpbmxpbmVDb2RlRWxlbWVudC5jaGlsZE5vZGVzWzBdKTtcblx0fVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb2RlYmxvY2tQcmVFbGVtZW50cyhlbGVtZW50OiBIVE1MRWxlbWVudCwgc3BlY2lmaWM6IGJvb2xlYW4sZWRpdGluZ0VtYmVkczogYm9vbGVhbik6IFByb21pc2U8QXJyYXk8SFRNTEVsZW1lbnQ+PiB7XG5cdGxldCBjb2RlYmxvY2tQcmVFbGVtZW50czogQXJyYXk8SFRNTEVsZW1lbnQ+O1xuXHRpZiAoIWVkaXRpbmdFbWJlZHMgJiYgIXNwZWNpZmljKVxuXHRcdGNvZGVibG9ja1ByZUVsZW1lbnRzID0gQXJyYXkuZnJvbShlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5tYXJrZG93bi1yZWFkaW5nLXZpZXcgcHJlOm5vdCguZnJvbnRtYXR0ZXIpJykpO1xuXHRlbHNlIGlmIChlZGl0aW5nRW1iZWRzICYmICFzcGVjaWZpYylcblx0XHRjb2RlYmxvY2tQcmVFbGVtZW50cyA9IEFycmF5LmZyb20oZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubWFya2Rvd24tc291cmNlLXZpZXcgLmNtLWVtYmVkLWJsb2NrIHByZTpub3QoLmZyb250bWF0dGVyKScpKTtcblx0ZWxzZSBpZiAoIWVkaXRpbmdFbWJlZHMgJiYgc3BlY2lmaWMpIHtcblx0XHRjb2RlYmxvY2tQcmVFbGVtZW50cyA9IEFycmF5LmZyb20oZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdwcmU6bm90KC5mcm9udG1hdHRlciknKSk7XG5cdFx0Y29uc3QgYWRtb25pdGlvbkNvZGVFbGVtZW50ID0gY29kZWJsb2NrUHJlRWxlbWVudHM/LlswXT8ucXVlcnlTZWxlY3RvcigncHJlOm5vdChbY2xhc3NdKSA+IGNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtYWQtXCJdJyk7XG5cdFx0aWYgKGFkbW9uaXRpb25Db2RlRWxlbWVudCkge1xuXHRcdFx0YXdhaXQgc2xlZXAoNTApO1xuXHRcdFx0Y29kZWJsb2NrUHJlRWxlbWVudHMgPSBBcnJheS5mcm9tKGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgncHJlOm5vdCguZnJvbnRtYXR0ZXIpJykpO1xuXHRcdH1cblx0fSBlbHNlXG5cdFx0Y29kZWJsb2NrUHJlRWxlbWVudHMgPSBbXTtcblx0cmV0dXJuIGNvZGVibG9ja1ByZUVsZW1lbnRzXG59XG5hc3luYyBmdW5jdGlvbiBnZXRDb2RlYmxvY2tzUGFyYW1ldGVycyhzb3VyY2VQYXRoOiBzdHJpbmcsIGNhY2hlOiBDYWNoZWRNZXRhZGF0YSB8IG51bGwsIHBsdWdpbjogQ29kZVN0eWxlclBsdWdpbiwgZWRpdGluZ0VtYmVkczogYm9vbGVhbik6IFByb21pc2U8QXJyYXk8Q29kZWJsb2NrUGFyYW1ldGVycz4+IHtcblx0bGV0IGNvZGVibG9ja3NQYXJhbWV0ZXJzOiBBcnJheTxDb2RlYmxvY2tQYXJhbWV0ZXJzPiA9IFtdO1xuXHRjb25zdCBmaWxlQ29udGVudExpbmVzID0gYXdhaXQgZ2V0RmlsZUNvbnRlbnRMaW5lcyhzb3VyY2VQYXRoLHBsdWdpbik7XG5cdGlmICghZmlsZUNvbnRlbnRMaW5lcylcblx0XHRyZXR1cm4gW107XG5cblx0aWYgKHR5cGVvZiBjYWNoZT8uc2VjdGlvbnMgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0Zm9yIChjb25zdCBzZWN0aW9uIG9mIGNhY2hlLnNlY3Rpb25zKSB7XG5cdFx0XHRpZiAoIWVkaXRpbmdFbWJlZHMgfHwgc2VjdGlvbi50eXBlID09PSAnY29kZScgfHwgc2VjdGlvbi50eXBlID09PSAnY2FsbG91dCcpIHtcblx0XHRcdFx0Y29uc3QgcGFyc2VkQ29kZWJsb2Nrc1BhcmFtZXRlcnMgPSBhd2FpdCBwYXJzZUNvZGVibG9ja1NvdXJjZShmaWxlQ29udGVudExpbmVzLnNsaWNlKHNlY3Rpb24ucG9zaXRpb24uc3RhcnQubGluZSxzZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lKzEpLHNvdXJjZVBhdGgscGx1Z2luKTtcblx0XHRcdFx0aWYgKCFlZGl0aW5nRW1iZWRzIHx8IHBhcnNlZENvZGVibG9ja3NQYXJhbWV0ZXJzLm5lc3RlZClcblx0XHRcdFx0XHRjb2RlYmxvY2tzUGFyYW1ldGVycyA9IGNvZGVibG9ja3NQYXJhbWV0ZXJzLmNvbmNhdChwYXJzZWRDb2RlYmxvY2tzUGFyYW1ldGVycy5jb2RlYmxvY2tzUGFyYW1ldGVycyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2Vcblx0XHRjb25zb2xlLmVycm9yKGBNZXRhZGF0YSBjYWNoZSBub3QgZm91bmQgZm9yIGZpbGU6ICR7c291cmNlUGF0aH1gKTtcblx0cmV0dXJuIGNvZGVibG9ja3NQYXJhbWV0ZXJzO1xufVxuYXN5bmMgZnVuY3Rpb24gdG9nZ2xlRm9sZChjb2RlYmxvY2tQcmVFbGVtZW50OiBIVE1MRWxlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuXHRjb2RlYmxvY2tQcmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZSA+IGNvZGUnKS5mb3JFYWNoKChjb2RlYmxvY2tDb2RlRWxlbWVudDogSFRNTEVsZW1lbnQpPT5jb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnbWF4LWhlaWdodCcsYGNhbGMoJHtNYXRoLmNlaWwoY29kZWJsb2NrQ29kZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0KzAuMDEpfXB4ICsgdmFyKC0tY29kZS1wYWRkaW5nKSAqICR7Y29kZWJsb2NrQ29kZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdleGVjdXRlLWNvZGUtb3V0cHV0Jyk/JzMuNSArIHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpJzonMid9KWApKTtcblx0YXdhaXQgc2xlZXAoMSk7XG5cdGNvZGVibG9ja1ByZUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShcImNvZGUtc3R5bGVyLWNvbGxhcHNlZFwiKTtcblx0YXdhaXQgc2xlZXAoVFJBTlNJVElPTl9MRU5HVEgpO1xuXHRjb2RlYmxvY2tQcmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3ByZSA+IGNvZGUnKS5mb3JFYWNoKChjb2RlYmxvY2tDb2RlRWxlbWVudDogSFRNTEVsZW1lbnQpPT5jb2RlYmxvY2tDb2RlRWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWF4LWhlaWdodCcpKTtcbn1cbmZ1bmN0aW9uIGluc2VydEhlYWRlcihjb2RlYmxvY2tQcmVFbGVtZW50OiBIVE1MRWxlbWVudCwgY29kZWJsb2NrUGFyYW1ldGVyczogQ29kZWJsb2NrUGFyYW1ldGVycywgcGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luLCBkeW5hbWljOiBib29sZWFuKTogdm9pZCB7XG5cdGNvbnN0IGhlYWRlckNvbnRhaW5lciA9IGNyZWF0ZUhlYWRlcihjb2RlYmxvY2tQYXJhbWV0ZXJzLCBwbHVnaW4uc2V0dGluZ3MuY3VycmVudFRoZW1lLnNldHRpbmdzLHBsdWdpbi5sYW5ndWFnZUljb25zKTtcblx0aWYgKGR5bmFtaWMpXG5cdFx0aGVhZGVyQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCgpPT57dG9nZ2xlRm9sZChjb2RlYmxvY2tQcmVFbGVtZW50KX0pOyAvLyBBZGQgbGlzdGVuZXIgZm9yIGhlYWRlciBjb2xsYXBzaW5nIG9uIGNsaWNrXG5cdGNvZGVibG9ja1ByZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGhlYWRlckNvbnRhaW5lcixjb2RlYmxvY2tQcmVFbGVtZW50LmNoaWxkTm9kZXNbMF0pO1xufVxuZnVuY3Rpb24gZ2V0UHJlQ2xhc3Nlcyhjb2RlYmxvY2tQYXJhbWV0ZXJzOiBDb2RlYmxvY2tQYXJhbWV0ZXJzLCBkeW5hbWljOiBib29sZWFuKTogQXJyYXk8c3RyaW5nPiB7XG5cdGNvbnN0IHByZUNsYXNzTGlzdCA9IFsnY29kZS1zdHlsZXItcHJlJ107XG5cdGlmIChjb2RlYmxvY2tQYXJhbWV0ZXJzLmxhbmd1YWdlKVxuXHRcdHByZUNsYXNzTGlzdC5wdXNoKGBsYW5ndWFnZS0ke2NvZGVibG9ja1BhcmFtZXRlcnMubGFuZ3VhZ2V9YCk7XG5cdGlmIChkeW5hbWljKSB7XG5cdFx0aWYgKGNvZGVibG9ja1BhcmFtZXRlcnMuZm9sZC5lbmFibGVkKVxuXHRcdFx0cHJlQ2xhc3NMaXN0LnB1c2goXCJjb2RlLXN0eWxlci1jb2xsYXBzZWRcIik7XG5cdFx0aWYgKGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcC5hbHdheXNFbmFibGVkKVxuXHRcdFx0cHJlQ2xhc3NMaXN0LnB1c2goY29kZWJsb2NrUGFyYW1ldGVycy5saW5lVW53cmFwLmFjdGl2ZVdyYXA/J3Vud3JhcHBlZC1pbmFjdGl2ZSc6J3Vud3JhcHBlZCcpO1xuXHRcdGVsc2UgaWYgKGNvZGVibG9ja1BhcmFtZXRlcnMubGluZVVud3JhcC5hbHdheXNEaXNhYmxlZClcblx0XHRcdHByZUNsYXNzTGlzdC5wdXNoKCd1bndyYXBwZWQnKTtcblx0fVxuXHRyZXR1cm4gcHJlQ2xhc3NMaXN0O1xufVxuZnVuY3Rpb24gZGVjb3JhdGVDb2RlYmxvY2tMaW5lcyhjb2RlYmxvY2tDb2RlRWxlbWVudDogSFRNTEVsZW1lbnQsIGNvZGVibG9ja1BhcmFtZXRlcnM6IENvZGVibG9ja1BhcmFtZXRlcnMpOiB2b2lkIHtcblx0Z2V0Q29kZWJsb2NrTGluZXMoY29kZWJsb2NrQ29kZUVsZW1lbnQpLmZvckVhY2goKGxpbmUsaW5kZXgsY29kZWJsb2NrTGluZXMpID0+IHtcblx0XHRpZiAoaW5kZXggIT09IGNvZGVibG9ja0xpbmVzLmxlbmd0aC0xKVxuXHRcdFx0aW5zZXJ0TGluZVdyYXBwZXIoY29kZWJsb2NrQ29kZUVsZW1lbnQsY29kZWJsb2NrUGFyYW1ldGVycyxpbmRleCsxLGxpbmUpO1xuXHR9KTtcbn1cbmZ1bmN0aW9uIGdldENvZGVibG9ja0xpbmVzKGNvZGVibG9ja0NvZGVFbGVtZW50OiBIVE1MRWxlbWVudCk6IEFycmF5PHN0cmluZz4ge1xuXHRmdW5jdGlvbiBlc2NhcGVIVE1MKHBsYWludGV4dDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHBsYWludGV4dC5yZXBsYWNlKC88L2csJyZsdDsnKS5yZXBsYWNlKC8+L2csJyZndDsnKS5yZXBsYWNlKC9cIi9nLCcmcXVvdDsnKTtcblx0fVxuXG5cdGNvbnN0IHRyZWUgPSB1bmlmaWVkKCkudXNlKHJlbWFya1BhcnNlKS5wYXJzZShjb2RlYmxvY2tDb2RlRWxlbWVudC5pbm5lckhUTUwucmVwbGFjZSgvXFxuL2csJzxicj4nKSk7XG5cdGNvbnN0IHN0YWNrOiBBcnJheTxzdHJpbmc+ID0gW107XG5cdGxldCBjb2RlYmxvY2tIVE1MID0gJyc7XG5cdHZpc2l0KHRyZWUsWyd0ZXh0JywnaHRtbCddLChub2RlKT0+e1xuXHRcdGlmIChub2RlLnR5cGUgPT09ICdodG1sJyAmJiBub2RlLnZhbHVlICE9PSAnPGJyPicpIHtcblx0XHRcdGlmIChub2RlLnZhbHVlLnN0YXJ0c1dpdGgoJzxzcGFuJykpXG5cdFx0XHRcdHN0YWNrLnB1c2gobm9kZS52YWx1ZSk7XG5cdFx0XHRlbHNlIGlmIChub2RlLnZhbHVlLnN0YXJ0c1dpdGgoJzwvc3BhbicpKVxuXHRcdFx0XHRzdGFjay5wb3AoKTtcblx0XHR9IGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ2h0bWwnICYmIG5vZGUudmFsdWUgPT09ICc8YnI+Jylcblx0XHRcdG5vZGUudmFsdWUgPSAnPC9zcGFuPicucmVwZWF0KHN0YWNrLmxlbmd0aCkrJzxicj4nK3N0YWNrLmpvaW4oJycpO1xuXHRcdGVsc2UgaWYgKG5vZGUudHlwZSA9PT0gJ3RleHQnKVxuXHRcdFx0bm9kZS52YWx1ZSA9IGVzY2FwZUhUTUwobm9kZS52YWx1ZSk7XG5cdFx0aWYgKCd2YWx1ZScgaW4gbm9kZSlcblx0XHRcdGNvZGVibG9ja0hUTUwgKz0gbm9kZS52YWx1ZTtcblx0fSk7XG5cdGxldCBjb2RlYmxvY2tMaW5lcyA9IGNvZGVibG9ja0hUTUwuc3BsaXQoJzxicj4nKTtcblx0aWYgKGNvZGVibG9ja0xpbmVzLmxlbmd0aCA9PSAxKVxuXHRcdGNvZGVibG9ja0xpbmVzID0gWycnLCcnXTtcblx0Y29kZWJsb2NrQ29kZUVsZW1lbnQuaW5uZXJIVE1MID0gXCJcIjtcblx0cmV0dXJuIGNvZGVibG9ja0xpbmVzO1xufVxuZnVuY3Rpb24gaW5zZXJ0TGluZVdyYXBwZXIoY29kZWJsb2NrQ29kZUVsZW1lbnQ6IEhUTUxFbGVtZW50LCBjb2RlYmxvY2tQYXJhbWV0ZXJzOiBDb2RlYmxvY2tQYXJhbWV0ZXJzLCBsaW5lTnVtYmVyOiBudW1iZXIsIGxpbmU6IHN0cmluZyk6IHZvaWQge1xuXHRjb25zdCBsaW5lV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdGNvZGVibG9ja0NvZGVFbGVtZW50LmFwcGVuZENoaWxkKGxpbmVXcmFwcGVyKTtcblx0Z2V0TGluZUNsYXNzZXMoY29kZWJsb2NrUGFyYW1ldGVycyxsaW5lTnVtYmVyLGxpbmUpLmZvckVhY2goKGxpbmVDbGFzcykgPT4gbGluZVdyYXBwZXIuY2xhc3NMaXN0LmFkZChsaW5lQ2xhc3MpKTtcblx0bGluZVdyYXBwZXIuYXBwZW5kQ2hpbGQoY3JlYXRlRGl2KHtjbHM6IGBjb2RlLXN0eWxlci1saW5lLW51bWJlciR7Z2V0TGluZU51bWJlckRpc3BsYXkoY29kZWJsb2NrUGFyYW1ldGVycyl9YCwgdGV4dDogKGxpbmVOdW1iZXIrY29kZWJsb2NrUGFyYW1ldGVycy5saW5lTnVtYmVycy5vZmZzZXQpLnRvU3RyaW5nKCl9KSk7XG5cdGxpbmVXcmFwcGVyLmFwcGVuZENoaWxkKGNyZWF0ZURpdih7Y2xzOiBgY29kZS1zdHlsZXItbGluZS10ZXh0YCwgdGV4dDogc2FuaXRpemVIVE1MVG9Eb20obGluZSAhPT0gXCJcIiA/IGxpbmUgOiBcIjxicj5cIil9KSk7XG59XG5hc3luYyBmdW5jdGlvbiBnZXRIaWdobGlnaHRlZEhUTUwocGFyYW1ldGVyczogSW5saW5lQ29kZVBhcmFtZXRlcnMsIHRleHQ6IHN0cmluZywgcGx1Z2luOiBDb2RlU3R5bGVyUGx1Z2luKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0Y29uc3QgdGVtcG9yYXJ5UmVuZGVyaW5nQ29udGFpbmVyID0gY3JlYXRlRGl2KCk7XG5cdE1hcmtkb3duUmVuZGVyZXIucmVuZGVyTWFya2Rvd24oWydgYGAnLHBhcmFtZXRlcnMubGFuZ3VhZ2UsJ1xcbicsdGV4dCwnXFxuJywnYGBgJ10uam9pbignJyksdGVtcG9yYXJ5UmVuZGVyaW5nQ29udGFpbmVyLCcnLG5ldyBDb21wb25lbnQoKSk7XG5cdGNvbnN0IHJlbmRlcmVkQ29kZUVsZW1lbnQgPSB0ZW1wb3JhcnlSZW5kZXJpbmdDb250YWluZXIucXVlcnlTZWxlY3RvcignY29kZScpO1xuXHRpZiAoIXJlbmRlcmVkQ29kZUVsZW1lbnQpXG5cdFx0cmV0dXJuICdFUlJPUjogQ291bGQgbm90IHJlbmRlciBoaWdobGlnaHRlZCBjb2RlJztcblx0d2hpbGUocGx1Z2luLnNldHRpbmdzLmN1cnJlbnRUaGVtZS5zZXR0aW5ncy5pbmxpbmUuc3ludGF4SGlnaGxpZ2h0ICYmICFyZW5kZXJlZENvZGVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcImlzLWxvYWRlZFwiKSlcblx0XHRhd2FpdCBzbGVlcCgyKTtcblx0cmV0dXJuIHJlbmRlcmVkQ29kZUVsZW1lbnQuaW5uZXJIVE1MO1xufVxuXG5leHBvcnQgY29uc3QgZXhlY3V0ZUNvZGVNdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4ge1xuXHRtdXRhdGlvbnMuZm9yRWFjaCgobXV0YXRpb246IE11dGF0aW9uUmVjb3JkKSA9PiB7XG5cdFx0aWYgKG11dGF0aW9uLnR5cGUgPT09IFwiY2hpbGRMaXN0XCIgJiYgKG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCkudGFnTmFtZSA9PT0gJ1BSRScpIHsgLy8gQWRkIGV4ZWN1dGUgY29kZSBvdXRwdXRcblx0XHRcdGNvbnN0IGV4ZWN1dGVDb2RlT3V0cHV0ID0gKG11dGF0aW9uLnRhcmdldCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcigncHJlID4gY29kZSB+IGNvZGUubGFuZ3VhZ2Utb3V0cHV0JykgYXMgSFRNTEVsZW1lbnQ7XG5cdFx0XHRpZiAoZXhlY3V0ZUNvZGVPdXRwdXQpXG5cdFx0XHRcdGV4ZWN1dGVDb2RlT3V0cHV0LmNsYXNzTGlzdC5hZGQoJ2V4ZWN1dGUtY29kZS1vdXRwdXQnKTtcblx0XHR9XG5cdH0pO1xufSk7XG4iLCAiLyoqXG4gKiBUaHJvdyBhIGdpdmVuIGVycm9yLlxuICpcbiAqIEBwYXJhbSB7RXJyb3J8bnVsbHx1bmRlZmluZWR9IFtlcnJvcl1cbiAqICAgTWF5YmUgZXJyb3IuXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBlcnJvciBpcyBudWxsfHVuZGVmaW5lZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJhaWwoZXJyb3IpIHtcbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3JcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Ob2RlfSBOb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd2ZmlsZScpLlZGaWxlQ29tcGF0aWJsZX0gVkZpbGVDb21wYXRpYmxlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd2ZmlsZScpLlZGaWxlVmFsdWV9IFZGaWxlVmFsdWVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uJykuUHJvY2Vzc29yfSBQcm9jZXNzb3JcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uJykuUGx1Z2lufSBQbHVnaW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uJykuUHJlc2V0fSBQcmVzZXRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uJykuUGx1Z2dhYmxlfSBQbHVnZ2FibGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uJykuUGx1Z2dhYmxlTGlzdH0gUGx1Z2dhYmxlTGlzdFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4nKS5UcmFuc2Zvcm1lcn0gVHJhbnNmb3JtZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uJykuUGFyc2VyfSBQYXJzZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uJykuQ29tcGlsZXJ9IENvbXBpbGVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLicpLlJ1bkNhbGxiYWNrfSBSdW5DYWxsYmFja1xuICogQHR5cGVkZWYge2ltcG9ydCgnLi4nKS5Qcm9jZXNzQ2FsbGJhY2t9IFByb2Nlc3NDYWxsYmFja1xuICpcbiAqIEB0eXBlZGVmIENvbnRleHRcbiAqIEBwcm9wZXJ0eSB7Tm9kZX0gdHJlZVxuICogQHByb3BlcnR5IHtWRmlsZX0gZmlsZVxuICovXG5cbmltcG9ydCB7YmFpbH0gZnJvbSAnYmFpbCdcbmltcG9ydCBpc0J1ZmZlciBmcm9tICdpcy1idWZmZXInXG5pbXBvcnQgZXh0ZW5kIGZyb20gJ2V4dGVuZCdcbmltcG9ydCBpc1BsYWluT2JqIGZyb20gJ2lzLXBsYWluLW9iaidcbmltcG9ydCB7dHJvdWdofSBmcm9tICd0cm91Z2gnXG5pbXBvcnQge1ZGaWxlfSBmcm9tICd2ZmlsZSdcblxuLy8gRXhwb3NlIGEgZnJvemVuIHByb2Nlc3Nvci5cbmV4cG9ydCBjb25zdCB1bmlmaWVkID0gYmFzZSgpLmZyZWV6ZSgpXG5cbmNvbnN0IG93biA9IHt9Lmhhc093blByb3BlcnR5XG5cbi8vIEZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgZmlyc3QgcHJvY2Vzc29yLlxuLyoqXG4gKiBAcmV0dXJucyB7UHJvY2Vzc29yfVxuICovXG5mdW5jdGlvbiBiYXNlKCkge1xuICBjb25zdCB0cmFuc2Zvcm1lcnMgPSB0cm91Z2goKVxuICAvKiogQHR5cGUge1Byb2Nlc3NvclsnYXR0YWNoZXJzJ119ICovXG4gIGNvbnN0IGF0dGFjaGVycyA9IFtdXG4gIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59ICovXG4gIGxldCBuYW1lc3BhY2UgPSB7fVxuICAvKiogQHR5cGUge2Jvb2xlYW58dW5kZWZpbmVkfSAqL1xuICBsZXQgZnJvemVuXG4gIGxldCBmcmVlemVJbmRleCA9IC0xXG5cbiAgLy8gRGF0YSBtYW5hZ2VtZW50LlxuICAvLyBAdHMtZXhwZWN0LWVycm9yOiBvdmVybG9hZHMgYXJlIGhhbmRsZWQuXG4gIHByb2Nlc3Nvci5kYXRhID0gZGF0YVxuICBwcm9jZXNzb3IuUGFyc2VyID0gdW5kZWZpbmVkXG4gIHByb2Nlc3Nvci5Db21waWxlciA9IHVuZGVmaW5lZFxuXG4gIC8vIExvY2suXG4gIHByb2Nlc3Nvci5mcmVlemUgPSBmcmVlemVcblxuICAvLyBQbHVnaW5zLlxuICBwcm9jZXNzb3IuYXR0YWNoZXJzID0gYXR0YWNoZXJzXG4gIC8vIEB0cy1leHBlY3QtZXJyb3I6IG92ZXJsb2FkcyBhcmUgaGFuZGxlZC5cbiAgcHJvY2Vzc29yLnVzZSA9IHVzZVxuXG4gIC8vIEFQSS5cbiAgcHJvY2Vzc29yLnBhcnNlID0gcGFyc2VcbiAgcHJvY2Vzc29yLnN0cmluZ2lmeSA9IHN0cmluZ2lmeVxuICAvLyBAdHMtZXhwZWN0LWVycm9yOiBvdmVybG9hZHMgYXJlIGhhbmRsZWQuXG4gIHByb2Nlc3Nvci5ydW4gPSBydW5cbiAgcHJvY2Vzc29yLnJ1blN5bmMgPSBydW5TeW5jXG4gIC8vIEB0cy1leHBlY3QtZXJyb3I6IG92ZXJsb2FkcyBhcmUgaGFuZGxlZC5cbiAgcHJvY2Vzc29yLnByb2Nlc3MgPSBwcm9jZXNzXG4gIHByb2Nlc3Nvci5wcm9jZXNzU3luYyA9IHByb2Nlc3NTeW5jXG5cbiAgLy8gRXhwb3NlLlxuICByZXR1cm4gcHJvY2Vzc29yXG5cbiAgLy8gQ3JlYXRlIGEgbmV3IHByb2Nlc3NvciBiYXNlZCBvbiB0aGUgcHJvY2Vzc29yIGluIHRoZSBjdXJyZW50IHNjb3BlLlxuICAvKiogQHR5cGUge1Byb2Nlc3Nvcn0gKi9cbiAgZnVuY3Rpb24gcHJvY2Vzc29yKCkge1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gYmFzZSgpXG4gICAgbGV0IGluZGV4ID0gLTFcblxuICAgIHdoaWxlICgrK2luZGV4IDwgYXR0YWNoZXJzLmxlbmd0aCkge1xuICAgICAgZGVzdGluYXRpb24udXNlKC4uLmF0dGFjaGVyc1tpbmRleF0pXG4gICAgfVxuXG4gICAgZGVzdGluYXRpb24uZGF0YShleHRlbmQodHJ1ZSwge30sIG5hbWVzcGFjZSkpXG5cbiAgICByZXR1cm4gZGVzdGluYXRpb25cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gW2tleV1cbiAgICogQHBhcmFtIHt1bmtub3dufSBbdmFsdWVdXG4gICAqIEByZXR1cm5zIHt1bmtub3dufVxuICAgKi9cbiAgZnVuY3Rpb24gZGF0YShrZXksIHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBTZXQgYGtleWAuXG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBhc3NlcnRVbmZyb3plbignZGF0YScsIGZyb3plbilcbiAgICAgICAgbmFtZXNwYWNlW2tleV0gPSB2YWx1ZVxuICAgICAgICByZXR1cm4gcHJvY2Vzc29yXG4gICAgICB9XG5cbiAgICAgIC8vIEdldCBga2V5YC5cbiAgICAgIHJldHVybiAob3duLmNhbGwobmFtZXNwYWNlLCBrZXkpICYmIG5hbWVzcGFjZVtrZXldKSB8fCBudWxsXG4gICAgfVxuXG4gICAgLy8gU2V0IHNwYWNlLlxuICAgIGlmIChrZXkpIHtcbiAgICAgIGFzc2VydFVuZnJvemVuKCdkYXRhJywgZnJvemVuKVxuICAgICAgbmFtZXNwYWNlID0ga2V5XG4gICAgICByZXR1cm4gcHJvY2Vzc29yXG4gICAgfVxuXG4gICAgLy8gR2V0IHNwYWNlLlxuICAgIHJldHVybiBuYW1lc3BhY2VcbiAgfVxuXG4gIC8qKiBAdHlwZSB7UHJvY2Vzc29yWydmcmVlemUnXX0gKi9cbiAgZnVuY3Rpb24gZnJlZXplKCkge1xuICAgIGlmIChmcm96ZW4pIHtcbiAgICAgIHJldHVybiBwcm9jZXNzb3JcbiAgICB9XG5cbiAgICB3aGlsZSAoKytmcmVlemVJbmRleCA8IGF0dGFjaGVycy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IFthdHRhY2hlciwgLi4ub3B0aW9uc10gPSBhdHRhY2hlcnNbZnJlZXplSW5kZXhdXG5cbiAgICAgIGlmIChvcHRpb25zWzBdID09PSBmYWxzZSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9uc1swXSA9PT0gdHJ1ZSkge1xuICAgICAgICBvcHRpb25zWzBdID0gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIC8qKiBAdHlwZSB7VHJhbnNmb3JtZXJ8dm9pZH0gKi9cbiAgICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gYXR0YWNoZXIuY2FsbChwcm9jZXNzb3IsIC4uLm9wdGlvbnMpXG5cbiAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdHJhbnNmb3JtZXJzLnVzZSh0cmFuc2Zvcm1lcilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmcm96ZW4gPSB0cnVlXG4gICAgZnJlZXplSW5kZXggPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcblxuICAgIHJldHVybiBwcm9jZXNzb3JcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1BsdWdnYWJsZXxudWxsfHVuZGVmaW5lZH0gW3ZhbHVlXVxuICAgKiBAcGFyYW0gey4uLnVua25vd259IG9wdGlvbnNcbiAgICogQHJldHVybnMge1Byb2Nlc3Nvcn1cbiAgICovXG4gIGZ1bmN0aW9uIHVzZSh2YWx1ZSwgLi4ub3B0aW9ucykge1xuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj58dW5kZWZpbmVkfSAqL1xuICAgIGxldCBzZXR0aW5nc1xuXG4gICAgYXNzZXJ0VW5mcm96ZW4oJ3VzZScsIGZyb3plbilcblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBFbXB0eS5cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYWRkUGx1Z2luKHZhbHVlLCAuLi5vcHRpb25zKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGFkZExpc3QodmFsdWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZGRQcmVzZXQodmFsdWUpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHVzYWJsZSB2YWx1ZSwgbm90IGAnICsgdmFsdWUgKyAnYCcpXG4gICAgfVxuXG4gICAgaWYgKHNldHRpbmdzKSB7XG4gICAgICBuYW1lc3BhY2Uuc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKG5hbWVzcGFjZS5zZXR0aW5ncyB8fCB7fSwgc2V0dGluZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb2Nlc3NvclxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtpbXBvcnQoJy4uJykuUGx1Z2dhYmxlPHVua25vd25bXT59IHZhbHVlXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gYWRkKHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGFkZFBsdWdpbih2YWx1ZSlcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBjb25zdCBbcGx1Z2luLCAuLi5vcHRpb25zXSA9IHZhbHVlXG4gICAgICAgICAgYWRkUGx1Z2luKHBsdWdpbiwgLi4ub3B0aW9ucylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRQcmVzZXQodmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHVzYWJsZSB2YWx1ZSwgbm90IGAnICsgdmFsdWUgKyAnYCcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtQcmVzZXR9IHJlc3VsdFxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFkZFByZXNldChyZXN1bHQpIHtcbiAgICAgIGFkZExpc3QocmVzdWx0LnBsdWdpbnMpXG5cbiAgICAgIGlmIChyZXN1bHQuc2V0dGluZ3MpIHtcbiAgICAgICAgc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHNldHRpbmdzIHx8IHt9LCByZXN1bHQuc2V0dGluZ3MpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtQbHVnZ2FibGVMaXN0fG51bGx8dW5kZWZpbmVkfSBbcGx1Z2luc11cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhZGRMaXN0KHBsdWdpbnMpIHtcbiAgICAgIGxldCBpbmRleCA9IC0xXG5cbiAgICAgIGlmIChwbHVnaW5zID09PSBudWxsIHx8IHBsdWdpbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBFbXB0eS5cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwbHVnaW5zKSkge1xuICAgICAgICB3aGlsZSAoKytpbmRleCA8IHBsdWdpbnMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgdGhpbmcgPSBwbHVnaW5zW2luZGV4XVxuICAgICAgICAgIGFkZCh0aGluZylcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBsaXN0IG9mIHBsdWdpbnMsIG5vdCBgJyArIHBsdWdpbnMgKyAnYCcpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtQbHVnaW59IHBsdWdpblxuICAgICAqIEBwYXJhbSB7Li4udW5rbm93bn0gW3ZhbHVlXVxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGFkZFBsdWdpbihwbHVnaW4sIHZhbHVlKSB7XG4gICAgICBsZXQgaW5kZXggPSAtMVxuICAgICAgLyoqIEB0eXBlIHtQcm9jZXNzb3JbJ2F0dGFjaGVycyddW251bWJlcl18dW5kZWZpbmVkfSAqL1xuICAgICAgbGV0IGVudHJ5XG5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgYXR0YWNoZXJzLmxlbmd0aCkge1xuICAgICAgICBpZiAoYXR0YWNoZXJzW2luZGV4XVswXSA9PT0gcGx1Z2luKSB7XG4gICAgICAgICAgZW50cnkgPSBhdHRhY2hlcnNbaW5kZXhdXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgaWYgKGlzUGxhaW5PYmooZW50cnlbMV0pICYmIGlzUGxhaW5PYmoodmFsdWUpKSB7XG4gICAgICAgICAgdmFsdWUgPSBleHRlbmQodHJ1ZSwgZW50cnlbMV0sIHZhbHVlKVxuICAgICAgICB9XG5cbiAgICAgICAgZW50cnlbMV0gPSB2YWx1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogZmluZS5cbiAgICAgICAgYXR0YWNoZXJzLnB1c2goWy4uLmFyZ3VtZW50c10pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEB0eXBlIHtQcm9jZXNzb3JbJ3BhcnNlJ119ICovXG4gIGZ1bmN0aW9uIHBhcnNlKGRvYykge1xuICAgIHByb2Nlc3Nvci5mcmVlemUoKVxuICAgIGNvbnN0IGZpbGUgPSB2ZmlsZShkb2MpXG4gICAgY29uc3QgUGFyc2VyID0gcHJvY2Vzc29yLlBhcnNlclxuICAgIGFzc2VydFBhcnNlcigncGFyc2UnLCBQYXJzZXIpXG5cbiAgICBpZiAobmV3YWJsZShQYXJzZXIsICdwYXJzZScpKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBgbmV3YWJsZWAgY2hlY2tzIHRoaXMuXG4gICAgICByZXR1cm4gbmV3IFBhcnNlcihTdHJpbmcoZmlsZSksIGZpbGUpLnBhcnNlKClcbiAgICB9XG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBgbmV3YWJsZWAgY2hlY2tzIHRoaXMuXG4gICAgcmV0dXJuIFBhcnNlcihTdHJpbmcoZmlsZSksIGZpbGUpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuICB9XG5cbiAgLyoqIEB0eXBlIHtQcm9jZXNzb3JbJ3N0cmluZ2lmeSddfSAqL1xuICBmdW5jdGlvbiBzdHJpbmdpZnkobm9kZSwgZG9jKSB7XG4gICAgcHJvY2Vzc29yLmZyZWV6ZSgpXG4gICAgY29uc3QgZmlsZSA9IHZmaWxlKGRvYylcbiAgICBjb25zdCBDb21waWxlciA9IHByb2Nlc3Nvci5Db21waWxlclxuICAgIGFzc2VydENvbXBpbGVyKCdzdHJpbmdpZnknLCBDb21waWxlcilcbiAgICBhc3NlcnROb2RlKG5vZGUpXG5cbiAgICBpZiAobmV3YWJsZShDb21waWxlciwgJ2NvbXBpbGUnKSkge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYG5ld2FibGVgIGNoZWNrcyB0aGlzLlxuICAgICAgcmV0dXJuIG5ldyBDb21waWxlcihub2RlLCBmaWxlKS5jb21waWxlKClcbiAgICB9XG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBgbmV3YWJsZWAgY2hlY2tzIHRoaXMuXG4gICAgcmV0dXJuIENvbXBpbGVyKG5vZGUsIGZpbGUpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tm9kZX0gbm9kZVxuICAgKiBAcGFyYW0ge1ZGaWxlQ29tcGF0aWJsZXxSdW5DYWxsYmFja30gW2RvY11cbiAgICogQHBhcmFtIHtSdW5DYWxsYmFja30gW2NhbGxiYWNrXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxOb2RlPnx2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gcnVuKG5vZGUsIGRvYywgY2FsbGJhY2spIHtcbiAgICBhc3NlcnROb2RlKG5vZGUpXG4gICAgcHJvY2Vzc29yLmZyZWV6ZSgpXG5cbiAgICBpZiAoIWNhbGxiYWNrICYmIHR5cGVvZiBkb2MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gZG9jXG4gICAgICBkb2MgPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZXhlY3V0b3IpXG4gICAgfVxuXG4gICAgZXhlY3V0b3IobnVsbCwgY2FsbGJhY2spXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge251bGx8KChub2RlOiBOb2RlKSA9PiB2b2lkKX0gcmVzb2x2ZVxuICAgICAqIEBwYXJhbSB7KGVycm9yOiBFcnJvcikgPT4gdm9pZH0gcmVqZWN0XG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gZXhlY3V0b3IocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBgZG9jYCBjYW5cdTIwMTl0IGJlIGEgY2FsbGJhY2sgYW55bW9yZSwgd2UgY2hlY2tlZC5cbiAgICAgIHRyYW5zZm9ybWVycy5ydW4obm9kZSwgdmZpbGUoZG9jKSwgZG9uZSlcblxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0ge0Vycm9yfG51bGx9IGVycm9yXG4gICAgICAgKiBAcGFyYW0ge05vZGV9IHRyZWVcbiAgICAgICAqIEBwYXJhbSB7VkZpbGV9IGZpbGVcbiAgICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAgICovXG4gICAgICBmdW5jdGlvbiBkb25lKGVycm9yLCB0cmVlLCBmaWxlKSB7XG4gICAgICAgIHRyZWUgPSB0cmVlIHx8IG5vZGVcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmUpIHtcbiAgICAgICAgICByZXNvbHZlKHRyZWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYGNhbGxiYWNrYCBpcyBkZWZpbmVkIGlmIGByZXNvbHZlYCBpcyBub3QuXG4gICAgICAgICAgY2FsbGJhY2sobnVsbCwgdHJlZSwgZmlsZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAdHlwZSB7UHJvY2Vzc29yWydydW5TeW5jJ119ICovXG4gIGZ1bmN0aW9uIHJ1blN5bmMobm9kZSwgZmlsZSkge1xuICAgIC8qKiBAdHlwZSB7Tm9kZXx1bmRlZmluZWR9ICovXG4gICAgbGV0IHJlc3VsdFxuICAgIC8qKiBAdHlwZSB7Ym9vbGVhbnx1bmRlZmluZWR9ICovXG4gICAgbGV0IGNvbXBsZXRlXG5cbiAgICBwcm9jZXNzb3IucnVuKG5vZGUsIGZpbGUsIGRvbmUpXG5cbiAgICBhc3NlcnREb25lKCdydW5TeW5jJywgJ3J1bicsIGNvbXBsZXRlKVxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogd2UgZWl0aGVyIGJhaWxlZCBvbiBhbiBlcnJvciBvciBoYXZlIGEgdHJlZS5cbiAgICByZXR1cm4gcmVzdWx0XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0Vycm9yfG51bGx9IFtlcnJvcl1cbiAgICAgKiBAcGFyYW0ge05vZGV9IFt0cmVlXVxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGRvbmUoZXJyb3IsIHRyZWUpIHtcbiAgICAgIGJhaWwoZXJyb3IpXG4gICAgICByZXN1bHQgPSB0cmVlXG4gICAgICBjb21wbGV0ZSA9IHRydWVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtWRmlsZUNvbXBhdGlibGV9IGRvY1xuICAgKiBAcGFyYW0ge1Byb2Nlc3NDYWxsYmFja30gW2NhbGxiYWNrXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxWRmlsZT58dW5kZWZpbmVkfVxuICAgKi9cbiAgZnVuY3Rpb24gcHJvY2Vzcyhkb2MsIGNhbGxiYWNrKSB7XG4gICAgcHJvY2Vzc29yLmZyZWV6ZSgpXG4gICAgYXNzZXJ0UGFyc2VyKCdwcm9jZXNzJywgcHJvY2Vzc29yLlBhcnNlcilcbiAgICBhc3NlcnRDb21waWxlcigncHJvY2VzcycsIHByb2Nlc3Nvci5Db21waWxlcilcblxuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShleGVjdXRvcilcbiAgICB9XG5cbiAgICBleGVjdXRvcihudWxsLCBjYWxsYmFjaylcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVsbHwoKGZpbGU6IFZGaWxlKSA9PiB2b2lkKX0gcmVzb2x2ZVxuICAgICAqIEBwYXJhbSB7KGVycm9yPzogRXJyb3J8bnVsbHx1bmRlZmluZWQpID0+IHZvaWR9IHJlamVjdFxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGV4ZWN1dG9yKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgY29uc3QgZmlsZSA9IHZmaWxlKGRvYylcblxuICAgICAgcHJvY2Vzc29yLnJ1bihwcm9jZXNzb3IucGFyc2UoZmlsZSksIGZpbGUsIChlcnJvciwgdHJlZSwgZmlsZSkgPT4ge1xuICAgICAgICBpZiAoZXJyb3IgfHwgIXRyZWUgfHwgIWZpbGUpIHtcbiAgICAgICAgICBkb25lKGVycm9yKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8qKiBAdHlwZSB7dW5rbm93bn0gKi9cbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzb3Iuc3RyaW5naWZ5KHRyZWUsIGZpbGUpXG5cbiAgICAgICAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQgfHwgcmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBFbXB0eS5cbiAgICAgICAgICB9IGVsc2UgaWYgKGxvb2tzTGlrZUFWRmlsZVZhbHVlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIGZpbGUudmFsdWUgPSByZXN1bHRcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsZS5yZXN1bHQgPSByZXN1bHRcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb25lKGVycm9yLCBmaWxlKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICAvKipcbiAgICAgICAqIEBwYXJhbSB7RXJyb3J8bnVsbHx1bmRlZmluZWR9IFtlcnJvcl1cbiAgICAgICAqIEBwYXJhbSB7VkZpbGV8dW5kZWZpbmVkfSBbZmlsZV1cbiAgICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAgICovXG4gICAgICBmdW5jdGlvbiBkb25lKGVycm9yLCBmaWxlKSB7XG4gICAgICAgIGlmIChlcnJvciB8fCAhZmlsZSkge1xuICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgfSBlbHNlIGlmIChyZXNvbHZlKSB7XG4gICAgICAgICAgcmVzb2x2ZShmaWxlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGBjYWxsYmFja2AgaXMgZGVmaW5lZCBpZiBgcmVzb2x2ZWAgaXMgbm90LlxuICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGZpbGUpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogQHR5cGUge1Byb2Nlc3NvclsncHJvY2Vzc1N5bmMnXX0gKi9cbiAgZnVuY3Rpb24gcHJvY2Vzc1N5bmMoZG9jKSB7XG4gICAgLyoqIEB0eXBlIHtib29sZWFufHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgY29tcGxldGVcblxuICAgIHByb2Nlc3Nvci5mcmVlemUoKVxuICAgIGFzc2VydFBhcnNlcigncHJvY2Vzc1N5bmMnLCBwcm9jZXNzb3IuUGFyc2VyKVxuICAgIGFzc2VydENvbXBpbGVyKCdwcm9jZXNzU3luYycsIHByb2Nlc3Nvci5Db21waWxlcilcblxuICAgIGNvbnN0IGZpbGUgPSB2ZmlsZShkb2MpXG5cbiAgICBwcm9jZXNzb3IucHJvY2VzcyhmaWxlLCBkb25lKVxuXG4gICAgYXNzZXJ0RG9uZSgncHJvY2Vzc1N5bmMnLCAncHJvY2VzcycsIGNvbXBsZXRlKVxuXG4gICAgcmV0dXJuIGZpbGVcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7RXJyb3J8bnVsbHx1bmRlZmluZWR9IFtlcnJvcl1cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBkb25lKGVycm9yKSB7XG4gICAgICBjb21wbGV0ZSA9IHRydWVcbiAgICAgIGJhaWwoZXJyb3IpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYHZhbHVlYCBpcyBhIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gbmV3YWJsZSh2YWx1ZSwgbmFtZSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIC8vIFByb3RvdHlwZXMgZG8gZXhpc3QuXG4gICAgLy8gdHlwZS1jb3ZlcmFnZTppZ25vcmUtbmV4dC1saW5lXG4gICAgdmFsdWUucHJvdG90eXBlICYmXG4gICAgLy8gQSBmdW5jdGlvbiB3aXRoIGtleXMgaW4gaXRzIHByb3RvdHlwZSBpcyBwcm9iYWJseSBhIGNvbnN0cnVjdG9yLlxuICAgIC8vIENsYXNzZXNcdTIwMTkgcHJvdG90eXBlIG1ldGhvZHMgYXJlIG5vdCBlbnVtZXJhYmxlLCBzbyB3ZSBjaGVjayBpZiBzb21lIHZhbHVlXG4gICAgLy8gZXhpc3RzIGluIHRoZSBwcm90b3R5cGUuXG4gICAgLy8gdHlwZS1jb3ZlcmFnZTppZ25vcmUtbmV4dC1saW5lXG4gICAgKGtleXModmFsdWUucHJvdG90eXBlKSB8fCBuYW1lIGluIHZhbHVlLnByb3RvdHlwZSlcbiAgKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0IHdpdGgga2V5cy5cbiAqXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSB2YWx1ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGtleXModmFsdWUpIHtcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGxldCBrZXlcblxuICBmb3IgKGtleSBpbiB2YWx1ZSkge1xuICAgIGlmIChvd24uY2FsbCh2YWx1ZSwga2V5KSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBBc3NlcnQgYSBwYXJzZXIgaXMgYXZhaWxhYmxlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyBQYXJzZXJ9XG4gKi9cbmZ1bmN0aW9uIGFzc2VydFBhcnNlcihuYW1lLCB2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGAnICsgbmFtZSArICdgIHdpdGhvdXQgYFBhcnNlcmAnKVxuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IGEgY29tcGlsZXIgaXMgYXZhaWxhYmxlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyB2YWx1ZSBpcyBDb21waWxlcn1cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0Q29tcGlsZXIobmFtZSwgdmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBgJyArIG5hbWUgKyAnYCB3aXRob3V0IGBDb21waWxlcmAnKVxuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IHRoZSBwcm9jZXNzb3IgaXMgbm90IGZyb3plbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHt1bmtub3dufSBmcm96ZW5cbiAqIEByZXR1cm5zIHthc3NlcnRzIGZyb3plbiBpcyBmYWxzZX1cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0VW5mcm96ZW4obmFtZSwgZnJvemVuKSB7XG4gIGlmIChmcm96ZW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQ2Fubm90IGNhbGwgYCcgK1xuICAgICAgICBuYW1lICtcbiAgICAgICAgJ2Agb24gYSBmcm96ZW4gcHJvY2Vzc29yLlxcbkNyZWF0ZSBhIG5ldyBwcm9jZXNzb3IgZmlyc3QsIGJ5IGNhbGxpbmcgaXQ6IHVzZSBgcHJvY2Vzc29yKClgIGluc3RlYWQgb2YgYHByb2Nlc3NvcmAuJ1xuICAgIClcbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydCBgbm9kZWAgaXMgYSB1bmlzdCBub2RlLlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gbm9kZVxuICogQHJldHVybnMge2Fzc2VydHMgbm9kZSBpcyBOb2RlfVxuICovXG5mdW5jdGlvbiBhc3NlcnROb2RlKG5vZGUpIHtcbiAgLy8gYGlzUGxhaW5PYmpgIHVuZm9ydHVuYXRlbHkgdXNlcyBgYW55YCBpbnN0ZWFkIG9mIGB1bmtub3duYC5cbiAgLy8gdHlwZS1jb3ZlcmFnZTppZ25vcmUtbmV4dC1saW5lXG4gIGlmICghaXNQbGFpbk9iaihub2RlKSB8fCB0eXBlb2Ygbm9kZS50eXBlICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIG5vZGUsIGdvdCBgJyArIG5vZGUgKyAnYCcpXG4gICAgLy8gRmluZS5cbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IGBjb21wbGV0ZWAgaXMgYHRydWVgLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gYXN5bmNOYW1lXG4gKiBAcGFyYW0ge3Vua25vd259IGNvbXBsZXRlXG4gKiBAcmV0dXJucyB7YXNzZXJ0cyBjb21wbGV0ZSBpcyB0cnVlfVxuICovXG5mdW5jdGlvbiBhc3NlcnREb25lKG5hbWUsIGFzeW5jTmFtZSwgY29tcGxldGUpIHtcbiAgaWYgKCFjb21wbGV0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdgJyArIG5hbWUgKyAnYCBmaW5pc2hlZCBhc3luYy4gVXNlIGAnICsgYXN5bmNOYW1lICsgJ2AgaW5zdGVhZCdcbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1ZGaWxlQ29tcGF0aWJsZX0gW3ZhbHVlXVxuICogQHJldHVybnMge1ZGaWxlfVxuICovXG5mdW5jdGlvbiB2ZmlsZSh2YWx1ZSkge1xuICByZXR1cm4gbG9va3NMaWtlQVZGaWxlKHZhbHVlKSA/IHZhbHVlIDogbmV3IFZGaWxlKHZhbHVlKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7VkZpbGVDb21wYXRpYmxlfSBbdmFsdWVdXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgVkZpbGV9XG4gKi9cbmZ1bmN0aW9uIGxvb2tzTGlrZUFWRmlsZSh2YWx1ZSkge1xuICByZXR1cm4gQm9vbGVhbihcbiAgICB2YWx1ZSAmJlxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgJ21lc3NhZ2UnIGluIHZhbHVlICYmXG4gICAgICAnbWVzc2FnZXMnIGluIHZhbHVlXG4gIClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IFt2YWx1ZV1cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBWRmlsZVZhbHVlfVxuICovXG5mdW5jdGlvbiBsb29rc0xpa2VBVkZpbGVWYWx1ZSh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCBpc0J1ZmZlcih2YWx1ZSlcbn1cbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG5cdGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnIHx8IHZhbHVlID09PSBudWxsKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKTtcblx0cmV0dXJuIChwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpID09PSBudWxsKSAmJiAhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkgJiYgIShTeW1ib2wuaXRlcmF0b3IgaW4gdmFsdWUpO1xufVxuIiwgIi8qKlxuICogQHR5cGVkZWYgeyhlcnJvcj86IEVycm9yfG51bGx8dW5kZWZpbmVkLCAuLi5vdXRwdXQ6IEFycmF5PGFueT4pID0+IHZvaWR9IENhbGxiYWNrXG4gKiBAdHlwZWRlZiB7KC4uLmlucHV0OiBBcnJheTxhbnk+KSA9PiBhbnl9IE1pZGRsZXdhcmVcbiAqXG4gKiBAdHlwZWRlZiB7KC4uLmlucHV0OiBBcnJheTxhbnk+KSA9PiB2b2lkfSBSdW5cbiAqICAgQ2FsbCBhbGwgbWlkZGxld2FyZS5cbiAqIEB0eXBlZGVmIHsoZm46IE1pZGRsZXdhcmUpID0+IFBpcGVsaW5lfSBVc2VcbiAqICAgQWRkIGBmbmAgKG1pZGRsZXdhcmUpIHRvIHRoZSBsaXN0LlxuICogQHR5cGVkZWYge3tydW46IFJ1biwgdXNlOiBVc2V9fSBQaXBlbGluZVxuICogICBNaWRkbGV3YXJlLlxuICovXG5cbi8qKlxuICogQ3JlYXRlIG5ldyBtaWRkbGV3YXJlLlxuICpcbiAqIEByZXR1cm5zIHtQaXBlbGluZX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyb3VnaCgpIHtcbiAgLyoqIEB0eXBlIHtBcnJheTxNaWRkbGV3YXJlPn0gKi9cbiAgY29uc3QgZm5zID0gW11cbiAgLyoqIEB0eXBlIHtQaXBlbGluZX0gKi9cbiAgY29uc3QgcGlwZWxpbmUgPSB7cnVuLCB1c2V9XG5cbiAgcmV0dXJuIHBpcGVsaW5lXG5cbiAgLyoqIEB0eXBlIHtSdW59ICovXG4gIGZ1bmN0aW9uIHJ1biguLi52YWx1ZXMpIHtcbiAgICBsZXQgbWlkZGxld2FyZUluZGV4ID0gLTFcbiAgICAvKiogQHR5cGUge0NhbGxiYWNrfSAqL1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdmFsdWVzLnBvcCgpXG5cbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBmdW5jdGlvbiBhcyBsYXN0IGFyZ3VtZW50LCBub3QgJyArIGNhbGxiYWNrKVxuICAgIH1cblxuICAgIG5leHQobnVsbCwgLi4udmFsdWVzKVxuXG4gICAgLyoqXG4gICAgICogUnVuIHRoZSBuZXh0IGBmbmAsIG9yIHdlXHUyMDE5cmUgZG9uZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RXJyb3J8bnVsbHx1bmRlZmluZWR9IGVycm9yXG4gICAgICogQHBhcmFtIHtBcnJheTxhbnk+fSBvdXRwdXRcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBuZXh0KGVycm9yLCAuLi5vdXRwdXQpIHtcbiAgICAgIGNvbnN0IGZuID0gZm5zWysrbWlkZGxld2FyZUluZGV4XVxuICAgICAgbGV0IGluZGV4ID0gLTFcblxuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gQ29weSBub24tbnVsbGlzaCBpbnB1dCBpbnRvIHZhbHVlcy5cbiAgICAgIHdoaWxlICgrK2luZGV4IDwgdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICBpZiAob3V0cHV0W2luZGV4XSA9PT0gbnVsbCB8fCBvdXRwdXRbaW5kZXhdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvdXRwdXRbaW5kZXhdID0gdmFsdWVzW2luZGV4XVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFNhdmUgdGhlIG5ld2x5IGNyZWF0ZWQgYG91dHB1dGAgZm9yIHRoZSBuZXh0IGNhbGwuXG4gICAgICB2YWx1ZXMgPSBvdXRwdXRcblxuICAgICAgLy8gTmV4dCBvciBkb25lLlxuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHdyYXAoZm4sIG5leHQpKC4uLm91dHB1dClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIC4uLm91dHB1dClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogQHR5cGUge1VzZX0gKi9cbiAgZnVuY3Rpb24gdXNlKG1pZGRlbHdhcmUpIHtcbiAgICBpZiAodHlwZW9mIG1pZGRlbHdhcmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdFeHBlY3RlZCBgbWlkZGVsd2FyZWAgdG8gYmUgYSBmdW5jdGlvbiwgbm90ICcgKyBtaWRkZWx3YXJlXG4gICAgICApXG4gICAgfVxuXG4gICAgZm5zLnB1c2gobWlkZGVsd2FyZSlcbiAgICByZXR1cm4gcGlwZWxpbmVcbiAgfVxufVxuXG4vKipcbiAqIFdyYXAgYG1pZGRsZXdhcmVgLlxuICogQ2FuIGJlIHN5bmMgb3IgYXN5bmM7IHJldHVybiBhIHByb21pc2UsIHJlY2VpdmUgYSBjYWxsYmFjaywgb3IgcmV0dXJuIG5ld1xuICogdmFsdWVzIGFuZCBlcnJvcnMuXG4gKlxuICogQHBhcmFtIHtNaWRkbGV3YXJlfSBtaWRkbGV3YXJlXG4gKiBAcGFyYW0ge0NhbGxiYWNrfSBjYWxsYmFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcChtaWRkbGV3YXJlLCBjYWxsYmFjaykge1xuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gIGxldCBjYWxsZWRcblxuICByZXR1cm4gd3JhcHBlZFxuXG4gIC8qKlxuICAgKiBDYWxsIGBtaWRkbGV3YXJlYC5cbiAgICogQHRoaXMge2FueX1cbiAgICogQHBhcmFtIHtBcnJheTxhbnk+fSBwYXJhbWV0ZXJzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gd3JhcHBlZCguLi5wYXJhbWV0ZXJzKSB7XG4gICAgY29uc3QgZm5FeHBlY3RzQ2FsbGJhY2sgPSBtaWRkbGV3YXJlLmxlbmd0aCA+IHBhcmFtZXRlcnMubGVuZ3RoXG4gICAgLyoqIEB0eXBlIHthbnl9ICovXG4gICAgbGV0IHJlc3VsdFxuXG4gICAgaWYgKGZuRXhwZWN0c0NhbGxiYWNrKSB7XG4gICAgICBwYXJhbWV0ZXJzLnB1c2goZG9uZSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gbWlkZGxld2FyZS5hcHBseSh0aGlzLCBwYXJhbWV0ZXJzKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zdCBleGNlcHRpb24gPSAvKiogQHR5cGUge0Vycm9yfSAqLyAoZXJyb3IpXG5cbiAgICAgIC8vIFdlbGwsIHRoaXMgaXMgcXVpdGUgdGhlIHBpY2tsZS5cbiAgICAgIC8vIGBtaWRkbGV3YXJlYCByZWNlaXZlZCBhIGNhbGxiYWNrIGFuZCBjYWxsZWQgaXQgc3luY2hyb25vdXNseSwgYnV0IHRoYXRcbiAgICAgIC8vIHRocmV3IGFuIGVycm9yLlxuICAgICAgLy8gVGhlIG9ubHkgdGhpbmcgbGVmdCB0byBkbyBpcyB0byB0aHJvdyB0aGUgdGhpbmcgaW5zdGVhZC5cbiAgICAgIGlmIChmbkV4cGVjdHNDYWxsYmFjayAmJiBjYWxsZWQpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkb25lKGV4Y2VwdGlvbilcbiAgICB9XG5cbiAgICBpZiAoIWZuRXhwZWN0c0NhbGxiYWNrKSB7XG4gICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICByZXN1bHQudGhlbih0aGVuLCBkb25lKVxuICAgICAgfSBlbHNlIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBkb25lKHJlc3VsdClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoZW4ocmVzdWx0KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIGBjYWxsYmFja2AsIG9ubHkgb25jZS5cbiAgICogQHR5cGUge0NhbGxiYWNrfVxuICAgKi9cbiAgZnVuY3Rpb24gZG9uZShlcnJvciwgLi4ub3V0cHV0KSB7XG4gICAgaWYgKCFjYWxsZWQpIHtcbiAgICAgIGNhbGxlZCA9IHRydWVcbiAgICAgIGNhbGxiYWNrKGVycm9yLCAuLi5vdXRwdXQpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgYGRvbmVgIHdpdGggb25lIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gW3ZhbHVlXVxuICAgKi9cbiAgZnVuY3Rpb24gdGhlbih2YWx1ZSkge1xuICAgIGRvbmUobnVsbCwgdmFsdWUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuTm9kZX0gTm9kZVxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Qb3NpdGlvbn0gUG9zaXRpb25cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUG9pbnR9IFBvaW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL21pbnVybC5zaGFyZWQuanMnKS5VUkx9IFVSTFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vaW5kZXguanMnKS5EYXRhfSBEYXRhXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi9pbmRleC5qcycpLlZhbHVlfSBWYWx1ZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIHVua25vd24+ICYge3R5cGU6IHN0cmluZywgcG9zaXRpb24/OiBQb3NpdGlvbiB8IHVuZGVmaW5lZH19IE5vZGVMaWtlXG4gKlxuICogQHR5cGVkZWYgeydhc2NpaScgfCAndXRmOCcgfCAndXRmLTgnIHwgJ3V0ZjE2bGUnIHwgJ3VjczInIHwgJ3Vjcy0yJyB8ICdiYXNlNjQnIHwgJ2Jhc2U2NHVybCcgfCAnbGF0aW4xJyB8ICdiaW5hcnknIHwgJ2hleCd9IEJ1ZmZlckVuY29kaW5nXG4gKiAgIEVuY29kaW5ncyBzdXBwb3J0ZWQgYnkgdGhlIGJ1ZmZlciBjbGFzcy5cbiAqXG4gKiAgIFRoaXMgaXMgYSBjb3B5IG9mIHRoZSB0eXBlcyBmcm9tIE5vZGUsIGNvcGllZCB0byBwcmV2ZW50IE5vZGUgZ2xvYmFscyBmcm9tXG4gKiAgIGJlaW5nIG5lZWRlZC5cbiAqICAgQ29waWVkIGZyb206IDxodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZC9ibG9iLzkwYTRlYzgvdHlwZXMvbm9kZS9idWZmZXIuZC50cyNMMTcwPlxuICpcbiAqIEB0eXBlZGVmIHtPcHRpb25zIHwgVVJMIHwgVmFsdWUgfCBWRmlsZX0gQ29tcGF0aWJsZVxuICogICBUaGluZ3MgdGhhdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBAdHlwZWRlZiBWRmlsZUNvcmVPcHRpb25zXG4gKiAgIFNldCBtdWx0aXBsZSB2YWx1ZXMuXG4gKiBAcHJvcGVydHkge1ZhbHVlIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3ZhbHVlXVxuICogICBTZXQgYHZhbHVlYC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2N3ZF1cbiAqICAgU2V0IGBjd2RgLlxuICogQHByb3BlcnR5IHtBcnJheTxzdHJpbmc+IHwgbnVsbCB8IHVuZGVmaW5lZH0gW2hpc3RvcnldXG4gKiAgIFNldCBgaGlzdG9yeWAuXG4gKiBAcHJvcGVydHkge1VSTCB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtwYXRoXVxuICogICBTZXQgYHBhdGhgLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbYmFzZW5hbWVdXG4gKiAgIFNldCBgYmFzZW5hbWVgLlxuICogQHByb3BlcnR5IHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbc3RlbV1cbiAqICAgU2V0IGBzdGVtYC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2V4dG5hbWVdXG4gKiAgIFNldCBgZXh0bmFtZWAuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtkaXJuYW1lXVxuICogICBTZXQgYGRpcm5hbWVgLlxuICogQHByb3BlcnR5IHtEYXRhIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2RhdGFdXG4gKiAgIFNldCBgZGF0YWAuXG4gKlxuICogQHR5cGVkZWYgTWFwXG4gKiAgIFJhdyBzb3VyY2UgbWFwLlxuICpcbiAqICAgU2VlOlxuICogICA8aHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9ibG9iLzU4ODE5ZjAvc291cmNlLW1hcC5kLnRzI0wxNS1MMjM+LlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHZlcnNpb25cbiAqICAgV2hpY2ggdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcCBzcGVjIHRoaXMgbWFwIGlzIGZvbGxvd2luZy5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPn0gc291cmNlc1xuICogICBBbiBhcnJheSBvZiBVUkxzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZz59IG5hbWVzXG4gKiAgIEFuIGFycmF5IG9mIGlkZW50aWZpZXJzIHdoaWNoIGNhbiBiZSByZWZlcmVuY2VkIGJ5IGluZGl2aWR1YWwgbWFwcGluZ3MuXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gW3NvdXJjZVJvb3RdXG4gKiAgIFRoZSBVUkwgcm9vdCBmcm9tIHdoaWNoIGFsbCBzb3VyY2VzIGFyZSByZWxhdGl2ZS5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8c3RyaW5nPiB8IHVuZGVmaW5lZH0gW3NvdXJjZXNDb250ZW50XVxuICogICBBbiBhcnJheSBvZiBjb250ZW50cyBvZiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IG1hcHBpbmdzXG4gKiAgIEEgc3RyaW5nIG9mIGJhc2U2NCBWTFFzIHdoaWNoIGNvbnRhaW4gdGhlIGFjdHVhbCBtYXBwaW5ncy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmaWxlXG4gKiAgIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICpcbiAqIEB0eXBlZGVmIHt7W2tleTogc3RyaW5nXTogdW5rbm93bn0gJiBWRmlsZUNvcmVPcHRpb25zfSBPcHRpb25zXG4gKiAgIENvbmZpZ3VyYXRpb24uXG4gKlxuICogICBBIGJ1bmNoIG9mIGtleXMgdGhhdCB3aWxsIGJlIHNoYWxsb3cgY29waWVkIG92ZXIgdG8gdGhlIG5ldyBmaWxlLlxuICpcbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gUmVwb3J0ZXJTZXR0aW5nc1xuICogICBDb25maWd1cmF0aW9uIGZvciByZXBvcnRlcnMuXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUge1JlcG9ydGVyU2V0dGluZ3N9IFNldHRpbmdzXG4gKiAgIE9wdGlvbnMgdHlwZS5cbiAqIEBjYWxsYmFjayBSZXBvcnRlclxuICogICBUeXBlIGZvciBhIHJlcG9ydGVyLlxuICogQHBhcmFtIHtBcnJheTxWRmlsZT59IGZpbGVzXG4gKiAgIEZpbGVzIHRvIHJlcG9ydC5cbiAqIEBwYXJhbSB7U2V0dGluZ3N9IG9wdGlvbnNcbiAqICAgQ29uZmlndXJhdGlvbi5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIFJlcG9ydC5cbiAqL1xuXG5pbXBvcnQgYnVmZmVyTGlrZSBmcm9tICdpcy1idWZmZXInXG5pbXBvcnQge1ZGaWxlTWVzc2FnZX0gZnJvbSAndmZpbGUtbWVzc2FnZSdcbmltcG9ydCB7cGF0aH0gZnJvbSAnLi9taW5wYXRoLmpzJ1xuaW1wb3J0IHtwcm9jfSBmcm9tICcuL21pbnByb2MuanMnXG5pbXBvcnQge3VybFRvUGF0aCwgaXNVcmx9IGZyb20gJy4vbWludXJsLmpzJ1xuXG4vKipcbiAqIE9yZGVyIG9mIHNldHRpbmcgKGxlYXN0IHNwZWNpZmljIHRvIG1vc3QpLCB3ZSBuZWVkIHRoaXMgYmVjYXVzZSBvdGhlcndpc2VcbiAqIGB7c3RlbTogJ2EnLCBwYXRoOiAnfi9iLmpzJ31gIHdvdWxkIHRocm93LCBhcyBhIHBhdGggaXMgbmVlZGVkIGJlZm9yZSBhXG4gKiBzdGVtIGNhbiBiZSBzZXQuXG4gKlxuICogQHR5cGUge0FycmF5PCdiYXNlbmFtZScgfCAnZGlybmFtZScgfCAnZXh0bmFtZScgfCAnaGlzdG9yeScgfCAncGF0aCcgfCAnc3RlbSc+fVxuICovXG5jb25zdCBvcmRlciA9IFsnaGlzdG9yeScsICdwYXRoJywgJ2Jhc2VuYW1lJywgJ3N0ZW0nLCAnZXh0bmFtZScsICdkaXJuYW1lJ11cblxuZXhwb3J0IGNsYXNzIFZGaWxlIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyB2aXJ0dWFsIGZpbGUuXG4gICAqXG4gICAqIGBvcHRpb25zYCBpcyB0cmVhdGVkIGFzOlxuICAgKlxuICAgKiAqICAgYHN0cmluZ2Agb3IgYEJ1ZmZlcmAgXHUyMDE0IGB7dmFsdWU6IG9wdGlvbnN9YFxuICAgKiAqICAgYFVSTGAgXHUyMDE0IGB7cGF0aDogb3B0aW9uc31gXG4gICAqICogICBgVkZpbGVgIFx1MjAxNCBzaGFsbG93IGNvcGllcyBpdHMgZGF0YSBvdmVyIHRvIHRoZSBuZXcgZmlsZVxuICAgKiAqICAgYG9iamVjdGAgXHUyMDE0IGFsbCBmaWVsZHMgYXJlIHNoYWxsb3cgY29waWVkIG92ZXIgdG8gdGhlIG5ldyBmaWxlXG4gICAqXG4gICAqIFBhdGggcmVsYXRlZCBmaWVsZHMgYXJlIHNldCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyIChsZWFzdCBzcGVjaWZpYyB0b1xuICAgKiBtb3N0IHNwZWNpZmljKTogYGhpc3RvcnlgLCBgcGF0aGAsIGBiYXNlbmFtZWAsIGBzdGVtYCwgYGV4dG5hbWVgLFxuICAgKiBgZGlybmFtZWAuXG4gICAqXG4gICAqIFlvdSBjYW5ub3Qgc2V0IGBkaXJuYW1lYCBvciBgZXh0bmFtZWAgd2l0aG91dCBzZXR0aW5nIGVpdGhlciBgaGlzdG9yeWAsXG4gICAqIGBwYXRoYCwgYGJhc2VuYW1lYCwgb3IgYHN0ZW1gIHRvby5cbiAgICpcbiAgICogQHBhcmFtIHtDb21wYXRpYmxlIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3ZhbHVlXVxuICAgKiAgIEZpbGUgdmFsdWUuXG4gICAqIEByZXR1cm5zXG4gICAqICAgTmV3IGluc3RhbmNlLlxuICAgKi9cbiAgY29uc3RydWN0b3IodmFsdWUpIHtcbiAgICAvKiogQHR5cGUge09wdGlvbnMgfCBWRmlsZX0gKi9cbiAgICBsZXQgb3B0aW9uc1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgb3B0aW9ucyA9IHt9XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IGJ1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIG9wdGlvbnMgPSB7dmFsdWV9XG4gICAgfSBlbHNlIGlmIChpc1VybCh2YWx1ZSkpIHtcbiAgICAgIG9wdGlvbnMgPSB7cGF0aDogdmFsdWV9XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMgPSB2YWx1ZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBsYWNlIHRvIHN0b3JlIGN1c3RvbSBpbmZvcm1hdGlvbiAoZGVmYXVsdDogYHt9YCkuXG4gICAgICpcbiAgICAgKiBJdFx1MjAxOXMgT0sgdG8gc3RvcmUgY3VzdG9tIGRhdGEgZGlyZWN0bHkgb24gdGhlIGZpbGUgYnV0IG1vdmluZyBpdCB0b1xuICAgICAqIGBkYXRhYCBpcyByZWNvbW1lbmRlZC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtEYXRhfVxuICAgICAqL1xuICAgIHRoaXMuZGF0YSA9IHt9XG5cbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIG1lc3NhZ2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtBcnJheTxWRmlsZU1lc3NhZ2U+fVxuICAgICAqL1xuICAgIHRoaXMubWVzc2FnZXMgPSBbXVxuXG4gICAgLyoqXG4gICAgICogTGlzdCBvZiBmaWxlcGF0aHMgdGhlIGZpbGUgbW92ZWQgYmV0d2Vlbi5cbiAgICAgKlxuICAgICAqIFRoZSBmaXJzdCBpcyB0aGUgb3JpZ2luYWwgcGF0aCBhbmQgdGhlIGxhc3QgaXMgdGhlIGN1cnJlbnQgcGF0aC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtBcnJheTxzdHJpbmc+fVxuICAgICAqL1xuICAgIHRoaXMuaGlzdG9yeSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBCYXNlIG9mIGBwYXRoYCAoZGVmYXVsdDogYHByb2Nlc3MuY3dkKClgIG9yIGAnLydgIGluIGJyb3dzZXJzKS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5jd2QgPSBwcm9jLmN3ZCgpXG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi9cbiAgICAvKipcbiAgICAgKiBSYXcgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7VmFsdWV9XG4gICAgICovXG4gICAgdGhpcy52YWx1ZVxuXG4gICAgLy8gVGhlIGJlbG93IGFyZSBub24tc3RhbmRhcmQsIHRoZXkgYXJlIFx1MjAxQ3dlbGwta25vd25cdTIwMUQuXG4gICAgLy8gQXMgaW4sIHVzZWQgaW4gc2V2ZXJhbCB0b29scy5cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgYSBmaWxlIHdhcyBzYXZlZCB0byBkaXNrLlxuICAgICAqXG4gICAgICogVGhpcyBpcyB1c2VkIGJ5IHZmaWxlIHJlcG9ydGVycy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuc3RvcmVkXG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20sIG5vbi1zdHJpbmcsIGNvbXBpbGVkLCByZXByZXNlbnRhdGlvbi5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgdXNlZCBieSB1bmlmaWVkIHRvIHN0b3JlIG5vbi1zdHJpbmcgcmVzdWx0cy5cbiAgICAgKiBPbmUgZXhhbXBsZSBpcyB3aGVuIHR1cm5pbmcgbWFya2Rvd24gaW50byBSZWFjdCBub2Rlcy5cbiAgICAgKlxuICAgICAqIEB0eXBlIHt1bmtub3dufVxuICAgICAqL1xuICAgIHRoaXMucmVzdWx0XG5cbiAgICAvKipcbiAgICAgKiBTb3VyY2UgbWFwLlxuICAgICAqXG4gICAgICogVGhpcyB0eXBlIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGBSYXdTb3VyY2VNYXBgIHR5cGUgZnJvbSB0aGUgYHNvdXJjZS1tYXBgXG4gICAgICogbW9kdWxlLlxuICAgICAqXG4gICAgICogQHR5cGUge01hcCB8IG51bGwgfCB1bmRlZmluZWR9XG4gICAgICovXG4gICAgdGhpcy5tYXBcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC1leHByZXNzaW9ucyAqL1xuXG4gICAgLy8gU2V0IHBhdGggcmVsYXRlZCBwcm9wZXJ0aWVzIGluIHRoZSBjb3JyZWN0IG9yZGVyLlxuICAgIGxldCBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IG9yZGVyLmxlbmd0aCkge1xuICAgICAgY29uc3QgcHJvcCA9IG9yZGVyW2luZGV4XVxuXG4gICAgICAvLyBOb3RlOiB3ZSBzcGVjaWZpY2FsbHkgdXNlIGBpbmAgaW5zdGVhZCBvZiBgaGFzT3duUHJvcGVydHlgIHRvIGFjY2VwdFxuICAgICAgLy8gYHZmaWxlYHMgdG9vLlxuICAgICAgaWYgKFxuICAgICAgICBwcm9wIGluIG9wdGlvbnMgJiZcbiAgICAgICAgb3B0aW9uc1twcm9wXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIG9wdGlvbnNbcHJvcF0gIT09IG51bGxcbiAgICAgICkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBUUyBkb2Vzblx1MjAxOXQgdW5kZXJzdGFuZCBiYXNpYyByZWFsaXR5LlxuICAgICAgICB0aGlzW3Byb3BdID0gcHJvcCA9PT0gJ2hpc3RvcnknID8gWy4uLm9wdGlvbnNbcHJvcF1dIDogb3B0aW9uc1twcm9wXVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICAgIGxldCBwcm9wXG5cbiAgICAvLyBTZXQgbm9uLXBhdGggcmVsYXRlZCBwcm9wZXJ0aWVzLlxuICAgIGZvciAocHJvcCBpbiBvcHRpb25zKSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBmaW5lIHRvIHNldCBvdGhlciB0aGluZ3MuXG4gICAgICBpZiAoIW9yZGVyLmluY2x1ZGVzKHByb3ApKSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGZpbmUgdG8gc2V0IG90aGVyIHRoaW5ncy5cbiAgICAgICAgdGhpc1twcm9wXSA9IG9wdGlvbnNbcHJvcF1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmdWxsIHBhdGggKGV4YW1wbGU6IGAnfi9pbmRleC5taW4uanMnYCkuXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBnZXQgcGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5oaXN0b3J5W3RoaXMuaGlzdG9yeS5sZW5ndGggLSAxXVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZnVsbCBwYXRoIChleGFtcGxlOiBgJ34vaW5kZXgubWluLmpzJ2ApLlxuICAgKlxuICAgKiBDYW5ub3QgYmUgbnVsbGlmaWVkLlxuICAgKiBZb3UgY2FuIHNldCBhIGZpbGUgVVJMIChhIGBVUkxgIG9iamVjdCB3aXRoIGEgYGZpbGU6YCBwcm90b2NvbCkgd2hpY2ggd2lsbFxuICAgKiBiZSB0dXJuZWQgaW50byBhIHBhdGggd2l0aCBgdXJsLmZpbGVVUkxUb1BhdGhgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IFVSTH0gcGF0aFxuICAgKi9cbiAgc2V0IHBhdGgocGF0aCkge1xuICAgIGlmIChpc1VybChwYXRoKSkge1xuICAgICAgcGF0aCA9IHVybFRvUGF0aChwYXRoKVxuICAgIH1cblxuICAgIGFzc2VydE5vbkVtcHR5KHBhdGgsICdwYXRoJylcblxuICAgIGlmICh0aGlzLnBhdGggIT09IHBhdGgpIHtcbiAgICAgIHRoaXMuaGlzdG9yeS5wdXNoKHBhdGgpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcGFyZW50IHBhdGggKGV4YW1wbGU6IGAnfidgKS5cbiAgICovXG4gIGdldCBkaXJuYW1lKCkge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguZGlybmFtZSh0aGlzLnBhdGgpIDogdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBwYXJlbnQgcGF0aCAoZXhhbXBsZTogYCd+J2ApLlxuICAgKlxuICAgKiBDYW5ub3QgYmUgc2V0IGlmIHRoZXJlXHUyMDE5cyBubyBgcGF0aGAgeWV0LlxuICAgKi9cbiAgc2V0IGRpcm5hbWUoZGlybmFtZSkge1xuICAgIGFzc2VydFBhdGgodGhpcy5iYXNlbmFtZSwgJ2Rpcm5hbWUnKVxuICAgIHRoaXMucGF0aCA9IHBhdGguam9pbihkaXJuYW1lIHx8ICcnLCB0aGlzLmJhc2VuYW1lKVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYmFzZW5hbWUgKGluY2x1ZGluZyBleHRuYW1lKSAoZXhhbXBsZTogYCdpbmRleC5taW4uanMnYCkuXG4gICAqL1xuICBnZXQgYmFzZW5hbWUoKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnBhdGggPT09ICdzdHJpbmcnID8gcGF0aC5iYXNlbmFtZSh0aGlzLnBhdGgpIDogdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogU2V0IGJhc2VuYW1lIChpbmNsdWRpbmcgZXh0bmFtZSkgKGAnaW5kZXgubWluLmpzJ2ApLlxuICAgKlxuICAgKiBDYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKGAnLydgIG9uIHVuaXgsIG1hY09TLCBhbmQgYnJvd3NlcnMsIGAnXFwnYFxuICAgKiBvbiB3aW5kb3dzKS5cbiAgICogQ2Fubm90IGJlIG51bGxpZmllZCAodXNlIGBmaWxlLnBhdGggPSBmaWxlLmRpcm5hbWVgIGluc3RlYWQpLlxuICAgKi9cbiAgc2V0IGJhc2VuYW1lKGJhc2VuYW1lKSB7XG4gICAgYXNzZXJ0Tm9uRW1wdHkoYmFzZW5hbWUsICdiYXNlbmFtZScpXG4gICAgYXNzZXJ0UGFydChiYXNlbmFtZSwgJ2Jhc2VuYW1lJylcbiAgICB0aGlzLnBhdGggPSBwYXRoLmpvaW4odGhpcy5kaXJuYW1lIHx8ICcnLCBiYXNlbmFtZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGV4dG5hbWUgKGluY2x1ZGluZyBkb3QpIChleGFtcGxlOiBgJy5qcydgKS5cbiAgICovXG4gIGdldCBleHRuYW1lKCkge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5wYXRoID09PSAnc3RyaW5nJyA/IHBhdGguZXh0bmFtZSh0aGlzLnBhdGgpIDogdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBleHRuYW1lIChpbmNsdWRpbmcgZG90KSAoZXhhbXBsZTogYCcuanMnYCkuXG4gICAqXG4gICAqIENhbm5vdCBjb250YWluIHBhdGggc2VwYXJhdG9ycyAoYCcvJ2Agb24gdW5peCwgbWFjT1MsIGFuZCBicm93c2VycywgYCdcXCdgXG4gICAqIG9uIHdpbmRvd3MpLlxuICAgKiBDYW5ub3QgYmUgc2V0IGlmIHRoZXJlXHUyMDE5cyBubyBgcGF0aGAgeWV0LlxuICAgKi9cbiAgc2V0IGV4dG5hbWUoZXh0bmFtZSkge1xuICAgIGFzc2VydFBhcnQoZXh0bmFtZSwgJ2V4dG5hbWUnKVxuICAgIGFzc2VydFBhdGgodGhpcy5kaXJuYW1lLCAnZXh0bmFtZScpXG5cbiAgICBpZiAoZXh0bmFtZSkge1xuICAgICAgaWYgKGV4dG5hbWUuY2hhckNvZGVBdCgwKSAhPT0gNDYgLyogYC5gICovKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYGV4dG5hbWVgIG11c3Qgc3RhcnQgd2l0aCBgLmAnKVxuICAgICAgfVxuXG4gICAgICBpZiAoZXh0bmFtZS5pbmNsdWRlcygnLicsIDEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignYGV4dG5hbWVgIGNhbm5vdCBjb250YWluIG11bHRpcGxlIGRvdHMnKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucGF0aCA9IHBhdGguam9pbih0aGlzLmRpcm5hbWUsIHRoaXMuc3RlbSArIChleHRuYW1lIHx8ICcnKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHN0ZW0gKGJhc2VuYW1lIHcvbyBleHRuYW1lKSAoZXhhbXBsZTogYCdpbmRleC5taW4nYCkuXG4gICAqL1xuICBnZXQgc3RlbSgpIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMucGF0aCA9PT0gJ3N0cmluZydcbiAgICAgID8gcGF0aC5iYXNlbmFtZSh0aGlzLnBhdGgsIHRoaXMuZXh0bmFtZSlcbiAgICAgIDogdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBzdGVtIChiYXNlbmFtZSB3L28gZXh0bmFtZSkgKGV4YW1wbGU6IGAnaW5kZXgubWluJ2ApLlxuICAgKlxuICAgKiBDYW5ub3QgY29udGFpbiBwYXRoIHNlcGFyYXRvcnMgKGAnLydgIG9uIHVuaXgsIG1hY09TLCBhbmQgYnJvd3NlcnMsIGAnXFwnYFxuICAgKiBvbiB3aW5kb3dzKS5cbiAgICogQ2Fubm90IGJlIG51bGxpZmllZCAodXNlIGBmaWxlLnBhdGggPSBmaWxlLmRpcm5hbWVgIGluc3RlYWQpLlxuICAgKi9cbiAgc2V0IHN0ZW0oc3RlbSkge1xuICAgIGFzc2VydE5vbkVtcHR5KHN0ZW0sICdzdGVtJylcbiAgICBhc3NlcnRQYXJ0KHN0ZW0sICdzdGVtJylcbiAgICB0aGlzLnBhdGggPSBwYXRoLmpvaW4odGhpcy5kaXJuYW1lIHx8ICcnLCBzdGVtICsgKHRoaXMuZXh0bmFtZSB8fCAnJykpXG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIHRoZSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0ge0J1ZmZlckVuY29kaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2VuY29kaW5nPSd1dGY4J11cbiAgICogICBDaGFyYWN0ZXIgZW5jb2RpbmcgdG8gdW5kZXJzdGFuZCBgdmFsdWVgIGFzIHdoZW4gaXRcdTIwMTlzIGEgYEJ1ZmZlcmBcbiAgICogICAoZGVmYXVsdDogYCd1dGY4J2ApLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKiAgIFNlcmlhbGl6ZWQgZmlsZS5cbiAgICovXG4gIHRvU3RyaW5nKGVuY29kaW5nKSB7XG4gICAgcmV0dXJuICh0aGlzLnZhbHVlIHx8ICcnKS50b1N0cmluZyhlbmNvZGluZyB8fCB1bmRlZmluZWQpXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgd2FybmluZyBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZS5cbiAgICpcbiAgICogSXRzIGBmYXRhbGAgaXMgc2V0IHRvIGBmYWxzZWAgYW5kIGBmaWxlYCBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgZmlsZSBwYXRoLlxuICAgKiBJdHMgYWRkZWQgdG8gYGZpbGUubWVzc2FnZXNgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEVycm9yIHwgVkZpbGVNZXNzYWdlfSByZWFzb25cbiAgICogICBSZWFzb24gZm9yIG1lc3NhZ2UsIHVzZXMgdGhlIHN0YWNrIGFuZCBtZXNzYWdlIG9mIHRoZSBlcnJvciBpZiBnaXZlbi5cbiAgICogQHBhcmFtIHtOb2RlIHwgTm9kZUxpa2UgfCBQb3NpdGlvbiB8IFBvaW50IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3BsYWNlXVxuICAgKiAgIFBsYWNlIGluIGZpbGUgd2hlcmUgdGhlIG1lc3NhZ2Ugb2NjdXJyZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29yaWdpbl1cbiAgICogICBQbGFjZSBpbiBjb2RlIHdoZXJlIHRoZSBtZXNzYWdlIG9yaWdpbmF0ZXMgKGV4YW1wbGU6XG4gICAqICAgYCdteS1wYWNrYWdlOm15LXJ1bGUnYCBvciBgJ215LXJ1bGUnYCkuXG4gICAqIEByZXR1cm5zIHtWRmlsZU1lc3NhZ2V9XG4gICAqICAgTWVzc2FnZS5cbiAgICovXG4gIG1lc3NhZ2UocmVhc29uLCBwbGFjZSwgb3JpZ2luKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IG5ldyBWRmlsZU1lc3NhZ2UocmVhc29uLCBwbGFjZSwgb3JpZ2luKVxuXG4gICAgaWYgKHRoaXMucGF0aCkge1xuICAgICAgbWVzc2FnZS5uYW1lID0gdGhpcy5wYXRoICsgJzonICsgbWVzc2FnZS5uYW1lXG4gICAgICBtZXNzYWdlLmZpbGUgPSB0aGlzLnBhdGhcbiAgICB9XG5cbiAgICBtZXNzYWdlLmZhdGFsID0gZmFsc2VcblxuICAgIHRoaXMubWVzc2FnZXMucHVzaChtZXNzYWdlKVxuXG4gICAgcmV0dXJuIG1lc3NhZ2VcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gaW5mbyBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZS5cbiAgICpcbiAgICogSXRzIGBmYXRhbGAgaXMgc2V0IHRvIGBudWxsYCBhbmQgYGZpbGVgIGlzIHNldCB0byB0aGUgY3VycmVudCBmaWxlIHBhdGguXG4gICAqIEl0cyBhZGRlZCB0byBgZmlsZS5tZXNzYWdlc2AuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgRXJyb3IgfCBWRmlsZU1lc3NhZ2V9IHJlYXNvblxuICAgKiAgIFJlYXNvbiBmb3IgbWVzc2FnZSwgdXNlcyB0aGUgc3RhY2sgYW5kIG1lc3NhZ2Ugb2YgdGhlIGVycm9yIGlmIGdpdmVuLlxuICAgKiBAcGFyYW0ge05vZGUgfCBOb2RlTGlrZSB8IFBvc2l0aW9uIHwgUG9pbnQgfCBudWxsIHwgdW5kZWZpbmVkfSBbcGxhY2VdXG4gICAqICAgUGxhY2UgaW4gZmlsZSB3aGVyZSB0aGUgbWVzc2FnZSBvY2N1cnJlZC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBbb3JpZ2luXVxuICAgKiAgIFBsYWNlIGluIGNvZGUgd2hlcmUgdGhlIG1lc3NhZ2Ugb3JpZ2luYXRlcyAoZXhhbXBsZTpcbiAgICogICBgJ215LXBhY2thZ2U6bXktcnVsZSdgIG9yIGAnbXktcnVsZSdgKS5cbiAgICogQHJldHVybnMge1ZGaWxlTWVzc2FnZX1cbiAgICogICBNZXNzYWdlLlxuICAgKi9cbiAgaW5mbyhyZWFzb24sIHBsYWNlLCBvcmlnaW4pIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlKHJlYXNvbiwgcGxhY2UsIG9yaWdpbilcblxuICAgIG1lc3NhZ2UuZmF0YWwgPSBudWxsXG5cbiAgICByZXR1cm4gbWVzc2FnZVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGZhdGFsIGVycm9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZS5cbiAgICpcbiAgICogSXRzIGBmYXRhbGAgaXMgc2V0IHRvIGB0cnVlYCBhbmQgYGZpbGVgIGlzIHNldCB0byB0aGUgY3VycmVudCBmaWxlIHBhdGguXG4gICAqIEl0cyBhZGRlZCB0byBgZmlsZS5tZXNzYWdlc2AuXG4gICAqXG4gICAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiBhIGZhdGFsIGVycm9yIG1lYW5zIHRoYXQgYSBmaWxlIGlzIG5vIGxvbmdlciBwcm9jZXNzYWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBFcnJvciB8IFZGaWxlTWVzc2FnZX0gcmVhc29uXG4gICAqICAgUmVhc29uIGZvciBtZXNzYWdlLCB1c2VzIHRoZSBzdGFjayBhbmQgbWVzc2FnZSBvZiB0aGUgZXJyb3IgaWYgZ2l2ZW4uXG4gICAqIEBwYXJhbSB7Tm9kZSB8IE5vZGVMaWtlIHwgUG9zaXRpb24gfCBQb2ludCB8IG51bGwgfCB1bmRlZmluZWR9IFtwbGFjZV1cbiAgICogICBQbGFjZSBpbiBmaWxlIHdoZXJlIHRoZSBtZXNzYWdlIG9jY3VycmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcmlnaW5dXG4gICAqICAgUGxhY2UgaW4gY29kZSB3aGVyZSB0aGUgbWVzc2FnZSBvcmlnaW5hdGVzIChleGFtcGxlOlxuICAgKiAgIGAnbXktcGFja2FnZTpteS1ydWxlJ2Agb3IgYCdteS1ydWxlJ2ApLlxuICAgKiBAcmV0dXJucyB7bmV2ZXJ9XG4gICAqICAgTWVzc2FnZS5cbiAgICogQHRocm93cyB7VkZpbGVNZXNzYWdlfVxuICAgKiAgIE1lc3NhZ2UuXG4gICAqL1xuICBmYWlsKHJlYXNvbiwgcGxhY2UsIG9yaWdpbikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2UocmVhc29uLCBwbGFjZSwgb3JpZ2luKVxuXG4gICAgbWVzc2FnZS5mYXRhbCA9IHRydWVcblxuICAgIHRocm93IG1lc3NhZ2VcbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IGBwYXJ0YCBpcyBub3QgYSBwYXRoIChhcyBpbiwgZG9lcyBub3QgY29udGFpbiBgcGF0aC5zZXBgKS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IHBhcnRcbiAqICAgRmlsZSBwYXRoIHBhcnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogICBQYXJ0IG5hbWUuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqICAgTm90aGluZy5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0UGFydChwYXJ0LCBuYW1lKSB7XG4gIGlmIChwYXJ0ICYmIHBhcnQuaW5jbHVkZXMocGF0aC5zZXApKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ2AnICsgbmFtZSArICdgIGNhbm5vdCBiZSBhIHBhdGg6IGRpZCBub3QgZXhwZWN0IGAnICsgcGF0aC5zZXAgKyAnYCdcbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBBc3NlcnQgdGhhdCBgcGFydGAgaXMgbm90IGVtcHR5LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBwYXJ0XG4gKiAgIFRoaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqICAgUGFydCBuYW1lLlxuICogQHJldHVybnMge2Fzc2VydHMgcGFydCBpcyBzdHJpbmd9XG4gKiAgIE5vdGhpbmcuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydE5vbkVtcHR5KHBhcnQsIG5hbWUpIHtcbiAgaWYgKCFwYXJ0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdgJyArIG5hbWUgKyAnYCBjYW5ub3QgYmUgZW1wdHknKVxuICB9XG59XG5cbi8qKlxuICogQXNzZXJ0IGBwYXRoYCBleGlzdHMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCB1bmRlZmluZWR9IHBhdGhcbiAqICAgUGF0aC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiAgIERlcGVuZGVuY3kgbmFtZS5cbiAqIEByZXR1cm5zIHthc3NlcnRzIHBhdGggaXMgc3RyaW5nfVxuICogICBOb3RoaW5nLlxuICovXG5mdW5jdGlvbiBhc3NlcnRQYXRoKHBhdGgsIG5hbWUpIHtcbiAgaWYgKCFwYXRoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTZXR0aW5nIGAnICsgbmFtZSArICdgIHJlcXVpcmVzIGBwYXRoYCB0byBiZSBzZXQgdG9vJylcbiAgfVxufVxuXG4vKipcbiAqIEFzc2VydCBgdmFsdWVgIGlzIGEgYnVmZmVyLlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWVcbiAqICAgdGhpbmcuXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgQnVmZmVyfVxuICogICBXaGV0aGVyIGB2YWx1ZWAgaXMgYSBOb2RlLmpzIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gYnVmZmVyKHZhbHVlKSB7XG4gIHJldHVybiBidWZmZXJMaWtlKHZhbHVlKVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Ob2RlfSBOb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Qb3NpdGlvbn0gUG9zaXRpb25cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIE5vZGVMaWtlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZVxuICogQHByb3BlcnR5IHtQb3NpdGlvbkxpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBbcG9zaXRpb25dXG4gKlxuICogQHR5cGVkZWYgUG9zaXRpb25MaWtlXG4gKiBAcHJvcGVydHkge1BvaW50TGlrZSB8IG51bGwgfCB1bmRlZmluZWR9IFtzdGFydF1cbiAqIEBwcm9wZXJ0eSB7UG9pbnRMaWtlIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2VuZF1cbiAqXG4gKiBAdHlwZWRlZiBQb2ludExpa2VcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2xpbmVdXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IFtjb2x1bW5dXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IFtvZmZzZXRdXG4gKi9cblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIHBvc2l0aW9uYWwgaW5mbyBvZiBhIHBvaW50LCBwb3NpdGlvbiAoc3RhcnQgYW5kIGVuZCBwb2ludHMpLFxuICogb3Igbm9kZS5cbiAqXG4gKiBAcGFyYW0ge05vZGUgfCBOb2RlTGlrZSB8IFBvc2l0aW9uIHwgUG9zaXRpb25MaWtlIHwgUG9pbnQgfCBQb2ludExpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBbdmFsdWVdXG4gKiAgIE5vZGUsIHBvc2l0aW9uLCBvciBwb2ludC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIFByZXR0eSBwcmludGVkIHBvc2l0aW9uYWwgaW5mbyBvZiBhIG5vZGUgKGBzdHJpbmdgKS5cbiAqXG4gKiAgIEluIHRoZSBmb3JtYXQgb2YgYSByYW5nZSBgbHM6Y3MtbGU6Y2VgICh3aGVuIGdpdmVuIGBub2RlYCBvciBgcG9zaXRpb25gKVxuICogICBvciBhIHBvaW50IGBsOmNgICh3aGVuIGdpdmVuIGBwb2ludGApLCB3aGVyZSBgbGAgc3RhbmRzIGZvciBsaW5lLCBgY2AgZm9yXG4gKiAgIGNvbHVtbiwgYHNgIGZvciBgc3RhcnRgLCBhbmQgYGVgIGZvciBlbmQuXG4gKiAgIEFuIGVtcHR5IHN0cmluZyAoYCcnYCkgaXMgcmV0dXJuZWQgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIG5laXRoZXIgYG5vZGVgLFxuICogICBgcG9zaXRpb25gLCBub3IgYHBvaW50YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVBvc2l0aW9uKHZhbHVlKSB7XG4gIC8vIE5vdGhpbmcuXG4gIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gTm9kZS5cbiAgaWYgKCdwb3NpdGlvbicgaW4gdmFsdWUgfHwgJ3R5cGUnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uKHZhbHVlLnBvc2l0aW9uKVxuICB9XG5cbiAgLy8gUG9zaXRpb24uXG4gIGlmICgnc3RhcnQnIGluIHZhbHVlIHx8ICdlbmQnIGluIHZhbHVlKSB7XG4gICAgcmV0dXJuIHBvc2l0aW9uKHZhbHVlKVxuICB9XG5cbiAgLy8gUG9pbnQuXG4gIGlmICgnbGluZScgaW4gdmFsdWUgfHwgJ2NvbHVtbicgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gcG9pbnQodmFsdWUpXG4gIH1cblxuICAvLyA/XG4gIHJldHVybiAnJ1xufVxuXG4vKipcbiAqIEBwYXJhbSB7UG9pbnQgfCBQb2ludExpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBwb2ludFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gcG9pbnQocG9pbnQpIHtcbiAgcmV0dXJuIGluZGV4KHBvaW50ICYmIHBvaW50LmxpbmUpICsgJzonICsgaW5kZXgocG9pbnQgJiYgcG9pbnQuY29sdW1uKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UG9zaXRpb24gfCBQb3NpdGlvbkxpa2UgfCBudWxsIHwgdW5kZWZpbmVkfSBwb3NcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHBvc2l0aW9uKHBvcykge1xuICByZXR1cm4gcG9pbnQocG9zICYmIHBvcy5zdGFydCkgKyAnLScgKyBwb2ludChwb3MgJiYgcG9zLmVuZClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlciB8IG51bGwgfCB1bmRlZmluZWR9IHZhbHVlXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBpbmRleCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyA/IHZhbHVlIDogMVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Ob2RlfSBOb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBvc2l0aW9ufSBQb3NpdGlvblxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5Qb2ludH0gUG9pbnRcbiAqIEB0eXBlZGVmIHtvYmplY3QgJiB7dHlwZTogc3RyaW5nLCBwb3NpdGlvbj86IFBvc2l0aW9uIHwgdW5kZWZpbmVkfX0gTm9kZUxpa2VcbiAqL1xuXG5pbXBvcnQge3N0cmluZ2lmeVBvc2l0aW9ufSBmcm9tICd1bmlzdC11dGlsLXN0cmluZ2lmeS1wb3NpdGlvbidcblxuLyoqXG4gKiBNZXNzYWdlLlxuICovXG5leHBvcnQgY2xhc3MgVkZpbGVNZXNzYWdlIGV4dGVuZHMgRXJyb3Ige1xuICAvKipcbiAgICogQ3JlYXRlIGEgbWVzc2FnZSBmb3IgYHJlYXNvbmAgYXQgYHBsYWNlYCBmcm9tIGBvcmlnaW5gLlxuICAgKlxuICAgKiBXaGVuIGFuIGVycm9yIGlzIHBhc3NlZCBpbiBhcyBgcmVhc29uYCwgdGhlIGBzdGFja2AgaXMgY29waWVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IEVycm9yIHwgVkZpbGVNZXNzYWdlfSByZWFzb25cbiAgICogICBSZWFzb24gZm9yIG1lc3NhZ2UsIHVzZXMgdGhlIHN0YWNrIGFuZCBtZXNzYWdlIG9mIHRoZSBlcnJvciBpZiBnaXZlbi5cbiAgICpcbiAgICogICA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogeW91IHNob3VsZCB1c2UgbWFya2Rvd24uXG4gICAqIEBwYXJhbSB7Tm9kZSB8IE5vZGVMaWtlIHwgUG9zaXRpb24gfCBQb2ludCB8IG51bGwgfCB1bmRlZmluZWR9IFtwbGFjZV1cbiAgICogICBQbGFjZSBpbiBmaWxlIHdoZXJlIHRoZSBtZXNzYWdlIG9jY3VycmVkLlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcmlnaW5dXG4gICAqICAgUGxhY2UgaW4gY29kZSB3aGVyZSB0aGUgbWVzc2FnZSBvcmlnaW5hdGVzIChleGFtcGxlOlxuICAgKiAgIGAnbXktcGFja2FnZTpteS1ydWxlJ2Agb3IgYCdteS1ydWxlJ2ApLlxuICAgKiBAcmV0dXJuc1xuICAgKiAgIEluc3RhbmNlIG9mIGBWRmlsZU1lc3NhZ2VgLlxuICAgKi9cbiAgLy8gVG8gZG86IG5leHQgbWFqb3I6IGV4cG9zZSBgdW5kZWZpbmVkYCBldmVyeXdoZXJlIGluc3RlYWQgb2YgYG51bGxgLlxuICBjb25zdHJ1Y3RvcihyZWFzb24sIHBsYWNlLCBvcmlnaW4pIHtcbiAgICAvKiogQHR5cGUge1tzdHJpbmcgfCBudWxsLCBzdHJpbmcgfCBudWxsXX0gKi9cbiAgICBjb25zdCBwYXJ0cyA9IFtudWxsLCBudWxsXVxuICAgIC8qKiBAdHlwZSB7UG9zaXRpb259ICovXG4gICAgbGV0IHBvc2l0aW9uID0ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogd2UgYWx3YXlzIGZvbGxvd3MgdGhlIHN0cnVjdHVyZSBvZiBgcG9zaXRpb25gLlxuICAgICAgc3RhcnQ6IHtsaW5lOiBudWxsLCBjb2x1bW46IG51bGx9LFxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogXCJcbiAgICAgIGVuZDoge2xpbmU6IG51bGwsIGNvbHVtbjogbnVsbH1cbiAgICB9XG5cbiAgICBzdXBlcigpXG5cbiAgICBpZiAodHlwZW9mIHBsYWNlID09PSAnc3RyaW5nJykge1xuICAgICAgb3JpZ2luID0gcGxhY2VcbiAgICAgIHBsYWNlID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcmlnaW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBpbmRleCA9IG9yaWdpbi5pbmRleE9mKCc6JylcblxuICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICBwYXJ0c1sxXSA9IG9yaWdpblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHNbMF0gPSBvcmlnaW4uc2xpY2UoMCwgaW5kZXgpXG4gICAgICAgIHBhcnRzWzFdID0gb3JpZ2luLnNsaWNlKGluZGV4ICsgMSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGxhY2UpIHtcbiAgICAgIC8vIE5vZGUuXG4gICAgICBpZiAoJ3R5cGUnIGluIHBsYWNlIHx8ICdwb3NpdGlvbicgaW4gcGxhY2UpIHtcbiAgICAgICAgaWYgKHBsYWNlLnBvc2l0aW9uKSB7XG4gICAgICAgICAgLy8gVG8gZG86IG5leHQgbWFqb3I6IGRlZXAgY2xvbmUuXG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbG9va3MgbGlrZSBhIHBvc2l0aW9uLlxuICAgICAgICAgIHBvc2l0aW9uID0gcGxhY2UucG9zaXRpb25cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gUG9zaXRpb24uXG4gICAgICBlbHNlIGlmICgnc3RhcnQnIGluIHBsYWNlIHx8ICdlbmQnIGluIHBsYWNlKSB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGxvb2tzIGxpa2UgYSBwb3NpdGlvbi5cbiAgICAgICAgLy8gVG8gZG86IG5leHQgbWFqb3I6IGRlZXAgY2xvbmUuXG4gICAgICAgIHBvc2l0aW9uID0gcGxhY2VcbiAgICAgIH1cbiAgICAgIC8vIFBvaW50LlxuICAgICAgZWxzZSBpZiAoJ2xpbmUnIGluIHBsYWNlIHx8ICdjb2x1bW4nIGluIHBsYWNlKSB7XG4gICAgICAgIC8vIFRvIGRvOiBuZXh0IG1ham9yOiBkZWVwIGNsb25lLlxuICAgICAgICBwb3NpdGlvbi5zdGFydCA9IHBsYWNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmllbGRzIGZyb20gYEVycm9yYC5cbiAgICAvKipcbiAgICAgKiBTZXJpYWxpemVkIHBvc2l0aW9uYWwgaW5mbyBvZiBlcnJvci5cbiAgICAgKlxuICAgICAqIE9uIG5vcm1hbCBlcnJvcnMsIHRoaXMgd291bGQgYmUgc29tZXRoaW5nIGxpa2UgYFBhcnNlRXJyb3JgLCBidWl0IGluXG4gICAgICogYFZGaWxlYCBtZXNzYWdlcyB3ZSB1c2UgdGhpcyBzcGFjZSB0byBzaG93IHdoZXJlIGFuIGVycm9yIGhhcHBlbmVkLlxuICAgICAqL1xuICAgIHRoaXMubmFtZSA9IHN0cmluZ2lmeVBvc2l0aW9uKHBsYWNlKSB8fCAnMToxJ1xuXG4gICAgLyoqXG4gICAgICogUmVhc29uIGZvciBtZXNzYWdlLlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLm1lc3NhZ2UgPSB0eXBlb2YgcmVhc29uID09PSAnb2JqZWN0JyA/IHJlYXNvbi5tZXNzYWdlIDogcmVhc29uXG5cbiAgICAvKipcbiAgICAgKiBTdGFjayBvZiBtZXNzYWdlLlxuICAgICAqXG4gICAgICogVGhpcyBpcyB1c2VkIGJ5IG5vcm1hbCBlcnJvcnMgdG8gc2hvdyB3aGVyZSBzb21ldGhpbmcgaGFwcGVuZWQgaW5cbiAgICAgKiBwcm9ncmFtbWluZyBjb2RlLCBpcnJlbGV2YW50IGZvciBgVkZpbGVgIG1lc3NhZ2VzLFxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnN0YWNrID0gJydcblxuICAgIGlmICh0eXBlb2YgcmVhc29uID09PSAnb2JqZWN0JyAmJiByZWFzb24uc3RhY2spIHtcbiAgICAgIHRoaXMuc3RhY2sgPSByZWFzb24uc3RhY2tcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFzb24gZm9yIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogeW91IHNob3VsZCB1c2UgbWFya2Rvd24uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqL1xuICAgIHRoaXMucmVhc29uID0gdGhpcy5tZXNzYWdlXG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi9cbiAgICAvKipcbiAgICAgKiBTdGF0ZSBvZiBwcm9ibGVtLlxuICAgICAqXG4gICAgICogKiBgdHJ1ZWAgXHUyMDE0IG1hcmtzIGFzc29jaWF0ZWQgZmlsZSBhcyBubyBsb25nZXIgcHJvY2Vzc2FibGUgKGVycm9yKVxuICAgICAqICogYGZhbHNlYCBcdTIwMTQgbmVjZXNzaXRhdGVzIGEgKHBvdGVudGlhbCkgY2hhbmdlICh3YXJuaW5nKVxuICAgICAqICogYG51bGwgfCB1bmRlZmluZWRgIFx1MjAxNCBmb3IgdGhpbmdzIHRoYXQgbWlnaHQgbm90IG5lZWQgY2hhbmdpbmcgKGluZm8pXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9XG4gICAgICovXG4gICAgdGhpcy5mYXRhbFxuXG4gICAgLyoqXG4gICAgICogU3RhcnRpbmcgbGluZSBvZiBlcnJvci5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtudW1iZXIgfCBudWxsfVxuICAgICAqL1xuICAgIHRoaXMubGluZSA9IHBvc2l0aW9uLnN0YXJ0LmxpbmVcblxuICAgIC8qKlxuICAgICAqIFN0YXJ0aW5nIGNvbHVtbiBvZiBlcnJvci5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtudW1iZXIgfCBudWxsfVxuICAgICAqL1xuICAgIHRoaXMuY29sdW1uID0gcG9zaXRpb24uc3RhcnQuY29sdW1uXG5cbiAgICAvKipcbiAgICAgKiBGdWxsIHVuaXN0IHBvc2l0aW9uLlxuICAgICAqXG4gICAgICogQHR5cGUge1Bvc2l0aW9uIHwgbnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLnBvc2l0aW9uID0gcG9zaXRpb25cblxuICAgIC8qKlxuICAgICAqIE5hbWVzcGFjZSBvZiBtZXNzYWdlIChleGFtcGxlOiBgJ215LXBhY2thZ2UnYCkuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nIHwgbnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLnNvdXJjZSA9IHBhcnRzWzBdXG5cbiAgICAvKipcbiAgICAgKiBDYXRlZ29yeSBvZiBtZXNzYWdlIChleGFtcGxlOiBgJ215LXJ1bGUnYCkuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nIHwgbnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLnJ1bGVJZCA9IHBhcnRzWzFdXG5cbiAgICAvKipcbiAgICAgKiBQYXRoIG9mIGEgZmlsZSAodXNlZCB0aHJvdWdob3V0IHRoZSBgVkZpbGVgIGVjb3N5c3RlbSkuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nIHwgbnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLmZpbGVcblxuICAgIC8vIFRoZSBmb2xsb3dpbmcgZmllbGRzIGFyZSBcdTIwMUN3ZWxsIGtub3duXHUyMDFELlxuICAgIC8vIE5vdCBzdGFuZGFyZC5cbiAgICAvLyBGZWVsIGZyZWUgdG8gYWRkIG90aGVyIG5vbi1zdGFuZGFyZCBmaWVsZHMgdG8geW91ciBtZXNzYWdlcy5cblxuICAgIC8qKlxuICAgICAqIFNwZWNpZnkgdGhlIHNvdXJjZSB2YWx1ZSB0aGF0XHUyMDE5cyBiZWluZyByZXBvcnRlZCwgd2hpY2ggaXMgZGVlbWVkXG4gICAgICogaW5jb3JyZWN0LlxuICAgICAqXG4gICAgICogQHR5cGUge3N0cmluZyB8IG51bGx9XG4gICAgICovXG4gICAgdGhpcy5hY3R1YWxcblxuICAgIC8qKlxuICAgICAqIFN1Z2dlc3QgYWNjZXB0YWJsZSB2YWx1ZXMgdGhhdCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIGBhY3R1YWxgLlxuICAgICAqXG4gICAgICogQHR5cGUge0FycmF5PHN0cmluZz4gfCBudWxsfVxuICAgICAqL1xuICAgIHRoaXMuZXhwZWN0ZWRcblxuICAgIC8qKlxuICAgICAqIExpbmsgdG8gZG9jcyBmb3IgdGhlIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogdGhpcyBtdXN0IGJlIGFuIGFic29sdXRlIFVSTCB0aGF0IGNhbiBiZSBwYXNzZWQgYXMgYHhgXG4gICAgICogPiB0byBgbmV3IFVSTCh4KWAuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nIHwgbnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLnVybFxuXG4gICAgLyoqXG4gICAgICogTG9uZyBmb3JtIGRlc2NyaXB0aW9uIG9mIHRoZSBtZXNzYWdlICh5b3Ugc2hvdWxkIHVzZSBtYXJrZG93bikuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nIHwgbnVsbH1cbiAgICAgKi9cbiAgICB0aGlzLm5vdGVcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC1leHByZXNzaW9ucyAqL1xuICB9XG59XG5cblZGaWxlTWVzc2FnZS5wcm90b3R5cGUuZmlsZSA9ICcnXG5WRmlsZU1lc3NhZ2UucHJvdG90eXBlLm5hbWUgPSAnJ1xuVkZpbGVNZXNzYWdlLnByb3RvdHlwZS5yZWFzb24gPSAnJ1xuVkZpbGVNZXNzYWdlLnByb3RvdHlwZS5tZXNzYWdlID0gJydcblZGaWxlTWVzc2FnZS5wcm90b3R5cGUuc3RhY2sgPSAnJ1xuVkZpbGVNZXNzYWdlLnByb3RvdHlwZS5mYXRhbCA9IG51bGxcblZGaWxlTWVzc2FnZS5wcm90b3R5cGUuY29sdW1uID0gbnVsbFxuVkZpbGVNZXNzYWdlLnByb3RvdHlwZS5saW5lID0gbnVsbFxuVkZpbGVNZXNzYWdlLnByb3RvdHlwZS5zb3VyY2UgPSBudWxsXG5WRmlsZU1lc3NhZ2UucHJvdG90eXBlLnJ1bGVJZCA9IG51bGxcblZGaWxlTWVzc2FnZS5wcm90b3R5cGUucG9zaXRpb24gPSBudWxsXG4iLCAiLy8gQSBkZXJpdmF0aXZlIHdvcmsgYmFzZWQgb246XG4vLyA8aHR0cHM6Ly9naXRodWIuY29tL2Jyb3dzZXJpZnkvcGF0aC1icm93c2VyaWZ5Pi5cbi8vIFdoaWNoIGlzIGxpY2Vuc2VkOlxuLy9cbi8vIE1JVCBMaWNlbnNlXG4vL1xuLy8gQ29weXJpZ2h0IChjKSAyMDEzIEphbWVzIEhhbGxpZGF5XG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZlxuLy8gdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpblxuLy8gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0b1xuLy8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2Zcbi8vIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbyxcbi8vIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuLy8gY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTU1xuLy8gRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SXG4vLyBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVJcbi8vIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOXG4vLyBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuLy8gQSBkZXJpdmF0aXZlIHdvcmsgYmFzZWQgb246XG4vL1xuLy8gUGFydHMgb2YgdGhhdCBhcmUgZXh0cmFjdGVkIGZyb20gTm9kZVx1MjAxOXMgaW50ZXJuYWwgYHBhdGhgIG1vZHVsZTpcbi8vIDxodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9tYXN0ZXIvbGliL3BhdGguanM+LlxuLy8gV2hpY2ggaXMgbGljZW5zZWQ6XG4vL1xuLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbmV4cG9ydCBjb25zdCBwYXRoID0ge2Jhc2VuYW1lLCBkaXJuYW1lLCBleHRuYW1lLCBqb2luLCBzZXA6ICcvJ31cblxuLyogZXNsaW50LWRpc2FibGUgbWF4LWRlcHRoLCBjb21wbGV4aXR5ICovXG5cbi8qKlxuICogR2V0IHRoZSBiYXNlbmFtZSBmcm9tIGEgcGF0aC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogICBGaWxlIHBhdGguXG4gKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gW2V4dF1cbiAqICAgRXh0ZW5zaW9uIHRvIHN0cmlwLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgU3RlbSBvciBiYXNlbmFtZS5cbiAqL1xuZnVuY3Rpb24gYmFzZW5hbWUocGF0aCwgZXh0KSB7XG4gIGlmIChleHQgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZXh0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiZXh0XCIgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZycpXG4gIH1cblxuICBhc3NlcnRQYXRoKHBhdGgpXG4gIGxldCBzdGFydCA9IDBcbiAgbGV0IGVuZCA9IC0xXG4gIGxldCBpbmRleCA9IHBhdGgubGVuZ3RoXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IHNlZW5Ob25TbGFzaFxuXG4gIGlmIChleHQgPT09IHVuZGVmaW5lZCB8fCBleHQubGVuZ3RoID09PSAwIHx8IGV4dC5sZW5ndGggPiBwYXRoLmxlbmd0aCkge1xuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGluZGV4KSA9PT0gNDcgLyogYC9gICovKSB7XG4gICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vdy5cbiAgICAgICAgaWYgKHNlZW5Ob25TbGFzaCkge1xuICAgICAgICAgIHN0YXJ0ID0gaW5kZXggKyAxXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbmQgPCAwKSB7XG4gICAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgICAgLy8gcGF0aCBjb21wb25lbnQuXG4gICAgICAgIHNlZW5Ob25TbGFzaCA9IHRydWVcbiAgICAgICAgZW5kID0gaW5kZXggKyAxXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVuZCA8IDAgPyAnJyA6IHBhdGguc2xpY2Uoc3RhcnQsIGVuZClcbiAgfVxuXG4gIGlmIChleHQgPT09IHBhdGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGxldCBmaXJzdE5vblNsYXNoRW5kID0gLTFcbiAgbGV0IGV4dEluZGV4ID0gZXh0Lmxlbmd0aCAtIDFcblxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoaW5kZXgpID09PSA0NyAvKiBgL2AgKi8pIHtcbiAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3cuXG4gICAgICBpZiAoc2Vlbk5vblNsYXNoKSB7XG4gICAgICAgIHN0YXJ0ID0gaW5kZXggKyAxXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChmaXJzdE5vblNsYXNoRW5kIDwgMCkge1xuICAgICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgcmVtZW1iZXIgdGhpcyBpbmRleCBpbiBjYXNlXG4gICAgICAgIC8vIHdlIG5lZWQgaXQgaWYgdGhlIGV4dGVuc2lvbiBlbmRzIHVwIG5vdCBtYXRjaGluZy5cbiAgICAgICAgc2Vlbk5vblNsYXNoID0gdHJ1ZVxuICAgICAgICBmaXJzdE5vblNsYXNoRW5kID0gaW5kZXggKyAxXG4gICAgICB9XG5cbiAgICAgIGlmIChleHRJbmRleCA+IC0xKSB7XG4gICAgICAgIC8vIFRyeSB0byBtYXRjaCB0aGUgZXhwbGljaXQgZXh0ZW5zaW9uLlxuICAgICAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGluZGV4KSA9PT0gZXh0LmNoYXJDb2RlQXQoZXh0SW5kZXgtLSkpIHtcbiAgICAgICAgICBpZiAoZXh0SW5kZXggPCAwKSB7XG4gICAgICAgICAgICAvLyBXZSBtYXRjaGVkIHRoZSBleHRlbnNpb24sIHNvIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91ciBwYXRoXG4gICAgICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgICAgIGVuZCA9IGluZGV4XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEV4dGVuc2lvbiBkb2VzIG5vdCBtYXRjaCwgc28gb3VyIHJlc3VsdCBpcyB0aGUgZW50aXJlIHBhdGhcbiAgICAgICAgICAvLyBjb21wb25lbnRcbiAgICAgICAgICBleHRJbmRleCA9IC0xXG4gICAgICAgICAgZW5kID0gZmlyc3ROb25TbGFzaEVuZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSBlbmQpIHtcbiAgICBlbmQgPSBmaXJzdE5vblNsYXNoRW5kXG4gIH0gZWxzZSBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCA9IHBhdGgubGVuZ3RoXG4gIH1cblxuICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKVxufVxuXG4vKipcbiAqIEdldCB0aGUgZGlybmFtZSBmcm9tIGEgcGF0aC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogICBGaWxlIHBhdGguXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBGaWxlIHBhdGguXG4gKi9cbmZ1bmN0aW9uIGRpcm5hbWUocGF0aCkge1xuICBhc3NlcnRQYXRoKHBhdGgpXG5cbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICcuJ1xuICB9XG5cbiAgbGV0IGVuZCA9IC0xXG4gIGxldCBpbmRleCA9IHBhdGgubGVuZ3RoXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IHVubWF0Y2hlZFNsYXNoXG5cbiAgLy8gUHJlZml4IGAtLWAgaXMgaW1wb3J0YW50IHRvIG5vdCBydW4gb24gYDBgLlxuICB3aGlsZSAoLS1pbmRleCkge1xuICAgIGlmIChwYXRoLmNoYXJDb2RlQXQoaW5kZXgpID09PSA0NyAvKiBgL2AgKi8pIHtcbiAgICAgIGlmICh1bm1hdGNoZWRTbGFzaCkge1xuICAgICAgICBlbmQgPSBpbmRleFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXVubWF0Y2hlZFNsYXNoKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvclxuICAgICAgdW5tYXRjaGVkU2xhc2ggPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVuZCA8IDBcbiAgICA/IHBhdGguY2hhckNvZGVBdCgwKSA9PT0gNDcgLyogYC9gICovXG4gICAgICA/ICcvJ1xuICAgICAgOiAnLidcbiAgICA6IGVuZCA9PT0gMSAmJiBwYXRoLmNoYXJDb2RlQXQoMCkgPT09IDQ3IC8qIGAvYCAqL1xuICAgID8gJy8vJ1xuICAgIDogcGF0aC5zbGljZSgwLCBlbmQpXG59XG5cbi8qKlxuICogR2V0IGFuIGV4dG5hbWUgZnJvbSBhIHBhdGguXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqICAgRmlsZSBwYXRoLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgRXh0bmFtZS5cbiAqL1xuZnVuY3Rpb24gZXh0bmFtZShwYXRoKSB7XG4gIGFzc2VydFBhdGgocGF0aClcblxuICBsZXQgaW5kZXggPSBwYXRoLmxlbmd0aFxuXG4gIGxldCBlbmQgPSAtMVxuICBsZXQgc3RhcnRQYXJ0ID0gMFxuICBsZXQgc3RhcnREb3QgPSAtMVxuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kLlxuICBsZXQgcHJlRG90U3RhdGUgPSAwXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IHVubWF0Y2hlZFNsYXNoXG5cbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICBjb25zdCBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KGluZGV4KVxuXG4gICAgaWYgKGNvZGUgPT09IDQ3IC8qIGAvYCAqLykge1xuICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vdy5cbiAgICAgIGlmICh1bm1hdGNoZWRTbGFzaCkge1xuICAgICAgICBzdGFydFBhcnQgPSBpbmRleCArIDFcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3IsIG1hcmsgdGhpcyBhcyB0aGUgZW5kIG9mIG91clxuICAgICAgLy8gZXh0ZW5zaW9uLlxuICAgICAgdW5tYXRjaGVkU2xhc2ggPSB0cnVlXG4gICAgICBlbmQgPSBpbmRleCArIDFcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gNDYgLyogYC5gICovKSB7XG4gICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb24uXG4gICAgICBpZiAoc3RhcnREb3QgPCAwKSB7XG4gICAgICAgIHN0YXJ0RG90ID0gaW5kZXhcbiAgICAgIH0gZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpIHtcbiAgICAgICAgcHJlRG90U3RhdGUgPSAxXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdGFydERvdCA+IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb24uXG4gICAgICBwcmVEb3RTdGF0ZSA9IC0xXG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHN0YXJ0RG90IDwgMCB8fFxuICAgIGVuZCA8IDAgfHxcbiAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdC5cbiAgICBwcmVEb3RTdGF0ZSA9PT0gMCB8fFxuICAgIC8vIFRoZSAocmlnaHQtbW9zdCkgdHJpbW1lZCBwYXRoIGNvbXBvbmVudCBpcyBleGFjdGx5IGAuLmAuXG4gICAgKHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKVxuICApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpXG59XG5cbi8qKlxuICogSm9pbiBzZWdtZW50cyBmcm9tIGEgcGF0aC5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IHNlZ21lbnRzXG4gKiAgIFBhdGggc2VnbWVudHMuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBGaWxlIHBhdGguXG4gKi9cbmZ1bmN0aW9uIGpvaW4oLi4uc2VnbWVudHMpIHtcbiAgbGV0IGluZGV4ID0gLTFcbiAgLyoqIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovXG4gIGxldCBqb2luZWRcblxuICB3aGlsZSAoKytpbmRleCA8IHNlZ21lbnRzLmxlbmd0aCkge1xuICAgIGFzc2VydFBhdGgoc2VnbWVudHNbaW5kZXhdKVxuXG4gICAgaWYgKHNlZ21lbnRzW2luZGV4XSkge1xuICAgICAgam9pbmVkID1cbiAgICAgICAgam9pbmVkID09PSB1bmRlZmluZWQgPyBzZWdtZW50c1tpbmRleF0gOiBqb2luZWQgKyAnLycgKyBzZWdtZW50c1tpbmRleF1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gam9pbmVkID09PSB1bmRlZmluZWQgPyAnLicgOiBub3JtYWxpemUoam9pbmVkKVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIGJhc2ljIGZpbGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogICBGaWxlIHBhdGguXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBGaWxlIHBhdGguXG4gKi9cbi8vIE5vdGU6IGBub3JtYWxpemVgIGlzIG5vdCBleHBvc2VkIGFzIGBwYXRoLm5vcm1hbGl6ZWAsIHNvIHNvbWUgY29kZSBpc1xuLy8gbWFudWFsbHkgcmVtb3ZlZCBmcm9tIGl0LlxuZnVuY3Rpb24gbm9ybWFsaXplKHBhdGgpIHtcbiAgYXNzZXJ0UGF0aChwYXRoKVxuXG4gIGNvbnN0IGFic29sdXRlID0gcGF0aC5jaGFyQ29kZUF0KDApID09PSA0NyAvKiBgL2AgKi9cblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGggYWNjb3JkaW5nIHRvIFBPU0lYIHJ1bGVzLlxuICBsZXQgdmFsdWUgPSBub3JtYWxpemVTdHJpbmcocGF0aCwgIWFic29sdXRlKVxuXG4gIGlmICh2YWx1ZS5sZW5ndGggPT09IDAgJiYgIWFic29sdXRlKSB7XG4gICAgdmFsdWUgPSAnLidcbiAgfVxuXG4gIGlmICh2YWx1ZS5sZW5ndGggPiAwICYmIHBhdGguY2hhckNvZGVBdChwYXRoLmxlbmd0aCAtIDEpID09PSA0NyAvKiAvICovKSB7XG4gICAgdmFsdWUgKz0gJy8nXG4gIH1cblxuICByZXR1cm4gYWJzb2x1dGUgPyAnLycgKyB2YWx1ZSA6IHZhbHVlXG59XG5cbi8qKlxuICogUmVzb2x2ZSBgLmAgYW5kIGAuLmAgZWxlbWVudHMgaW4gYSBwYXRoIHdpdGggZGlyZWN0b3J5IG5hbWVzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gKiAgIEZpbGUgcGF0aC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYWxsb3dBYm92ZVJvb3RcbiAqICAgV2hldGhlciBgLi5gIGNhbiBtb3ZlIGFib3ZlIHJvb3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBGaWxlIHBhdGguXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZyhwYXRoLCBhbGxvd0Fib3ZlUm9vdCkge1xuICBsZXQgcmVzdWx0ID0gJydcbiAgbGV0IGxhc3RTZWdtZW50TGVuZ3RoID0gMFxuICBsZXQgbGFzdFNsYXNoID0gLTFcbiAgbGV0IGRvdHMgPSAwXG4gIGxldCBpbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgY29kZVxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IGxhc3RTbGFzaEluZGV4XG5cbiAgd2hpbGUgKCsraW5kZXggPD0gcGF0aC5sZW5ndGgpIHtcbiAgICBpZiAoaW5kZXggPCBwYXRoLmxlbmd0aCkge1xuICAgICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpbmRleClcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDQ3IC8qIGAvYCAqLykge1xuICAgICAgYnJlYWtcbiAgICB9IGVsc2Uge1xuICAgICAgY29kZSA9IDQ3IC8qIGAvYCAqL1xuICAgIH1cblxuICAgIGlmIChjb2RlID09PSA0NyAvKiBgL2AgKi8pIHtcbiAgICAgIGlmIChsYXN0U2xhc2ggPT09IGluZGV4IC0gMSB8fCBkb3RzID09PSAxKSB7XG4gICAgICAgIC8vIEVtcHR5LlxuICAgICAgfSBlbHNlIGlmIChsYXN0U2xhc2ggIT09IGluZGV4IC0gMSAmJiBkb3RzID09PSAyKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXN1bHQubGVuZ3RoIDwgMiB8fFxuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoICE9PSAyIHx8XG4gICAgICAgICAgcmVzdWx0LmNoYXJDb2RlQXQocmVzdWx0Lmxlbmd0aCAtIDEpICE9PSA0NiAvKiBgLmAgKi8gfHxcbiAgICAgICAgICByZXN1bHQuY2hhckNvZGVBdChyZXN1bHQubGVuZ3RoIC0gMikgIT09IDQ2IC8qIGAuYCAqL1xuICAgICAgICApIHtcbiAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIGxhc3RTbGFzaEluZGV4ID0gcmVzdWx0Lmxhc3RJbmRleE9mKCcvJylcblxuICAgICAgICAgICAgaWYgKGxhc3RTbGFzaEluZGV4ICE9PSByZXN1bHQubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICBpZiAobGFzdFNsYXNoSW5kZXggPCAwKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gJydcbiAgICAgICAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IDBcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuc2xpY2UoMCwgbGFzdFNsYXNoSW5kZXgpXG4gICAgICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSByZXN1bHQubGVuZ3RoIC0gMSAtIHJlc3VsdC5sYXN0SW5kZXhPZignLycpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBsYXN0U2xhc2ggPSBpbmRleFxuICAgICAgICAgICAgICBkb3RzID0gMFxuICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJlc3VsdCA9ICcnXG4gICAgICAgICAgICBsYXN0U2VnbWVudExlbmd0aCA9IDBcbiAgICAgICAgICAgIGxhc3RTbGFzaCA9IGluZGV4XG4gICAgICAgICAgICBkb3RzID0gMFxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQubGVuZ3RoID4gMCA/IHJlc3VsdCArICcvLi4nIDogJy4uJ1xuICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMlxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXN1bHQgKz0gJy8nICsgcGF0aC5zbGljZShsYXN0U2xhc2ggKyAxLCBpbmRleClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSBwYXRoLnNsaWNlKGxhc3RTbGFzaCArIDEsIGluZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSBpbmRleCAtIGxhc3RTbGFzaCAtIDFcbiAgICAgIH1cblxuICAgICAgbGFzdFNsYXNoID0gaW5kZXhcbiAgICAgIGRvdHMgPSAwXG4gICAgfSBlbHNlIGlmIChjb2RlID09PSA0NiAvKiBgLmAgKi8gJiYgZG90cyA+IC0xKSB7XG4gICAgICBkb3RzKytcbiAgICB9IGVsc2Uge1xuICAgICAgZG90cyA9IC0xXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vKipcbiAqIE1ha2Ugc3VyZSBgcGF0aGAgaXMgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqICAgRmlsZSBwYXRoLlxuICogQHJldHVybnMge2Fzc2VydHMgcGF0aCBpcyBzdHJpbmd9XG4gKiAgIE5vdGhpbmcuXG4gKi9cbmZ1bmN0aW9uIGFzc2VydFBhdGgocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdQYXRoIG11c3QgYmUgYSBzdHJpbmcuIFJlY2VpdmVkICcgKyBKU09OLnN0cmluZ2lmeShwYXRoKVxuICAgIClcbiAgfVxufVxuXG4vKiBlc2xpbnQtZW5hYmxlIG1heC1kZXB0aCwgY29tcGxleGl0eSAqL1xuIiwgIi8vIFNvbWV3aGF0IGJhc2VkIG9uOlxuLy8gPGh0dHBzOi8vZ2l0aHViLmNvbS9kZWZ1bmN0em9tYmllL25vZGUtcHJvY2Vzcy9ibG9iL21hc3Rlci9icm93c2VyLmpzPi5cbi8vIEJ1dCBJIGRvblx1MjAxOXQgdGhpbmsgb25lIHRpbnkgbGluZSBvZiBjb2RlIGNhbiBiZSBjb3B5cmlnaHRlZC4gXHVEODNEXHVERTA1XG5leHBvcnQgY29uc3QgcHJvYyA9IHtjd2R9XG5cbmZ1bmN0aW9uIGN3ZCgpIHtcbiAgcmV0dXJuICcvJ1xufVxuIiwgIi8qKlxuICogQHR5cGVkZWYgVVJMXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaGFzaFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhvc3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBob3N0bmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhyZWZcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBvcmlnaW5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXNzd29yZFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBhdGhuYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcG9ydFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb3RvY29sXG4gKiBAcHJvcGVydHkge3N0cmluZ30gc2VhcmNoXG4gKiBAcHJvcGVydHkge2FueX0gc2VhcmNoUGFyYW1zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdXNlcm5hbWVcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gc3RyaW5nfSB0b1N0cmluZ1xuICogQHByb3BlcnR5IHsoKSA9PiBzdHJpbmd9IHRvSlNPTlxuICovXG5cbi8qKlxuICogQ2hlY2sgaWYgYGZpbGVVcmxPclBhdGhgIGxvb2tzIGxpa2UgYSBVUkwuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSBmaWxlVXJsT3JQYXRoXG4gKiAgIEZpbGUgcGF0aCBvciBVUkwuXG4gKiBAcmV0dXJucyB7ZmlsZVVybE9yUGF0aCBpcyBVUkx9XG4gKiAgIFdoZXRoZXIgaXRcdTIwMTlzIGEgVVJMLlxuICovXG4vLyBGcm9tOiA8aHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvZmNmOGJhNC9saWIvaW50ZXJuYWwvdXJsLmpzI0wxNTAxPlxuZXhwb3J0IGZ1bmN0aW9uIGlzVXJsKGZpbGVVcmxPclBhdGgpIHtcbiAgcmV0dXJuIChcbiAgICBmaWxlVXJsT3JQYXRoICE9PSBudWxsICYmXG4gICAgdHlwZW9mIGZpbGVVcmxPclBhdGggPT09ICdvYmplY3QnICYmXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogaW5kZXhhYmxlLlxuICAgIGZpbGVVcmxPclBhdGguaHJlZiAmJlxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGluZGV4YWJsZS5cbiAgICBmaWxlVXJsT3JQYXRoLm9yaWdpblxuICApXG59XG4iLCAiLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuaW1wb3J0IHtpc1VybH0gZnJvbSAnLi9taW51cmwuc2hhcmVkLmpzJ1xuXG4vLyBTZWU6IDxodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9mY2Y4YmE0L2xpYi9pbnRlcm5hbC91cmwuanM+XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmcgfCBVUkx9IHBhdGhcbiAqICAgRmlsZSBVUkwuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogICBGaWxlIFVSTC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVybFRvUGF0aChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICBwYXRoID0gbmV3IFVSTChwYXRoKVxuICB9IGVsc2UgaWYgKCFpc1VybChwYXRoKSkge1xuICAgIC8qKiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqL1xuICAgIGNvbnN0IGVycm9yID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJwYXRoXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZyBvciBhbiBpbnN0YW5jZSBvZiBVUkwuIFJlY2VpdmVkIGAnICtcbiAgICAgICAgcGF0aCArXG4gICAgICAgICdgJ1xuICAgIClcbiAgICBlcnJvci5jb2RlID0gJ0VSUl9JTlZBTElEX0FSR19UWVBFJ1xuICAgIHRocm93IGVycm9yXG4gIH1cblxuICBpZiAocGF0aC5wcm90b2NvbCAhPT0gJ2ZpbGU6Jykge1xuICAgIC8qKiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqL1xuICAgIGNvbnN0IGVycm9yID0gbmV3IFR5cGVFcnJvcignVGhlIFVSTCBtdXN0IGJlIG9mIHNjaGVtZSBmaWxlJylcbiAgICBlcnJvci5jb2RlID0gJ0VSUl9JTlZBTElEX1VSTF9TQ0hFTUUnXG4gICAgdGhyb3cgZXJyb3JcbiAgfVxuXG4gIHJldHVybiBnZXRQYXRoRnJvbVVSTFBvc2l4KHBhdGgpXG59XG5cbi8qKlxuICogR2V0IGEgcGF0aCBmcm9tIGEgUE9TSVggVVJMLlxuICpcbiAqIEBwYXJhbSB7VVJMfSB1cmxcbiAqICAgVVJMLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgRmlsZSBwYXRoLlxuICovXG5mdW5jdGlvbiBnZXRQYXRoRnJvbVVSTFBvc2l4KHVybCkge1xuICBpZiAodXJsLmhvc3RuYW1lICE9PSAnJykge1xuICAgIC8qKiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqL1xuICAgIGNvbnN0IGVycm9yID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICdGaWxlIFVSTCBob3N0IG11c3QgYmUgXCJsb2NhbGhvc3RcIiBvciBlbXB0eSBvbiBkYXJ3aW4nXG4gICAgKVxuICAgIGVycm9yLmNvZGUgPSAnRVJSX0lOVkFMSURfRklMRV9VUkxfSE9TVCdcbiAgICB0aHJvdyBlcnJvclxuICB9XG5cbiAgY29uc3QgcGF0aG5hbWUgPSB1cmwucGF0aG5hbWVcbiAgbGV0IGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IHBhdGhuYW1lLmxlbmd0aCkge1xuICAgIGlmIChcbiAgICAgIHBhdGhuYW1lLmNoYXJDb2RlQXQoaW5kZXgpID09PSAzNyAvKiBgJWAgKi8gJiZcbiAgICAgIHBhdGhuYW1lLmNoYXJDb2RlQXQoaW5kZXggKyAxKSA9PT0gNTAgLyogYDJgICovXG4gICAgKSB7XG4gICAgICBjb25zdCB0aGlyZCA9IHBhdGhuYW1lLmNoYXJDb2RlQXQoaW5kZXggKyAyKVxuICAgICAgaWYgKHRoaXJkID09PSA3MCAvKiBgRmAgKi8gfHwgdGhpcmQgPT09IDEwMiAvKiBgZmAgKi8pIHtcbiAgICAgICAgLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovXG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAnRmlsZSBVUkwgcGF0aCBtdXN0IG5vdCBpbmNsdWRlIGVuY29kZWQgLyBjaGFyYWN0ZXJzJ1xuICAgICAgICApXG4gICAgICAgIGVycm9yLmNvZGUgPSAnRVJSX0lOVkFMSURfRklMRV9VUkxfUEFUSCdcbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHBhdGhuYW1lKVxufVxuXG5leHBvcnQge2lzVXJsfSBmcm9tICcuL21pbnVybC5zaGFyZWQuanMnXG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlJvb3R8aW1wb3J0KCdtZGFzdCcpLkNvbnRlbnR9IE5vZGVcbiAqXG4gKiBAdHlwZWRlZiBPcHRpb25zXG4gKiAgIENvbmZpZ3VyYXRpb24gKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFtpbmNsdWRlSW1hZ2VBbHQ9dHJ1ZV1cbiAqICAgV2hldGhlciB0byB1c2UgYGFsdGAgZm9yIGBpbWFnZWBzLlxuICogQHByb3BlcnR5IHtib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2luY2x1ZGVIdG1sPXRydWVdXG4gKiAgIFdoZXRoZXIgdG8gdXNlIGB2YWx1ZWAgb2YgSFRNTC5cbiAqL1xuXG4vKiogQHR5cGUge09wdGlvbnN9ICovXG5jb25zdCBlbXB0eU9wdGlvbnMgPSB7fVxuXG4vKipcbiAqIEdldCB0aGUgdGV4dCBjb250ZW50IG9mIGEgbm9kZSBvciBsaXN0IG9mIG5vZGVzLlxuICpcbiAqIFByZWZlcnMgdGhlIG5vZGVcdTIwMTlzIHBsYWluLXRleHQgZmllbGRzLCBvdGhlcndpc2Ugc2VyaWFsaXplcyBpdHMgY2hpbGRyZW4sXG4gKiBhbmQgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIGFycmF5LCBzZXJpYWxpemUgdGhlIG5vZGVzIGluIGl0LlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWVcbiAqICAgVGhpbmcgdG8gc2VyaWFsaXplLCB0eXBpY2FsbHkgYE5vZGVgLlxuICogQHBhcmFtIHtPcHRpb25zIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29wdGlvbnNdXG4gKiAgIENvbmZpZ3VyYXRpb24gKG9wdGlvbmFsKS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIFNlcmlhbGl6ZWQgYHZhbHVlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHNldHRpbmdzID0gb3B0aW9ucyB8fCBlbXB0eU9wdGlvbnNcbiAgY29uc3QgaW5jbHVkZUltYWdlQWx0ID1cbiAgICB0eXBlb2Ygc2V0dGluZ3MuaW5jbHVkZUltYWdlQWx0ID09PSAnYm9vbGVhbidcbiAgICAgID8gc2V0dGluZ3MuaW5jbHVkZUltYWdlQWx0XG4gICAgICA6IHRydWVcbiAgY29uc3QgaW5jbHVkZUh0bWwgPVxuICAgIHR5cGVvZiBzZXR0aW5ncy5pbmNsdWRlSHRtbCA9PT0gJ2Jvb2xlYW4nID8gc2V0dGluZ3MuaW5jbHVkZUh0bWwgOiB0cnVlXG5cbiAgcmV0dXJuIG9uZSh2YWx1ZSwgaW5jbHVkZUltYWdlQWx0LCBpbmNsdWRlSHRtbClcbn1cblxuLyoqXG4gKiBPbmUgbm9kZSBvciBzZXZlcmFsIG5vZGVzLlxuICpcbiAqIEBwYXJhbSB7dW5rbm93bn0gdmFsdWVcbiAqICAgVGhpbmcgdG8gc2VyaWFsaXplLlxuICogQHBhcmFtIHtib29sZWFufSBpbmNsdWRlSW1hZ2VBbHRcbiAqICAgSW5jbHVkZSBpbWFnZSBgYWx0YHMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1ZGVIdG1sXG4gKiAgIEluY2x1ZGUgSFRNTC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIFNlcmlhbGl6ZWQgbm9kZS5cbiAqL1xuZnVuY3Rpb24gb25lKHZhbHVlLCBpbmNsdWRlSW1hZ2VBbHQsIGluY2x1ZGVIdG1sKSB7XG4gIGlmIChub2RlKHZhbHVlKSkge1xuICAgIGlmICgndmFsdWUnIGluIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUudHlwZSA9PT0gJ2h0bWwnICYmICFpbmNsdWRlSHRtbCA/ICcnIDogdmFsdWUudmFsdWVcbiAgICB9XG5cbiAgICBpZiAoaW5jbHVkZUltYWdlQWx0ICYmICdhbHQnIGluIHZhbHVlICYmIHZhbHVlLmFsdCkge1xuICAgICAgcmV0dXJuIHZhbHVlLmFsdFxuICAgIH1cblxuICAgIGlmICgnY2hpbGRyZW4nIGluIHZhbHVlKSB7XG4gICAgICByZXR1cm4gYWxsKHZhbHVlLmNoaWxkcmVuLCBpbmNsdWRlSW1hZ2VBbHQsIGluY2x1ZGVIdG1sKVxuICAgIH1cbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBhbGwodmFsdWUsIGluY2x1ZGVJbWFnZUFsdCwgaW5jbHVkZUh0bWwpXG4gIH1cblxuICByZXR1cm4gJydcbn1cblxuLyoqXG4gKiBTZXJpYWxpemUgYSBsaXN0IG9mIG5vZGVzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8dW5rbm93bj59IHZhbHVlc1xuICogICBUaGluZyB0byBzZXJpYWxpemUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluY2x1ZGVJbWFnZUFsdFxuICogICBJbmNsdWRlIGltYWdlIGBhbHRgcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUh0bWxcbiAqICAgSW5jbHVkZSBIVE1MLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgU2VyaWFsaXplZCBub2Rlcy5cbiAqL1xuZnVuY3Rpb24gYWxsKHZhbHVlcywgaW5jbHVkZUltYWdlQWx0LCBpbmNsdWRlSHRtbCkge1xuICAvKiogQHR5cGUge0FycmF5PHN0cmluZz59ICovXG4gIGNvbnN0IHJlc3VsdCA9IFtdXG4gIGxldCBpbmRleCA9IC0xXG5cbiAgd2hpbGUgKCsraW5kZXggPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IG9uZSh2YWx1ZXNbaW5kZXhdLCBpbmNsdWRlSW1hZ2VBbHQsIGluY2x1ZGVIdG1sKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdC5qb2luKCcnKVxufVxuXG4vKipcbiAqIENoZWNrIGlmIGB2YWx1ZWAgbG9va3MgbGlrZSBhIG5vZGUuXG4gKlxuICogQHBhcmFtIHt1bmtub3dufSB2YWx1ZVxuICogICBUaGluZy5cbiAqIEByZXR1cm5zIHt2YWx1ZSBpcyBOb2RlfVxuICogICBXaGV0aGVyIGB2YWx1ZWAgaXMgYSBub2RlLlxuICovXG5mdW5jdGlvbiBub2RlKHZhbHVlKSB7XG4gIHJldHVybiBCb29sZWFuKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpXG59XG4iLCAiLyoqXG4gKiBMaWtlIGBBcnJheSNzcGxpY2VgLCBidXQgc21hcnRlciBmb3IgZ2lhbnQgYXJyYXlzLlxuICpcbiAqIGBBcnJheSNzcGxpY2VgIHRha2VzIGFsbCBpdGVtcyB0byBiZSBpbnNlcnRlZCBhcyBpbmRpdmlkdWFsIGFyZ3VtZW50IHdoaWNoXG4gKiBjYXVzZXMgYSBzdGFjayBvdmVyZmxvdyBpbiBWOCB3aGVuIHRyeWluZyB0byBpbnNlcnQgMTAwayBpdGVtcyBmb3IgaW5zdGFuY2UuXG4gKlxuICogT3RoZXJ3aXNlLCB0aGlzIGRvZXMgbm90IHJldHVybiB0aGUgcmVtb3ZlZCBpdGVtcywgYW5kIHRha2VzIGBpdGVtc2AgYXMgYW5cbiAqIGFycmF5IGluc3RlYWQgb2YgcmVzdCBwYXJhbWV0ZXJzLlxuICpcbiAqIEB0ZW1wbGF0ZSB7dW5rbm93bn0gVFxuICogICBJdGVtIHR5cGUuXG4gKiBAcGFyYW0ge0FycmF5PFQ+fSBsaXN0XG4gKiAgIExpc3QgdG8gb3BlcmF0ZSBvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydFxuICogICBJbmRleCB0byByZW1vdmUvaW5zZXJ0IGF0IChjYW4gYmUgbmVnYXRpdmUpLlxuICogQHBhcmFtIHtudW1iZXJ9IHJlbW92ZVxuICogICBOdW1iZXIgb2YgaXRlbXMgdG8gcmVtb3ZlLlxuICogQHBhcmFtIHtBcnJheTxUPn0gaXRlbXNcbiAqICAgSXRlbXMgdG8gaW5qZWN0IGludG8gYGxpc3RgLlxuICogQHJldHVybnMge3ZvaWR9XG4gKiAgIE5vdGhpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpY2UobGlzdCwgc3RhcnQsIHJlbW92ZSwgaXRlbXMpIHtcbiAgY29uc3QgZW5kID0gbGlzdC5sZW5ndGhcbiAgbGV0IGNodW5rU3RhcnQgPSAwXG4gIC8qKiBAdHlwZSB7QXJyYXk8dW5rbm93bj59ICovXG4gIGxldCBwYXJhbWV0ZXJzXG5cbiAgLy8gTWFrZSBzdGFydCBiZXR3ZWVuIHplcm8gYW5kIGBlbmRgIChpbmNsdWRlZCkuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IC1zdGFydCA+IGVuZCA/IDAgOiBlbmQgKyBzdGFydFxuICB9IGVsc2Uge1xuICAgIHN0YXJ0ID0gc3RhcnQgPiBlbmQgPyBlbmQgOiBzdGFydFxuICB9XG4gIHJlbW92ZSA9IHJlbW92ZSA+IDAgPyByZW1vdmUgOiAwXG5cbiAgLy8gTm8gbmVlZCB0byBjaHVuayB0aGUgaXRlbXMgaWYgdGhlcmVcdTIwMTlzIG9ubHkgYSBjb3VwbGUgKDEwaykgaXRlbXMuXG4gIGlmIChpdGVtcy5sZW5ndGggPCAxMDAwMCkge1xuICAgIHBhcmFtZXRlcnMgPSBBcnJheS5mcm9tKGl0ZW1zKVxuICAgIHBhcmFtZXRlcnMudW5zaGlmdChzdGFydCwgcmVtb3ZlKVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgSHVzaCwgaXRcdTIwMTlzIGZpbmUuXG4gICAgbGlzdC5zcGxpY2UoLi4ucGFyYW1ldGVycylcbiAgfSBlbHNlIHtcbiAgICAvLyBEZWxldGUgYHJlbW92ZWAgaXRlbXMgc3RhcnRpbmcgZnJvbSBgc3RhcnRgXG4gICAgaWYgKHJlbW92ZSkgbGlzdC5zcGxpY2Uoc3RhcnQsIHJlbW92ZSlcblxuICAgIC8vIEluc2VydCB0aGUgaXRlbXMgaW4gY2h1bmtzIHRvIG5vdCBjYXVzZSBzdGFjayBvdmVyZmxvd3MuXG4gICAgd2hpbGUgKGNodW5rU3RhcnQgPCBpdGVtcy5sZW5ndGgpIHtcbiAgICAgIHBhcmFtZXRlcnMgPSBpdGVtcy5zbGljZShjaHVua1N0YXJ0LCBjaHVua1N0YXJ0ICsgMTAwMDApXG4gICAgICBwYXJhbWV0ZXJzLnVuc2hpZnQoc3RhcnQsIDApXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIEh1c2gsIGl0XHUyMDE5cyBmaW5lLlxuICAgICAgbGlzdC5zcGxpY2UoLi4ucGFyYW1ldGVycylcbiAgICAgIGNodW5rU3RhcnQgKz0gMTAwMDBcbiAgICAgIHN0YXJ0ICs9IDEwMDAwXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQXBwZW5kIGBpdGVtc2AgKGFuIGFycmF5KSBhdCB0aGUgZW5kIG9mIGBsaXN0YCAoYW5vdGhlciBhcnJheSkuXG4gKiBXaGVuIGBsaXN0YCB3YXMgZW1wdHksIHJldHVybnMgYGl0ZW1zYCBpbnN0ZWFkLlxuICpcbiAqIFRoaXMgcHJldmVudHMgYSBwb3RlbnRpYWxseSBleHBlbnNpdmUgb3BlcmF0aW9uIHdoZW4gYGxpc3RgIGlzIGVtcHR5LFxuICogYW5kIGFkZHMgaXRlbXMgaW4gYmF0Y2hlcyB0byBwcmV2ZW50IFY4IGZyb20gaGFuZ2luZy5cbiAqXG4gKiBAdGVtcGxhdGUge3Vua25vd259IFRcbiAqICAgSXRlbSB0eXBlLlxuICogQHBhcmFtIHtBcnJheTxUPn0gbGlzdFxuICogICBMaXN0IHRvIG9wZXJhdGUgb24uXG4gKiBAcGFyYW0ge0FycmF5PFQ+fSBpdGVtc1xuICogICBJdGVtcyB0byBhZGQgdG8gYGxpc3RgLlxuICogQHJldHVybnMge0FycmF5PFQ+fVxuICogICBFaXRoZXIgYGxpc3RgIG9yIGBpdGVtc2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdXNoKGxpc3QsIGl0ZW1zKSB7XG4gIGlmIChsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICBzcGxpY2UobGlzdCwgbGlzdC5sZW5ndGgsIDAsIGl0ZW1zKVxuICAgIHJldHVybiBsaXN0XG4gIH1cbiAgcmV0dXJuIGl0ZW1zXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV4dGVuc2lvbn0gRXh0ZW5zaW9uXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkhhbmRsZXN9IEhhbmRsZXNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSHRtbEV4dGVuc2lvbn0gSHRtbEV4dGVuc2lvblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ob3JtYWxpemVkRXh0ZW5zaW9ufSBOb3JtYWxpemVkRXh0ZW5zaW9uXG4gKi9cblxuaW1wb3J0IHtzcGxpY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNodW5rZWQnXG5cbmNvbnN0IGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHlcblxuLyoqXG4gKiBDb21iaW5lIG11bHRpcGxlIHN5bnRheCBleHRlbnNpb25zIGludG8gb25lLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8RXh0ZW5zaW9uPn0gZXh0ZW5zaW9uc1xuICogICBMaXN0IG9mIHN5bnRheCBleHRlbnNpb25zLlxuICogQHJldHVybnMge05vcm1hbGl6ZWRFeHRlbnNpb259XG4gKiAgIEEgc2luZ2xlIGNvbWJpbmVkIGV4dGVuc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVFeHRlbnNpb25zKGV4dGVuc2lvbnMpIHtcbiAgLyoqIEB0eXBlIHtOb3JtYWxpemVkRXh0ZW5zaW9ufSAqL1xuICBjb25zdCBhbGwgPSB7fVxuICBsZXQgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgZXh0ZW5zaW9ucy5sZW5ndGgpIHtcbiAgICBzeW50YXhFeHRlbnNpb24oYWxsLCBleHRlbnNpb25zW2luZGV4XSlcbiAgfVxuXG4gIHJldHVybiBhbGxcbn1cblxuLyoqXG4gKiBNZXJnZSBgZXh0ZW5zaW9uYCBpbnRvIGBhbGxgLlxuICpcbiAqIEBwYXJhbSB7Tm9ybWFsaXplZEV4dGVuc2lvbn0gYWxsXG4gKiAgIEV4dGVuc2lvbiB0byBtZXJnZSBpbnRvLlxuICogQHBhcmFtIHtFeHRlbnNpb259IGV4dGVuc2lvblxuICogICBFeHRlbnNpb24gdG8gbWVyZ2UuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gc3ludGF4RXh0ZW5zaW9uKGFsbCwgZXh0ZW5zaW9uKSB7XG4gIC8qKiBAdHlwZSB7a2V5b2YgRXh0ZW5zaW9ufSAqL1xuICBsZXQgaG9va1xuXG4gIGZvciAoaG9vayBpbiBleHRlbnNpb24pIHtcbiAgICBjb25zdCBtYXliZSA9IGhhc093blByb3BlcnR5LmNhbGwoYWxsLCBob29rKSA/IGFsbFtob29rXSA6IHVuZGVmaW5lZFxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59ICovXG4gICAgY29uc3QgbGVmdCA9IG1heWJlIHx8IChhbGxbaG9va10gPSB7fSlcbiAgICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkfSAqL1xuICAgIGNvbnN0IHJpZ2h0ID0gZXh0ZW5zaW9uW2hvb2tdXG4gICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gICAgbGV0IGNvZGVcblxuICAgIGlmIChyaWdodCkge1xuICAgICAgZm9yIChjb2RlIGluIHJpZ2h0KSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChsZWZ0LCBjb2RlKSkgbGVmdFtjb2RlXSA9IFtdXG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmlnaHRbY29kZV1cbiAgICAgICAgY29uc3RydWN0cyhcbiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIExvb2tzIGxpa2UgYSBsaXN0LlxuICAgICAgICAgIGxlZnRbY29kZV0sXG4gICAgICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IHZhbHVlID8gW3ZhbHVlXSA6IFtdXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBNZXJnZSBgbGlzdGAgaW50byBgZXhpc3RpbmdgIChib3RoIGxpc3RzIG9mIGNvbnN0cnVjdHMpLlxuICogTXV0YXRlcyBgZXhpc3RpbmdgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8dW5rbm93bj59IGV4aXN0aW5nXG4gKiBAcGFyYW0ge0FycmF5PHVua25vd24+fSBsaXN0XG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gY29uc3RydWN0cyhleGlzdGluZywgbGlzdCkge1xuICBsZXQgaW5kZXggPSAtMVxuICAvKiogQHR5cGUge0FycmF5PHVua25vd24+fSAqL1xuICBjb25zdCBiZWZvcmUgPSBbXVxuXG4gIHdoaWxlICgrK2luZGV4IDwgbGlzdC5sZW5ndGgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIExvb2tzIGxpa2UgYW4gb2JqZWN0LlxuICAgIDsobGlzdFtpbmRleF0uYWRkID09PSAnYWZ0ZXInID8gZXhpc3RpbmcgOiBiZWZvcmUpLnB1c2gobGlzdFtpbmRleF0pXG4gIH1cblxuICBzcGxpY2UoZXhpc3RpbmcsIDAsIDAsIGJlZm9yZSlcbn1cblxuLyoqXG4gKiBDb21iaW5lIG11bHRpcGxlIEhUTUwgZXh0ZW5zaW9ucyBpbnRvIG9uZS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PEh0bWxFeHRlbnNpb24+fSBodG1sRXh0ZW5zaW9uc1xuICogICBMaXN0IG9mIEhUTUwgZXh0ZW5zaW9ucy5cbiAqIEByZXR1cm5zIHtIdG1sRXh0ZW5zaW9ufVxuICogICBBIHNpbmdsZSBjb21iaW5lZCBIVE1MIGV4dGVuc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVIdG1sRXh0ZW5zaW9ucyhodG1sRXh0ZW5zaW9ucykge1xuICAvKiogQHR5cGUge0h0bWxFeHRlbnNpb259ICovXG4gIGNvbnN0IGhhbmRsZXJzID0ge31cbiAgbGV0IGluZGV4ID0gLTFcblxuICB3aGlsZSAoKytpbmRleCA8IGh0bWxFeHRlbnNpb25zLmxlbmd0aCkge1xuICAgIGh0bWxFeHRlbnNpb24oaGFuZGxlcnMsIGh0bWxFeHRlbnNpb25zW2luZGV4XSlcbiAgfVxuXG4gIHJldHVybiBoYW5kbGVyc1xufVxuXG4vKipcbiAqIE1lcmdlIGBleHRlbnNpb25gIGludG8gYGFsbGAuXG4gKlxuICogQHBhcmFtIHtIdG1sRXh0ZW5zaW9ufSBhbGxcbiAqICAgRXh0ZW5zaW9uIHRvIG1lcmdlIGludG8uXG4gKiBAcGFyYW0ge0h0bWxFeHRlbnNpb259IGV4dGVuc2lvblxuICogICBFeHRlbnNpb24gdG8gbWVyZ2UuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gaHRtbEV4dGVuc2lvbihhbGwsIGV4dGVuc2lvbikge1xuICAvKiogQHR5cGUge2tleW9mIEh0bWxFeHRlbnNpb259ICovXG4gIGxldCBob29rXG5cbiAgZm9yIChob29rIGluIGV4dGVuc2lvbikge1xuICAgIGNvbnN0IG1heWJlID0gaGFzT3duUHJvcGVydHkuY2FsbChhbGwsIGhvb2spID8gYWxsW2hvb2tdIDogdW5kZWZpbmVkXG4gICAgY29uc3QgbGVmdCA9IG1heWJlIHx8IChhbGxbaG9va10gPSB7fSlcbiAgICBjb25zdCByaWdodCA9IGV4dGVuc2lvbltob29rXVxuICAgIC8qKiBAdHlwZSB7a2V5b2YgSGFuZGxlc30gKi9cbiAgICBsZXQgdHlwZVxuXG4gICAgaWYgKHJpZ2h0KSB7XG4gICAgICBmb3IgKHR5cGUgaW4gcmlnaHQpIHtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBhc3N1bWUgZG9jdW1lbnQgdnMgcmVndWxhciBoYW5kbGVyIGFyZSBtYW5hZ2VkIGNvcnJlY3RseS5cbiAgICAgICAgbGVmdFt0eXBlXSA9IHJpZ2h0W3R5cGVdXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCAiLy8gVGhpcyBtb2R1bGUgaXMgZ2VuZXJhdGVkIGJ5IGBzY3JpcHQvYC5cbi8vXG4vLyBDb21tb25NYXJrIGhhbmRsZXMgYXR0ZW50aW9uIChlbXBoYXNpcywgc3Ryb25nKSBtYXJrZXJzIGJhc2VkIG9uIHdoYXQgY29tZXNcbi8vIGJlZm9yZSBvciBhZnRlciB0aGVtLlxuLy8gT25lIHN1Y2ggZGlmZmVyZW5jZSBpcyBpZiB0aG9zZSBjaGFyYWN0ZXJzIGFyZSBVbmljb2RlIHB1bmN0dWF0aW9uLlxuLy8gVGhpcyBzY3JpcHQgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIFVuaWNvZGUgZGF0YS5cblxuLyoqXG4gKiBSZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzIGEgdW5pY29kZSBwdW5jdHVhdGlvbiBjaGFyYWN0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCB1bmljb2RlUHVuY3R1YXRpb25SZWdleCA9XG4gIC9bIS1cXC86LUBcXFstYFxcey1+XFx4QTFcXHhBN1xceEFCXFx4QjZcXHhCN1xceEJCXFx4QkZcXHUwMzdFXFx1MDM4N1xcdTA1NUEtXFx1MDU1RlxcdTA1ODlcXHUwNThBXFx1MDVCRVxcdTA1QzBcXHUwNUMzXFx1MDVDNlxcdTA1RjNcXHUwNUY0XFx1MDYwOVxcdTA2MEFcXHUwNjBDXFx1MDYwRFxcdTA2MUJcXHUwNjFELVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTA5RkRcXHUwQTc2XFx1MEFGMFxcdTBDNzdcXHUwQzg0XFx1MERGNFxcdTBFNEZcXHUwRTVBXFx1MEU1QlxcdTBGMDQtXFx1MEYxMlxcdTBGMTRcXHUwRjNBLVxcdTBGM0RcXHUwRjg1XFx1MEZEMC1cXHUwRkQ0XFx1MEZEOVxcdTBGREFcXHUxMDRBLVxcdTEwNEZcXHUxMEZCXFx1MTM2MC1cXHUxMzY4XFx1MTQwMFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCN0RcXHUxQjdFXFx1MUJGQy1cXHUxQkZGXFx1MUMzQi1cXHUxQzNGXFx1MUM3RVxcdTFDN0ZcXHUxQ0MwLVxcdTFDQzdcXHUxQ0QzXFx1MjAxMC1cXHUyMDI3XFx1MjAzMC1cXHUyMDQzXFx1MjA0NS1cXHUyMDUxXFx1MjA1My1cXHUyMDVFXFx1MjA3RFxcdTIwN0VcXHUyMDhEXFx1MjA4RVxcdTIzMDgtXFx1MjMwQlxcdTIzMjlcXHUyMzJBXFx1Mjc2OC1cXHUyNzc1XFx1MjdDNVxcdTI3QzZcXHUyN0U2LVxcdTI3RUZcXHUyOTgzLVxcdTI5OThcXHUyOUQ4LVxcdTI5REJcXHUyOUZDXFx1MjlGRFxcdTJDRjktXFx1MkNGQ1xcdTJDRkVcXHUyQ0ZGXFx1MkQ3MFxcdTJFMDAtXFx1MkUyRVxcdTJFMzAtXFx1MkU0RlxcdTJFNTItXFx1MkU1RFxcdTMwMDEtXFx1MzAwM1xcdTMwMDgtXFx1MzAxMVxcdTMwMTQtXFx1MzAxRlxcdTMwMzBcXHUzMDNEXFx1MzBBMFxcdTMwRkJcXHVBNEZFXFx1QTRGRlxcdUE2MEQtXFx1QTYwRlxcdUE2NzNcXHVBNjdFXFx1QTZGMi1cXHVBNkY3XFx1QTg3NC1cXHVBODc3XFx1QThDRVxcdUE4Q0ZcXHVBOEY4LVxcdUE4RkFcXHVBOEZDXFx1QTkyRVxcdUE5MkZcXHVBOTVGXFx1QTlDMS1cXHVBOUNEXFx1QTlERVxcdUE5REZcXHVBQTVDLVxcdUFBNUZcXHVBQURFXFx1QUFERlxcdUFBRjBcXHVBQUYxXFx1QUJFQlxcdUZEM0VcXHVGRDNGXFx1RkUxMC1cXHVGRTE5XFx1RkUzMC1cXHVGRTUyXFx1RkU1NC1cXHVGRTYxXFx1RkU2M1xcdUZFNjhcXHVGRTZBXFx1RkU2QlxcdUZGMDEtXFx1RkYwM1xcdUZGMDUtXFx1RkYwQVxcdUZGMEMtXFx1RkYwRlxcdUZGMUFcXHVGRjFCXFx1RkYxRlxcdUZGMjBcXHVGRjNCLVxcdUZGM0RcXHVGRjNGXFx1RkY1QlxcdUZGNURcXHVGRjVGLVxcdUZGNjVdL1xuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKi9cblxuaW1wb3J0IHt1bmljb2RlUHVuY3R1YXRpb25SZWdleH0gZnJvbSAnLi9saWIvdW5pY29kZS1wdW5jdHVhdGlvbi1yZWdleC5qcydcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIGFuIEFTQ0lJIGFscGhhIChgYWAgdGhyb3VnaCBgemAsXG4gKiBjYXNlIGluc2Vuc2l0aXZlKS5cbiAqXG4gKiBBbiAqKkFTQ0lJIGFscGhhKiogaXMgYW4gQVNDSUkgdXBwZXIgYWxwaGEgb3IgQVNDSUkgbG93ZXIgYWxwaGEuXG4gKlxuICogQW4gKipBU0NJSSB1cHBlciBhbHBoYSoqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBpbmNsdXNpdmUgcmFuZ2UgVSswMDQxIChgQWApXG4gKiB0byBVKzAwNUEgKGBaYCkuXG4gKlxuICogQW4gKipBU0NJSSBsb3dlciBhbHBoYSoqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBpbmNsdXNpdmUgcmFuZ2UgVSswMDYxIChgYWApXG4gKiB0byBVKzAwN0EgKGB6YCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpQWxwaGEgPSByZWdleENoZWNrKC9bQS1aYS16XS8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBhbiBBU0NJSSBhbHBoYW51bWVyaWMgKGBhYFxuICogdGhyb3VnaCBgemAsIGNhc2UgaW5zZW5zaXRpdmUsIG9yIGAwYCB0aHJvdWdoIGA5YCkuXG4gKlxuICogQW4gKipBU0NJSSBhbHBoYW51bWVyaWMqKiBpcyBhbiBBU0NJSSBkaWdpdCAoc2VlIGBhc2NpaURpZ2l0YCkgb3IgQVNDSUkgYWxwaGFcbiAqIChzZWUgYGFzY2lpQWxwaGFgKS5cbiAqXG4gKiBAcGFyYW0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnNcbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgYXNjaWlBbHBoYW51bWVyaWMgPSByZWdleENoZWNrKC9bXFxkQS1aYS16XS8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBhbiBBU0NJSSBhdGV4dC5cbiAqXG4gKiBhdGV4dCBpcyBhbiBBU0NJSSBhbHBoYW51bWVyaWMgKHNlZSBgYXNjaWlBbHBoYW51bWVyaWNgKSwgb3IgYSBjaGFyYWN0ZXIgaW5cbiAqIHRoZSBpbmNsdXNpdmUgcmFuZ2VzIFUrMDAyMyBOVU1CRVIgU0lHTiAoYCNgKSB0byBVKzAwMjcgQVBPU1RST1BIRSAoYCdgKSxcbiAqIFUrMDAyQSBBU1RFUklTSyAoYCpgKSwgVSswMDJCIFBMVVMgU0lHTiAoYCtgKSwgVSswMDJEIERBU0ggKGAtYCksIFUrMDAyRlxuICogU0xBU0ggKGAvYCksIFUrMDAzRCBFUVVBTFMgVE8gKGA9YCksIFUrMDAzRiBRVUVTVElPTiBNQVJLIChgP2ApLCBVKzAwNUVcbiAqIENBUkVUIChgXmApIHRvIFUrMDA2MCBHUkFWRSBBQ0NFTlQgKGBgIGAgYGApLCBvciBVKzAwN0IgTEVGVCBDVVJMWSBCUkFDRVxuICogKGB7YCkgdG8gVSswMDdFIFRJTERFIChgfmApLlxuICpcbiAqIFNlZTpcbiAqICoqXFxbUkZDNTMyMl0qKjpcbiAqIFtJbnRlcm5ldCBNZXNzYWdlIEZvcm1hdF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzUzMjIpLlxuICogUC4gUmVzbmljay5cbiAqIElFVEYuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpQXRleHQgPSByZWdleENoZWNrKC9bIy0nKitcXC0tOT0/QS1aXi1+XS8pXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGNoYXJhY3RlciBjb2RlIGlzIGFuIEFTQ0lJIGNvbnRyb2wgY2hhcmFjdGVyLlxuICpcbiAqIEFuICoqQVNDSUkgY29udHJvbCoqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBpbmNsdXNpdmUgcmFuZ2UgVSswMDAwIE5VTEwgKE5VTClcbiAqIHRvIFUrMDAxRiAoVVMpLCBvciBVKzAwN0YgKERFTCkuXG4gKlxuICogQHBhcmFtIHtDb2RlfSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNjaWlDb250cm9sKGNvZGUpIHtcbiAgcmV0dXJuIChcbiAgICAvLyBTcGVjaWFsIHdoaXRlc3BhY2UgY29kZXMgKHdoaWNoIGhhdmUgbmVnYXRpdmUgdmFsdWVzKSwgQzAgYW5kIENvbnRyb2xcbiAgICAvLyBjaGFyYWN0ZXIgREVMXG4gICAgY29kZSAhPT0gbnVsbCAmJiAoY29kZSA8IDMyIHx8IGNvZGUgPT09IDEyNylcbiAgKVxufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gQVNDSUkgZGlnaXQgKGAwYCB0aHJvdWdoIGA5YCkuXG4gKlxuICogQW4gKipBU0NJSSBkaWdpdCoqIGlzIGEgY2hhcmFjdGVyIGluIHRoZSBpbmNsdXNpdmUgcmFuZ2UgVSswMDMwIChgMGApIHRvXG4gKiBVKzAwMzkgKGA5YCkuXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzY2lpRGlnaXQgPSByZWdleENoZWNrKC9cXGQvKVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgdGhlIGNoYXJhY3RlciBjb2RlIHJlcHJlc2VudHMgYW4gQVNDSUkgaGV4IGRpZ2l0IChgYWAgdGhyb3VnaFxuICogYGZgLCBjYXNlIGluc2Vuc2l0aXZlLCBvciBgMGAgdGhyb3VnaCBgOWApLlxuICpcbiAqIEFuICoqQVNDSUkgaGV4IGRpZ2l0KiogaXMgYW4gQVNDSUkgZGlnaXQgKHNlZSBgYXNjaWlEaWdpdGApLCBBU0NJSSB1cHBlciBoZXhcbiAqIGRpZ2l0LCBvciBhbiBBU0NJSSBsb3dlciBoZXggZGlnaXQuXG4gKlxuICogQW4gKipBU0NJSSB1cHBlciBoZXggZGlnaXQqKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIFUrMDA0MVxuICogKGBBYCkgdG8gVSswMDQ2IChgRmApLlxuICpcbiAqIEFuICoqQVNDSUkgbG93ZXIgaGV4IGRpZ2l0KiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBVKzAwNjFcbiAqIChgYWApIHRvIFUrMDA2NiAoYGZgKS5cbiAqXG4gKiBAcGFyYW0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnNcbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgYXNjaWlIZXhEaWdpdCA9IHJlZ2V4Q2hlY2soL1tcXGRBLUZhLWZdLylcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSByZXByZXNlbnRzIEFTQ0lJIHB1bmN0dWF0aW9uLlxuICpcbiAqIEFuICoqQVNDSUkgcHVuY3R1YXRpb24qKiBpcyBhIGNoYXJhY3RlciBpbiB0aGUgaW5jbHVzaXZlIHJhbmdlcyBVKzAwMjFcbiAqIEVYQ0xBTUFUSU9OIE1BUksgKGAhYCkgdG8gVSswMDJGIFNMQVNIIChgL2ApLCBVKzAwM0EgQ09MT04gKGA6YCkgdG8gVSswMDQwIEFUXG4gKiBTSUdOIChgQGApLCBVKzAwNUIgTEVGVCBTUVVBUkUgQlJBQ0tFVCAoYFtgKSB0byBVKzAwNjAgR1JBVkUgQUNDRU5UXG4gKiAoYGAgYCBgYCksIG9yIFUrMDA3QiBMRUZUIENVUkxZIEJSQUNFIChge2ApIHRvIFUrMDA3RSBUSUxERSAoYH5gKS5cbiAqXG4gKiBAcGFyYW0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnNcbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgYXNjaWlQdW5jdHVhdGlvbiA9IHJlZ2V4Q2hlY2soL1shLS86LUBbLWB7LX5dLylcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGEgY2hhcmFjdGVyIGNvZGUgaXMgYSBtYXJrZG93biBsaW5lIGVuZGluZy5cbiAqXG4gKiBBICoqbWFya2Rvd24gbGluZSBlbmRpbmcqKiBpcyB0aGUgdmlydHVhbCBjaGFyYWN0ZXJzIE0tMDAwMyBDQVJSSUFHRSBSRVRVUk5cbiAqIExJTkUgRkVFRCAoQ1JMRiksIE0tMDAwNCBMSU5FIEZFRUQgKExGKSBhbmQgTS0wMDA1IENBUlJJQUdFIFJFVFVSTiAoQ1IpLlxuICpcbiAqIEluIG1pY3JvbWFyaywgdGhlIGFjdHVhbCBjaGFyYWN0ZXIgVSswMDBBIExJTkUgRkVFRCAoTEYpIGFuZCBVKzAwMEQgQ0FSUklBR0VcbiAqIFJFVFVSTiAoQ1IpIGFyZSByZXBsYWNlZCBieSB0aGVzZSB2aXJ0dWFsIGNoYXJhY3RlcnMgZGVwZW5kaW5nIG9uIHdoZXRoZXJcbiAqIHRoZXkgb2NjdXJyZWQgdG9nZXRoZXIuXG4gKlxuICogQHBhcmFtIHtDb2RlfSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgIT09IG51bGwgJiYgY29kZSA8IC0yXG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIGNoYXJhY3RlciBjb2RlIGlzIGEgbWFya2Rvd24gbGluZSBlbmRpbmcgKHNlZVxuICogYG1hcmtkb3duTGluZUVuZGluZ2ApIG9yIG1hcmtkb3duIHNwYWNlIChzZWUgYG1hcmtkb3duU3BhY2VgKS5cbiAqXG4gKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIGl0IG1hdGNoZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpIHtcbiAgcmV0dXJuIGNvZGUgIT09IG51bGwgJiYgKGNvZGUgPCAwIHx8IGNvZGUgPT09IDMyKVxufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYSBjaGFyYWN0ZXIgY29kZSBpcyBhIG1hcmtkb3duIHNwYWNlLlxuICpcbiAqIEEgKiptYXJrZG93biBzcGFjZSoqIGlzIHRoZSBjb25jcmV0ZSBjaGFyYWN0ZXIgVSswMDIwIFNQQUNFIChTUCkgYW5kIHRoZVxuICogdmlydHVhbCBjaGFyYWN0ZXJzIE0tMDAwMSBWSVJUVUFMIFNQQUNFIChWUykgYW5kIE0tMDAwMiBIT1JJWk9OVEFMIFRBQiAoSFQpLlxuICpcbiAqIEluIG1pY3JvbWFyaywgdGhlIGFjdHVhbCBjaGFyYWN0ZXIgVSswMDA5IENIQVJBQ1RFUiBUQUJVTEFUSU9OIChIVCkgaXNcbiAqIHJlcGxhY2VkIGJ5IG9uZSBNLTAwMDIgSE9SSVpPTlRBTCBUQUIgKEhUKSBhbmQgYmV0d2VlbiAwIGFuZCAzIE0tMDAwMSBWSVJUVUFMXG4gKiBTUEFDRSAoVlMpIGNoYXJhY3RlcnMsIGRlcGVuZGluZyBvbiB0aGUgY29sdW1uIGF0IHdoaWNoIHRoZSB0YWIgb2NjdXJyZWQuXG4gKlxuICogQHBhcmFtIHtDb2RlfSBjb2RlXG4gKiAgIENvZGUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqICAgV2hldGhlciBpdCBtYXRjaGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFya2Rvd25TcGFjZShjb2RlKSB7XG4gIHJldHVybiBjb2RlID09PSAtMiB8fCBjb2RlID09PSAtMSB8fCBjb2RlID09PSAzMlxufVxuXG4vLyBTaXplIG5vdGU6IHJlbW92aW5nIEFTQ0lJIGZyb20gdGhlIHJlZ2V4IGFuZCB1c2luZyBgYXNjaWlQdW5jdHVhdGlvbmAgaGVyZVxuLy8gSW4gZmFjdCBhZGRzIHRvIHRoZSBidW5kbGUgc2l6ZS5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBVbmljb2RlIHB1bmN0dWF0aW9uLlxuICpcbiAqIEEgKipVbmljb2RlIHB1bmN0dWF0aW9uKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIFVuaWNvZGUgYFBjYCAoUHVuY3R1YXRpb24sXG4gKiBDb25uZWN0b3IpLCBgUGRgIChQdW5jdHVhdGlvbiwgRGFzaCksIGBQZWAgKFB1bmN0dWF0aW9uLCBDbG9zZSksIGBQZmBcbiAqIChQdW5jdHVhdGlvbiwgRmluYWwgcXVvdGUpLCBgUGlgIChQdW5jdHVhdGlvbiwgSW5pdGlhbCBxdW90ZSksIGBQb2BcbiAqIChQdW5jdHVhdGlvbiwgT3RoZXIpLCBvciBgUHNgIChQdW5jdHVhdGlvbiwgT3BlbikgY2F0ZWdvcmllcywgb3IgYW4gQVNDSUlcbiAqIHB1bmN0dWF0aW9uIChzZWUgYGFzY2lpUHVuY3R1YXRpb25gKS5cbiAqXG4gKiBTZWU6XG4gKiAqKlxcW1VOSUNPREVdKio6XG4gKiBbVGhlIFVuaWNvZGUgU3RhbmRhcmRdKGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zLykuXG4gKiBVbmljb2RlIENvbnNvcnRpdW0uXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVQdW5jdHVhdGlvbiA9IHJlZ2V4Q2hlY2sodW5pY29kZVB1bmN0dWF0aW9uUmVnZXgpXG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciB0aGUgY2hhcmFjdGVyIGNvZGUgcmVwcmVzZW50cyBVbmljb2RlIHdoaXRlc3BhY2UuXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgZG9lcyBoYW5kbGUgbWljcm9tYXJrIHNwZWNpZmljIG1hcmtkb3duIHdoaXRlc3BhY2UgY2hhcmFjdGVycy5cbiAqIFNlZSBgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZWAgdG8gY2hlY2sgdGhhdC5cbiAqXG4gKiBBICoqVW5pY29kZSB3aGl0ZXNwYWNlKiogaXMgYSBjaGFyYWN0ZXIgaW4gdGhlIFVuaWNvZGUgYFpzYCAoU2VwYXJhdG9yLFxuICogU3BhY2UpIGNhdGVnb3J5LCBvciBVKzAwMDkgQ0hBUkFDVEVSIFRBQlVMQVRJT04gKEhUKSwgVSswMDBBIExJTkUgRkVFRCAoTEYpLFxuICogVSswMDBDIChGRiksIG9yIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gKENSKSAoKipcXFtVTklDT0RFXSoqKS5cbiAqXG4gKiBTZWU6XG4gKiAqKlxcW1VOSUNPREVdKio6XG4gKiBbVGhlIFVuaWNvZGUgU3RhbmRhcmRdKGh0dHBzOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zLykuXG4gKiBVbmljb2RlIENvbnNvcnRpdW0uXG4gKlxuICogQHBhcmFtIGNvZGVcbiAqICAgQ29kZS5cbiAqIEByZXR1cm5zXG4gKiAgIFdoZXRoZXIgaXQgbWF0Y2hlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaWNvZGVXaGl0ZXNwYWNlID0gcmVnZXhDaGVjaygvXFxzLylcblxuLyoqXG4gKiBDcmVhdGUgYSBjb2RlIGNoZWNrIGZyb20gYSByZWdleC5cbiAqXG4gKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXhcbiAqIEByZXR1cm5zIHsoY29kZTogQ29kZSkgPT4gYm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gcmVnZXhDaGVjayhyZWdleCkge1xuICByZXR1cm4gY2hlY2tcblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIGNvZGUgbWF0Y2hlcyB0aGUgYm91bmQgcmVnZXguXG4gICAqXG4gICAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICAgKiAgIENoYXJhY3RlciBjb2RlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICogICBXaGV0aGVyIHRoZSBjaGFyYWN0ZXIgY29kZSBtYXRjaGVzIHRoZSBib3VuZCByZWdleC5cbiAgICovXG4gIGZ1bmN0aW9uIGNoZWNrKGNvZGUpIHtcbiAgICByZXR1cm4gY29kZSAhPT0gbnVsbCAmJiByZWdleC50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSkpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5UeXBlfSBUb2tlblR5cGVcbiAqL1xuXG5pbXBvcnQge21hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcblxuLy8gVG8gZG86IGltcGxlbWVudCBgc3BhY2VPclRhYmAsIGBzcGFjZU9yVGFiTWluTWF4YCwgYHNwYWNlT3JUYWJXaXRoT3B0aW9uc2AuXG5cbi8qKlxuICogUGFyc2Ugc3BhY2VzIGFuZCB0YWJzLlxuICpcbiAqIFRoZXJlIGlzIG5vIGBub2tgIHBhcmFtZXRlcjpcbiAqXG4gKiAqICAgc3BhY2VzIGluIG1hcmtkb3duIGFyZSBvZnRlbiBvcHRpb25hbCwgaW4gd2hpY2ggY2FzZSB0aGlzIGZhY3RvcnkgY2FuIGJlXG4gKiAgICAgdXNlZCBhbmQgYG9rYCB3aWxsIGJlIHN3aXRjaGVkIHRvIHdoZXRoZXIgc3BhY2VzIHdlcmUgZm91bmQgb3Igbm90XG4gKiAqICAgb25lIGxpbmUgZW5kaW5nIG9yIHNwYWNlIGNhbiBiZSBkZXRlY3RlZCB3aXRoIGBtYXJrZG93blNwYWNlKGNvZGUpYCByaWdodFxuICogICAgIGJlZm9yZSB1c2luZyBgZmFjdG9yeVNwYWNlYFxuICpcbiAqICMjIyMjIyBFeGFtcGxlc1xuICpcbiAqIFdoZXJlIGBcdTI0MDlgIHJlcHJlc2VudHMgYSB0YWIgKHBsdXMgaG93IG11Y2ggaXQgZXhwYW5kcykgYW5kIGBcdTI0MjBgIHJlcHJlc2VudHMgYVxuICogc2luZ2xlIHNwYWNlLlxuICpcbiAqIGBgYG1hcmtkb3duXG4gKiBcdTI0MDlcbiAqIFx1MjQyMFx1MjQyMFx1MjQyMFx1MjQyMFxuICogXHUyNDA5XHUyNDIwXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSB0eXBlXG4gKiAgIFR5cGUgKGAnIFxcdCdgKS5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgdW5kZWZpbmVkfSBbbWF4PUluZmluaXR5XVxuICogICBNYXggKGV4Y2x1c2l2ZSkuXG4gKiBAcmV0dXJuc1xuICogICBTdGFydCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBvaywgdHlwZSwgbWF4KSB7XG4gIGNvbnN0IGxpbWl0ID0gbWF4ID8gbWF4IC0gMSA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxuICBsZXQgc2l6ZSA9IDBcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgICByZXR1cm4gcHJlZml4KGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gcHJlZml4KGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSAmJiBzaXplKysgPCBsaW1pdCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gcHJlZml4XG4gICAgfVxuICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxDb25zdHJ1Y3R9IEluaXRpYWxDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbGl6ZXJ9IEluaXRpYWxpemVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtJbml0aWFsQ29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGNvbnRlbnQgPSB7XG4gIHRva2VuaXplOiBpbml0aWFsaXplQ29udGVudFxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gKi9cbmZ1bmN0aW9uIGluaXRpYWxpemVDb250ZW50KGVmZmVjdHMpIHtcbiAgY29uc3QgY29udGVudFN0YXJ0ID0gZWZmZWN0cy5hdHRlbXB0KFxuICAgIHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuY29udGVudEluaXRpYWwsXG4gICAgYWZ0ZXJDb250ZW50U3RhcnRDb25zdHJ1Y3QsXG4gICAgcGFyYWdyYXBoSW5pdGlhbFxuICApXG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCBwcmV2aW91c1xuICByZXR1cm4gY29udGVudFN0YXJ0XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gYWZ0ZXJDb250ZW50U3RhcnRDb25zdHJ1Y3QoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgY29udGVudFN0YXJ0LCAnbGluZVByZWZpeCcpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBwYXJhZ3JhcGhJbml0aWFsKGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdwYXJhZ3JhcGgnKVxuICAgIHJldHVybiBsaW5lU3RhcnQoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGxpbmVTdGFydChjb2RlKSB7XG4gICAgY29uc3QgdG9rZW4gPSBlZmZlY3RzLmVudGVyKCdjaHVua1RleHQnLCB7XG4gICAgICBjb250ZW50VHlwZTogJ3RleHQnLFxuICAgICAgcHJldmlvdXNcbiAgICB9KVxuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgcHJldmlvdXMubmV4dCA9IHRva2VuXG4gICAgfVxuICAgIHByZXZpb3VzID0gdG9rZW5cbiAgICByZXR1cm4gZGF0YShjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gZGF0YShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtUZXh0JylcbiAgICAgIGVmZmVjdHMuZXhpdCgncGFyYWdyYXBoJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdjaHVua1RleHQnKVxuICAgICAgcmV0dXJuIGxpbmVTdGFydFxuICAgIH1cblxuICAgIC8vIERhdGEuXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGRhdGFcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db250YWluZXJTdGF0ZX0gQ29udGFpbmVyU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbENvbnN0cnVjdH0gSW5pdGlhbENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsaXplcn0gSW5pdGlhbGl6ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUG9pbnR9IFBvaW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbn0gVG9rZW5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtbQ29uc3RydWN0LCBDb250YWluZXJTdGF0ZV19IFN0YWNrSXRlbVxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge3NwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbi8qKiBAdHlwZSB7SW5pdGlhbENvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBkb2N1bWVudCA9IHtcbiAgdG9rZW5pemU6IGluaXRpYWxpemVEb2N1bWVudFxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IGNvbnRhaW5lckNvbnN0cnVjdCA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplQ29udGFpbmVyXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtJbml0aWFsaXplcn1cbiAqL1xuZnVuY3Rpb24gaW5pdGlhbGl6ZURvY3VtZW50KGVmZmVjdHMpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgLyoqIEB0eXBlIHtBcnJheTxTdGFja0l0ZW0+fSAqL1xuICBjb25zdCBzdGFjayA9IFtdXG4gIGxldCBjb250aW51ZWQgPSAwXG4gIC8qKiBAdHlwZSB7VG9rZW5pemVDb250ZXh0IHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgY2hpbGRGbG93XG4gIC8qKiBAdHlwZSB7VG9rZW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBjaGlsZFRva2VuXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgbGluZVN0YXJ0T2Zmc2V0XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAvLyBGaXJzdCB3ZSBpdGVyYXRlIHRocm91Z2ggdGhlIG9wZW4gYmxvY2tzLCBzdGFydGluZyB3aXRoIHRoZSByb290XG4gICAgLy8gZG9jdW1lbnQsIGFuZCBkZXNjZW5kaW5nIHRocm91Z2ggbGFzdCBjaGlsZHJlbiBkb3duIHRvIHRoZSBsYXN0IG9wZW5cbiAgICAvLyBibG9jay5cbiAgICAvLyBFYWNoIGJsb2NrIGltcG9zZXMgYSBjb25kaXRpb24gdGhhdCB0aGUgbGluZSBtdXN0IHNhdGlzZnkgaWYgdGhlIGJsb2NrIGlzXG4gICAgLy8gdG8gcmVtYWluIG9wZW4uXG4gICAgLy8gRm9yIGV4YW1wbGUsIGEgYmxvY2sgcXVvdGUgcmVxdWlyZXMgYSBgPmAgY2hhcmFjdGVyLlxuICAgIC8vIEEgcGFyYWdyYXBoIHJlcXVpcmVzIGEgbm9uLWJsYW5rIGxpbmUuXG4gICAgLy8gSW4gdGhpcyBwaGFzZSB3ZSBtYXkgbWF0Y2ggYWxsIG9yIGp1c3Qgc29tZSBvZiB0aGUgb3BlbiBibG9ja3MuXG4gICAgLy8gQnV0IHdlIGNhbm5vdCBjbG9zZSB1bm1hdGNoZWQgYmxvY2tzIHlldCwgYmVjYXVzZSB3ZSBtYXkgaGF2ZSBhIGxhenlcbiAgICAvLyBjb250aW51YXRpb24gbGluZS5cbiAgICBpZiAoY29udGludWVkIDwgc3RhY2subGVuZ3RoKSB7XG4gICAgICBjb25zdCBpdGVtID0gc3RhY2tbY29udGludWVkXVxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZSA9IGl0ZW1bMV1cbiAgICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICAgIGl0ZW1bMF0uY29udGludWF0aW9uLFxuICAgICAgICBkb2N1bWVudENvbnRpbnVlLFxuICAgICAgICBjaGVja05ld0NvbnRhaW5lcnNcbiAgICAgICkoY29kZSlcbiAgICB9XG5cbiAgICAvLyBEb25lLlxuICAgIHJldHVybiBjaGVja05ld0NvbnRhaW5lcnMoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGRvY3VtZW50Q29udGludWUoY29kZSkge1xuICAgIGNvbnRpbnVlZCsrXG5cbiAgICAvLyBOb3RlOiB0aGlzIGZpZWxkIGlzIGNhbGxlZCBgX2Nsb3NlRmxvd2AgYnV0IGl0IGFsc28gY2xvc2VzIGNvbnRhaW5lcnMuXG4gICAgLy8gUGVyaGFwcyBhIGdvb2QgaWRlYSB0byByZW5hbWUgaXQgYnV0IGl0XHUyMDE5cyBhbHJlYWR5IHVzZWQgaW4gdGhlIHdpbGQgYnlcbiAgICAvLyBleHRlbnNpb25zLlxuICAgIGlmIChzZWxmLmNvbnRhaW5lclN0YXRlLl9jbG9zZUZsb3cpIHtcbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdyA9IHVuZGVmaW5lZFxuICAgICAgaWYgKGNoaWxkRmxvdykge1xuICAgICAgICBjbG9zZUZsb3coKVxuICAgICAgfVxuXG4gICAgICAvLyBOb3RlOiB0aGlzIGFsZ29yaXRobSBmb3IgbW92aW5nIGV2ZW50cyBhcm91bmQgaXMgc2ltaWxhciB0byB0aGVcbiAgICAgIC8vIGFsZ29yaXRobSB3aGVuIGRlYWxpbmcgd2l0aCBsYXp5IGxpbmVzIGluIGB3cml0ZVRvQ2hpbGRgLlxuICAgICAgY29uc3QgaW5kZXhCZWZvcmVFeGl0cyA9IHNlbGYuZXZlbnRzLmxlbmd0aFxuICAgICAgbGV0IGluZGV4QmVmb3JlRmxvdyA9IGluZGV4QmVmb3JlRXhpdHNcbiAgICAgIC8qKiBAdHlwZSB7UG9pbnQgfCB1bmRlZmluZWR9ICovXG4gICAgICBsZXQgcG9pbnRcblxuICAgICAgLy8gRmluZCB0aGUgZmxvdyBjaHVuay5cbiAgICAgIHdoaWxlIChpbmRleEJlZm9yZUZsb3ctLSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVswXSA9PT0gJ2V4aXQnICYmXG4gICAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVsxXS50eXBlID09PSAnY2h1bmtGbG93J1xuICAgICAgICApIHtcbiAgICAgICAgICBwb2ludCA9IHNlbGYuZXZlbnRzW2luZGV4QmVmb3JlRmxvd11bMV0uZW5kXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZXhpdENvbnRhaW5lcnMoY29udGludWVkKVxuXG4gICAgICAvLyBGaXggcG9zaXRpb25zLlxuICAgICAgbGV0IGluZGV4ID0gaW5kZXhCZWZvcmVFeGl0c1xuICAgICAgd2hpbGUgKGluZGV4IDwgc2VsZi5ldmVudHMubGVuZ3RoKSB7XG4gICAgICAgIHNlbGYuZXZlbnRzW2luZGV4XVsxXS5lbmQgPSBPYmplY3QuYXNzaWduKHt9LCBwb2ludClcbiAgICAgICAgaW5kZXgrK1xuICAgICAgfVxuXG4gICAgICAvLyBJbmplY3QgdGhlIGV4aXRzIGVhcmxpZXIgKHRoZXlcdTIwMTlyZSBzdGlsbCBhbHNvIGF0IHRoZSBlbmQpLlxuICAgICAgc3BsaWNlKFxuICAgICAgICBzZWxmLmV2ZW50cyxcbiAgICAgICAgaW5kZXhCZWZvcmVGbG93ICsgMSxcbiAgICAgICAgMCxcbiAgICAgICAgc2VsZi5ldmVudHMuc2xpY2UoaW5kZXhCZWZvcmVFeGl0cylcbiAgICAgIClcblxuICAgICAgLy8gRGlzY2FyZCB0aGUgZHVwbGljYXRlIGV4aXRzLlxuICAgICAgc2VsZi5ldmVudHMubGVuZ3RoID0gaW5kZXhcbiAgICAgIHJldHVybiBjaGVja05ld0NvbnRhaW5lcnMoY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIHN0YXJ0KGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBjaGVja05ld0NvbnRhaW5lcnMoY29kZSkge1xuICAgIC8vIE5leHQsIGFmdGVyIGNvbnN1bWluZyB0aGUgY29udGludWF0aW9uIG1hcmtlcnMgZm9yIGV4aXN0aW5nIGJsb2Nrcywgd2VcbiAgICAvLyBsb29rIGZvciBuZXcgYmxvY2sgc3RhcnRzIChlLmcuIGA+YCBmb3IgYSBibG9jayBxdW90ZSkuXG4gICAgLy8gSWYgd2UgZW5jb3VudGVyIGEgbmV3IGJsb2NrIHN0YXJ0LCB3ZSBjbG9zZSBhbnkgYmxvY2tzIHVubWF0Y2hlZCBpblxuICAgIC8vIHN0ZXAgMSBiZWZvcmUgY3JlYXRpbmcgdGhlIG5ldyBibG9jayBhcyBhIGNoaWxkIG9mIHRoZSBsYXN0IG1hdGNoZWRcbiAgICAvLyBibG9jay5cbiAgICBpZiAoY29udGludWVkID09PSBzdGFjay5sZW5ndGgpIHtcbiAgICAgIC8vIE5vIG5lZWQgdG8gYGNoZWNrYCB3aGV0aGVyIHRoZXJlXHUyMDE5cyBhIGNvbnRhaW5lciwgb2YgYGV4aXRDb250YWluZXJzYFxuICAgICAgLy8gd291bGQgYmUgbW9vdC5cbiAgICAgIC8vIFdlIGNhbiBpbnN0ZWFkIGltbWVkaWF0ZWx5IGBhdHRlbXB0YCB0byBwYXJzZSBvbmUuXG4gICAgICBpZiAoIWNoaWxkRmxvdykge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnRDb250aW51ZWQoY29kZSlcbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UgaGF2ZSBjb25jcmV0ZSBjb250ZW50LCBzdWNoIGFzIGJsb2NrIEhUTUwgb3IgZmVuY2VkIGNvZGUsXG4gICAgICAvLyB3ZSBjYW5cdTIwMTl0IGhhdmUgY29udGFpbmVycyBcdTIwMUNwaWVyY2VcdTIwMUQgaW50byB0aGVtLCBzbyB3ZSBjYW4gaW1tZWRpYXRlbHlcbiAgICAgIC8vIHN0YXJ0LlxuICAgICAgaWYgKGNoaWxkRmxvdy5jdXJyZW50Q29uc3RydWN0ICYmIGNoaWxkRmxvdy5jdXJyZW50Q29uc3RydWN0LmNvbmNyZXRlKSB7XG4gICAgICAgIHJldHVybiBmbG93U3RhcnQoY29kZSlcbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UgZG8gaGF2ZSBmbG93LCBpdCBjb3VsZCBzdGlsbCBiZSBhIGJsYW5rIGxpbmUsXG4gICAgICAvLyBidXQgd2VcdTIwMTlkIGJlIGludGVycnVwdGluZyBpdCB3LyBhIG5ldyBjb250YWluZXIgaWYgdGhlcmVcdTIwMTlzIGEgY3VycmVudFxuICAgICAgLy8gY29uc3RydWN0LlxuICAgICAgLy8gVG8gZG86IG5leHQgbWFqb3I6IHJlbW92ZSBgX2dmbVRhYmxlRHluYW1pY0ludGVycnVwdEhhY2tgIChubyBsb25nZXJcbiAgICAgIC8vIG5lZWRlZCBpbiBtaWNyb21hcmstZXh0ZW5zaW9uLWdmbS10YWJsZUAxLjAuNikuXG4gICAgICBzZWxmLmludGVycnVwdCA9IEJvb2xlYW4oXG4gICAgICAgIGNoaWxkRmxvdy5jdXJyZW50Q29uc3RydWN0ICYmICFjaGlsZEZsb3cuX2dmbVRhYmxlRHluYW1pY0ludGVycnVwdEhhY2tcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBjb250YWluZXIuXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZSA9IHt9XG4gICAgcmV0dXJuIGVmZmVjdHMuY2hlY2soXG4gICAgICBjb250YWluZXJDb25zdHJ1Y3QsXG4gICAgICB0aGVyZUlzQU5ld0NvbnRhaW5lcixcbiAgICAgIHRoZXJlSXNOb05ld0NvbnRhaW5lclxuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHRoZXJlSXNBTmV3Q29udGFpbmVyKGNvZGUpIHtcbiAgICBpZiAoY2hpbGRGbG93KSBjbG9zZUZsb3coKVxuICAgIGV4aXRDb250YWluZXJzKGNvbnRpbnVlZClcbiAgICByZXR1cm4gZG9jdW1lbnRDb250aW51ZWQoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHRoZXJlSXNOb05ld0NvbnRhaW5lcihjb2RlKSB7XG4gICAgc2VsZi5wYXJzZXIubGF6eVtzZWxmLm5vdygpLmxpbmVdID0gY29udGludWVkICE9PSBzdGFjay5sZW5ndGhcbiAgICBsaW5lU3RhcnRPZmZzZXQgPSBzZWxmLm5vdygpLm9mZnNldFxuICAgIHJldHVybiBmbG93U3RhcnQoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGRvY3VtZW50Q29udGludWVkKGNvZGUpIHtcbiAgICAvLyBUcnkgbmV3IGNvbnRhaW5lcnMuXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZSA9IHt9XG4gICAgcmV0dXJuIGVmZmVjdHMuYXR0ZW1wdChcbiAgICAgIGNvbnRhaW5lckNvbnN0cnVjdCxcbiAgICAgIGNvbnRhaW5lckNvbnRpbnVlLFxuICAgICAgZmxvd1N0YXJ0XG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gY29udGFpbmVyQ29udGludWUoY29kZSkge1xuICAgIGNvbnRpbnVlZCsrXG4gICAgc3RhY2sucHVzaChbc2VsZi5jdXJyZW50Q29uc3RydWN0LCBzZWxmLmNvbnRhaW5lclN0YXRlXSlcbiAgICAvLyBUcnkgYW5vdGhlci5cbiAgICByZXR1cm4gZG9jdW1lbnRDb250aW51ZWQoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGZsb3dTdGFydChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIGlmIChjaGlsZEZsb3cpIGNsb3NlRmxvdygpXG4gICAgICBleGl0Q29udGFpbmVycygwKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2hpbGRGbG93ID0gY2hpbGRGbG93IHx8IHNlbGYucGFyc2VyLmZsb3coc2VsZi5ub3coKSlcbiAgICBlZmZlY3RzLmVudGVyKCdjaHVua0Zsb3cnLCB7XG4gICAgICBjb250ZW50VHlwZTogJ2Zsb3cnLFxuICAgICAgcHJldmlvdXM6IGNoaWxkVG9rZW4sXG4gICAgICBfdG9rZW5pemVyOiBjaGlsZEZsb3dcbiAgICB9KVxuICAgIHJldHVybiBmbG93Q29udGludWUoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGZsb3dDb250aW51ZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIHdyaXRlVG9DaGlsZChlZmZlY3RzLmV4aXQoJ2NodW5rRmxvdycpLCB0cnVlKVxuICAgICAgZXhpdENvbnRhaW5lcnMoMClcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgd3JpdGVUb0NoaWxkKGVmZmVjdHMuZXhpdCgnY2h1bmtGbG93JykpXG4gICAgICAvLyBHZXQgcmVhZHkgZm9yIHRoZSBuZXh0IGxpbmUuXG4gICAgICBjb250aW51ZWQgPSAwXG4gICAgICBzZWxmLmludGVycnVwdCA9IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIHN0YXJ0XG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBmbG93Q29udGludWVcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICAgKiBAcGFyYW0ge2Jvb2xlYW4gfCB1bmRlZmluZWR9IFtlb2ZdXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gd3JpdGVUb0NoaWxkKHRva2VuLCBlb2YpIHtcbiAgICBjb25zdCBzdHJlYW0gPSBzZWxmLnNsaWNlU3RyZWFtKHRva2VuKVxuICAgIGlmIChlb2YpIHN0cmVhbS5wdXNoKG51bGwpXG4gICAgdG9rZW4ucHJldmlvdXMgPSBjaGlsZFRva2VuXG4gICAgaWYgKGNoaWxkVG9rZW4pIGNoaWxkVG9rZW4ubmV4dCA9IHRva2VuXG4gICAgY2hpbGRUb2tlbiA9IHRva2VuXG4gICAgY2hpbGRGbG93LmRlZmluZVNraXAodG9rZW4uc3RhcnQpXG4gICAgY2hpbGRGbG93LndyaXRlKHN0cmVhbSlcblxuICAgIC8vIEFscmlnaHQsIHNvIHdlIGp1c3QgYWRkZWQgYSBsYXp5IGxpbmU6XG4gICAgLy9cbiAgICAvLyBgYGBtYXJrZG93blxuICAgIC8vID4gYVxuICAgIC8vIGIuXG4gICAgLy9cbiAgICAvLyBPcjpcbiAgICAvL1xuICAgIC8vID4gfn5+Y1xuICAgIC8vIGRcbiAgICAvL1xuICAgIC8vIE9yOlxuICAgIC8vXG4gICAgLy8gPiB8IGUgfFxuICAgIC8vIGZcbiAgICAvLyBgYGBcbiAgICAvL1xuICAgIC8vIFRoZSBjb25zdHJ1Y3QgaW4gdGhlIHNlY29uZCBleGFtcGxlIChmZW5jZWQgY29kZSkgZG9lcyBub3QgYWNjZXB0IGxhenlcbiAgICAvLyBsaW5lcywgc28gaXQgbWFya2VkIGl0c2VsZiBhcyBkb25lIGF0IHRoZSBlbmQgb2YgaXRzIGZpcnN0IGxpbmUsIGFuZFxuICAgIC8vIHRoZW4gdGhlIGNvbnRlbnQgY29uc3RydWN0IHBhcnNlcyBgZGAuXG4gICAgLy8gTW9zdCBjb25zdHJ1Y3RzIGluIG1hcmtkb3duIG1hdGNoIG9uIHRoZSBmaXJzdCBsaW5lOiBpZiB0aGUgZmlyc3QgbGluZVxuICAgIC8vIGZvcm1zIGEgY29uc3RydWN0LCBhIG5vbi1sYXp5IGxpbmUgY2FuXHUyMDE5dCBcdTIwMUN1bm1ha2VcdTIwMUQgaXQuXG4gICAgLy9cbiAgICAvLyBUaGUgY29uc3RydWN0IGluIHRoZSB0aGlyZCBleGFtcGxlIGlzIHBvdGVudGlhbGx5IGEgR0ZNIHRhYmxlLCBhbmRcbiAgICAvLyB0aG9zZSBhcmUgKndlaXJkKi5cbiAgICAvLyBJdCAqY291bGQqIGJlIGEgdGFibGUsIGZyb20gdGhlIGZpcnN0IGxpbmUsIGlmIHRoZSBmb2xsb3dpbmcgbGluZVxuICAgIC8vIG1hdGNoZXMgYSBjb25kaXRpb24uXG4gICAgLy8gSW4gdGhpcyBjYXNlLCB0aGF0IHNlY29uZCBsaW5lIGlzIGxhenksIHdoaWNoIFx1MjAxQ3VubWFrZXNcdTIwMUQgdGhlIGZpcnN0IGxpbmVcbiAgICAvLyBhbmQgdHVybnMgdGhlIHdob2xlIGludG8gb25lIGNvbnRlbnQgYmxvY2suXG4gICAgLy9cbiAgICAvLyBXZVx1MjAxOXZlIG5vdyBwYXJzZWQgdGhlIG5vbi1sYXp5IGFuZCB0aGUgbGF6eSBsaW5lLCBhbmQgY2FuIGZpZ3VyZSBvdXRcbiAgICAvLyB3aGV0aGVyIHRoZSBsYXp5IGxpbmUgc3RhcnRlZCBhIG5ldyBmbG93IGJsb2NrLlxuICAgIC8vIElmIGl0IGRpZCwgd2UgZXhpdCB0aGUgY3VycmVudCBjb250YWluZXJzIGJldHdlZW4gdGhlIHR3byBmbG93IGJsb2Nrcy5cbiAgICBpZiAoc2VsZi5wYXJzZXIubGF6eVt0b2tlbi5zdGFydC5saW5lXSkge1xuICAgICAgbGV0IGluZGV4ID0gY2hpbGRGbG93LmV2ZW50cy5sZW5ndGhcbiAgICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAvLyBUaGUgdG9rZW4gc3RhcnRzIGJlZm9yZSB0aGUgbGluZSBlbmRpbmdcdTIwMjZcbiAgICAgICAgICBjaGlsZEZsb3cuZXZlbnRzW2luZGV4XVsxXS5zdGFydC5vZmZzZXQgPCBsaW5lU3RhcnRPZmZzZXQgJiZcbiAgICAgICAgICAvLyBcdTIwMjZhbmQgZWl0aGVyIGlzIG5vdCBlbmRlZCB5ZXRcdTIwMjZcbiAgICAgICAgICAoIWNoaWxkRmxvdy5ldmVudHNbaW5kZXhdWzFdLmVuZCB8fFxuICAgICAgICAgICAgLy8gXHUyMDI2b3IgZW5kcyBhZnRlciBpdC5cbiAgICAgICAgICAgIGNoaWxkRmxvdy5ldmVudHNbaW5kZXhdWzFdLmVuZC5vZmZzZXQgPiBsaW5lU3RhcnRPZmZzZXQpXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIEV4aXQ6IHRoZXJlXHUyMDE5cyBzdGlsbCBzb21ldGhpbmcgb3Blbiwgd2hpY2ggbWVhbnMgaXRcdTIwMTlzIGEgbGF6eSBsaW5lXG4gICAgICAgICAgLy8gcGFydCBvZiBzb21ldGhpbmcuXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTm90ZTogdGhpcyBhbGdvcml0aG0gZm9yIG1vdmluZyBldmVudHMgYXJvdW5kIGlzIHNpbWlsYXIgdG8gdGhlXG4gICAgICAvLyBhbGdvcml0aG0gd2hlbiBjbG9zaW5nIGZsb3cgaW4gYGRvY3VtZW50Q29udGludWVgLlxuICAgICAgY29uc3QgaW5kZXhCZWZvcmVFeGl0cyA9IHNlbGYuZXZlbnRzLmxlbmd0aFxuICAgICAgbGV0IGluZGV4QmVmb3JlRmxvdyA9IGluZGV4QmVmb3JlRXhpdHNcbiAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgICAgIGxldCBzZWVuXG4gICAgICAvKiogQHR5cGUge1BvaW50IHwgdW5kZWZpbmVkfSAqL1xuICAgICAgbGV0IHBvaW50XG5cbiAgICAgIC8vIEZpbmQgdGhlIHByZXZpb3VzIGNodW5rICh0aGUgb25lIGJlZm9yZSB0aGUgbGF6eSBsaW5lKS5cbiAgICAgIHdoaWxlIChpbmRleEJlZm9yZUZsb3ctLSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVswXSA9PT0gJ2V4aXQnICYmXG4gICAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhCZWZvcmVGbG93XVsxXS50eXBlID09PSAnY2h1bmtGbG93J1xuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoc2Vlbikge1xuICAgICAgICAgICAgcG9pbnQgPSBzZWxmLmV2ZW50c1tpbmRleEJlZm9yZUZsb3ddWzFdLmVuZFxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgc2VlbiA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZXhpdENvbnRhaW5lcnMoY29udGludWVkKVxuXG4gICAgICAvLyBGaXggcG9zaXRpb25zLlxuICAgICAgaW5kZXggPSBpbmRleEJlZm9yZUV4aXRzXG4gICAgICB3aGlsZSAoaW5kZXggPCBzZWxmLmV2ZW50cy5sZW5ndGgpIHtcbiAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhdWzFdLmVuZCA9IE9iamVjdC5hc3NpZ24oe30sIHBvaW50KVxuICAgICAgICBpbmRleCsrXG4gICAgICB9XG5cbiAgICAgIC8vIEluamVjdCB0aGUgZXhpdHMgZWFybGllciAodGhleVx1MjAxOXJlIHN0aWxsIGFsc28gYXQgdGhlIGVuZCkuXG4gICAgICBzcGxpY2UoXG4gICAgICAgIHNlbGYuZXZlbnRzLFxuICAgICAgICBpbmRleEJlZm9yZUZsb3cgKyAxLFxuICAgICAgICAwLFxuICAgICAgICBzZWxmLmV2ZW50cy5zbGljZShpbmRleEJlZm9yZUV4aXRzKVxuICAgICAgKVxuXG4gICAgICAvLyBEaXNjYXJkIHRoZSBkdXBsaWNhdGUgZXhpdHMuXG4gICAgICBzZWxmLmV2ZW50cy5sZW5ndGggPSBpbmRleFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIGV4aXRDb250YWluZXJzKHNpemUpIHtcbiAgICBsZXQgaW5kZXggPSBzdGFjay5sZW5ndGhcblxuICAgIC8vIEV4aXQgb3BlbiBjb250YWluZXJzLlxuICAgIHdoaWxlIChpbmRleC0tID4gc2l6ZSkge1xuICAgICAgY29uc3QgZW50cnkgPSBzdGFja1tpbmRleF1cbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUgPSBlbnRyeVsxXVxuICAgICAgZW50cnlbMF0uZXhpdC5jYWxsKHNlbGYsIGVmZmVjdHMpXG4gICAgfVxuICAgIHN0YWNrLmxlbmd0aCA9IHNpemVcbiAgfVxuICBmdW5jdGlvbiBjbG9zZUZsb3coKSB7XG4gICAgY2hpbGRGbG93LndyaXRlKFtudWxsXSlcbiAgICBjaGlsZFRva2VuID0gdW5kZWZpbmVkXG4gICAgY2hpbGRGbG93ID0gdW5kZWZpbmVkXG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5fY2xvc2VGbG93ID0gdW5kZWZpbmVkXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDb250YWluZXIoZWZmZWN0cywgb2ssIG5vaykge1xuICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gIHJldHVybiBmYWN0b3J5U3BhY2UoXG4gICAgZWZmZWN0cyxcbiAgICBlZmZlY3RzLmF0dGVtcHQodGhpcy5wYXJzZXIuY29uc3RydWN0cy5kb2N1bWVudCwgb2ssIG5vayksXG4gICAgJ2xpbmVQcmVmaXgnLFxuICAgIHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCdjb2RlSW5kZW50ZWQnKSA/IHVuZGVmaW5lZCA6IDRcbiAgKVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKi9cblxuaW1wb3J0IHtcbiAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZSxcbiAgdW5pY29kZVB1bmN0dWF0aW9uLFxuICB1bmljb2RlV2hpdGVzcGFjZVxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKipcbiAqIENsYXNzaWZ5IHdoZXRoZXIgYSBjb2RlIHJlcHJlc2VudHMgd2hpdGVzcGFjZSwgcHVuY3R1YXRpb24sIG9yIHNvbWV0aGluZ1xuICogZWxzZS5cbiAqXG4gKiBVc2VkIGZvciBhdHRlbnRpb24gKGVtcGhhc2lzLCBzdHJvbmcpLCB3aG9zZSBzZXF1ZW5jZXMgY2FuIG9wZW4gb3IgY2xvc2VcbiAqIGJhc2VkIG9uIHRoZSBjbGFzcyBvZiBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLlxuICpcbiAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiBlb2YgKGBudWxsYCkgaXMgc2VlbiBhcyB3aGl0ZXNwYWNlLlxuICpcbiAqIEBwYXJhbSB7Q29kZX0gY29kZVxuICogICBDb2RlLlxuICogQHJldHVybnMge3R5cGVvZiBjb25zdGFudHMuY2hhcmFjdGVyR3JvdXBXaGl0ZXNwYWNlIHwgdHlwZW9mIGNvbnN0YW50cy5jaGFyYWN0ZXJHcm91cFB1bmN0dWF0aW9uIHwgdW5kZWZpbmVkfVxuICogICBHcm91cC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYXNzaWZ5Q2hhcmFjdGVyKGNvZGUpIHtcbiAgaWYgKFxuICAgIGNvZGUgPT09IG51bGwgfHxcbiAgICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpIHx8XG4gICAgdW5pY29kZVdoaXRlc3BhY2UoY29kZSlcbiAgKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuICBpZiAodW5pY29kZVB1bmN0dWF0aW9uKGNvZGUpKSB7XG4gICAgcmV0dXJuIDJcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FdmVudH0gRXZlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUmVzb2x2ZXJ9IFJlc29sdmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKi9cblxuLyoqXG4gKiBDYWxsIGFsbCBgcmVzb2x2ZUFsbGBzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8e3Jlc29sdmVBbGw/OiBSZXNvbHZlciB8IHVuZGVmaW5lZH0+fSBjb25zdHJ1Y3RzXG4gKiAgIExpc3Qgb2YgY29uc3RydWN0cywgb3B0aW9uYWxseSB3aXRoIGByZXNvbHZlQWxsYHMuXG4gKiBAcGFyYW0ge0FycmF5PEV2ZW50Pn0gZXZlbnRzXG4gKiAgIExpc3Qgb2YgZXZlbnRzLlxuICogQHBhcmFtIHtUb2tlbml6ZUNvbnRleHR9IGNvbnRleHRcbiAqICAgQ29udGV4dCB1c2VkIGJ5IGB0b2tlbml6ZWAuXG4gKiBAcmV0dXJucyB7QXJyYXk8RXZlbnQ+fVxuICogICBDaGFuZ2VkIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVBbGwoY29uc3RydWN0cywgZXZlbnRzLCBjb250ZXh0KSB7XG4gIC8qKiBAdHlwZSB7QXJyYXk8UmVzb2x2ZXI+fSAqL1xuICBjb25zdCBjYWxsZWQgPSBbXVxuICBsZXQgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgY29uc3RydWN0cy5sZW5ndGgpIHtcbiAgICBjb25zdCByZXNvbHZlID0gY29uc3RydWN0c1tpbmRleF0ucmVzb2x2ZUFsbFxuXG4gICAgaWYgKHJlc29sdmUgJiYgIWNhbGxlZC5pbmNsdWRlcyhyZXNvbHZlKSkge1xuICAgICAgZXZlbnRzID0gcmVzb2x2ZShldmVudHMsIGNvbnRleHQpXG4gICAgICBjYWxsZWQucHVzaChyZXNvbHZlKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBldmVudHNcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FdmVudH0gRXZlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUG9pbnR9IFBvaW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtwdXNoLCBzcGxpY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNodW5rZWQnXG5pbXBvcnQge2NsYXNzaWZ5Q2hhcmFjdGVyfSBmcm9tICdtaWNyb21hcmstdXRpbC1jbGFzc2lmeS1jaGFyYWN0ZXInXG5pbXBvcnQge3Jlc29sdmVBbGx9IGZyb20gJ21pY3JvbWFyay11dGlsLXJlc29sdmUtYWxsJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgYXR0ZW50aW9uID0ge1xuICBuYW1lOiAnYXR0ZW50aW9uJyxcbiAgdG9rZW5pemU6IHRva2VuaXplQXR0ZW50aW9uLFxuICByZXNvbHZlQWxsOiByZXNvbHZlQWxsQXR0ZW50aW9uXG59XG5cbi8qKlxuICogVGFrZSBhbGwgZXZlbnRzIGFuZCByZXNvbHZlIGF0dGVudGlvbiB0byBlbXBoYXNpcyBvciBzdHJvbmcuXG4gKlxuICogQHR5cGUge1Jlc29sdmVyfVxuICovXG5mdW5jdGlvbiByZXNvbHZlQWxsQXR0ZW50aW9uKGV2ZW50cywgY29udGV4dCkge1xuICBsZXQgaW5kZXggPSAtMVxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IG9wZW5cbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IGdyb3VwXG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCB0ZXh0XG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCBvcGVuaW5nU2VxdWVuY2VcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IGNsb3NpbmdTZXF1ZW5jZVxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IHVzZVxuICAvKiogQHR5cGUge0FycmF5PEV2ZW50Pn0gKi9cbiAgbGV0IG5leHRFdmVudHNcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBvZmZzZXRcblxuICAvLyBXYWxrIHRocm91Z2ggYWxsIGV2ZW50cy5cbiAgLy9cbiAgLy8gTm90ZTogcGVyZm9ybWFuY2Ugb2YgdGhpcyBpcyBmaW5lIG9uIGFuIG1iIG9mIG5vcm1hbCBtYXJrZG93biwgYnV0IGl0XHUyMDE5c1xuICAvLyBhIGJvdHRsZW5lY2sgZm9yIG1hbGljaW91cyBzdHVmZi5cbiAgd2hpbGUgKCsraW5kZXggPCBldmVudHMubGVuZ3RoKSB7XG4gICAgLy8gRmluZCBhIHRva2VuIHRoYXQgY2FuIGNsb3NlLlxuICAgIGlmIChcbiAgICAgIGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicgJiZcbiAgICAgIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2F0dGVudGlvblNlcXVlbmNlJyAmJlxuICAgICAgZXZlbnRzW2luZGV4XVsxXS5fY2xvc2VcbiAgICApIHtcbiAgICAgIG9wZW4gPSBpbmRleFxuXG4gICAgICAvLyBOb3cgd2FsayBiYWNrIHRvIGZpbmQgYW4gb3BlbmVyLlxuICAgICAgd2hpbGUgKG9wZW4tLSkge1xuICAgICAgICAvLyBGaW5kIGEgdG9rZW4gdGhhdCBjYW4gb3BlbiB0aGUgY2xvc2VyLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgZXZlbnRzW29wZW5dWzBdID09PSAnZXhpdCcgJiZcbiAgICAgICAgICBldmVudHNbb3Blbl1bMV0udHlwZSA9PT0gJ2F0dGVudGlvblNlcXVlbmNlJyAmJlxuICAgICAgICAgIGV2ZW50c1tvcGVuXVsxXS5fb3BlbiAmJlxuICAgICAgICAgIC8vIElmIHRoZSBtYXJrZXJzIGFyZSB0aGUgc2FtZTpcbiAgICAgICAgICBjb250ZXh0LnNsaWNlU2VyaWFsaXplKGV2ZW50c1tvcGVuXVsxXSkuY2hhckNvZGVBdCgwKSA9PT1cbiAgICAgICAgICAgIGNvbnRleHQuc2xpY2VTZXJpYWxpemUoZXZlbnRzW2luZGV4XVsxXSkuY2hhckNvZGVBdCgwKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBJZiB0aGUgb3BlbmluZyBjYW4gY2xvc2Ugb3IgdGhlIGNsb3NpbmcgY2FuIG9wZW4sXG4gICAgICAgICAgLy8gYW5kIHRoZSBjbG9zZSBzaXplICppcyBub3QqIGEgbXVsdGlwbGUgb2YgdGhyZWUsXG4gICAgICAgICAgLy8gYnV0IHRoZSBzdW0gb2YgdGhlIG9wZW5pbmcgYW5kIGNsb3Npbmcgc2l6ZSAqaXMqIG11bHRpcGxlIG9mIHRocmVlLFxuICAgICAgICAgIC8vIHRoZW4gZG9uXHUyMDE5dCBtYXRjaC5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoZXZlbnRzW29wZW5dWzFdLl9jbG9zZSB8fCBldmVudHNbaW5kZXhdWzFdLl9vcGVuKSAmJlxuICAgICAgICAgICAgKGV2ZW50c1tpbmRleF1bMV0uZW5kLm9mZnNldCAtIGV2ZW50c1tpbmRleF1bMV0uc3RhcnQub2Zmc2V0KSAlIDMgJiZcbiAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgIChldmVudHNbb3Blbl1bMV0uZW5kLm9mZnNldCAtXG4gICAgICAgICAgICAgICAgZXZlbnRzW29wZW5dWzFdLnN0YXJ0Lm9mZnNldCArXG4gICAgICAgICAgICAgICAgZXZlbnRzW2luZGV4XVsxXS5lbmQub2Zmc2V0IC1cbiAgICAgICAgICAgICAgICBldmVudHNbaW5kZXhdWzFdLnN0YXJ0Lm9mZnNldCkgJVxuICAgICAgICAgICAgICAzXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE51bWJlciBvZiBtYXJrZXJzIHRvIHVzZSBmcm9tIHRoZSBzZXF1ZW5jZS5cbiAgICAgICAgICB1c2UgPVxuICAgICAgICAgICAgZXZlbnRzW29wZW5dWzFdLmVuZC5vZmZzZXQgLSBldmVudHNbb3Blbl1bMV0uc3RhcnQub2Zmc2V0ID4gMSAmJlxuICAgICAgICAgICAgZXZlbnRzW2luZGV4XVsxXS5lbmQub2Zmc2V0IC0gZXZlbnRzW2luZGV4XVsxXS5zdGFydC5vZmZzZXQgPiAxXG4gICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICA6IDFcbiAgICAgICAgICBjb25zdCBzdGFydCA9IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tvcGVuXVsxXS5lbmQpXG4gICAgICAgICAgY29uc3QgZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2luZGV4XVsxXS5zdGFydClcbiAgICAgICAgICBtb3ZlUG9pbnQoc3RhcnQsIC11c2UpXG4gICAgICAgICAgbW92ZVBvaW50KGVuZCwgdXNlKVxuICAgICAgICAgIG9wZW5pbmdTZXF1ZW5jZSA9IHtcbiAgICAgICAgICAgIHR5cGU6IHVzZSA+IDEgPyAnc3Ryb25nU2VxdWVuY2UnIDogJ2VtcGhhc2lzU2VxdWVuY2UnLFxuICAgICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgICBlbmQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tvcGVuXVsxXS5lbmQpXG4gICAgICAgICAgfVxuICAgICAgICAgIGNsb3NpbmdTZXF1ZW5jZSA9IHtcbiAgICAgICAgICAgIHR5cGU6IHVzZSA+IDEgPyAnc3Ryb25nU2VxdWVuY2UnIDogJ2VtcGhhc2lzU2VxdWVuY2UnLFxuICAgICAgICAgICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tpbmRleF1bMV0uc3RhcnQpLFxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfVxuICAgICAgICAgIHRleHQgPSB7XG4gICAgICAgICAgICB0eXBlOiB1c2UgPiAxID8gJ3N0cm9uZ1RleHQnIDogJ2VtcGhhc2lzVGV4dCcsXG4gICAgICAgICAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW29wZW5dWzFdLmVuZCksXG4gICAgICAgICAgICBlbmQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tpbmRleF1bMV0uc3RhcnQpXG4gICAgICAgICAgfVxuICAgICAgICAgIGdyb3VwID0ge1xuICAgICAgICAgICAgdHlwZTogdXNlID4gMSA/ICdzdHJvbmcnIDogJ2VtcGhhc2lzJyxcbiAgICAgICAgICAgIHN0YXJ0OiBPYmplY3QuYXNzaWduKHt9LCBvcGVuaW5nU2VxdWVuY2Uuc3RhcnQpLFxuICAgICAgICAgICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBjbG9zaW5nU2VxdWVuY2UuZW5kKVxuICAgICAgICAgIH1cbiAgICAgICAgICBldmVudHNbb3Blbl1bMV0uZW5kID0gT2JqZWN0LmFzc2lnbih7fSwgb3BlbmluZ1NlcXVlbmNlLnN0YXJ0KVxuICAgICAgICAgIGV2ZW50c1tpbmRleF1bMV0uc3RhcnQgPSBPYmplY3QuYXNzaWduKHt9LCBjbG9zaW5nU2VxdWVuY2UuZW5kKVxuICAgICAgICAgIG5leHRFdmVudHMgPSBbXVxuXG4gICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG1vcmUgbWFya2VycyBpbiB0aGUgb3BlbmluZywgYWRkIHRoZW0gYmVmb3JlLlxuICAgICAgICAgIGlmIChldmVudHNbb3Blbl1bMV0uZW5kLm9mZnNldCAtIGV2ZW50c1tvcGVuXVsxXS5zdGFydC5vZmZzZXQpIHtcbiAgICAgICAgICAgIG5leHRFdmVudHMgPSBwdXNoKG5leHRFdmVudHMsIFtcbiAgICAgICAgICAgICAgWydlbnRlcicsIGV2ZW50c1tvcGVuXVsxXSwgY29udGV4dF0sXG4gICAgICAgICAgICAgIFsnZXhpdCcsIGV2ZW50c1tvcGVuXVsxXSwgY29udGV4dF1cbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gT3BlbmluZy5cbiAgICAgICAgICBuZXh0RXZlbnRzID0gcHVzaChuZXh0RXZlbnRzLCBbXG4gICAgICAgICAgICBbJ2VudGVyJywgZ3JvdXAsIGNvbnRleHRdLFxuICAgICAgICAgICAgWydlbnRlcicsIG9wZW5pbmdTZXF1ZW5jZSwgY29udGV4dF0sXG4gICAgICAgICAgICBbJ2V4aXQnLCBvcGVuaW5nU2VxdWVuY2UsIGNvbnRleHRdLFxuICAgICAgICAgICAgWydlbnRlcicsIHRleHQsIGNvbnRleHRdXG4gICAgICAgICAgXSlcblxuICAgICAgICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgICAgICAgICAvLyBCZXR3ZWVuLlxuICAgICAgICAgIG5leHRFdmVudHMgPSBwdXNoKFxuICAgICAgICAgICAgbmV4dEV2ZW50cyxcbiAgICAgICAgICAgIHJlc29sdmVBbGwoXG4gICAgICAgICAgICAgIGNvbnRleHQucGFyc2VyLmNvbnN0cnVjdHMuaW5zaWRlU3Bhbi5udWxsLFxuICAgICAgICAgICAgICBldmVudHMuc2xpY2Uob3BlbiArIDEsIGluZGV4KSxcbiAgICAgICAgICAgICAgY29udGV4dFxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcblxuICAgICAgICAgIC8vIENsb3NpbmcuXG4gICAgICAgICAgbmV4dEV2ZW50cyA9IHB1c2gobmV4dEV2ZW50cywgW1xuICAgICAgICAgICAgWydleGl0JywgdGV4dCwgY29udGV4dF0sXG4gICAgICAgICAgICBbJ2VudGVyJywgY2xvc2luZ1NlcXVlbmNlLCBjb250ZXh0XSxcbiAgICAgICAgICAgIFsnZXhpdCcsIGNsb3NpbmdTZXF1ZW5jZSwgY29udGV4dF0sXG4gICAgICAgICAgICBbJ2V4aXQnLCBncm91cCwgY29udGV4dF1cbiAgICAgICAgICBdKVxuXG4gICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG1vcmUgbWFya2VycyBpbiB0aGUgY2xvc2luZywgYWRkIHRoZW0gYWZ0ZXIuXG4gICAgICAgICAgaWYgKGV2ZW50c1tpbmRleF1bMV0uZW5kLm9mZnNldCAtIGV2ZW50c1tpbmRleF1bMV0uc3RhcnQub2Zmc2V0KSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAyXG4gICAgICAgICAgICBuZXh0RXZlbnRzID0gcHVzaChuZXh0RXZlbnRzLCBbXG4gICAgICAgICAgICAgIFsnZW50ZXInLCBldmVudHNbaW5kZXhdWzFdLCBjb250ZXh0XSxcbiAgICAgICAgICAgICAgWydleGl0JywgZXZlbnRzW2luZGV4XVsxXSwgY29udGV4dF1cbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9mZnNldCA9IDBcbiAgICAgICAgICB9XG4gICAgICAgICAgc3BsaWNlKGV2ZW50cywgb3BlbiAtIDEsIGluZGV4IC0gb3BlbiArIDMsIG5leHRFdmVudHMpXG4gICAgICAgICAgaW5kZXggPSBvcGVuICsgbmV4dEV2ZW50cy5sZW5ndGggLSBvZmZzZXQgLSAyXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlbW92ZSByZW1haW5pbmcgc2VxdWVuY2VzLlxuICBpbmRleCA9IC0xXG4gIHdoaWxlICgrK2luZGV4IDwgZXZlbnRzLmxlbmd0aCkge1xuICAgIGlmIChldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdhdHRlbnRpb25TZXF1ZW5jZScpIHtcbiAgICAgIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9ICdkYXRhJ1xuICAgIH1cbiAgfVxuICByZXR1cm4gZXZlbnRzXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQXR0ZW50aW9uKGVmZmVjdHMsIG9rKSB7XG4gIGNvbnN0IGF0dGVudGlvbk1hcmtlcnMgPSB0aGlzLnBhcnNlci5jb25zdHJ1Y3RzLmF0dGVudGlvbk1hcmtlcnMubnVsbFxuICBjb25zdCBwcmV2aW91cyA9IHRoaXMucHJldmlvdXNcbiAgY29uc3QgYmVmb3JlID0gY2xhc3NpZnlDaGFyYWN0ZXIocHJldmlvdXMpXG5cbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogQmVmb3JlIGEgc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAqKlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIG1hcmtlciA9IGNvZGVcbiAgICBlZmZlY3RzLmVudGVyKCdhdHRlbnRpb25TZXF1ZW5jZScpXG4gICAgcmV0dXJuIGluc2lkZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGEgc2VxdWVuY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAqKlxuICAgKiAgICAgXl5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluc2lkZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gaW5zaWRlXG4gICAgfVxuICAgIGNvbnN0IHRva2VuID0gZWZmZWN0cy5leGl0KCdhdHRlbnRpb25TZXF1ZW5jZScpXG5cbiAgICAvLyBUbyBkbzogbmV4dCBtYWpvcjogbW92ZSB0aGlzIHRvIHJlc29sdmVyLCBqdXN0IGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgICBjb25zdCBhZnRlciA9IGNsYXNzaWZ5Q2hhcmFjdGVyKGNvZGUpXG5cbiAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gICAgY29uc3Qgb3BlbiA9XG4gICAgICAhYWZ0ZXIgfHwgKGFmdGVyID09PSAyICYmIGJlZm9yZSkgfHwgYXR0ZW50aW9uTWFya2Vycy5pbmNsdWRlcyhjb2RlKVxuICAgIGNvbnN0IGNsb3NlID1cbiAgICAgICFiZWZvcmUgfHwgKGJlZm9yZSA9PT0gMiAmJiBhZnRlcikgfHwgYXR0ZW50aW9uTWFya2Vycy5pbmNsdWRlcyhwcmV2aW91cylcbiAgICB0b2tlbi5fb3BlbiA9IEJvb2xlYW4obWFya2VyID09PSA0MiA/IG9wZW4gOiBvcGVuICYmIChiZWZvcmUgfHwgIWNsb3NlKSlcbiAgICB0b2tlbi5fY2xvc2UgPSBCb29sZWFuKG1hcmtlciA9PT0gNDIgPyBjbG9zZSA6IGNsb3NlICYmIChhZnRlciB8fCAhb3BlbikpXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBNb3ZlIGEgcG9pbnQgYSBiaXQuXG4gKlxuICogTm90ZTogYG1vdmVgIG9ubHkgd29ya3MgaW5zaWRlIGxpbmVzISBJdFx1MjAxOXMgbm90IHBvc3NpYmxlIHRvIG1vdmUgcGFzdCBvdGhlclxuICogY2h1bmtzIChyZXBsYWNlbWVudCBjaGFyYWN0ZXJzLCB0YWJzLCBvciBsaW5lIGVuZGluZ3MpLlxuICpcbiAqIEBwYXJhbSB7UG9pbnR9IHBvaW50XG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gbW92ZVBvaW50KHBvaW50LCBvZmZzZXQpIHtcbiAgcG9pbnQuY29sdW1uICs9IG9mZnNldFxuICBwb2ludC5vZmZzZXQgKz0gb2Zmc2V0XG4gIHBvaW50Ll9idWZmZXJJbmRleCArPSBvZmZzZXRcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtcbiAgYXNjaWlBbHBoYSxcbiAgYXNjaWlBbHBoYW51bWVyaWMsXG4gIGFzY2lpQXRleHQsXG4gIGFzY2lpQ29udHJvbFxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBhdXRvbGluayA9IHtcbiAgbmFtZTogJ2F1dG9saW5rJyxcbiAgdG9rZW5pemU6IHRva2VuaXplQXV0b2xpbmtcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVBdXRvbGluayhlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGxldCBzaXplID0gMFxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgYW4gYXV0b2xpbmsuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhPGh0dHBzOi8vZXhhbXBsZS5jb20+YlxuICAgKiAgICAgIF5cbiAgICogPiB8IGE8dXNlckBleGFtcGxlLmNvbT5iXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2F1dG9saW5rJylcbiAgICBlZmZlY3RzLmVudGVyKCdhdXRvbGlua01hcmtlcicpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdhdXRvbGlua01hcmtlcicpXG4gICAgZWZmZWN0cy5lbnRlcignYXV0b2xpbmtQcm90b2NvbCcpXG4gICAgcmV0dXJuIG9wZW5cbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPGAsIGF0IHByb3RvY29sIG9yIGF0ZXh0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTxodHRwczovL2V4YW1wbGUuY29tPmJcbiAgICogICAgICAgXlxuICAgKiA+IHwgYTx1c2VyQGV4YW1wbGUuY29tPmJcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gb3Blbihjb2RlKSB7XG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHNjaGVtZU9yRW1haWxBdGV4dFxuICAgIH1cbiAgICByZXR1cm4gZW1haWxBdGV4dChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IHNlY29uZCBieXRlIG9mIHByb3RvY29sIG9yIGF0ZXh0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTxodHRwczovL2V4YW1wbGUuY29tPmJcbiAgICogICAgICAgIF5cbiAgICogPiB8IGE8dXNlckBleGFtcGxlLmNvbT5iXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzY2hlbWVPckVtYWlsQXRleHQoY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpYyBhbmQgYCtgLCBgLWAsIGFuZCBgLmAuXG4gICAgaWYgKGNvZGUgPT09IDQzIHx8IGNvZGUgPT09IDQ1IHx8IGNvZGUgPT09IDQ2IHx8IGFzY2lpQWxwaGFudW1lcmljKGNvZGUpKSB7XG4gICAgICAvLyBDb3VudCB0aGUgcHJldmlvdXMgYWxwaGFiZXRpY2FsIGZyb20gYG9wZW5gIHRvby5cbiAgICAgIHNpemUgPSAxXG4gICAgICByZXR1cm4gc2NoZW1lSW5zaWRlT3JFbWFpbEF0ZXh0KGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBlbWFpbEF0ZXh0KGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gYW1iaWd1b3VzIHByb3RvY29sIG9yIGF0ZXh0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTxodHRwczovL2V4YW1wbGUuY29tPmJcbiAgICogICAgICAgIF5cbiAgICogPiB8IGE8dXNlckBleGFtcGxlLmNvbT5iXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzY2hlbWVJbnNpZGVPckVtYWlsQXRleHQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA1OCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBzaXplID0gMFxuICAgICAgcmV0dXJuIHVybEluc2lkZVxuICAgIH1cblxuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpYyBhbmQgYCtgLCBgLWAsIGFuZCBgLmAuXG4gICAgaWYgKFxuICAgICAgKGNvZGUgPT09IDQzIHx8IGNvZGUgPT09IDQ1IHx8IGNvZGUgPT09IDQ2IHx8IGFzY2lpQWxwaGFudW1lcmljKGNvZGUpKSAmJlxuICAgICAgc2l6ZSsrIDwgMzJcbiAgICApIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHNjaGVtZUluc2lkZU9yRW1haWxBdGV4dFxuICAgIH1cbiAgICBzaXplID0gMFxuICAgIHJldHVybiBlbWFpbEF0ZXh0KGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgcHJvdG9jb2wsIGluIFVSTC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGE8aHR0cHM6Ly9leGFtcGxlLmNvbT5iXG4gICAqICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHVybEluc2lkZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYyKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2F1dG9saW5rUHJvdG9jb2wnKVxuICAgICAgZWZmZWN0cy5lbnRlcignYXV0b2xpbmtNYXJrZXInKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2F1dG9saW5rTWFya2VyJylcbiAgICAgIGVmZmVjdHMuZXhpdCgnYXV0b2xpbmsnKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgY29udHJvbCwgc3BhY2UsIG9yIGA8YC5cbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBjb2RlID09PSAzMiB8fCBjb2RlID09PSA2MCB8fCBhc2NpaUNvbnRyb2woY29kZSkpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIHVybEluc2lkZVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGVtYWlsIGF0ZXh0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTx1c2VyLm5hbWVAZXhhbXBsZS5jb20+YlxuICAgKiAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZW1haWxBdGV4dChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDY0KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBlbWFpbEF0U2lnbk9yRG90XG4gICAgfVxuICAgIGlmIChhc2NpaUF0ZXh0KGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBlbWFpbEF0ZXh0XG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBsYWJlbCwgYWZ0ZXIgYXQtc2lnbiBvciBkb3QuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhPHVzZXIubmFtZUBleGFtcGxlLmNvbT5iXG4gICAqICAgICAgICAgICAgICAgICBeICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVtYWlsQXRTaWduT3JEb3QoY29kZSkge1xuICAgIHJldHVybiBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKSA/IGVtYWlsTGFiZWwoY29kZSkgOiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBsYWJlbCwgd2hlcmUgYC5gIGFuZCBgPmAgYXJlIGFsbG93ZWQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhPHVzZXIubmFtZUBleGFtcGxlLmNvbT5iXG4gICAqICAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVtYWlsTGFiZWwoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0Nikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBzaXplID0gMFxuICAgICAgcmV0dXJuIGVtYWlsQXRTaWduT3JEb3RcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDYyKSB7XG4gICAgICAvLyBFeGl0LCB0aGVuIGNoYW5nZSB0aGUgdG9rZW4gdHlwZS5cbiAgICAgIGVmZmVjdHMuZXhpdCgnYXV0b2xpbmtQcm90b2NvbCcpLnR5cGUgPSAnYXV0b2xpbmtFbWFpbCdcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2F1dG9saW5rTWFya2VyJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdhdXRvbGlua01hcmtlcicpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2F1dG9saW5rJylcbiAgICAgIHJldHVybiBva1xuICAgIH1cbiAgICByZXR1cm4gZW1haWxWYWx1ZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGxhYmVsLCB3aGVyZSBgLmAgYW5kIGA+YCBhcmUgKm5vdCogYWxsb3dlZC5cbiAgICpcbiAgICogVGhvdWdoLCB0aGlzIGlzIGFsc28gdXNlZCBpbiBgZW1haWxMYWJlbGAgdG8gcGFyc2Ugb3RoZXIgdmFsdWVzLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYTx1c2VyLm5hbWVAZXgtYW1wbGUuY29tPmJcbiAgICogICAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVtYWlsVmFsdWUoY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpYyBvciBgLWAuXG4gICAgaWYgKChjb2RlID09PSA0NSB8fCBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKSkgJiYgc2l6ZSsrIDwgNjMpIHtcbiAgICAgIGNvbnN0IG5leHQgPSBjb2RlID09PSA0NSA/IGVtYWlsVmFsdWUgOiBlbWFpbExhYmVsXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBuZXh0XG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZywgbWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgYmxhbmtMaW5lID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVCbGFua0xpbmUsXG4gIHBhcnRpYWw6IHRydWVcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVCbGFua0xpbmUoZWZmZWN0cywgb2ssIG5vaykge1xuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgYmxhbmsgbGluZS5cbiAgICpcbiAgICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IGBcdTI0MjBgIHJlcHJlc2VudHMgYSBzcGFjZSBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBcdTI0MjBcdTI0MjBcdTI0MEFcbiAgICogICAgIF5cbiAgICogPiB8IFx1MjQwQVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlTcGFjZShlZmZlY3RzLCBhZnRlciwgJ2xpbmVQcmVmaXgnKShjb2RlKVxuICAgICAgOiBhZnRlcihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IGVvZi9lb2wsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiBgXHUyNDIwYCByZXByZXNlbnRzIGEgc3BhY2UgY2hhcmFjdGVyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgXHUyNDIwXHUyNDIwXHUyNDBBXG4gICAqICAgICAgIF5cbiAgICogPiB8IFx1MjQwQVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIHJldHVybiBjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSA/IG9rKGNvZGUpIDogbm9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXhpdGVyfSBFeGl0ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBibG9ja1F1b3RlID0ge1xuICBuYW1lOiAnYmxvY2tRdW90ZScsXG4gIHRva2VuaXplOiB0b2tlbml6ZUJsb2NrUXVvdGVTdGFydCxcbiAgY29udGludWF0aW9uOiB7XG4gICAgdG9rZW5pemU6IHRva2VuaXplQmxvY2tRdW90ZUNvbnRpbnVhdGlvblxuICB9LFxuICBleGl0XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQmxvY2tRdW90ZVN0YXJ0KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGJsb2NrIHF1b3RlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPiBhXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYyKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHNlbGYuY29udGFpbmVyU3RhdGVcbiAgICAgIGlmICghc3RhdGUub3Blbikge1xuICAgICAgICBlZmZlY3RzLmVudGVyKCdibG9ja1F1b3RlJywge1xuICAgICAgICAgIF9jb250YWluZXI6IHRydWVcbiAgICAgICAgfSlcbiAgICAgICAgc3RhdGUub3BlbiA9IHRydWVcbiAgICAgIH1cbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2Jsb2NrUXVvdGVQcmVmaXgnKVxuICAgICAgZWZmZWN0cy5lbnRlcignYmxvY2tRdW90ZU1hcmtlcicpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnYmxvY2tRdW90ZU1hcmtlcicpXG4gICAgICByZXR1cm4gYWZ0ZXJcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA+YCwgYmVmb3JlIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA+IGFcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2Jsb2NrUXVvdGVQcmVmaXhXaGl0ZXNwYWNlJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdibG9ja1F1b3RlUHJlZml4V2hpdGVzcGFjZScpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2Jsb2NrUXVvdGVQcmVmaXgnKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuICAgIGVmZmVjdHMuZXhpdCgnYmxvY2tRdW90ZVByZWZpeCcpXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBTdGFydCBvZiBibG9jayBxdW90ZSBjb250aW51YXRpb24uXG4gKlxuICogYGBgbWFya2Rvd25cbiAqICAgfCA+IGFcbiAqID4gfCA+IGJcbiAqICAgICBeXG4gKiBgYGBcbiAqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVCbG9ja1F1b3RlQ29udGludWF0aW9uKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgcmV0dXJuIGNvbnRTdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBibG9jayBxdW90ZSBjb250aW51YXRpb24uXG4gICAqXG4gICAqIEFsc28gdXNlZCB0byBwYXJzZSB0aGUgZmlyc3QgYmxvY2sgcXVvdGUgb3BlbmluZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8ID4gYVxuICAgKiA+IHwgPiBiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250U3RhcnQoY29kZSkge1xuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gICAgICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgICAgICBlZmZlY3RzLFxuICAgICAgICBjb250QmVmb3JlLFxuICAgICAgICAnbGluZVByZWZpeCcsXG4gICAgICAgIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCdjb2RlSW5kZW50ZWQnKVxuICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgOiA0XG4gICAgICApKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBjb250QmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgYD5gLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBBbHNvIHVzZWQgdG8gcGFyc2UgdGhlIGZpcnN0IGJsb2NrIHF1b3RlIG9wZW5pbmcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCA+IGFcbiAgICogPiB8ID4gYlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udEJlZm9yZShjb2RlKSB7XG4gICAgcmV0dXJuIGVmZmVjdHMuYXR0ZW1wdChibG9ja1F1b3RlLCBvaywgbm9rKShjb2RlKVxuICB9XG59XG5cbi8qKiBAdHlwZSB7RXhpdGVyfSAqL1xuZnVuY3Rpb24gZXhpdChlZmZlY3RzKSB7XG4gIGVmZmVjdHMuZXhpdCgnYmxvY2tRdW90ZScpXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7YXNjaWlQdW5jdHVhdGlvbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgY2hhcmFjdGVyRXNjYXBlID0ge1xuICBuYW1lOiAnY2hhcmFjdGVyRXNjYXBlJyxcbiAgdG9rZW5pemU6IHRva2VuaXplQ2hhcmFjdGVyRXNjYXBlXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplQ2hhcmFjdGVyRXNjYXBlKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGNoYXJhY3RlciBlc2NhcGUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhXFwqYlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdjaGFyYWN0ZXJFc2NhcGUnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2VzY2FwZU1hcmtlcicpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdlc2NhcGVNYXJrZXInKVxuICAgIHJldHVybiBpbnNpZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgXFxgLCBhdCBwdW5jdHVhdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGFcXCpiXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluc2lkZShjb2RlKSB7XG4gICAgLy8gQVNDSUkgcHVuY3R1YXRpb24uXG4gICAgaWYgKGFzY2lpUHVuY3R1YXRpb24oY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2NoYXJhY3RlckVzY2FwZVZhbHVlJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdjaGFyYWN0ZXJFc2NhcGVWYWx1ZScpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2NoYXJhY3RlckVzY2FwZScpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iLCAiLy8vIDxyZWZlcmVuY2UgbGliPVwiZG9tXCIgLz5cblxuLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbmNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpJylcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm5zIHtzdHJpbmd8ZmFsc2V9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZSh2YWx1ZSkge1xuICBjb25zdCBjaGFyYWN0ZXJSZWZlcmVuY2UgPSAnJicgKyB2YWx1ZSArICc7J1xuICBlbGVtZW50LmlubmVySFRNTCA9IGNoYXJhY3RlclJlZmVyZW5jZVxuICBjb25zdCBjaGFyID0gZWxlbWVudC50ZXh0Q29udGVudFxuXG4gIC8vIFNvbWUgbmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgZG8gbm90IHJlcXVpcmUgdGhlIGNsb3Npbmcgc2VtaWNvbG9uXG4gIC8vIChgJm5vdGAsIGZvciBpbnN0YW5jZSksIHdoaWNoIGxlYWRzIHRvIHNpdHVhdGlvbnMgd2hlcmUgcGFyc2luZyB0aGUgYXNzdW1lZFxuICAvLyBuYW1lZCByZWZlcmVuY2Ugb2YgYCZub3RpdDtgIHdpbGwgcmVzdWx0IGluIHRoZSBzdHJpbmcgYFx1MDBBQ2l0O2AuXG4gIC8vIFdoZW4gd2UgZW5jb3VudGVyIGEgdHJhaWxpbmcgc2VtaWNvbG9uIGFmdGVyIHBhcnNpbmcsIGFuZCB0aGUgY2hhcmFjdGVyXG4gIC8vIHJlZmVyZW5jZSB0byBkZWNvZGUgd2FzIG5vdCBhIHNlbWljb2xvbiAoYCZzZW1pO2ApLCB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhlXG4gIC8vIG1hdGNoaW5nIHdhcyBub3QgY29tcGxldGUuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3I6IFR5cGVTY3JpcHQgaXMgd3JvbmcgdGhhdCBgdGV4dENvbnRlbnRgIG9uIGVsZW1lbnRzIGNhblxuICAvLyB5aWVsZCBgbnVsbGAuXG4gIGlmIChjaGFyLmNoYXJDb2RlQXQoY2hhci5sZW5ndGggLSAxKSA9PT0gNTkgLyogYDtgICovICYmIHZhbHVlICE9PSAnc2VtaScpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIElmIHRoZSBkZWNvZGVkIHN0cmluZyBpcyBlcXVhbCB0byB0aGUgaW5wdXQsIHRoZSBjaGFyYWN0ZXIgcmVmZXJlbmNlIHdhc1xuICAvLyBub3QgdmFsaWQuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3I6IFR5cGVTY3JpcHQgaXMgd3JvbmcgdGhhdCBgdGV4dENvbnRlbnRgIG9uIGVsZW1lbnRzIGNhblxuICAvLyB5aWVsZCBgbnVsbGAuXG4gIHJldHVybiBjaGFyID09PSBjaGFyYWN0ZXJSZWZlcmVuY2UgPyBmYWxzZSA6IGNoYXJcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2RlY29kZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlfSBmcm9tICdkZWNvZGUtbmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZSdcbmltcG9ydCB7XG4gIGFzY2lpQWxwaGFudW1lcmljLFxuICBhc2NpaURpZ2l0LFxuICBhc2NpaUhleERpZ2l0XG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGNoYXJhY3RlclJlZmVyZW5jZSA9IHtcbiAgbmFtZTogJ2NoYXJhY3RlclJlZmVyZW5jZScsXG4gIHRva2VuaXplOiB0b2tlbml6ZUNoYXJhY3RlclJlZmVyZW5jZVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUNoYXJhY3RlclJlZmVyZW5jZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGxldCBzaXplID0gMFxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IG1heFxuICAvKiogQHR5cGUgeyhjb2RlOiBDb2RlKSA9PiBib29sZWFufSAqL1xuICBsZXQgdGVzdFxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgY2hhcmFjdGVyIHJlZmVyZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEmYW1wO2JcbiAgICogICAgICBeXG4gICAqID4gfCBhJiMxMjM7YlxuICAgKiAgICAgIF5cbiAgICogPiB8IGEmI3g5O2JcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignY2hhcmFjdGVyUmVmZXJlbmNlJylcbiAgICBlZmZlY3RzLmVudGVyKCdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXInKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyJylcbiAgICByZXR1cm4gb3BlblxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGAmYCwgYXQgYCNgIGZvciBudW1lcmljIHJlZmVyZW5jZXMgb3IgYWxwaGFudW1lcmljIGZvciBuYW1lZFxuICAgKiByZWZlcmVuY2VzLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSZhbXA7YlxuICAgKiAgICAgICBeXG4gICAqID4gfCBhJiMxMjM7YlxuICAgKiAgICAgICBeXG4gICAqID4gfCBhJiN4OTtiXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSAzNSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyTnVtZXJpYycpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyTnVtZXJpYycpXG4gICAgICByZXR1cm4gbnVtZXJpY1xuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZScpXG4gICAgbWF4ID0gMzFcbiAgICB0ZXN0ID0gYXNjaWlBbHBoYW51bWVyaWNcbiAgICByZXR1cm4gdmFsdWUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgI2AsIGF0IGB4YCBmb3IgaGV4YWRlY2ltYWxzIG9yIGRpZ2l0IGZvciBkZWNpbWFscy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEmIzEyMztiXG4gICAqICAgICAgICBeXG4gICAqID4gfCBhJiN4OTtiXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBudW1lcmljKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gODggfHwgY29kZSA9PT0gMTIwKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXJIZXhhZGVjaW1hbCcpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWwnKVxuICAgICAgZWZmZWN0cy5lbnRlcignY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUnKVxuICAgICAgbWF4ID0gNlxuICAgICAgdGVzdCA9IGFzY2lpSGV4RGlnaXRcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdjaGFyYWN0ZXJSZWZlcmVuY2VWYWx1ZScpXG4gICAgbWF4ID0gN1xuICAgIHRlc3QgPSBhc2NpaURpZ2l0XG4gICAgcmV0dXJuIHZhbHVlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgbWFya2VycyAoYCYjeGAsIGAmI2AsIG9yIGAmYCksIGluIHZhbHVlLCBiZWZvcmUgYDtgLlxuICAgKlxuICAgKiBUaGUgY2hhcmFjdGVyIHJlZmVyZW5jZSBraW5kIGRlZmluZXMgd2hhdCBhbmQgaG93IG1hbnkgY2hhcmFjdGVycyBhcmVcbiAgICogYWxsb3dlZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEmYW1wO2JcbiAgICogICAgICAgXl5eXG4gICAqID4gfCBhJiMxMjM7YlxuICAgKiAgICAgICAgXl5eXG4gICAqID4gfCBhJiN4OTtiXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdmFsdWUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA1OSAmJiBzaXplKSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGVmZmVjdHMuZXhpdCgnY2hhcmFjdGVyUmVmZXJlbmNlVmFsdWUnKVxuICAgICAgaWYgKFxuICAgICAgICB0ZXN0ID09PSBhc2NpaUFscGhhbnVtZXJpYyAmJlxuICAgICAgICAhZGVjb2RlTmFtZWRDaGFyYWN0ZXJSZWZlcmVuY2Uoc2VsZi5zbGljZVNlcmlhbGl6ZSh0b2tlbikpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBkbzogYG1hcmtkb3duLXJzYCB1c2VzIGEgZGlmZmVyZW50IG5hbWU6XG4gICAgICAvLyBgQ2hhcmFjdGVyUmVmZXJlbmNlTWFya2VyU2VtaWAuXG4gICAgICBlZmZlY3RzLmVudGVyKCdjaGFyYWN0ZXJSZWZlcmVuY2VNYXJrZXInKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2NoYXJhY3RlclJlZmVyZW5jZU1hcmtlcicpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2NoYXJhY3RlclJlZmVyZW5jZScpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG4gICAgaWYgKHRlc3QoY29kZSkgJiYgc2l6ZSsrIDwgbWF4KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZywgbWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCBub25MYXp5Q29udGludWF0aW9uID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVOb25MYXp5Q29udGludWF0aW9uLFxuICBwYXJ0aWFsOiB0cnVlXG59XG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGNvZGVGZW5jZWQgPSB7XG4gIG5hbWU6ICdjb2RlRmVuY2VkJyxcbiAgdG9rZW5pemU6IHRva2VuaXplQ29kZUZlbmNlZCxcbiAgY29uY3JldGU6IHRydWVcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDb2RlRmVuY2VkKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG4gIGNvbnN0IGNsb3NlU3RhcnQgPSB7XG4gICAgdG9rZW5pemU6IHRva2VuaXplQ2xvc2VTdGFydCxcbiAgICBwYXJ0aWFsOiB0cnVlXG4gIH1cbiAgbGV0IGluaXRpYWxQcmVmaXggPSAwXG4gIGxldCBzaXplT3BlbiA9IDBcbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPn0gKi9cbiAgbGV0IG1hcmtlclxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgY29kZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzXG4gICAqICAgICBeXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgLy8gVG8gZG86IHBhcnNlIHdoaXRlc3BhY2UgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIHJldHVybiBiZWZvcmVTZXF1ZW5jZU9wZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIGZlbmNlLCBhZnRlciBwcmVmaXgsIGF0IHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anNcbiAgICogICAgIF5cbiAgICogICB8IGFsZXJ0KDEpXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJlZm9yZVNlcXVlbmNlT3Blbihjb2RlKSB7XG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gICAgaW5pdGlhbFByZWZpeCA9XG4gICAgICB0YWlsICYmIHRhaWxbMV0udHlwZSA9PT0gJ2xpbmVQcmVmaXgnXG4gICAgICAgID8gdGFpbFsyXS5zbGljZVNlcmlhbGl6ZSh0YWlsWzFdLCB0cnVlKS5sZW5ndGhcbiAgICAgICAgOiAwXG4gICAgbWFya2VyID0gY29kZVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVGZW5jZWQnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVGZW5jZWRGZW5jZScpXG4gICAgZWZmZWN0cy5lbnRlcignY29kZUZlbmNlZEZlbmNlU2VxdWVuY2UnKVxuICAgIHJldHVybiBzZXF1ZW5jZU9wZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIGZlbmNlIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anNcbiAgICogICAgICBeXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzZXF1ZW5jZU9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIHNpemVPcGVuKytcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHNlcXVlbmNlT3BlblxuICAgIH1cbiAgICBpZiAoc2l6ZU9wZW4gPCAzKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuZXhpdCgnY29kZUZlbmNlZEZlbmNlU2VxdWVuY2UnKVxuICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlTcGFjZShlZmZlY3RzLCBpbmZvQmVmb3JlLCAnd2hpdGVzcGFjZScpKGNvZGUpXG4gICAgICA6IGluZm9CZWZvcmUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIGZlbmNlLCBhZnRlciB0aGUgc2VxdWVuY2UgKGFuZCBvcHRpb25hbCB3aGl0ZXNwYWNlKSwgYmVmb3JlIGluZm8uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCB+fn5qc1xuICAgKiAgICAgICAgXlxuICAgKiAgIHwgYWxlcnQoMSlcbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5mb0JlZm9yZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2NvZGVGZW5jZWRGZW5jZScpXG4gICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHRcbiAgICAgICAgPyBvayhjb2RlKVxuICAgICAgICA6IGVmZmVjdHMuY2hlY2sobm9uTGF6eUNvbnRpbnVhdGlvbiwgYXROb25MYXp5QnJlYWssIGFmdGVyKShjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdjb2RlRmVuY2VkRmVuY2VJbmZvJylcbiAgICBlZmZlY3RzLmVudGVyKCdjaHVua1N0cmluZycsIHtcbiAgICAgIGNvbnRlbnRUeXBlOiAnc3RyaW5nJ1xuICAgIH0pXG4gICAgcmV0dXJuIGluZm8oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBpbmZvLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgfn5+anNcbiAgICogICAgICAgIF5cbiAgICogICB8IGFsZXJ0KDEpXG4gICAqICAgfCB+fn5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluZm8oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdjaHVua1N0cmluZycpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2NvZGVGZW5jZWRGZW5jZUluZm8nKVxuICAgICAgcmV0dXJuIGluZm9CZWZvcmUoY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtTdHJpbmcnKVxuICAgICAgZWZmZWN0cy5leGl0KCdjb2RlRmVuY2VkRmVuY2VJbmZvJylcbiAgICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgbWV0YUJlZm9yZSwgJ3doaXRlc3BhY2UnKShjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gOTYgJiYgY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBpbmZvXG4gIH1cblxuICAvKipcbiAgICogSW4gb3BlbmluZyBmZW5jZSwgYWZ0ZXIgaW5mbyBhbmQgd2hpdGVzcGFjZSwgYmVmb3JlIG1ldGEuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCB+fn5qcyBldmFsXG4gICAqICAgICAgICAgICBeXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBtZXRhQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBpbmZvQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVGZW5jZWRGZW5jZU1ldGEnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NodW5rU3RyaW5nJywge1xuICAgICAgY29udGVudFR5cGU6ICdzdHJpbmcnXG4gICAgfSlcbiAgICByZXR1cm4gbWV0YShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIG1ldGEuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCB+fn5qcyBldmFsXG4gICAqICAgICAgICAgICBeXG4gICAqICAgfCBhbGVydCgxKVxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBtZXRhKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtTdHJpbmcnKVxuICAgICAgZWZmZWN0cy5leGl0KCdjb2RlRmVuY2VkRmVuY2VNZXRhJylcbiAgICAgIHJldHVybiBpbmZvQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA5NiAmJiBjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIG1ldGFcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBlb2wvZW9mIGluIGNvZGUsIGJlZm9yZSBhIG5vbi1sYXp5IGNsb3NpbmcgZmVuY2Ugb3IgY29udGVudC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IH5+fmpzXG4gICAqICAgICAgICAgIF5cbiAgICogPiB8IGFsZXJ0KDEpXG4gICAqICAgICAgICAgICAgIF5cbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYXROb25MYXp5QnJlYWsoY29kZSkge1xuICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoY2xvc2VTdGFydCwgYWZ0ZXIsIGNvbnRlbnRCZWZvcmUpKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQmVmb3JlIGNvZGUgY29udGVudCwgbm90IGEgY2xvc2luZyBmZW5jZSwgYXQgZW9sLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgfn5+anNcbiAgICogPiB8IGFsZXJ0KDEpXG4gICAqICAgICAgICAgICAgIF5cbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGVudEJlZm9yZShjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICByZXR1cm4gY29udGVudFN0YXJ0XG4gIH1cblxuICAvKipcbiAgICogQmVmb3JlIGNvZGUgY29udGVudCwgbm90IGEgY2xvc2luZyBmZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IH5+fmpzXG4gICAqID4gfCBhbGVydCgxKVxuICAgKiAgICAgXlxuICAgKiAgIHwgfn5+XG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250ZW50U3RhcnQoY29kZSkge1xuICAgIHJldHVybiBpbml0aWFsUHJlZml4ID4gMCAmJiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlTcGFjZShcbiAgICAgICAgICBlZmZlY3RzLFxuICAgICAgICAgIGJlZm9yZUNvbnRlbnRDaHVuayxcbiAgICAgICAgICAnbGluZVByZWZpeCcsXG4gICAgICAgICAgaW5pdGlhbFByZWZpeCArIDFcbiAgICAgICAgKShjb2RlKVxuICAgICAgOiBiZWZvcmVDb250ZW50Q2h1bmsoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWZvcmUgY29kZSBjb250ZW50LCBhZnRlciBvcHRpb25hbCBwcmVmaXguXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCB+fn5qc1xuICAgKiA+IHwgYWxlcnQoMSlcbiAgICogICAgIF5cbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlQ29udGVudENodW5rKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBlZmZlY3RzLmNoZWNrKG5vbkxhenlDb250aW51YXRpb24sIGF0Tm9uTGF6eUJyZWFrLCBhZnRlcikoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignY29kZUZsb3dWYWx1ZScpXG4gICAgcmV0dXJuIGNvbnRlbnRDaHVuayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvZGUgY29udGVudC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IH5+fmpzXG4gICAqID4gfCBhbGVydCgxKVxuICAgKiAgICAgXl5eXl5eXl5cbiAgICogICB8IH5+flxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGVudENodW5rKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY29kZUZsb3dWYWx1ZScpXG4gICAgICByZXR1cm4gYmVmb3JlQ29udGVudENodW5rKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjb250ZW50Q2h1bmtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBjb2RlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgfn5+anNcbiAgICogICB8IGFsZXJ0KDEpXG4gICAqID4gfCB+fn5cbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICBlZmZlY3RzLmV4aXQoJ2NvZGVGZW5jZWQnKVxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gICAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gICAqL1xuICBmdW5jdGlvbiB0b2tlbml6ZUNsb3NlU3RhcnQoZWZmZWN0cywgb2ssIG5vaykge1xuICAgIGxldCBzaXplID0gMFxuICAgIHJldHVybiBzdGFydEJlZm9yZVxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKlxuICAgICAqIEB0eXBlIHtTdGF0ZX1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFydEJlZm9yZShjb2RlKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICAgIHJldHVybiBzdGFydFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJlZm9yZSBjbG9zaW5nIGZlbmNlLCBhdCBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgICAqXG4gICAgICogYGBgbWFya2Rvd25cbiAgICAgKiAgIHwgfn5+anNcbiAgICAgKiAgIHwgYWxlcnQoMSlcbiAgICAgKiA+IHwgfn5+XG4gICAgICogICAgIF5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtTdGF0ZX1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gICAgICAvLyBUbyBkbzogYGVudGVyYCBoZXJlIG9yIGluIG5leHQgc3RhdGU/XG4gICAgICBlZmZlY3RzLmVudGVyKCdjb2RlRmVuY2VkRmVuY2UnKVxuICAgICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgICAgPyBmYWN0b3J5U3BhY2UoXG4gICAgICAgICAgICBlZmZlY3RzLFxuICAgICAgICAgICAgYmVmb3JlU2VxdWVuY2VDbG9zZSxcbiAgICAgICAgICAgICdsaW5lUHJlZml4JyxcbiAgICAgICAgICAgIHNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCdjb2RlSW5kZW50ZWQnKVxuICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA6IDRcbiAgICAgICAgICApKGNvZGUpXG4gICAgICAgIDogYmVmb3JlU2VxdWVuY2VDbG9zZShjb2RlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluIGNsb3NpbmcgZmVuY2UsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UsIGF0IHNlcXVlbmNlLlxuICAgICAqXG4gICAgICogYGBgbWFya2Rvd25cbiAgICAgKiAgIHwgfn5+anNcbiAgICAgKiAgIHwgYWxlcnQoMSlcbiAgICAgKiA+IHwgfn5+XG4gICAgICogICAgIF5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEB0eXBlIHtTdGF0ZX1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBiZWZvcmVTZXF1ZW5jZUNsb3NlKGNvZGUpIHtcbiAgICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgICAgZWZmZWN0cy5lbnRlcignY29kZUZlbmNlZEZlbmNlU2VxdWVuY2UnKVxuICAgICAgICByZXR1cm4gc2VxdWVuY2VDbG9zZShjb2RlKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluIGNsb3NpbmcgZmVuY2Ugc2VxdWVuY2UuXG4gICAgICpcbiAgICAgKiBgYGBtYXJrZG93blxuICAgICAqICAgfCB+fn5qc1xuICAgICAqICAgfCBhbGVydCgxKVxuICAgICAqID4gfCB+fn5cbiAgICAgKiAgICAgXlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUge1N0YXRlfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNlcXVlbmNlQ2xvc2UoY29kZSkge1xuICAgICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgICBzaXplKytcbiAgICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAgIHJldHVybiBzZXF1ZW5jZUNsb3NlXG4gICAgICB9XG4gICAgICBpZiAoc2l6ZSA+PSBzaXplT3Blbikge1xuICAgICAgICBlZmZlY3RzLmV4aXQoJ2NvZGVGZW5jZWRGZW5jZVNlcXVlbmNlJylcbiAgICAgICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgICAgICA/IGZhY3RvcnlTcGFjZShlZmZlY3RzLCBzZXF1ZW5jZUNsb3NlQWZ0ZXIsICd3aGl0ZXNwYWNlJykoY29kZSlcbiAgICAgICAgICA6IHNlcXVlbmNlQ2xvc2VBZnRlcihjb2RlKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFmdGVyIGNsb3NpbmcgZmVuY2Ugc2VxdWVuY2UsIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAgICpcbiAgICAgKiBgYGBtYXJrZG93blxuICAgICAqICAgfCB+fn5qc1xuICAgICAqICAgfCBhbGVydCgxKVxuICAgICAqID4gfCB+fn5cbiAgICAgKiAgICAgICAgXlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHR5cGUge1N0YXRlfVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNlcXVlbmNlQ2xvc2VBZnRlcihjb2RlKSB7XG4gICAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgICAgZWZmZWN0cy5leGl0KCdjb2RlRmVuY2VkRmVuY2UnKVxuICAgICAgICByZXR1cm4gb2soY29kZSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVOb25MYXp5Q29udGludWF0aW9uKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgIHJldHVybiBsaW5lU3RhcnRcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsaW5lU3RhcnQoY29kZSkge1xuICAgIHJldHVybiBzZWxmLnBhcnNlci5sYXp5W3NlbGYubm93KCkubGluZV0gPyBub2soY29kZSkgOiBvayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nLCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBjb2RlSW5kZW50ZWQgPSB7XG4gIG5hbWU6ICdjb2RlSW5kZW50ZWQnLFxuICB0b2tlbml6ZTogdG9rZW5pemVDb2RlSW5kZW50ZWRcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCBmdXJ0aGVyU3RhcnQgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZUZ1cnRoZXJTdGFydCxcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUNvZGVJbmRlbnRlZChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBjb2RlIChpbmRlbnRlZCkuXG4gICAqXG4gICAqID4gKipQYXJzaW5nIG5vdGUqKjogaXQgaXMgbm90IG5lZWRlZCB0byBjaGVjayBpZiB0aGlzIGZpcnN0IGxpbmUgaXMgYVxuICAgKiA+IGZpbGxlZCBsaW5lICh0aGF0IGl0IGhhcyBhIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlciksIGJlY2F1c2UgYmxhbmsgbGluZXNcbiAgICogPiBhcmUgcGFyc2VkIGFscmVhZHksIHNvIHdlIG5ldmVyIHJ1biBpbnRvIHRoYXQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAgICAgYWFhXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgLy8gVG8gZG86IG1hbnVhbGx5IGNoZWNrIGlmIGludGVycnVwdGluZyBsaWtlIGBtYXJrZG93bi1yc2AuXG5cbiAgICBlZmZlY3RzLmVudGVyKCdjb2RlSW5kZW50ZWQnKVxuICAgIC8vIFRvIGRvOiB1c2UgYW4gaW1wcm92ZWQgYHNwYWNlX29yX3RhYmAgZnVuY3Rpb24gbGlrZSBgbWFya2Rvd24tcnNgLFxuICAgIC8vIHNvIHRoYXQgd2UgY2FuIGRyb3AgdGhlIG5leHQgc3RhdGUuXG4gICAgcmV0dXJuIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBhZnRlclByZWZpeCwgJ2xpbmVQcmVmaXgnLCA0ICsgMSkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBzdGFydCwgYWZ0ZXIgMSBvciA0IHNwYWNlcy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICAgICBhYWFcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlclByZWZpeChjb2RlKSB7XG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gICAgcmV0dXJuIHRhaWwgJiZcbiAgICAgIHRhaWxbMV0udHlwZSA9PT0gJ2xpbmVQcmVmaXgnICYmXG4gICAgICB0YWlsWzJdLnNsaWNlU2VyaWFsaXplKHRhaWxbMV0sIHRydWUpLmxlbmd0aCA+PSA0XG4gICAgICA/IGF0QnJlYWsoY29kZSlcbiAgICAgIDogbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgYSBicmVhay5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICAgICBhYWFcbiAgICogICAgICAgICBeICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhdEJyZWFrKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGFmdGVyKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoZnVydGhlclN0YXJ0LCBhdEJyZWFrLCBhZnRlcikoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcignY29kZUZsb3dWYWx1ZScpXG4gICAgcmV0dXJuIGluc2lkZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvZGUgY29udGVudC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICAgICBhYWFcbiAgICogICAgICAgICBeXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdjb2RlRmxvd1ZhbHVlJylcbiAgICAgIHJldHVybiBhdEJyZWFrKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBpbnNpZGVcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICBlZmZlY3RzLmV4aXQoJ2NvZGVJbmRlbnRlZCcpXG4gICAgLy8gVG8gZG86IGFsbG93IGludGVycnVwdGluZyBsaWtlIGBtYXJrZG93bi1yc2AuXG4gICAgLy8gRmVlbCBmcmVlIHRvIGludGVycnVwdC5cbiAgICAvLyB0b2tlbml6ZXIuaW50ZXJydXB0ID0gZmFsc2VcbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUZ1cnRoZXJTdGFydChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHJldHVybiBmdXJ0aGVyU3RhcnRcblxuICAvKipcbiAgICogQXQgZW9sLCB0cnlpbmcgdG8gcGFyc2UgYW5vdGhlciBpbmRlbnQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAgICAgYWFhXG4gICAqICAgICAgICAgICAgXlxuICAgKiAgIHwgICAgIGJiYlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZnVydGhlclN0YXJ0KGNvZGUpIHtcbiAgICAvLyBUbyBkbzogaW1wcm92ZSBgbGF6eWAgLyBgcGllcmNlYCBoYW5kbGluZy5cbiAgICAvLyBJZiB0aGlzIGlzIGEgbGF6eSBsaW5lLCBpdCBjYW5cdTIwMTl0IGJlIGNvZGUuXG4gICAgaWYgKHNlbGYucGFyc2VyLmxhenlbc2VsZi5ub3coKS5saW5lXSkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICAgIHJldHVybiBmdXJ0aGVyU3RhcnRcbiAgICB9XG5cbiAgICAvLyBUbyBkbzogdGhlIGNvZGUgaGVyZSBpbiBgbWljcm9tYXJrLWpzYCBpcyBhIGJpdCBkaWZmZXJlbnQgZnJvbVxuICAgIC8vIGBtYXJrZG93bi1yc2AgYmVjYXVzZSB0aGVyZSBpdCBjYW4gYXR0ZW1wdCBzcGFjZXMuXG4gICAgLy8gV2UgY2FuXHUyMDE5dCB5ZXQuXG4gICAgLy9cbiAgICAvLyBUbyBkbzogdXNlIGFuIGltcHJvdmVkIGBzcGFjZV9vcl90YWJgIGZ1bmN0aW9uIGxpa2UgYG1hcmtkb3duLXJzYCxcbiAgICAvLyBzbyB0aGF0IHdlIGNhbiBkcm9wIHRoZSBuZXh0IHN0YXRlLlxuICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgYWZ0ZXJQcmVmaXgsICdsaW5lUHJlZml4JywgNCArIDEpKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgc3RhcnQsIGFmdGVyIDEgb3IgNCBzcGFjZXMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAgICAgYWFhXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXJQcmVmaXgoY29kZSkge1xuICAgIGNvbnN0IHRhaWwgPSBzZWxmLmV2ZW50c1tzZWxmLmV2ZW50cy5sZW5ndGggLSAxXVxuICAgIHJldHVybiB0YWlsICYmXG4gICAgICB0YWlsWzFdLnR5cGUgPT09ICdsaW5lUHJlZml4JyAmJlxuICAgICAgdGFpbFsyXS5zbGljZVNlcmlhbGl6ZSh0YWlsWzFdLCB0cnVlKS5sZW5ndGggPj0gNFxuICAgICAgPyBvayhjb2RlKVxuICAgICAgOiBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSlcbiAgICAgID8gZnVydGhlclN0YXJ0KGNvZGUpXG4gICAgICA6IG5vayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlByZXZpb3VzfSBQcmV2aW91c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VufSBUb2tlblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBjb2RlVGV4dCA9IHtcbiAgbmFtZTogJ2NvZGVUZXh0JyxcbiAgdG9rZW5pemU6IHRva2VuaXplQ29kZVRleHQsXG4gIHJlc29sdmU6IHJlc29sdmVDb2RlVGV4dCxcbiAgcHJldmlvdXNcbn1cblxuLy8gVG8gZG86IG5leHQgbWFqb3I6IGRvblx1MjAxOXQgcmVzb2x2ZSwgbGlrZSBgbWFya2Rvd24tcnNgLlxuLyoqIEB0eXBlIHtSZXNvbHZlcn0gKi9cbmZ1bmN0aW9uIHJlc29sdmVDb2RlVGV4dChldmVudHMpIHtcbiAgbGV0IHRhaWxFeGl0SW5kZXggPSBldmVudHMubGVuZ3RoIC0gNFxuICBsZXQgaGVhZEVudGVySW5kZXggPSAzXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgaW5kZXhcbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCBlbnRlclxuXG4gIC8vIElmIHdlIHN0YXJ0IGFuZCBlbmQgd2l0aCBhbiBFT0wgb3IgYSBzcGFjZS5cbiAgaWYgKFxuICAgIChldmVudHNbaGVhZEVudGVySW5kZXhdWzFdLnR5cGUgPT09ICdsaW5lRW5kaW5nJyB8fFxuICAgICAgZXZlbnRzW2hlYWRFbnRlckluZGV4XVsxXS50eXBlID09PSAnc3BhY2UnKSAmJlxuICAgIChldmVudHNbdGFpbEV4aXRJbmRleF1bMV0udHlwZSA9PT0gJ2xpbmVFbmRpbmcnIHx8XG4gICAgICBldmVudHNbdGFpbEV4aXRJbmRleF1bMV0udHlwZSA9PT0gJ3NwYWNlJylcbiAgKSB7XG4gICAgaW5kZXggPSBoZWFkRW50ZXJJbmRleFxuXG4gICAgLy8gQW5kIHdlIGhhdmUgZGF0YS5cbiAgICB3aGlsZSAoKytpbmRleCA8IHRhaWxFeGl0SW5kZXgpIHtcbiAgICAgIGlmIChldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdjb2RlVGV4dERhdGEnKSB7XG4gICAgICAgIC8vIFRoZW4gd2UgaGF2ZSBwYWRkaW5nLlxuICAgICAgICBldmVudHNbaGVhZEVudGVySW5kZXhdWzFdLnR5cGUgPSAnY29kZVRleHRQYWRkaW5nJ1xuICAgICAgICBldmVudHNbdGFpbEV4aXRJbmRleF1bMV0udHlwZSA9ICdjb2RlVGV4dFBhZGRpbmcnXG4gICAgICAgIGhlYWRFbnRlckluZGV4ICs9IDJcbiAgICAgICAgdGFpbEV4aXRJbmRleCAtPSAyXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTWVyZ2UgYWRqYWNlbnQgc3BhY2VzIGFuZCBkYXRhLlxuICBpbmRleCA9IGhlYWRFbnRlckluZGV4IC0gMVxuICB0YWlsRXhpdEluZGV4KytcbiAgd2hpbGUgKCsraW5kZXggPD0gdGFpbEV4aXRJbmRleCkge1xuICAgIGlmIChlbnRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoaW5kZXggIT09IHRhaWxFeGl0SW5kZXggJiYgZXZlbnRzW2luZGV4XVsxXS50eXBlICE9PSAnbGluZUVuZGluZycpIHtcbiAgICAgICAgZW50ZXIgPSBpbmRleFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBpbmRleCA9PT0gdGFpbEV4aXRJbmRleCB8fFxuICAgICAgZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnbGluZUVuZGluZydcbiAgICApIHtcbiAgICAgIGV2ZW50c1tlbnRlcl1bMV0udHlwZSA9ICdjb2RlVGV4dERhdGEnXG4gICAgICBpZiAoaW5kZXggIT09IGVudGVyICsgMikge1xuICAgICAgICBldmVudHNbZW50ZXJdWzFdLmVuZCA9IGV2ZW50c1tpbmRleCAtIDFdWzFdLmVuZFxuICAgICAgICBldmVudHMuc3BsaWNlKGVudGVyICsgMiwgaW5kZXggLSBlbnRlciAtIDIpXG4gICAgICAgIHRhaWxFeGl0SW5kZXggLT0gaW5kZXggLSBlbnRlciAtIDJcbiAgICAgICAgaW5kZXggPSBlbnRlciArIDJcbiAgICAgIH1cbiAgICAgIGVudGVyID0gdW5kZWZpbmVkXG4gICAgfVxuICB9XG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1ByZXZpb3VzfVxuICovXG5mdW5jdGlvbiBwcmV2aW91cyhjb2RlKSB7XG4gIC8vIElmIHRoZXJlIGlzIGEgcHJldmlvdXMgY29kZSwgdGhlcmUgd2lsbCBhbHdheXMgYmUgYSB0YWlsLlxuICByZXR1cm4gKFxuICAgIGNvZGUgIT09IDk2IHx8XG4gICAgdGhpcy5ldmVudHNbdGhpcy5ldmVudHMubGVuZ3RoIC0gMV1bMV0udHlwZSA9PT0gJ2NoYXJhY3RlckVzY2FwZSdcbiAgKVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUNvZGVUZXh0KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgbGV0IHNpemVPcGVuID0gMFxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IHNpemVcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IHRva2VuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBjb2RlICh0ZXh0KS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGBhYFxuICAgKiAgICAgXlxuICAgKiA+IHwgXFxgYWBcbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignY29kZVRleHQnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVUZXh0U2VxdWVuY2UnKVxuICAgIHJldHVybiBzZXF1ZW5jZU9wZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYGFgXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzZXF1ZW5jZU9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSA5Nikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBzaXplT3BlbisrXG4gICAgICByZXR1cm4gc2VxdWVuY2VPcGVuXG4gICAgfVxuICAgIGVmZmVjdHMuZXhpdCgnY29kZVRleHRTZXF1ZW5jZScpXG4gICAgcmV0dXJuIGJldHdlZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBCZXR3ZWVuIHNvbWV0aGluZyBhbmQgc29tZXRoaW5nIGVsc2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBgYWBcbiAgICogICAgICBeXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmV0d2Vlbihjb2RlKSB7XG4gICAgLy8gRU9GLlxuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gVG8gZG86IG5leHQgbWFqb3I6IGRvblx1MjAxOXQgZG8gc3BhY2VzIGluIHJlc29sdmUsIGJ1dCB3aGVuIGNvbXBpbGluZyxcbiAgICAvLyBsaWtlIGBtYXJrZG93bi1yc2AuXG4gICAgLy8gVGFicyBkb25cdTIwMTl0IHdvcmssIGFuZCB2aXJ0dWFsIHNwYWNlcyBkb25cdTIwMTl0IG1ha2Ugc2Vuc2UuXG4gICAgaWYgKGNvZGUgPT09IDMyKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdzcGFjZScpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnc3BhY2UnKVxuICAgICAgcmV0dXJuIGJldHdlZW5cbiAgICB9XG5cbiAgICAvLyBDbG9zaW5nIGZlbmNlPyBDb3VsZCBhbHNvIGJlIGRhdGEuXG4gICAgaWYgKGNvZGUgPT09IDk2KSB7XG4gICAgICB0b2tlbiA9IGVmZmVjdHMuZW50ZXIoJ2NvZGVUZXh0U2VxdWVuY2UnKVxuICAgICAgc2l6ZSA9IDBcbiAgICAgIHJldHVybiBzZXF1ZW5jZUNsb3NlKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgICAgcmV0dXJuIGJldHdlZW5cbiAgICB9XG5cbiAgICAvLyBEYXRhLlxuICAgIGVmZmVjdHMuZW50ZXIoJ2NvZGVUZXh0RGF0YScpXG4gICAgcmV0dXJuIGRhdGEoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBkYXRhLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYGFgXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGF0YShjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gbnVsbCB8fFxuICAgICAgY29kZSA9PT0gMzIgfHxcbiAgICAgIGNvZGUgPT09IDk2IHx8XG4gICAgICBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSlcbiAgICApIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY29kZVRleHREYXRhJylcbiAgICAgIHJldHVybiBiZXR3ZWVuKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBkYXRhXG4gIH1cblxuICAvKipcbiAgICogSW4gY2xvc2luZyBzZXF1ZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGBhYFxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzZXF1ZW5jZUNsb3NlKGNvZGUpIHtcbiAgICAvLyBNb3JlLlxuICAgIGlmIChjb2RlID09PSA5Nikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBzaXplKytcbiAgICAgIHJldHVybiBzZXF1ZW5jZUNsb3NlXG4gICAgfVxuXG4gICAgLy8gRG9uZSFcbiAgICBpZiAoc2l6ZSA9PT0gc2l6ZU9wZW4pIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY29kZVRleHRTZXF1ZW5jZScpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2NvZGVUZXh0JylcbiAgICAgIHJldHVybiBvayhjb2RlKVxuICAgIH1cblxuICAgIC8vIE1vcmUgb3IgbGVzcyBhY2NlbnRzOiBtYXJrIGFzIGRhdGEuXG4gICAgdG9rZW4udHlwZSA9ICdjb2RlVGV4dERhdGEnXG4gICAgcmV0dXJuIGRhdGEoY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5DaHVua30gQ2h1bmtcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXZlbnR9IEV2ZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VufSBUb2tlblxuICovXG5cbmltcG9ydCB7c3BsaWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaHVua2VkJ1xuLyoqXG4gKiBUb2tlbml6ZSBzdWJjb250ZW50LlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8RXZlbnQ+fSBldmVudHNcbiAqICAgTGlzdCBvZiBldmVudHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqICAgV2hldGhlciBzdWJ0b2tlbnMgd2VyZSBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnRva2VuaXplKGV2ZW50cykge1xuICAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIG51bWJlcj59ICovXG4gIGNvbnN0IGp1bXBzID0ge31cbiAgbGV0IGluZGV4ID0gLTFcbiAgLyoqIEB0eXBlIHtFdmVudH0gKi9cbiAgbGV0IGV2ZW50XG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgbGluZUluZGV4XG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgb3RoZXJJbmRleFxuICAvKiogQHR5cGUge0V2ZW50fSAqL1xuICBsZXQgb3RoZXJFdmVudFxuICAvKiogQHR5cGUge0FycmF5PEV2ZW50Pn0gKi9cbiAgbGV0IHBhcmFtZXRlcnNcbiAgLyoqIEB0eXBlIHtBcnJheTxFdmVudD59ICovXG4gIGxldCBzdWJldmVudHNcbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgbW9yZVxuICB3aGlsZSAoKytpbmRleCA8IGV2ZW50cy5sZW5ndGgpIHtcbiAgICB3aGlsZSAoaW5kZXggaW4ganVtcHMpIHtcbiAgICAgIGluZGV4ID0ganVtcHNbaW5kZXhdXG4gICAgfVxuICAgIGV2ZW50ID0gZXZlbnRzW2luZGV4XVxuXG4gICAgLy8gQWRkIGEgaG9vayBmb3IgdGhlIEdGTSB0YXNrbGlzdCBleHRlbnNpb24sIHdoaWNoIG5lZWRzIHRvIGtub3cgaWYgdGV4dFxuICAgIC8vIGlzIGluIHRoZSBmaXJzdCBjb250ZW50IG9mIGEgbGlzdCBpdGVtLlxuICAgIGlmIChcbiAgICAgIGluZGV4ICYmXG4gICAgICBldmVudFsxXS50eXBlID09PSAnY2h1bmtGbG93JyAmJlxuICAgICAgZXZlbnRzW2luZGV4IC0gMV1bMV0udHlwZSA9PT0gJ2xpc3RJdGVtUHJlZml4J1xuICAgICkge1xuICAgICAgc3ViZXZlbnRzID0gZXZlbnRbMV0uX3Rva2VuaXplci5ldmVudHNcbiAgICAgIG90aGVySW5kZXggPSAwXG4gICAgICBpZiAoXG4gICAgICAgIG90aGVySW5kZXggPCBzdWJldmVudHMubGVuZ3RoICYmXG4gICAgICAgIHN1YmV2ZW50c1tvdGhlckluZGV4XVsxXS50eXBlID09PSAnbGluZUVuZGluZ0JsYW5rJ1xuICAgICAgKSB7XG4gICAgICAgIG90aGVySW5kZXggKz0gMlxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBvdGhlckluZGV4IDwgc3ViZXZlbnRzLmxlbmd0aCAmJlxuICAgICAgICBzdWJldmVudHNbb3RoZXJJbmRleF1bMV0udHlwZSA9PT0gJ2NvbnRlbnQnXG4gICAgICApIHtcbiAgICAgICAgd2hpbGUgKCsrb3RoZXJJbmRleCA8IHN1YmV2ZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAoc3ViZXZlbnRzW290aGVySW5kZXhdWzFdLnR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN1YmV2ZW50c1tvdGhlckluZGV4XVsxXS50eXBlID09PSAnY2h1bmtUZXh0Jykge1xuICAgICAgICAgICAgc3ViZXZlbnRzW290aGVySW5kZXhdWzFdLl9pc0luRmlyc3RDb250ZW50T2ZMaXN0SXRlbSA9IHRydWVcbiAgICAgICAgICAgIG90aGVySW5kZXgrK1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVudGVyLlxuICAgIGlmIChldmVudFswXSA9PT0gJ2VudGVyJykge1xuICAgICAgaWYgKGV2ZW50WzFdLmNvbnRlbnRUeXBlKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24oanVtcHMsIHN1YmNvbnRlbnQoZXZlbnRzLCBpbmRleCkpXG4gICAgICAgIGluZGV4ID0ganVtcHNbaW5kZXhdXG4gICAgICAgIG1vcmUgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICAgIC8vIEV4aXQuXG4gICAgZWxzZSBpZiAoZXZlbnRbMV0uX2NvbnRhaW5lcikge1xuICAgICAgb3RoZXJJbmRleCA9IGluZGV4XG4gICAgICBsaW5lSW5kZXggPSB1bmRlZmluZWRcbiAgICAgIHdoaWxlIChvdGhlckluZGV4LS0pIHtcbiAgICAgICAgb3RoZXJFdmVudCA9IGV2ZW50c1tvdGhlckluZGV4XVxuICAgICAgICBpZiAoXG4gICAgICAgICAgb3RoZXJFdmVudFsxXS50eXBlID09PSAnbGluZUVuZGluZycgfHxcbiAgICAgICAgICBvdGhlckV2ZW50WzFdLnR5cGUgPT09ICdsaW5lRW5kaW5nQmxhbmsnXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChvdGhlckV2ZW50WzBdID09PSAnZW50ZXInKSB7XG4gICAgICAgICAgICBpZiAobGluZUluZGV4KSB7XG4gICAgICAgICAgICAgIGV2ZW50c1tsaW5lSW5kZXhdWzFdLnR5cGUgPSAnbGluZUVuZGluZ0JsYW5rJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3RoZXJFdmVudFsxXS50eXBlID0gJ2xpbmVFbmRpbmcnXG4gICAgICAgICAgICBsaW5lSW5kZXggPSBvdGhlckluZGV4XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChsaW5lSW5kZXgpIHtcbiAgICAgICAgLy8gRml4IHBvc2l0aW9uLlxuICAgICAgICBldmVudFsxXS5lbmQgPSBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbbGluZUluZGV4XVsxXS5zdGFydClcblxuICAgICAgICAvLyBTd2l0Y2ggY29udGFpbmVyIGV4aXQgdy8gbGluZSBlbmRpbmdzLlxuICAgICAgICBwYXJhbWV0ZXJzID0gZXZlbnRzLnNsaWNlKGxpbmVJbmRleCwgaW5kZXgpXG4gICAgICAgIHBhcmFtZXRlcnMudW5zaGlmdChldmVudClcbiAgICAgICAgc3BsaWNlKGV2ZW50cywgbGluZUluZGV4LCBpbmRleCAtIGxpbmVJbmRleCArIDEsIHBhcmFtZXRlcnMpXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiAhbW9yZVxufVxuXG4vKipcbiAqIFRva2VuaXplIGVtYmVkZGVkIHRva2Vucy5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PEV2ZW50Pn0gZXZlbnRzXG4gKiBAcGFyYW0ge251bWJlcn0gZXZlbnRJbmRleFxuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIG51bWJlcj59XG4gKi9cbmZ1bmN0aW9uIHN1YmNvbnRlbnQoZXZlbnRzLCBldmVudEluZGV4KSB7XG4gIGNvbnN0IHRva2VuID0gZXZlbnRzW2V2ZW50SW5kZXhdWzFdXG4gIGNvbnN0IGNvbnRleHQgPSBldmVudHNbZXZlbnRJbmRleF1bMl1cbiAgbGV0IHN0YXJ0UG9zaXRpb24gPSBldmVudEluZGV4IC0gMVxuICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovXG4gIGNvbnN0IHN0YXJ0UG9zaXRpb25zID0gW11cbiAgY29uc3QgdG9rZW5pemVyID1cbiAgICB0b2tlbi5fdG9rZW5pemVyIHx8IGNvbnRleHQucGFyc2VyW3Rva2VuLmNvbnRlbnRUeXBlXSh0b2tlbi5zdGFydClcbiAgY29uc3QgY2hpbGRFdmVudHMgPSB0b2tlbml6ZXIuZXZlbnRzXG4gIC8qKiBAdHlwZSB7QXJyYXk8W251bWJlciwgbnVtYmVyXT59ICovXG4gIGNvbnN0IGp1bXBzID0gW11cbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBudW1iZXI+fSAqL1xuICBjb25zdCBnYXBzID0ge31cbiAgLyoqIEB0eXBlIHtBcnJheTxDaHVuaz59ICovXG4gIGxldCBzdHJlYW1cbiAgLyoqIEB0eXBlIHtUb2tlbiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IHByZXZpb3VzXG4gIGxldCBpbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7VG9rZW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBjdXJyZW50ID0gdG9rZW5cbiAgbGV0IGFkanVzdCA9IDBcbiAgbGV0IHN0YXJ0ID0gMFxuICBjb25zdCBicmVha3MgPSBbc3RhcnRdXG5cbiAgLy8gTG9vcCBmb3J3YXJkIHRocm91Z2ggdGhlIGxpbmtlZCB0b2tlbnMgdG8gcGFzcyB0aGVtIGluIG9yZGVyIHRvIHRoZVxuICAvLyBzdWJ0b2tlbml6ZXIuXG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgLy8gRmluZCB0aGUgcG9zaXRpb24gb2YgdGhlIGV2ZW50IGZvciB0aGlzIHRva2VuLlxuICAgIHdoaWxlIChldmVudHNbKytzdGFydFBvc2l0aW9uXVsxXSAhPT0gY3VycmVudCkge1xuICAgICAgLy8gRW1wdHkuXG4gICAgfVxuICAgIHN0YXJ0UG9zaXRpb25zLnB1c2goc3RhcnRQb3NpdGlvbilcbiAgICBpZiAoIWN1cnJlbnQuX3Rva2VuaXplcikge1xuICAgICAgc3RyZWFtID0gY29udGV4dC5zbGljZVN0cmVhbShjdXJyZW50KVxuICAgICAgaWYgKCFjdXJyZW50Lm5leHQpIHtcbiAgICAgICAgc3RyZWFtLnB1c2gobnVsbClcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2aW91cykge1xuICAgICAgICB0b2tlbml6ZXIuZGVmaW5lU2tpcChjdXJyZW50LnN0YXJ0KVxuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnQuX2lzSW5GaXJzdENvbnRlbnRPZkxpc3RJdGVtKSB7XG4gICAgICAgIHRva2VuaXplci5fZ2ZtVGFza2xpc3RGaXJzdENvbnRlbnRPZkxpc3RJdGVtID0gdHJ1ZVxuICAgICAgfVxuICAgICAgdG9rZW5pemVyLndyaXRlKHN0cmVhbSlcbiAgICAgIGlmIChjdXJyZW50Ll9pc0luRmlyc3RDb250ZW50T2ZMaXN0SXRlbSkge1xuICAgICAgICB0b2tlbml6ZXIuX2dmbVRhc2tsaXN0Rmlyc3RDb250ZW50T2ZMaXN0SXRlbSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVucmF2ZWwgdGhlIG5leHQgdG9rZW4uXG4gICAgcHJldmlvdXMgPSBjdXJyZW50XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dFxuICB9XG5cbiAgLy8gTm93LCBsb29wIGJhY2sgdGhyb3VnaCBhbGwgZXZlbnRzIChhbmQgbGlua2VkIHRva2VucyksIHRvIGZpZ3VyZSBvdXQgd2hpY2hcbiAgLy8gcGFydHMgYmVsb25nIHdoZXJlLlxuICBjdXJyZW50ID0gdG9rZW5cbiAgd2hpbGUgKCsraW5kZXggPCBjaGlsZEV2ZW50cy5sZW5ndGgpIHtcbiAgICBpZiAoXG4gICAgICAvLyBGaW5kIGEgdm9pZCB0b2tlbiB0aGF0IGluY2x1ZGVzIGEgYnJlYWsuXG4gICAgICBjaGlsZEV2ZW50c1tpbmRleF1bMF0gPT09ICdleGl0JyAmJlxuICAgICAgY2hpbGRFdmVudHNbaW5kZXggLSAxXVswXSA9PT0gJ2VudGVyJyAmJlxuICAgICAgY2hpbGRFdmVudHNbaW5kZXhdWzFdLnR5cGUgPT09IGNoaWxkRXZlbnRzW2luZGV4IC0gMV1bMV0udHlwZSAmJlxuICAgICAgY2hpbGRFdmVudHNbaW5kZXhdWzFdLnN0YXJ0LmxpbmUgIT09IGNoaWxkRXZlbnRzW2luZGV4XVsxXS5lbmQubGluZVxuICAgICkge1xuICAgICAgc3RhcnQgPSBpbmRleCArIDFcbiAgICAgIGJyZWFrcy5wdXNoKHN0YXJ0KVxuICAgICAgLy8gSGVscCBHQy5cbiAgICAgIGN1cnJlbnQuX3Rva2VuaXplciA9IHVuZGVmaW5lZFxuICAgICAgY3VycmVudC5wcmV2aW91cyA9IHVuZGVmaW5lZFxuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dFxuICAgIH1cbiAgfVxuXG4gIC8vIEhlbHAgR0MuXG4gIHRva2VuaXplci5ldmVudHMgPSBbXVxuXG4gIC8vIElmIHRoZXJlXHUyMDE5cyBvbmUgbW9yZSB0b2tlbiAod2hpY2ggaXMgdGhlIGNhc2VzIGZvciBsaW5lcyB0aGF0IGVuZCBpbiBhblxuICAvLyBFT0YpLCB0aGF0XHUyMDE5cyBwZXJmZWN0OiB0aGUgbGFzdCBwb2ludCB3ZSBmb3VuZCBzdGFydHMgaXQuXG4gIC8vIElmIHRoZXJlIGlzblx1MjAxOXQgdGhlbiBtYWtlIHN1cmUgYW55IHJlbWFpbmluZyBjb250ZW50IGlzIGFkZGVkIHRvIGl0LlxuICBpZiAoY3VycmVudCkge1xuICAgIC8vIEhlbHAgR0MuXG4gICAgY3VycmVudC5fdG9rZW5pemVyID0gdW5kZWZpbmVkXG4gICAgY3VycmVudC5wcmV2aW91cyA9IHVuZGVmaW5lZFxuICB9IGVsc2Uge1xuICAgIGJyZWFrcy5wb3AoKVxuICB9XG5cbiAgLy8gTm93IHNwbGljZSB0aGUgZXZlbnRzIGZyb20gdGhlIHN1YnRva2VuaXplciBpbnRvIHRoZSBjdXJyZW50IGV2ZW50cyxcbiAgLy8gbW92aW5nIGJhY2sgdG8gZnJvbnQgc28gdGhhdCBzcGxpY2UgaW5kaWNlcyBhcmVuXHUyMDE5dCBhZmZlY3RlZC5cbiAgaW5kZXggPSBicmVha3MubGVuZ3RoXG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgY29uc3Qgc2xpY2UgPSBjaGlsZEV2ZW50cy5zbGljZShicmVha3NbaW5kZXhdLCBicmVha3NbaW5kZXggKyAxXSlcbiAgICBjb25zdCBzdGFydCA9IHN0YXJ0UG9zaXRpb25zLnBvcCgpXG4gICAganVtcHMudW5zaGlmdChbc3RhcnQsIHN0YXJ0ICsgc2xpY2UubGVuZ3RoIC0gMV0pXG4gICAgc3BsaWNlKGV2ZW50cywgc3RhcnQsIDIsIHNsaWNlKVxuICB9XG4gIGluZGV4ID0gLTFcbiAgd2hpbGUgKCsraW5kZXggPCBqdW1wcy5sZW5ndGgpIHtcbiAgICBnYXBzW2FkanVzdCArIGp1bXBzW2luZGV4XVswXV0gPSBhZGp1c3QgKyBqdW1wc1tpbmRleF1bMV1cbiAgICBhZGp1c3QgKz0ganVtcHNbaW5kZXhdWzFdIC0ganVtcHNbaW5kZXhdWzBdIC0gMVxuICB9XG4gIHJldHVybiBnYXBzXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmd9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7c3VidG9rZW5pemV9IGZyb20gJ21pY3JvbWFyay11dGlsLXN1YnRva2VuaXplJ1xuLyoqXG4gKiBObyBuYW1lIGJlY2F1c2UgaXQgbXVzdCBub3QgYmUgdHVybmVkIG9mZi5cbiAqIEB0eXBlIHtDb25zdHJ1Y3R9XG4gKi9cbmV4cG9ydCBjb25zdCBjb250ZW50ID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVDb250ZW50LFxuICByZXNvbHZlOiByZXNvbHZlQ29udGVudFxufVxuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IGNvbnRpbnVhdGlvbkNvbnN0cnVjdCA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplQ29udGludWF0aW9uLFxuICBwYXJ0aWFsOiB0cnVlXG59XG5cbi8qKlxuICogQ29udGVudCBpcyB0cmFuc3BhcmVudDogaXRcdTIwMTlzIHBhcnNlZCByaWdodCBub3cuIFRoYXQgd2F5LCBkZWZpbml0aW9ucyBhcmUgYWxzb1xuICogcGFyc2VkIHJpZ2h0IG5vdzogYmVmb3JlIHRleHQgaW4gcGFyYWdyYXBocyAoc3BlY2lmaWNhbGx5LCBtZWRpYSkgYXJlIHBhcnNlZC5cbiAqXG4gKiBAdHlwZSB7UmVzb2x2ZXJ9XG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVDb250ZW50KGV2ZW50cykge1xuICBzdWJ0b2tlbml6ZShldmVudHMpXG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVDb250ZW50KGVmZmVjdHMsIG9rKSB7XG4gIC8qKiBAdHlwZSB7VG9rZW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBwcmV2aW91c1xuICByZXR1cm4gY2h1bmtTdGFydFxuXG4gIC8qKlxuICAgKiBCZWZvcmUgYSBjb250ZW50IGNodW5rLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYWJjXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjaHVua1N0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdjb250ZW50JylcbiAgICBwcmV2aW91cyA9IGVmZmVjdHMuZW50ZXIoJ2NodW5rQ29udGVudCcsIHtcbiAgICAgIGNvbnRlbnRUeXBlOiAnY29udGVudCdcbiAgICB9KVxuICAgIHJldHVybiBjaHVua0luc2lkZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGEgY29udGVudCBjaHVuay5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGFiY1xuICAgKiAgICAgXl5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjaHVua0luc2lkZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBjb250ZW50RW5kKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gVG8gZG86IGluIGBtYXJrZG93bi1yc2AsIGVhY2ggbGluZSBpcyBwYXJzZWQgb24gaXRzIG93biwgYW5kIGV2ZXJ5dGhpbmdcbiAgICAvLyBpcyBzdGl0Y2hlZCB0b2dldGhlciByZXNvbHZpbmcuXG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuIGVmZmVjdHMuY2hlY2soXG4gICAgICAgIGNvbnRpbnVhdGlvbkNvbnN0cnVjdCxcbiAgICAgICAgY29udGVudENvbnRpbnVlLFxuICAgICAgICBjb250ZW50RW5kXG4gICAgICApKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gRGF0YS5cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY2h1bmtJbnNpZGVcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250ZW50RW5kKGNvZGUpIHtcbiAgICBlZmZlY3RzLmV4aXQoJ2NodW5rQ29udGVudCcpXG4gICAgZWZmZWN0cy5leGl0KCdjb250ZW50JylcbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250ZW50Q29udGludWUoY29kZSkge1xuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtDb250ZW50JylcbiAgICBwcmV2aW91cy5uZXh0ID0gZWZmZWN0cy5lbnRlcignY2h1bmtDb250ZW50Jywge1xuICAgICAgY29udGVudFR5cGU6ICdjb250ZW50JyxcbiAgICAgIHByZXZpb3VzXG4gICAgfSlcbiAgICBwcmV2aW91cyA9IHByZXZpb3VzLm5leHRcbiAgICByZXR1cm4gY2h1bmtJbnNpZGVcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUNvbnRpbnVhdGlvbihlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHJldHVybiBzdGFydExvb2thaGVhZFxuXG4gIC8qKlxuICAgKlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydExvb2thaGVhZChjb2RlKSB7XG4gICAgZWZmZWN0cy5leGl0KCdjaHVua0NvbnRlbnQnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgcmV0dXJuIGZhY3RvcnlTcGFjZShlZmZlY3RzLCBwcmVmaXhlZCwgJ2xpbmVQcmVmaXgnKVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHByZWZpeGVkKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG5cbiAgICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gICAgaWYgKFxuICAgICAgIXNlbGYucGFyc2VyLmNvbnN0cnVjdHMuZGlzYWJsZS5udWxsLmluY2x1ZGVzKCdjb2RlSW5kZW50ZWQnKSAmJlxuICAgICAgdGFpbCAmJlxuICAgICAgdGFpbFsxXS50eXBlID09PSAnbGluZVByZWZpeCcgJiZcbiAgICAgIHRhaWxbMl0uc2xpY2VTZXJpYWxpemUodGFpbFsxXSwgdHJ1ZSkubGVuZ3RoID49IDRcbiAgICApIHtcbiAgICAgIHJldHVybiBvayhjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gZWZmZWN0cy5pbnRlcnJ1cHQoc2VsZi5wYXJzZXIuY29uc3RydWN0cy5mbG93LCBub2ssIG9rKShjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVmZmVjdHN9IEVmZmVjdHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuVHlwZX0gVG9rZW5UeXBlXG4gKi9cblxuaW1wb3J0IHtcbiAgYXNjaWlDb250cm9sLFxuICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlLFxuICBtYXJrZG93bkxpbmVFbmRpbmdcbn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqXG4gKiBQYXJzZSBkZXN0aW5hdGlvbnMuXG4gKlxuICogIyMjIyMjIEV4YW1wbGVzXG4gKlxuICogYGBgbWFya2Rvd25cbiAqIDxhPlxuICogPGFcXD5iPlxuICogPGEgYj5cbiAqIDxhKT5cbiAqIGFcbiAqIGFcXCliXG4gKiBhKGIpY1xuICogYShiKVxuICogYGBgXG4gKlxuICogQHBhcmFtIHtFZmZlY3RzfSBlZmZlY3RzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1N0YXRlfSBva1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHN1Y2Nlc3NmdWwuXG4gKiBAcGFyYW0ge1N0YXRlfSBub2tcbiAqICAgU3RhdGUgc3dpdGNoZWQgdG8gd2hlbiB1bnN1Y2Nlc3NmdWwuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gdHlwZVxuICogICBUeXBlIGZvciB3aG9sZSAoYDxhPmAgb3IgYGJgKS5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSBsaXRlcmFsVHlwZVxuICogICBUeXBlIHdoZW4gZW5jbG9zZWQgKGA8YT5gKS5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSBsaXRlcmFsTWFya2VyVHlwZVxuICogICBUeXBlIGZvciBlbmNsb3NpbmcgKGA8YCBhbmQgYD5gKS5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSByYXdUeXBlXG4gKiAgIFR5cGUgd2hlbiBub3QgZW5jbG9zZWQgKGBiYCkuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gc3RyaW5nVHlwZVxuICogICBUeXBlIGZvciB0aGUgdmFsdWUgKGBhYCBvciBgYmApLlxuICogQHBhcmFtIHtudW1iZXIgfCB1bmRlZmluZWR9IFttYXg9SW5maW5pdHldXG4gKiAgIERlcHRoIG9mIG5lc3RlZCBwYXJlbnMgKGluY2x1c2l2ZSkuXG4gKiBAcmV0dXJucyB7U3RhdGV9XG4gKiAgIFN0YXJ0IHN0YXRlLlxuICovIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zXG5leHBvcnQgZnVuY3Rpb24gZmFjdG9yeURlc3RpbmF0aW9uKFxuICBlZmZlY3RzLFxuICBvayxcbiAgbm9rLFxuICB0eXBlLFxuICBsaXRlcmFsVHlwZSxcbiAgbGl0ZXJhbE1hcmtlclR5cGUsXG4gIHJhd1R5cGUsXG4gIHN0cmluZ1R5cGUsXG4gIG1heFxuKSB7XG4gIGNvbnN0IGxpbWl0ID0gbWF4IHx8IE51bWJlci5QT1NJVElWRV9JTkZJTklUWVxuICBsZXQgYmFsYW5jZSA9IDBcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGFhPlxuICAgKiAgICAgXlxuICAgKiA+IHwgYWFcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjApIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIodHlwZSlcbiAgICAgIGVmZmVjdHMuZW50ZXIobGl0ZXJhbFR5cGUpXG4gICAgICBlZmZlY3RzLmVudGVyKGxpdGVyYWxNYXJrZXJUeXBlKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQobGl0ZXJhbE1hcmtlclR5cGUpXG4gICAgICByZXR1cm4gZW5jbG9zZWRCZWZvcmVcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBjb250cm9sLCBzcGFjZSwgY2xvc2luZyBwYXJlbi5cbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBjb2RlID09PSAzMiB8fCBjb2RlID09PSA0MSB8fCBhc2NpaUNvbnRyb2woY29kZSkpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5lbnRlcih0eXBlKVxuICAgIGVmZmVjdHMuZW50ZXIocmF3VHlwZSlcbiAgICBlZmZlY3RzLmVudGVyKHN0cmluZ1R5cGUpXG4gICAgZWZmZWN0cy5lbnRlcignY2h1bmtTdHJpbmcnLCB7XG4gICAgICBjb250ZW50VHlwZTogJ3N0cmluZydcbiAgICB9KVxuICAgIHJldHVybiByYXcoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPGAsIGF0IGFuIGVuY2xvc2VkIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGFhPlxuICAgKiAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGVuY2xvc2VkQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjIpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIobGl0ZXJhbE1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdChsaXRlcmFsTWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdChsaXRlcmFsVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoc3RyaW5nVHlwZSlcbiAgICBlZmZlY3RzLmVudGVyKCdjaHVua1N0cmluZycsIHtcbiAgICAgIGNvbnRlbnRUeXBlOiAnc3RyaW5nJ1xuICAgIH0pXG4gICAgcmV0dXJuIGVuY2xvc2VkKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gZW5jbG9zZWQgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YWE+XG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZW5jbG9zZWQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2Mikge1xuICAgICAgZWZmZWN0cy5leGl0KCdjaHVua1N0cmluZycpXG4gICAgICBlZmZlY3RzLmV4aXQoc3RyaW5nVHlwZSlcbiAgICAgIHJldHVybiBlbmNsb3NlZEJlZm9yZShjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBjb2RlID09PSA2MCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvZGUgPT09IDkyID8gZW5jbG9zZWRFc2NhcGUgOiBlbmNsb3NlZFxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGBcXGAsIGF0IGEgc3BlY2lhbCBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YVxcKmE+XG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBlbmNsb3NlZEVzY2FwZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYwIHx8IGNvZGUgPT09IDYyIHx8IGNvZGUgPT09IDkyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBlbmNsb3NlZFxuICAgIH1cbiAgICByZXR1cm4gZW5jbG9zZWQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByYXcgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmF3KGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICAhYmFsYW5jZSAmJlxuICAgICAgKGNvZGUgPT09IG51bGwgfHwgY29kZSA9PT0gNDEgfHwgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKSlcbiAgICApIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnY2h1bmtTdHJpbmcnKVxuICAgICAgZWZmZWN0cy5leGl0KHN0cmluZ1R5cGUpXG4gICAgICBlZmZlY3RzLmV4aXQocmF3VHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgICAgcmV0dXJuIG9rKGNvZGUpXG4gICAgfVxuICAgIGlmIChiYWxhbmNlIDwgbGltaXQgJiYgY29kZSA9PT0gNDApIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgYmFsYW5jZSsrXG4gICAgICByZXR1cm4gcmF3XG4gICAgfVxuICAgIGlmIChjb2RlID09PSA0MSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBiYWxhbmNlLS1cbiAgICAgIHJldHVybiByYXdcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBjb250cm9sIChidXQgKm5vdCogYFxcMGApIGFuZCBzcGFjZSBhbmQgYChgLlxuICAgIC8vIE5vdGU6IGluIGBtYXJrZG93bi1yc2AsIGBcXDBgIGV4aXN0cyBpbiBjb2RlcywgaW4gYG1pY3JvbWFyay1qc2AgaXRcbiAgICAvLyBkb2Vzblx1MjAxOXQuXG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgY29kZSA9PT0gMzIgfHwgY29kZSA9PT0gNDAgfHwgYXNjaWlDb250cm9sKGNvZGUpKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjb2RlID09PSA5MiA/IHJhd0VzY2FwZSA6IHJhd1xuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGBcXGAsIGF0IHNwZWNpYWwgY2hhcmFjdGVyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYVxcKmFcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmF3RXNjYXBlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDAgfHwgY29kZSA9PT0gNDEgfHwgY29kZSA9PT0gOTIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHJhd1xuICAgIH1cbiAgICByZXR1cm4gcmF3KGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5UeXBlfSBUb2tlblR5cGVcbiAqL1xuXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZywgbWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqXG4gKiBQYXJzZSBsYWJlbHMuXG4gKlxuICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IGxhYmVscyBpbiBtYXJrZG93biBhcmUgY2FwcGVkIGF0IDk5OSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcuXG4gKlxuICogIyMjIyMjIEV4YW1wbGVzXG4gKlxuICogYGBgbWFya2Rvd25cbiAqIFthXVxuICogW2FcbiAqIGJdXG4gKiBbYVxcXWJdXG4gKiBgYGBcbiAqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogICBUb2tlbml6ZSBjb250ZXh0LlxuICogQHBhcmFtIHtFZmZlY3RzfSBlZmZlY3RzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1N0YXRlfSBva1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHN1Y2Nlc3NmdWwuXG4gKiBAcGFyYW0ge1N0YXRlfSBub2tcbiAqICAgU3RhdGUgc3dpdGNoZWQgdG8gd2hlbiB1bnN1Y2Nlc3NmdWwuXG4gKiBAcGFyYW0ge1Rva2VuVHlwZX0gdHlwZVxuICogICBUeXBlIG9mIHRoZSB3aG9sZSBsYWJlbCAoYFthXWApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IG1hcmtlclR5cGVcbiAqICAgVHlwZSBmb3IgdGhlIG1hcmtlcnMgKGBbYCBhbmQgYF1gKS5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSBzdHJpbmdUeXBlXG4gKiAgIFR5cGUgZm9yIHRoZSBpZGVudGlmaWVyIChgYWApLlxuICogQHJldHVybnMge1N0YXRlfVxuICogICBTdGFydCBzdGF0ZS5cbiAqLyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXBhcmFtc1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlMYWJlbChlZmZlY3RzLCBvaywgbm9rLCB0eXBlLCBtYXJrZXJUeXBlLCBzdHJpbmdUeXBlKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGxldCBzaXplID0gMFxuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gIGxldCBzZWVuXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBsYWJlbC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIodHlwZSlcbiAgICBlZmZlY3RzLmVudGVyKG1hcmtlclR5cGUpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KG1hcmtlclR5cGUpXG4gICAgZWZmZWN0cy5lbnRlcihzdHJpbmdUeXBlKVxuICAgIHJldHVybiBhdEJyZWFrXG4gIH1cblxuICAvKipcbiAgICogSW4gbGFiZWwsIGF0IHNvbWV0aGluZywgYmVmb3JlIHNvbWV0aGluZyBlbHNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYXRCcmVhayhjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgc2l6ZSA+IDk5OSB8fFxuICAgICAgY29kZSA9PT0gbnVsbCB8fFxuICAgICAgY29kZSA9PT0gOTEgfHxcbiAgICAgIChjb2RlID09PSA5MyAmJiAhc2VlbikgfHxcbiAgICAgIC8vIFRvIGRvOiByZW1vdmUgaW4gdGhlIGZ1dHVyZSBvbmNlIHdlXHUyMDE5dmUgc3dpdGNoZWQgZnJvbVxuICAgICAgLy8gYG1pY3JvbWFyay1leHRlbnNpb24tZm9vdG5vdGVgIHRvIGBtaWNyb21hcmstZXh0ZW5zaW9uLWdmbS1mb290bm90ZWAsXG4gICAgICAvLyB3aGljaCBkb2Vzblx1MjAxOXQgbmVlZCB0aGlzLlxuICAgICAgLy8gSGlkZGVuIGZvb3Rub3RlcyBob29rLlxuICAgICAgLyogYzggaWdub3JlIG5leHQgMyAqL1xuICAgICAgKGNvZGUgPT09IDk0ICYmXG4gICAgICAgICFzaXplICYmXG4gICAgICAgICdfaGlkZGVuRm9vdG5vdGVTdXBwb3J0JyBpbiBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzKVxuICAgICkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gOTMpIHtcbiAgICAgIGVmZmVjdHMuZXhpdChzdHJpbmdUeXBlKVxuICAgICAgZWZmZWN0cy5lbnRlcihtYXJrZXJUeXBlKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQobWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuZXhpdCh0eXBlKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuXG4gICAgLy8gVG8gZG86IGluZGVudD8gTGluayBjaHVua3MgYW5kIEVPTHMgdG9nZXRoZXI/XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgICByZXR1cm4gYXRCcmVha1xuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdjaHVua1N0cmluZycsIHtcbiAgICAgIGNvbnRlbnRUeXBlOiAnc3RyaW5nJ1xuICAgIH0pXG4gICAgcmV0dXJuIGxhYmVsSW5zaWRlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gbGFiZWwsIGluIHRleHQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV1cbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsYWJlbEluc2lkZShjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gbnVsbCB8fFxuICAgICAgY29kZSA9PT0gOTEgfHxcbiAgICAgIGNvZGUgPT09IDkzIHx8XG4gICAgICBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkgfHxcbiAgICAgIHNpemUrKyA+IDk5OVxuICAgICkge1xuICAgICAgZWZmZWN0cy5leGl0KCdjaHVua1N0cmluZycpXG4gICAgICByZXR1cm4gYXRCcmVhayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBpZiAoIXNlZW4pIHNlZW4gPSAhbWFya2Rvd25TcGFjZShjb2RlKVxuICAgIHJldHVybiBjb2RlID09PSA5MiA/IGxhYmVsRXNjYXBlIDogbGFiZWxJbnNpZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgXFxgLCBhdCBhIHNwZWNpYWwgY2hhcmFjdGVyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FcXCphXVxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGFiZWxFc2NhcGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA5MSB8fCBjb2RlID09PSA5MiB8fCBjb2RlID09PSA5Mykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBzaXplKytcbiAgICAgIHJldHVybiBsYWJlbEluc2lkZVxuICAgIH1cbiAgICByZXR1cm4gbGFiZWxJbnNpZGUoY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVmZmVjdHN9IEVmZmVjdHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuVHlwZX0gVG9rZW5UeXBlXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmd9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKlxuICogUGFyc2UgdGl0bGVzLlxuICpcbiAqICMjIyMjIyBFeGFtcGxlc1xuICpcbiAqIGBgYG1hcmtkb3duXG4gKiBcImFcIlxuICogJ2InXG4gKiAoYylcbiAqIFwiYVxuICogYlwiXG4gKiAnYVxuICogICAgIGInXG4gKiAoYVxcKWIpXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge0VmZmVjdHN9IGVmZmVjdHNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7U3RhdGV9IG9rXG4gKiAgIFN0YXRlIHN3aXRjaGVkIHRvIHdoZW4gc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7U3RhdGV9IG5va1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHVuc3VjY2Vzc2Z1bC5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSB0eXBlXG4gKiAgIFR5cGUgb2YgdGhlIHdob2xlIHRpdGxlIChgXCJhXCJgLCBgJ2InYCwgYChjKWApLlxuICogQHBhcmFtIHtUb2tlblR5cGV9IG1hcmtlclR5cGVcbiAqICAgVHlwZSBmb3IgdGhlIG1hcmtlcnMgKGBcImAsIGAnYCwgYChgLCBhbmQgYClgKS5cbiAqIEBwYXJhbSB7VG9rZW5UeXBlfSBzdHJpbmdUeXBlXG4gKiAgIFR5cGUgZm9yIHRoZSB2YWx1ZSAoYGFgKS5cbiAqIEByZXR1cm5zIHtTdGF0ZX1cbiAqICAgU3RhcnQgc3RhdGUuXG4gKi8gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1wYXJhbXNcbmV4cG9ydCBmdW5jdGlvbiBmYWN0b3J5VGl0bGUoZWZmZWN0cywgb2ssIG5vaywgdHlwZSwgbWFya2VyVHlwZSwgc3RyaW5nVHlwZSkge1xuICAvKiogQHR5cGUge05vbk51bGxhYmxlPENvZGU+fSAqL1xuICBsZXQgbWFya2VyXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiB0aXRsZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFwiYVwiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDM0IHx8IGNvZGUgPT09IDM5IHx8IGNvZGUgPT09IDQwKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKHR5cGUpXG4gICAgICBlZmZlY3RzLmVudGVyKG1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdChtYXJrZXJUeXBlKVxuICAgICAgbWFya2VyID0gY29kZSA9PT0gNDAgPyA0MSA6IGNvZGVcbiAgICAgIHJldHVybiBiZWdpblxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgb3BlbmluZyBtYXJrZXIuXG4gICAqXG4gICAqIFRoaXMgaXMgYWxzbyB1c2VkIGF0IHRoZSBjbG9zaW5nIG1hcmtlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFwiYVwiXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVnaW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBtYXJrZXIpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIobWFya2VyVHlwZSlcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KG1hcmtlclR5cGUpXG4gICAgICBlZmZlY3RzLmV4aXQodHlwZSlcbiAgICAgIHJldHVybiBva1xuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKHN0cmluZ1R5cGUpXG4gICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBdCBzb21ldGhpbmcsIGJlZm9yZSBzb21ldGhpbmcgZWxzZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFwiYVwiXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYXRCcmVhayhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgZWZmZWN0cy5leGl0KHN0cmluZ1R5cGUpXG4gICAgICByZXR1cm4gYmVnaW4obWFya2VyKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cblxuICAgIC8vIE5vdGU6IGJsYW5rIGxpbmVzIGNhblx1MjAxOXQgZXhpc3QgaW4gY29udGVudC5cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICAvLyBUbyBkbzogdXNlIGBzcGFjZV9vcl90YWJfZW9sX3dpdGhfb3B0aW9uc2AsIGNvbm5lY3QuXG4gICAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgYXRCcmVhaywgJ2xpbmVQcmVmaXgnKVxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdjaHVua1N0cmluZycsIHtcbiAgICAgIGNvbnRlbnRUeXBlOiAnc3RyaW5nJ1xuICAgIH0pXG4gICAgcmV0dXJuIGluc2lkZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluc2lkZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlciB8fCBjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdjaHVua1N0cmluZycpXG4gICAgICByZXR1cm4gYXRCcmVhayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29kZSA9PT0gOTIgPyBlc2NhcGUgOiBpbnNpZGVcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgXFxgLCBhdCBhIHNwZWNpYWwgY2hhcmFjdGVyLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgXCJhXFwqYlwiXG4gICAqICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZXNjYXBlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyIHx8IGNvZGUgPT09IDkyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBpbnNpZGVcbiAgICB9XG4gICAgcmV0dXJuIGluc2lkZShjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkVmZmVjdHN9IEVmZmVjdHNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmcsIG1hcmtkb3duU3BhY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKlxuICogUGFyc2Ugc3BhY2VzIGFuZCB0YWJzLlxuICpcbiAqIFRoZXJlIGlzIG5vIGBub2tgIHBhcmFtZXRlcjpcbiAqXG4gKiAqICAgbGluZSBlbmRpbmdzIG9yIHNwYWNlcyBpbiBtYXJrZG93biBhcmUgb2Z0ZW4gb3B0aW9uYWwsIGluIHdoaWNoIGNhc2UgdGhpc1xuICogICAgIGZhY3RvcnkgY2FuIGJlIHVzZWQgYW5kIGBva2Agd2lsbCBiZSBzd2l0Y2hlZCB0byB3aGV0aGVyIHNwYWNlcyB3ZXJlIGZvdW5kXG4gKiAgICAgb3Igbm90XG4gKiAqICAgb25lIGxpbmUgZW5kaW5nIG9yIHNwYWNlIGNhbiBiZSBkZXRlY3RlZCB3aXRoXG4gKiAgICAgYG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlgIHJpZ2h0IGJlZm9yZSB1c2luZyBgZmFjdG9yeVdoaXRlc3BhY2VgXG4gKlxuICogQHBhcmFtIHtFZmZlY3RzfSBlZmZlY3RzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1N0YXRlfSBva1xuICogICBTdGF0ZSBzd2l0Y2hlZCB0byB3aGVuIHN1Y2Nlc3NmdWwuXG4gKiBAcmV0dXJuc1xuICogICBTdGFydCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZhY3RvcnlXaGl0ZXNwYWNlKGVmZmVjdHMsIG9rKSB7XG4gIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgbGV0IHNlZW5cbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgICAgc2VlbiA9IHRydWVcbiAgICAgIHJldHVybiBzdGFydFxuICAgIH1cbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgcmV0dXJuIGZhY3RvcnlTcGFjZShcbiAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgc3RhcnQsXG4gICAgICAgIHNlZW4gPyAnbGluZVByZWZpeCcgOiAnbGluZVN1ZmZpeCdcbiAgICAgICkoY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIE5vcm1hbGl6ZSBhbiBpZGVudGlmaWVyIChhcyBmb3VuZCBpbiByZWZlcmVuY2VzLCBkZWZpbml0aW9ucykuXG4gKlxuICogQ29sbGFwc2VzIG1hcmtkb3duIHdoaXRlc3BhY2UsIHRyaW0sIGFuZCB0aGVuIGxvd2VyLSBhbmQgdXBwZXJjYXNlLlxuICpcbiAqIFNvbWUgY2hhcmFjdGVycyBhcmUgY29uc2lkZXJlZCBcdTIwMUN1cHBlcmNhc2VcdTIwMUQsIHN1Y2ggYXMgVSswM0Y0IChgXHUwM0Y0YCksIGJ1dCBpZiB0aGVpclxuICogbG93ZXJjYXNlIGNvdW50ZXJwYXJ0IChVKzAzQjggKGBcdTAzQjhgKSkgaXMgdXBwZXJjYXNlZCB3aWxsIHJlc3VsdCBpbiBhIGRpZmZlcmVudFxuICogdXBwZXJjYXNlIGNoYXJhY3RlciAoVSswMzk4IChgXHUwMzk4YCkpLlxuICogU28sIHRvIGdldCBhIGNhbm9uaWNhbCBmb3JtLCB3ZSBwZXJmb3JtIGJvdGggbG93ZXItIGFuZCB1cHBlcmNhc2UuXG4gKlxuICogVXNpbmcgdXBwZXJjYXNlIGxhc3QgbWFrZXMgc3VyZSBrZXlzIHdpbGwgbmV2ZXIgaW50ZXJhY3Qgd2l0aCBkZWZhdWx0XG4gKiBwcm90b3R5cGFsIHZhbHVlcyAoc3VjaCBhcyBgY29uc3RydWN0b3JgKTogbm90aGluZyBpbiB0aGUgcHJvdG90eXBlIG9mXG4gKiBgT2JqZWN0YCBpcyB1cHBlcmNhc2UuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiAgIElkZW50aWZpZXIgdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgTm9ybWFsaXplZCBpZGVudGlmaWVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSWRlbnRpZmllcih2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHZhbHVlXG4gICAgICAvLyBDb2xsYXBzZSBtYXJrZG93biB3aGl0ZXNwYWNlLlxuICAgICAgLnJlcGxhY2UoL1tcXHRcXG5cXHIgXSsvZywgJyAnKVxuICAgICAgLy8gVHJpbS5cbiAgICAgIC5yZXBsYWNlKC9eIHwgJC9nLCAnJylcbiAgICAgIC8vIFNvbWUgY2hhcmFjdGVycyBhcmUgY29uc2lkZXJlZCBcdTIwMUN1cHBlcmNhc2VcdTIwMUQsIGJ1dCBpZiB0aGVpciBsb3dlcmNhc2VcbiAgICAgIC8vIGNvdW50ZXJwYXJ0IGlzIHVwcGVyY2FzZWQgd2lsbCByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdXBwZXJjYXNlXG4gICAgICAvLyBjaGFyYWN0ZXIuXG4gICAgICAvLyBIZW5jZSwgdG8gZ2V0IHRoYXQgZm9ybSwgd2UgcGVyZm9ybSBib3RoIGxvd2VyLSBhbmQgdXBwZXJjYXNlLlxuICAgICAgLy8gVXBwZXIgY2FzZSBtYWtlcyBzdXJlIGtleXMgd2lsbCBub3QgaW50ZXJhY3Qgd2l0aCBkZWZhdWx0IHByb3RvdHlwYWxcbiAgICAgIC8vIG1ldGhvZHM6IG5vIG1ldGhvZCBpcyB1cHBlcmNhc2UuXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnRvVXBwZXJDYXNlKClcbiAgKVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlEZXN0aW5hdGlvbn0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktZGVzdGluYXRpb24nXG5pbXBvcnQge2ZhY3RvcnlMYWJlbH0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktbGFiZWwnXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge2ZhY3RvcnlUaXRsZX0gZnJvbSAnbWljcm9tYXJrLWZhY3RvcnktdGl0bGUnXG5pbXBvcnQge2ZhY3RvcnlXaGl0ZXNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS13aGl0ZXNwYWNlJ1xuaW1wb3J0IHtcbiAgbWFya2Rvd25MaW5lRW5kaW5nLFxuICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlLFxuICBtYXJrZG93blNwYWNlXG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7bm9ybWFsaXplSWRlbnRpZmllcn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtbm9ybWFsaXplLWlkZW50aWZpZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBkZWZpbml0aW9uID0ge1xuICBuYW1lOiAnZGVmaW5pdGlvbicsXG4gIHRva2VuaXplOiB0b2tlbml6ZURlZmluaXRpb25cbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCB0aXRsZUJlZm9yZSA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplVGl0bGVCZWZvcmUsXG4gIHBhcnRpYWw6IHRydWVcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVEZWZpbml0aW9uKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGxldCBpZGVudGlmaWVyXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBBdCBzdGFydCBvZiBhIGRlZmluaXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICAvLyBEbyBub3QgaW50ZXJydXB0IHBhcmFncmFwaHMgKGJ1dCBkbyBmb2xsb3cgZGVmaW5pdGlvbnMpLlxuICAgIC8vIFRvIGRvOiBkbyBgaW50ZXJydXB0YCB0aGUgd2F5IGBtYXJrZG93bi1yc2AgZG9lcy5cbiAgICAvLyBUbyBkbzogcGFyc2Ugd2hpdGVzcGFjZSB0aGUgd2F5IGBtYXJrZG93bi1yc2AgZG9lcy5cbiAgICBlZmZlY3RzLmVudGVyKCdkZWZpbml0aW9uJylcbiAgICByZXR1cm4gYmVmb3JlKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgYFtgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWZvcmUoY29kZSkge1xuICAgIC8vIFRvIGRvOiBwYXJzZSB3aGl0ZXNwYWNlIHRoZSB3YXkgYG1hcmtkb3duLXJzYCBkb2VzLlxuXG4gICAgcmV0dXJuIGZhY3RvcnlMYWJlbC5jYWxsKFxuICAgICAgc2VsZixcbiAgICAgIGVmZmVjdHMsXG4gICAgICBsYWJlbEFmdGVyLFxuICAgICAgLy8gTm90ZTogd2UgZG9uXHUyMDE5dCBuZWVkIHRvIHJlc2V0IHRoZSB3YXkgYG1hcmtkb3duLXJzYCBkb2VzLlxuICAgICAgbm9rLFxuICAgICAgJ2RlZmluaXRpb25MYWJlbCcsXG4gICAgICAnZGVmaW5pdGlvbkxhYmVsTWFya2VyJyxcbiAgICAgICdkZWZpbml0aW9uTGFiZWxTdHJpbmcnXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGxhYmVsLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdOiBiIFwiY1wiXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsYWJlbEFmdGVyKGNvZGUpIHtcbiAgICBpZGVudGlmaWVyID0gbm9ybWFsaXplSWRlbnRpZmllcihcbiAgICAgIHNlbGYuc2xpY2VTZXJpYWxpemUoc2VsZi5ldmVudHNbc2VsZi5ldmVudHMubGVuZ3RoIC0gMV1bMV0pLnNsaWNlKDEsIC0xKVxuICAgIClcbiAgICBpZiAoY29kZSA9PT0gNTgpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2RlZmluaXRpb25NYXJrZXInKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2RlZmluaXRpb25NYXJrZXInKVxuICAgICAgcmV0dXJuIG1hcmtlckFmdGVyXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBtYXJrZXIuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBtYXJrZXJBZnRlcihjb2RlKSB7XG4gICAgLy8gTm90ZTogd2hpdGVzcGFjZSBpcyBvcHRpb25hbC5cbiAgICByZXR1cm4gbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5V2hpdGVzcGFjZShlZmZlY3RzLCBkZXN0aW5hdGlvbkJlZm9yZSkoY29kZSlcbiAgICAgIDogZGVzdGluYXRpb25CZWZvcmUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWZvcmUgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGIgXCJjXCJcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGVzdGluYXRpb25CZWZvcmUoY29kZSkge1xuICAgIHJldHVybiBmYWN0b3J5RGVzdGluYXRpb24oXG4gICAgICBlZmZlY3RzLFxuICAgICAgZGVzdGluYXRpb25BZnRlcixcbiAgICAgIC8vIE5vdGU6IHdlIGRvblx1MjAxOXQgbmVlZCB0byByZXNldCB0aGUgd2F5IGBtYXJrZG93bi1yc2AgZG9lcy5cbiAgICAgIG5vayxcbiAgICAgICdkZWZpbml0aW9uRGVzdGluYXRpb24nLFxuICAgICAgJ2RlZmluaXRpb25EZXN0aW5hdGlvbkxpdGVyYWwnLFxuICAgICAgJ2RlZmluaXRpb25EZXN0aW5hdGlvbkxpdGVyYWxNYXJrZXInLFxuICAgICAgJ2RlZmluaXRpb25EZXN0aW5hdGlvblJhdycsXG4gICAgICAnZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nJ1xuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGVzdGluYXRpb25BZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIGVmZmVjdHMuYXR0ZW1wdCh0aXRsZUJlZm9yZSwgYWZ0ZXIsIGFmdGVyKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGRlZmluaXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGJcbiAgICogICAgICAgICAgIF5cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoZWZmZWN0cywgYWZ0ZXJXaGl0ZXNwYWNlLCAnd2hpdGVzcGFjZScpKGNvZGUpXG4gICAgICA6IGFmdGVyV2hpdGVzcGFjZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGRlZmluaXRpb24sIGFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGJcbiAgICogICAgICAgICAgIF5cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyV2hpdGVzcGFjZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2RlZmluaXRpb24nKVxuXG4gICAgICAvLyBOb3RlOiB3ZSBkb25cdTIwMTl0IGNhcmUgYWJvdXQgdW5pcXVlbmVzcy5cbiAgICAgIC8vIEl0XHUyMDE5cyBsaWtlbHkgdGhhdCB0aGF0IGRvZXNuXHUyMDE5dCBoYXBwZW4gdmVyeSBmcmVxdWVudGx5LlxuICAgICAgLy8gSXQgaXMgbW9yZSBsaWtlbHkgdGhhdCBpdCB3YXN0ZXMgcHJlY2lvdXMgdGltZS5cbiAgICAgIHNlbGYucGFyc2VyLmRlZmluZWQucHVzaChpZGVudGlmaWVyKVxuXG4gICAgICAvLyBUbyBkbzogYG1hcmtkb3duLXJzYCBpbnRlcnJ1cHQuXG4gICAgICAvLyAvLyBZb3VcdTIwMTlkIGJlIGludGVycnVwdGluZy5cbiAgICAgIC8vIHRva2VuaXplci5pbnRlcnJ1cHQgPSB0cnVlXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplVGl0bGVCZWZvcmUoZWZmZWN0cywgb2ssIG5vaykge1xuICByZXR1cm4gdGl0bGVCZWZvcmVcblxuICAvKipcbiAgICogQWZ0ZXIgZGVzdGluYXRpb24sIGF0IHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV06IGJcbiAgICogICAgICAgICAgIF5cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGl0bGVCZWZvcmUoY29kZSkge1xuICAgIHJldHVybiBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlXaGl0ZXNwYWNlKGVmZmVjdHMsIGJlZm9yZU1hcmtlcikoY29kZSlcbiAgICAgIDogbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgdGl0bGUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCBbYV06IGJcbiAgICogPiB8IFwiY1wiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWZvcmVNYXJrZXIoY29kZSkge1xuICAgIHJldHVybiBmYWN0b3J5VGl0bGUoXG4gICAgICBlZmZlY3RzLFxuICAgICAgdGl0bGVBZnRlcixcbiAgICAgIG5vayxcbiAgICAgICdkZWZpbml0aW9uVGl0bGUnLFxuICAgICAgJ2RlZmluaXRpb25UaXRsZU1hcmtlcicsXG4gICAgICAnZGVmaW5pdGlvblRpdGxlU3RyaW5nJ1xuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciB0aXRsZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRpdGxlQWZ0ZXIoY29kZSkge1xuICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlTcGFjZShlZmZlY3RzLCB0aXRsZUFmdGVyT3B0aW9uYWxXaGl0ZXNwYWNlLCAnd2hpdGVzcGFjZScpKGNvZGUpXG4gICAgICA6IHRpdGxlQWZ0ZXJPcHRpb25hbFdoaXRlc3BhY2UoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciB0aXRsZSwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXTogYiBcImNcIlxuICAgKiAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRpdGxlQWZ0ZXJPcHRpb25hbFdoaXRlc3BhY2UoY29kZSkge1xuICAgIHJldHVybiBjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSA/IG9rKGNvZGUpIDogbm9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHttYXJrZG93bkxpbmVFbmRpbmd9IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGhhcmRCcmVha0VzY2FwZSA9IHtcbiAgbmFtZTogJ2hhcmRCcmVha0VzY2FwZScsXG4gIHRva2VuaXplOiB0b2tlbml6ZUhhcmRCcmVha0VzY2FwZVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUhhcmRCcmVha0VzY2FwZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBhIGhhcmQgYnJlYWsgKGVzY2FwZSkuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhXFxcbiAgICogICAgICBeXG4gICAqICAgfCBiXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignaGFyZEJyZWFrRXNjYXBlJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gYWZ0ZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgXFxgLCBhdCBlb2wuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhXFxcbiAgICogICAgICAgXlxuICAgKiAgIHwgYlxuICAgKiBgYGBcbiAgICpcbiAgICogIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2hhcmRCcmVha0VzY2FwZScpXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5U3BhY2V9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXNwYWNlJ1xuaW1wb3J0IHtcbiAgbWFya2Rvd25MaW5lRW5kaW5nLFxuICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlLFxuICBtYXJrZG93blNwYWNlXG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3RlcidcbmltcG9ydCB7c3BsaWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaHVua2VkJ1xuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgaGVhZGluZ0F0eCA9IHtcbiAgbmFtZTogJ2hlYWRpbmdBdHgnLFxuICB0b2tlbml6ZTogdG9rZW5pemVIZWFkaW5nQXR4LFxuICByZXNvbHZlOiByZXNvbHZlSGVhZGluZ0F0eFxufVxuXG4vKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuZnVuY3Rpb24gcmVzb2x2ZUhlYWRpbmdBdHgoZXZlbnRzLCBjb250ZXh0KSB7XG4gIGxldCBjb250ZW50RW5kID0gZXZlbnRzLmxlbmd0aCAtIDJcbiAgbGV0IGNvbnRlbnRTdGFydCA9IDNcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IGNvbnRlbnRcbiAgLyoqIEB0eXBlIHtUb2tlbn0gKi9cbiAgbGV0IHRleHRcblxuICAvLyBQcmVmaXggd2hpdGVzcGFjZSwgcGFydCBvZiB0aGUgb3BlbmluZy5cbiAgaWYgKGV2ZW50c1tjb250ZW50U3RhcnRdWzFdLnR5cGUgPT09ICd3aGl0ZXNwYWNlJykge1xuICAgIGNvbnRlbnRTdGFydCArPSAyXG4gIH1cblxuICAvLyBTdWZmaXggd2hpdGVzcGFjZSwgcGFydCBvZiB0aGUgY2xvc2luZy5cbiAgaWYgKFxuICAgIGNvbnRlbnRFbmQgLSAyID4gY29udGVudFN0YXJ0ICYmXG4gICAgZXZlbnRzW2NvbnRlbnRFbmRdWzFdLnR5cGUgPT09ICd3aGl0ZXNwYWNlJ1xuICApIHtcbiAgICBjb250ZW50RW5kIC09IDJcbiAgfVxuICBpZiAoXG4gICAgZXZlbnRzW2NvbnRlbnRFbmRdWzFdLnR5cGUgPT09ICdhdHhIZWFkaW5nU2VxdWVuY2UnICYmXG4gICAgKGNvbnRlbnRTdGFydCA9PT0gY29udGVudEVuZCAtIDEgfHxcbiAgICAgIChjb250ZW50RW5kIC0gNCA+IGNvbnRlbnRTdGFydCAmJlxuICAgICAgICBldmVudHNbY29udGVudEVuZCAtIDJdWzFdLnR5cGUgPT09ICd3aGl0ZXNwYWNlJykpXG4gICkge1xuICAgIGNvbnRlbnRFbmQgLT0gY29udGVudFN0YXJ0ICsgMSA9PT0gY29udGVudEVuZCA/IDIgOiA0XG4gIH1cbiAgaWYgKGNvbnRlbnRFbmQgPiBjb250ZW50U3RhcnQpIHtcbiAgICBjb250ZW50ID0ge1xuICAgICAgdHlwZTogJ2F0eEhlYWRpbmdUZXh0JyxcbiAgICAgIHN0YXJ0OiBldmVudHNbY29udGVudFN0YXJ0XVsxXS5zdGFydCxcbiAgICAgIGVuZDogZXZlbnRzW2NvbnRlbnRFbmRdWzFdLmVuZFxuICAgIH1cbiAgICB0ZXh0ID0ge1xuICAgICAgdHlwZTogJ2NodW5rVGV4dCcsXG4gICAgICBzdGFydDogZXZlbnRzW2NvbnRlbnRTdGFydF1bMV0uc3RhcnQsXG4gICAgICBlbmQ6IGV2ZW50c1tjb250ZW50RW5kXVsxXS5lbmQsXG4gICAgICBjb250ZW50VHlwZTogJ3RleHQnXG4gICAgfVxuICAgIHNwbGljZShldmVudHMsIGNvbnRlbnRTdGFydCwgY29udGVudEVuZCAtIGNvbnRlbnRTdGFydCArIDEsIFtcbiAgICAgIFsnZW50ZXInLCBjb250ZW50LCBjb250ZXh0XSxcbiAgICAgIFsnZW50ZXInLCB0ZXh0LCBjb250ZXh0XSxcbiAgICAgIFsnZXhpdCcsIHRleHQsIGNvbnRleHRdLFxuICAgICAgWydleGl0JywgY29udGVudCwgY29udGV4dF1cbiAgICBdKVxuICB9XG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVIZWFkaW5nQXR4KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgbGV0IHNpemUgPSAwXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBhIGhlYWRpbmcgKGF0eCkuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAjIyBhYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIC8vIFRvIGRvOiBwYXJzZSBpbmRlbnQgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIGVmZmVjdHMuZW50ZXIoJ2F0eEhlYWRpbmcnKVxuICAgIHJldHVybiBiZWZvcmUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLCBhdCBgI2AuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAjIyBhYVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlKGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdhdHhIZWFkaW5nU2VxdWVuY2UnKVxuICAgIHJldHVybiBzZXF1ZW5jZU9wZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBvcGVuaW5nIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgIyMgYWFcbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHNlcXVlbmNlT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDM1ICYmIHNpemUrKyA8IDYpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHNlcXVlbmNlT3BlblxuICAgIH1cblxuICAgIC8vIEFsd2F5cyBhdCBsZWFzdCBvbmUgYCNgLlxuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnYXR4SGVhZGluZ1NlcXVlbmNlJylcbiAgICAgIHJldHVybiBhdEJyZWFrKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBzb21ldGhpbmcsIGJlZm9yZSBzb21ldGhpbmcgZWxzZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICMjIGFhXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGF0QnJlYWsoY29kZSkge1xuICAgIGlmIChjb2RlID09PSAzNSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignYXR4SGVhZGluZ1NlcXVlbmNlJylcbiAgICAgIHJldHVybiBzZXF1ZW5jZUZ1cnRoZXIoY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2F0eEhlYWRpbmcnKVxuICAgICAgLy8gVG8gZG86IGludGVycnVwdCBsaWtlIGBtYXJrZG93bi1yc2AuXG4gICAgICAvLyAvLyBGZWVsIGZyZWUgdG8gaW50ZXJydXB0LlxuICAgICAgLy8gdG9rZW5pemVyLmludGVycnVwdCA9IGZhbHNlXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgYXRCcmVhaywgJ3doaXRlc3BhY2UnKShjb2RlKVxuICAgIH1cblxuICAgIC8vIFRvIGRvOiBnZW5lcmF0ZSBgZGF0YWAgdG9rZW5zLCBhZGQgdGhlIGB0ZXh0YCB0b2tlbiBsYXRlci5cbiAgICAvLyBOZWVkcyBlZGl0IG1hcCwgc2VlOiBgbWFya2Rvd24ucnNgLlxuICAgIGVmZmVjdHMuZW50ZXIoJ2F0eEhlYWRpbmdUZXh0JylcbiAgICByZXR1cm4gZGF0YShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGZ1cnRoZXIgc2VxdWVuY2UgKGFmdGVyIHdoaXRlc3BhY2UpLlxuICAgKlxuICAgKiBDb3VsZCBiZSBub3JtYWwgXHUyMDFDdmlzaWJsZVx1MjAxRCBoYXNoZXMgaW4gdGhlIGhlYWRpbmcgb3IgYSBmaW5hbCBzZXF1ZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICMjIGFhICMjXG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzZXF1ZW5jZUZ1cnRoZXIoY29kZSkge1xuICAgIGlmIChjb2RlID09PSAzNSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gc2VxdWVuY2VGdXJ0aGVyXG4gICAgfVxuICAgIGVmZmVjdHMuZXhpdCgnYXR4SGVhZGluZ1NlcXVlbmNlJylcbiAgICByZXR1cm4gYXRCcmVhayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHRleHQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCAjIyBhYVxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGF0YShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgY29kZSA9PT0gMzUgfHwgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdhdHhIZWFkaW5nVGV4dCcpXG4gICAgICByZXR1cm4gYXRCcmVhayhjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gZGF0YVxuICB9XG59XG4iLCAiLyoqXG4gKiBMaXN0IG9mIGxvd2VyY2FzZSBIVE1MIFx1MjAxQ2Jsb2NrXHUyMDFEIHRhZyBuYW1lcy5cbiAqXG4gKiBUaGUgbGlzdCwgd2hlbiBwYXJzaW5nIEhUTUwgKGZsb3cpLCByZXN1bHRzIGluIG1vcmUgcmVsYXhlZCBydWxlcyAoY29uZGl0aW9uXG4gKiA2KS5cbiAqIEJlY2F1c2UgdGhleSBhcmUga25vd24gYmxvY2tzLCB0aGUgSFRNTC1saWtlIHN5bnRheCBkb2Vzblx1MjAxOXQgaGF2ZSB0byBiZVxuICogc3RyaWN0bHkgcGFyc2VkLlxuICogRm9yIHRhZyBuYW1lcyBub3QgaW4gdGhpcyBsaXN0LCBhIG1vcmUgc3RyaWN0IGFsZ29yaXRobSAoY29uZGl0aW9uIDcpIGlzIHVzZWRcbiAqIHRvIGRldGVjdCB3aGV0aGVyIHRoZSBIVE1MLWxpa2Ugc3ludGF4IGlzIHNlZW4gYXMgSFRNTCAoZmxvdykgb3Igbm90LlxuICpcbiAqIFRoaXMgaXMgY29waWVkIGZyb206XG4gKiA8aHR0cHM6Ly9zcGVjLmNvbW1vbm1hcmsub3JnLzAuMzAvI2h0bWwtYmxvY2tzPi5cbiAqXG4gKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogYHNlYXJjaGAgd2FzIGFkZGVkIGluIGBDb21tb25NYXJrQDAuMzFgLlxuICovXG5leHBvcnQgY29uc3QgaHRtbEJsb2NrTmFtZXMgPSBbXG4gICdhZGRyZXNzJyxcbiAgJ2FydGljbGUnLFxuICAnYXNpZGUnLFxuICAnYmFzZScsXG4gICdiYXNlZm9udCcsXG4gICdibG9ja3F1b3RlJyxcbiAgJ2JvZHknLFxuICAnY2FwdGlvbicsXG4gICdjZW50ZXInLFxuICAnY29sJyxcbiAgJ2NvbGdyb3VwJyxcbiAgJ2RkJyxcbiAgJ2RldGFpbHMnLFxuICAnZGlhbG9nJyxcbiAgJ2RpcicsXG4gICdkaXYnLFxuICAnZGwnLFxuICAnZHQnLFxuICAnZmllbGRzZXQnLFxuICAnZmlnY2FwdGlvbicsXG4gICdmaWd1cmUnLFxuICAnZm9vdGVyJyxcbiAgJ2Zvcm0nLFxuICAnZnJhbWUnLFxuICAnZnJhbWVzZXQnLFxuICAnaDEnLFxuICAnaDInLFxuICAnaDMnLFxuICAnaDQnLFxuICAnaDUnLFxuICAnaDYnLFxuICAnaGVhZCcsXG4gICdoZWFkZXInLFxuICAnaHInLFxuICAnaHRtbCcsXG4gICdpZnJhbWUnLFxuICAnbGVnZW5kJyxcbiAgJ2xpJyxcbiAgJ2xpbmsnLFxuICAnbWFpbicsXG4gICdtZW51JyxcbiAgJ21lbnVpdGVtJyxcbiAgJ25hdicsXG4gICdub2ZyYW1lcycsXG4gICdvbCcsXG4gICdvcHRncm91cCcsXG4gICdvcHRpb24nLFxuICAncCcsXG4gICdwYXJhbScsXG4gICdzZWFyY2gnLFxuICAnc2VjdGlvbicsXG4gICdzdW1tYXJ5JyxcbiAgJ3RhYmxlJyxcbiAgJ3Rib2R5JyxcbiAgJ3RkJyxcbiAgJ3Rmb290JyxcbiAgJ3RoJyxcbiAgJ3RoZWFkJyxcbiAgJ3RpdGxlJyxcbiAgJ3RyJyxcbiAgJ3RyYWNrJyxcbiAgJ3VsJ1xuXVxuXG4vKipcbiAqIExpc3Qgb2YgbG93ZXJjYXNlIEhUTUwgXHUyMDFDcmF3XHUyMDFEIHRhZyBuYW1lcy5cbiAqXG4gKiBUaGUgbGlzdCwgd2hlbiBwYXJzaW5nIEhUTUwgKGZsb3cpLCByZXN1bHRzIGluIEhUTUwgdGhhdCBjYW4gaW5jbHVkZSBsaW5lc1xuICogd2l0aG91dCBleGl0aW5nLCB1bnRpbCBhIGNsb3NpbmcgdGFnIGFsc28gaW4gdGhpcyBsaXN0IGlzIGZvdW5kIChjb25kaXRpb25cbiAqIDEpLlxuICpcbiAqIFRoaXMgbW9kdWxlIGlzIGNvcGllZCBmcm9tOlxuICogPGh0dHBzOi8vc3BlYy5jb21tb25tYXJrLm9yZy8wLjMwLyNodG1sLWJsb2Nrcz4uXG4gKlxuICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IGB0ZXh0YXJlYWAgd2FzIGFkZGVkIGluIGBDb21tb25NYXJrQDAuMzBgLlxuICovXG5leHBvcnQgY29uc3QgaHRtbFJhd05hbWVzID0gWydwcmUnLCAnc2NyaXB0JywgJ3N0eWxlJywgJ3RleHRhcmVhJ11cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtcbiAgYXNjaWlBbHBoYSxcbiAgYXNjaWlBbHBoYW51bWVyaWMsXG4gIG1hcmtkb3duTGluZUVuZGluZyxcbiAgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZSxcbiAgbWFya2Rvd25TcGFjZVxufSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge2h0bWxCbG9ja05hbWVzLCBodG1sUmF3TmFtZXN9IGZyb20gJ21pY3JvbWFyay11dGlsLWh0bWwtdGFnLW5hbWUnXG5pbXBvcnQge2JsYW5rTGluZX0gZnJvbSAnLi9ibGFuay1saW5lLmpzJ1xuXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBodG1sRmxvdyA9IHtcbiAgbmFtZTogJ2h0bWxGbG93JyxcbiAgdG9rZW5pemU6IHRva2VuaXplSHRtbEZsb3csXG4gIHJlc29sdmVUbzogcmVzb2x2ZVRvSHRtbEZsb3csXG4gIGNvbmNyZXRlOiB0cnVlXG59XG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgYmxhbmtMaW5lQmVmb3JlID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVCbGFua0xpbmVCZWZvcmUsXG4gIHBhcnRpYWw6IHRydWVcbn1cbmNvbnN0IG5vbkxhenlDb250aW51YXRpb25TdGFydCA9IHtcbiAgdG9rZW5pemU6IHRva2VuaXplTm9uTGF6eUNvbnRpbnVhdGlvblN0YXJ0LFxuICBwYXJ0aWFsOiB0cnVlXG59XG5cbi8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG5mdW5jdGlvbiByZXNvbHZlVG9IdG1sRmxvdyhldmVudHMpIHtcbiAgbGV0IGluZGV4ID0gZXZlbnRzLmxlbmd0aFxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGlmIChldmVudHNbaW5kZXhdWzBdID09PSAnZW50ZXInICYmIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2h0bWxGbG93Jykge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgaWYgKGluZGV4ID4gMSAmJiBldmVudHNbaW5kZXggLSAyXVsxXS50eXBlID09PSAnbGluZVByZWZpeCcpIHtcbiAgICAvLyBBZGQgdGhlIHByZWZpeCBzdGFydCB0byB0aGUgSFRNTCB0b2tlbi5cbiAgICBldmVudHNbaW5kZXhdWzFdLnN0YXJ0ID0gZXZlbnRzW2luZGV4IC0gMl1bMV0uc3RhcnRcbiAgICAvLyBBZGQgdGhlIHByZWZpeCBzdGFydCB0byB0aGUgSFRNTCBsaW5lIHRva2VuLlxuICAgIGV2ZW50c1tpbmRleCArIDFdWzFdLnN0YXJ0ID0gZXZlbnRzW2luZGV4IC0gMl1bMV0uc3RhcnRcbiAgICAvLyBSZW1vdmUgdGhlIGxpbmUgcHJlZml4LlxuICAgIGV2ZW50cy5zcGxpY2UoaW5kZXggLSAyLCAyKVxuICB9XG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVIdG1sRmxvdyhlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICBsZXQgbWFya2VyXG4gIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi9cbiAgbGV0IGNsb3NpbmdUYWdcbiAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gIGxldCBidWZmZXJcbiAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gIGxldCBpbmRleFxuICAvKiogQHR5cGUge0NvZGV9ICovXG4gIGxldCBtYXJrZXJCXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBIVE1MIChmbG93KS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDx4IC8+XG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgLy8gVG8gZG86IHBhcnNlIGluZGVudCBsaWtlIGBtYXJrZG93bi1yc2AuXG4gICAgcmV0dXJuIGJlZm9yZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IGA8YCwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDx4IC8+XG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWZvcmUoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2h0bWxGbG93JylcbiAgICBlZmZlY3RzLmVudGVyKCdodG1sRmxvd0RhdGEnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBvcGVuXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDxgLCBhdCB0YWcgbmFtZSBvciBvdGhlciBzdHVmZi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDx4IC8+XG4gICAqICAgICAgXlxuICAgKiA+IHwgPCFkb2N0eXBlPlxuICAgKiAgICAgIF5cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBvcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gMzMpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGRlY2xhcmF0aW9uT3BlblxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNDcpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgY2xvc2luZ1RhZyA9IHRydWVcbiAgICAgIHJldHVybiB0YWdDbG9zZVN0YXJ0XG4gICAgfVxuICAgIGlmIChjb2RlID09PSA2Mykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXIgPSAzXG4gICAgICAvLyBUbyBkbzpcbiAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgIC8vIFRvIGRvOiB1c2UgYG1hcmtkb3duLXJzYCBzdHlsZSBpbnRlcnJ1cHQuXG4gICAgICAvLyBXaGlsZSB3ZVx1MjAxOXJlIGluIGFuIGluc3RydWN0aW9uIGluc3RlYWQgb2YgYSBkZWNsYXJhdGlvbiwgd2VcdTIwMTlyZSBvbiBhIGA/YFxuICAgICAgLy8gcmlnaHQgbm93LCBzbyB3ZSBkbyBuZWVkIHRvIHNlYXJjaCBmb3IgYD5gLCBzaW1pbGFyIHRvIGRlY2xhcmF0aW9ucy5cbiAgICAgIHJldHVybiBzZWxmLmludGVycnVwdCA/IG9rIDogY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG5cbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbm90IG51bGwuXG4gICAgICBidWZmZXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gdGFnTmFtZVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwhYCwgYXQgZGVjbGFyYXRpb24sIGNvbW1lbnQsIG9yIENEQVRBLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPCFkb2N0eXBlPlxuICAgKiAgICAgICBeXG4gICAqID4gfCA8IS0teHh4LS0+XG4gICAqICAgICAgIF5cbiAgICogPiB8IDwhW0NEQVRBWz4mPF1dPlxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBkZWNsYXJhdGlvbk9wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0NSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXIgPSAyXG4gICAgICByZXR1cm4gY29tbWVudE9wZW5JbnNpZGVcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDkxKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlciA9IDVcbiAgICAgIGluZGV4ID0gMFxuICAgICAgcmV0dXJuIGNkYXRhT3Blbkluc2lkZVxuICAgIH1cblxuICAgIC8vIEFTQ0lJIGFscGhhYmV0aWNhbC5cbiAgICBpZiAoYXNjaWlBbHBoYShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXIgPSA0XG4gICAgICAvLyAvLyBEbyBub3QgZm9ybSBjb250YWluZXJzLlxuICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ID8gb2sgOiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwhLWAsIGluc2lkZSBhIGNvbW1lbnQsIGF0IGFub3RoZXIgYC1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPCEtLXh4eC0tPlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tbWVudE9wZW5JbnNpZGUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0NSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAvLyAvLyBEbyBub3QgZm9ybSBjb250YWluZXJzLlxuICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ID8gb2sgOiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwhW2AsIGluc2lkZSBDREFUQSwgZXhwZWN0aW5nIGBDREFUQVtgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPCFbQ0RBVEFbPiY8XV0+XG4gICAqICAgICAgICBeXl5eXl5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNkYXRhT3Blbkluc2lkZShjb2RlKSB7XG4gICAgY29uc3QgdmFsdWUgPSAnQ0RBVEFbJ1xuICAgIGlmIChjb2RlID09PSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KyspKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGlmIChpbmRleCA9PT0gdmFsdWUubGVuZ3RoKSB7XG4gICAgICAgIC8vIC8vIERvIG5vdCBmb3JtIGNvbnRhaW5lcnMuXG4gICAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ID8gb2sgOiBjb250aW51YXRpb25cbiAgICAgIH1cbiAgICAgIHJldHVybiBjZGF0YU9wZW5JbnNpZGVcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8L2AsIGluIGNsb3NpbmcgdGFnLCBhdCB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwveD5cbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnQ2xvc2VTdGFydChjb2RlKSB7XG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbm90IG51bGwuXG4gICAgICBidWZmZXIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gdGFnTmFtZVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YWI+XG4gICAqICAgICAgXl5cbiAgICogPiB8IDwvYWI+XG4gICAqICAgICAgIF5eXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdOYW1lKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBudWxsIHx8XG4gICAgICBjb2RlID09PSA0NyB8fFxuICAgICAgY29kZSA9PT0gNjIgfHxcbiAgICAgIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICApIHtcbiAgICAgIGNvbnN0IHNsYXNoID0gY29kZSA9PT0gNDdcbiAgICAgIGNvbnN0IG5hbWUgPSBidWZmZXIudG9Mb3dlckNhc2UoKVxuICAgICAgaWYgKCFzbGFzaCAmJiAhY2xvc2luZ1RhZyAmJiBodG1sUmF3TmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgbWFya2VyID0gMVxuICAgICAgICAvLyAvLyBEbyBub3QgZm9ybSBjb250YWluZXJzLlxuICAgICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICAgIHJldHVybiBzZWxmLmludGVycnVwdCA/IG9rKGNvZGUpIDogY29udGludWF0aW9uKGNvZGUpXG4gICAgICB9XG4gICAgICBpZiAoaHRtbEJsb2NrTmFtZXMuaW5jbHVkZXMoYnVmZmVyLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgIG1hcmtlciA9IDZcbiAgICAgICAgaWYgKHNsYXNoKSB7XG4gICAgICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAgICAgcmV0dXJuIGJhc2ljU2VsZkNsb3NpbmdcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIC8vIERvIG5vdCBmb3JtIGNvbnRhaW5lcnMuXG4gICAgICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IHRydWVcbiAgICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ID8gb2soY29kZSkgOiBjb250aW51YXRpb24oY29kZSlcbiAgICAgIH1cbiAgICAgIG1hcmtlciA9IDdcbiAgICAgIC8vIERvIG5vdCBzdXBwb3J0IGNvbXBsZXRlIEhUTUwgd2hlbiBpbnRlcnJ1cHRpbmcuXG4gICAgICByZXR1cm4gc2VsZi5pbnRlcnJ1cHQgJiYgIXNlbGYucGFyc2VyLmxhenlbc2VsZi5ub3coKS5saW5lXVxuICAgICAgICA/IG5vayhjb2RlKVxuICAgICAgICA6IGNsb3NpbmdUYWdcbiAgICAgICAgPyBjb21wbGV0ZUNsb3NpbmdUYWdBZnRlcihjb2RlKVxuICAgICAgICA6IGNvbXBsZXRlQXR0cmlidXRlTmFtZUJlZm9yZShjb2RlKVxuICAgIH1cblxuICAgIC8vIEFTQ0lJIGFscGhhbnVtZXJpY2FsIGFuZCBgLWAuXG4gICAgaWYgKGNvZGUgPT09IDQ1IHx8IGFzY2lpQWxwaGFudW1lcmljKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGJ1ZmZlciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gdGFnTmFtZVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgY2xvc2luZyBzbGFzaCBvZiBhIGJhc2ljIHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGRpdi8+XG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGJhc2ljU2VsZkNsb3NpbmcoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2Mikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAvLyAvLyBEbyBub3QgZm9ybSBjb250YWluZXJzLlxuICAgICAgLy8gdG9rZW5pemVyLmNvbmNyZXRlID0gdHJ1ZVxuICAgICAgcmV0dXJuIHNlbGYuaW50ZXJydXB0ID8gb2sgOiBjb250aW51YXRpb25cbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGNsb3Npbmcgc2xhc2ggb2YgYSBjb21wbGV0ZSB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDx4Lz5cbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQ2xvc2luZ1RhZ0FmdGVyKGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVDbG9zaW5nVGFnQWZ0ZXJcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBsZXRlRW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgYW4gYXR0cmlidXRlIG5hbWUuXG4gICAqXG4gICAqIEF0IGZpcnN0LCB0aGlzIHN0YXRlIGlzIHVzZWQgYWZ0ZXIgYSBjb21wbGV0ZSB0YWcgbmFtZSwgYWZ0ZXIgd2hpdGVzcGFjZSxcbiAgICogd2hlcmUgaXQgZXhwZWN0cyBvcHRpb25hbCBhdHRyaWJ1dGVzIG9yIHRoZSBlbmQgb2YgdGhlIHRhZy5cbiAgICogSXQgaXMgYWxzbyByZXVzZWQgYWZ0ZXIgYXR0cmlidXRlcywgd2hlbiBleHBlY3RpbmcgbW9yZSBvcHRpb25hbFxuICAgKiBhdHRyaWJ1dGVzLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgLz5cbiAgICogICAgICAgIF5cbiAgICogPiB8IDxhIDpiPlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgPGEgX2I+XG4gICAqICAgICAgICBeXG4gICAqID4gfCA8YSBiPlxuICAgKiAgICAgICAgXlxuICAgKiA+IHwgPGEgPlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVOYW1lQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDcpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlRW5kXG4gICAgfVxuXG4gICAgLy8gQVNDSUkgYWxwaGFudW1lcmljYWwgYW5kIGA6YCBhbmQgYF9gLlxuICAgIGlmIChjb2RlID09PSA1OCB8fCBjb2RlID09PSA5NSB8fCBhc2NpaUFscGhhKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUJlZm9yZVxuICAgIH1cbiAgICByZXR1cm4gY29tcGxldGVFbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhdHRyaWJ1dGUgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIDpiPlxuICAgKiAgICAgICAgIF5cbiAgICogPiB8IDxhIF9iPlxuICAgKiAgICAgICAgIF5cbiAgICogPiB8IDxhIGI+XG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVBdHRyaWJ1dGVOYW1lKGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWNhbCBhbmQgYC1gLCBgLmAsIGA6YCwgYW5kIGBfYC5cbiAgICBpZiAoXG4gICAgICBjb2RlID09PSA0NSB8fFxuICAgICAgY29kZSA9PT0gNDYgfHxcbiAgICAgIGNvZGUgPT09IDU4IHx8XG4gICAgICBjb2RlID09PSA5NSB8fFxuICAgICAgYXNjaWlBbHBoYW51bWVyaWMoY29kZSlcbiAgICApIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZVxuICAgIH1cbiAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVOYW1lQWZ0ZXIoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBhdHRyaWJ1dGUgbmFtZSwgYXQgYW4gb3B0aW9uYWwgaW5pdGlhbGl6ZXIsIHRoZSBlbmQgb2YgdGhlIHRhZywgb3JcbiAgICogd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDxhIGI+XG4gICAqICAgICAgICAgXlxuICAgKiA+IHwgPGEgYj1jPlxuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQXR0cmlidXRlTmFtZUFmdGVyKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjEpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVCZWZvcmVcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlTmFtZUFmdGVyXG4gICAgfVxuICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVCZWZvcmUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWZvcmUgdW5xdW90ZWQsIGRvdWJsZSBxdW90ZWQsIG9yIHNpbmdsZSBxdW90ZWQgYXR0cmlidXRlIHZhbHVlLCBhbGxvd2luZ1xuICAgKiB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgYj1jPlxuICAgKiAgICAgICAgICBeXG4gICAqID4gfCA8YSBiPVwiY1wiPlxuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlQmVmb3JlKGNvZGUpIHtcbiAgICBpZiAoXG4gICAgICBjb2RlID09PSBudWxsIHx8XG4gICAgICBjb2RlID09PSA2MCB8fFxuICAgICAgY29kZSA9PT0gNjEgfHxcbiAgICAgIGNvZGUgPT09IDYyIHx8XG4gICAgICBjb2RlID09PSA5NlxuICAgICkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gMzQgfHwgY29kZSA9PT0gMzkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgbWFya2VyQiA9IGNvZGVcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlUXVvdGVkXG4gICAgfVxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlQmVmb3JlXG4gICAgfVxuICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBkb3VibGUgb3Igc2luZ2xlIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSBiPVwiY1wiPlxuICAgKiAgICAgICAgICAgXlxuICAgKiA+IHwgPGEgYj0nYyc+XG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUF0dHJpYnV0ZVZhbHVlUXVvdGVkKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyQikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXJCID0gbnVsbFxuICAgICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVRdW90ZWRBZnRlclxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVRdW90ZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSBiPWM+XG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVVbnF1b3RlZChjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gbnVsbCB8fFxuICAgICAgY29kZSA9PT0gMzQgfHxcbiAgICAgIGNvZGUgPT09IDM5IHx8XG4gICAgICBjb2RlID09PSA0NyB8fFxuICAgICAgY29kZSA9PT0gNjAgfHxcbiAgICAgIGNvZGUgPT09IDYxIHx8XG4gICAgICBjb2RlID09PSA2MiB8fFxuICAgICAgY29kZSA9PT0gOTYgfHxcbiAgICAgIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICApIHtcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVBZnRlcihjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29tcGxldGVBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZG91YmxlIG9yIHNpbmdsZSBxdW90ZWQgYXR0cmlidXRlIHZhbHVlLCBiZWZvcmUgd2hpdGVzcGFjZSBvciB0aGVcbiAgICogZW5kIG9mIHRoZSB0YWcuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8YSBiPVwiY1wiPlxuICAgKiAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBsZXRlQXR0cmlidXRlVmFsdWVRdW90ZWRBZnRlcihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ3IHx8IGNvZGUgPT09IDYyIHx8IG1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIHJldHVybiBjb21wbGV0ZUF0dHJpYnV0ZU5hbWVCZWZvcmUoY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyBvZiBhIGNvbXBsZXRlIHRhZyB3aGVyZSBvbmx5IGFuIGA+YCBpcyBhbGxvd2VkLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPGEgYj1cImNcIj5cbiAgICogICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGxldGVFbmQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2Mikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29tcGxldGVBZnRlclxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYD5gIGluIGEgY29tcGxldGUgdGFnLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHg+XG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21wbGV0ZUFmdGVyKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIC8vIC8vIERvIG5vdCBmb3JtIGNvbnRhaW5lcnMuXG4gICAgICAvLyB0b2tlbml6ZXIuY29uY3JldGUgPSB0cnVlXG4gICAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21wbGV0ZUFmdGVyXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb250aW51YXRpb24gb2YgYW55IEhUTUwga2luZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDUgJiYgbWFya2VyID09PSAyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25Db21tZW50SW5zaWRlXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA2MCAmJiBtYXJrZXIgPT09IDEpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvblJhd1RhZ09wZW5cbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDYyICYmIG1hcmtlciA9PT0gNCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ2xvc2VcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDYzICYmIG1hcmtlciA9PT0gMykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDkzICYmIG1hcmtlciA9PT0gNSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uQ2RhdGFJbnNpZGVcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSAmJiAobWFya2VyID09PSA2IHx8IG1hcmtlciA9PT0gNykpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnaHRtbEZsb3dEYXRhJylcbiAgICAgIHJldHVybiBlZmZlY3RzLmNoZWNrKFxuICAgICAgICBibGFua0xpbmVCZWZvcmUsXG4gICAgICAgIGNvbnRpbnVhdGlvbkFmdGVyLFxuICAgICAgICBjb250aW51YXRpb25TdGFydFxuICAgICAgKShjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gbnVsbCB8fCBtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgnaHRtbEZsb3dEYXRhJylcbiAgICAgIHJldHVybiBjb250aW51YXRpb25TdGFydChjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gY29udGludWF0aW9uXG4gIH1cblxuICAvKipcbiAgICogSW4gY29udGludWF0aW9uLCBhdCBlb2wuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8eD5cbiAgICogICAgICAgIF5cbiAgICogICB8IGFzZFxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uU3RhcnQoY29kZSkge1xuICAgIHJldHVybiBlZmZlY3RzLmNoZWNrKFxuICAgICAgbm9uTGF6eUNvbnRpbnVhdGlvblN0YXJ0LFxuICAgICAgY29udGludWF0aW9uU3RhcnROb25MYXp5LFxuICAgICAgY29udGludWF0aW9uQWZ0ZXJcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY29udGludWF0aW9uLCBhdCBlb2wsIGJlZm9yZSBub24tbGF6eSBjb250ZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgPHg+XG4gICAqICAgICAgICBeXG4gICAqICAgfCBhc2RcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvblN0YXJ0Tm9uTGF6eShjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignbGluZUVuZGluZycpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICByZXR1cm4gY29udGludWF0aW9uQmVmb3JlXG4gIH1cblxuICAvKipcbiAgICogSW4gY29udGludWF0aW9uLCBiZWZvcmUgbm9uLWxhenkgY29udGVudC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IDx4PlxuICAgKiA+IHwgYXNkXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25CZWZvcmUoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvblN0YXJ0KGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuZW50ZXIoJ2h0bWxGbG93RGF0YScpXG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNvbW1lbnQgY29udGludWF0aW9uLCBhZnRlciBvbmUgYC1gLCBleHBlY3RpbmcgYW5vdGhlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IDwhLS14eHgtLT5cbiAgICogICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uQ29tbWVudEluc2lkZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ1KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cbiAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmF3IGNvbnRpbnVhdGlvbiwgYWZ0ZXIgYDxgLCBhdCBgL2AuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8c2NyaXB0PmNvbnNvbGUubG9nKDEpPC9zY3JpcHQ+XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvblJhd1RhZ09wZW4oY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0Nykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBidWZmZXIgPSAnJ1xuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvblJhd0VuZFRhZ1xuICAgIH1cbiAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmF3IGNvbnRpbnVhdGlvbiwgYWZ0ZXIgYDwvYCwgaW4gYSByYXcgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8c2NyaXB0PmNvbnNvbGUubG9nKDEpPC9zY3JpcHQ+XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvblJhd0VuZFRhZyhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDYyKSB7XG4gICAgICBjb25zdCBuYW1lID0gYnVmZmVyLnRvTG93ZXJDYXNlKClcbiAgICAgIGlmIChodG1sUmF3TmFtZXMuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAgIHJldHVybiBjb250aW51YXRpb25DbG9zZVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICAgIH1cbiAgICBpZiAoYXNjaWlBbHBoYShjb2RlKSAmJiBidWZmZXIubGVuZ3RoIDwgOCkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBub3QgbnVsbC5cbiAgICAgIGJ1ZmZlciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uUmF3RW5kVGFnXG4gICAgfVxuICAgIHJldHVybiBjb250aW51YXRpb24oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjZGF0YSBjb250aW51YXRpb24sIGFmdGVyIGBdYCwgZXhwZWN0aW5nIGBdPmAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IVtDREFUQVs+JjxdXT5cbiAgICogICAgICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb250aW51YXRpb25DZGF0YUluc2lkZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDkzKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb250aW51YXRpb25EZWNsYXJhdGlvbkluc2lkZVxuICAgIH1cbiAgICByZXR1cm4gY29udGludWF0aW9uKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gZGVjbGFyYXRpb24gb3IgaW5zdHJ1Y3Rpb24gY29udGludWF0aW9uLCBhdCBgPmAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IS0tPlxuICAgKiAgICAgICAgIF5cbiAgICogPiB8IDw/PlxuICAgKiAgICAgICBeXG4gICAqID4gfCA8IXE+XG4gICAqICAgICAgICBeXG4gICAqID4gfCA8IS0tYWItLT5cbiAgICogICAgICAgICAgICAgXlxuICAgKiA+IHwgPCFbQ0RBVEFbPiY8XV0+XG4gICAqICAgICAgICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbnRpbnVhdGlvbkRlY2xhcmF0aW9uSW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbkNsb3NlXG4gICAgfVxuXG4gICAgLy8gTW9yZSBkYXNoZXMuXG4gICAgaWYgKGNvZGUgPT09IDQ1ICYmIG1hcmtlciA9PT0gMikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gY29udGludWF0aW9uRGVjbGFyYXRpb25JbnNpZGVcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRpbnVhdGlvbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNsb3NlZCBjb250aW51YXRpb246IGV2ZXJ5dGhpbmcgd2UgZ2V0IHVudGlsIHRoZSBlb2wvZW9mIGlzIHBhcnQgb2YgaXQuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IWRvY3R5cGU+XG4gICAqICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uQ2xvc2UoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5leGl0KCdodG1sRmxvd0RhdGEnKVxuICAgICAgcmV0dXJuIGNvbnRpbnVhdGlvbkFmdGVyKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjb250aW51YXRpb25DbG9zZVxuICB9XG5cbiAgLyoqXG4gICAqIERvbmUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8IWRvY3R5cGU+XG4gICAqICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29udGludWF0aW9uQWZ0ZXIoY29kZSkge1xuICAgIGVmZmVjdHMuZXhpdCgnaHRtbEZsb3cnKVxuICAgIC8vIC8vIEZlZWwgZnJlZSB0byBpbnRlcnJ1cHQuXG4gICAgLy8gdG9rZW5pemVyLmludGVycnVwdCA9IGZhbHNlXG4gICAgLy8gLy8gTm8gbG9uZ2VyIGNvbmNyZXRlLlxuICAgIC8vIHRva2VuaXplci5jb25jcmV0ZSA9IGZhbHNlXG4gICAgcmV0dXJuIG9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVOb25MYXp5Q29udGludWF0aW9uU3RhcnQoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogQXQgZW9sLCBiZWZvcmUgY29udGludWF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgKiBgYGBqc1xuICAgKiAgICAgICAgICAgIF5cbiAgICogICB8IGJcbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdsaW5lRW5kaW5nJylcbiAgICAgIHJldHVybiBhZnRlclxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQSBjb250aW51YXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCAqIGBgYGpzXG4gICAqID4gfCBiXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIHNlbGYucGFyc2VyLmxhenlbc2VsZi5ub3coKS5saW5lXSA/IG5vayhjb2RlKSA6IG9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVCbGFua0xpbmVCZWZvcmUoZWZmZWN0cywgb2ssIG5vaykge1xuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogQmVmb3JlIGVvbCwgZXhwZWN0aW5nIGJsYW5rIGxpbmUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCA8ZGl2PlxuICAgKiAgICAgICAgICBeXG4gICAqICAgfFxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2xpbmVFbmRpbmcnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZycpXG4gICAgcmV0dXJuIGVmZmVjdHMuYXR0ZW1wdChibGFua0xpbmUsIG9rLCBub2spXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge1xuICBhc2NpaUFscGhhLFxuICBhc2NpaUFscGhhbnVtZXJpYyxcbiAgbWFya2Rvd25MaW5lRW5kaW5nLFxuICBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlLFxuICBtYXJrZG93blNwYWNlXG59IGZyb20gJ21pY3JvbWFyay11dGlsLWNoYXJhY3Rlcidcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGh0bWxUZXh0ID0ge1xuICBuYW1lOiAnaHRtbFRleHQnLFxuICB0b2tlbml6ZTogdG9rZW5pemVIdG1sVGV4dFxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUh0bWxUZXh0KGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgLyoqIEB0eXBlIHtOb25OdWxsYWJsZTxDb2RlPiB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IG1hcmtlclxuICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgbGV0IGluZGV4XG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGxldCByZXR1cm5TdGF0ZVxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgSFRNTCAodGV4dCkuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiPiBjXG4gICAqICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdodG1sVGV4dCcpXG4gICAgZWZmZWN0cy5lbnRlcignaHRtbFRleHREYXRhJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gb3BlblxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8YCwgYXQgdGFnIG5hbWUgb3Igb3RoZXIgc3R1ZmYuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiPiBjXG4gICAqICAgICAgICBeXG4gICAqID4gfCBhIDwhZG9jdHlwZT4gY1xuICAgKiAgICAgICAgXlxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBvcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gMzMpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGRlY2xhcmF0aW9uT3BlblxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNDcpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ0Nsb3NlU3RhcnRcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDYzKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBpbnN0cnVjdGlvblxuICAgIH1cblxuICAgIC8vIEFTQ0lJIGFscGhhYmV0aWNhbC5cbiAgICBpZiAoYXNjaWlBbHBoYShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnT3BlblxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwhYCwgYXQgZGVjbGFyYXRpb24sIGNvbW1lbnQsIG9yIENEQVRBLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IWRvY3R5cGU+IGNcbiAgICogICAgICAgICBeXG4gICAqID4gfCBhIDwhLS1iLS0+IGNcbiAgICogICAgICAgICBeXG4gICAqID4gfCBhIDwhW0NEQVRBWz4mPF1dPiBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGVjbGFyYXRpb25PcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDUpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbW1lbnRPcGVuSW5zaWRlXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA5MSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBpbmRleCA9IDBcbiAgICAgIHJldHVybiBjZGF0YU9wZW5JbnNpZGVcbiAgICB9XG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGRlY2xhcmF0aW9uXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhIGNvbW1lbnQsIGFmdGVyIGA8IS1gLCBhdCBhbm90aGVyIGAtYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCEtLWItLT4gY1xuICAgKiAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50T3Blbkluc2lkZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ1KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21tZW50RW5kXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBjb21tZW50LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjb21tZW50KGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNDUpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNvbW1lbnRDbG9zZVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IGNvbW1lbnRcbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBjb21tZW50XG4gIH1cblxuICAvKipcbiAgICogSW4gY29tbWVudCwgYWZ0ZXIgYC1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IS0tYi0tPiBjXG4gICAqICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNvbW1lbnRDbG9zZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQ1KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBjb21tZW50RW5kXG4gICAgfVxuICAgIHJldHVybiBjb21tZW50KGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gY29tbWVudCwgYWZ0ZXIgYC0tYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPCEtLWItLT4gY1xuICAgKiAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY29tbWVudEVuZChjb2RlKSB7XG4gICAgcmV0dXJuIGNvZGUgPT09IDYyXG4gICAgICA/IGVuZChjb2RlKVxuICAgICAgOiBjb2RlID09PSA0NVxuICAgICAgPyBjb21tZW50Q2xvc2UoY29kZSlcbiAgICAgIDogY29tbWVudChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8IVtgLCBpbiBDREFUQSwgZXhwZWN0aW5nIGBDREFUQVtgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IVtDREFUQVs+JjxdXT4gYlxuICAgKiAgICAgICAgICBeXl5eXl5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNkYXRhT3Blbkluc2lkZShjb2RlKSB7XG4gICAgY29uc3QgdmFsdWUgPSAnQ0RBVEFbJ1xuICAgIGlmIChjb2RlID09PSB2YWx1ZS5jaGFyQ29kZUF0KGluZGV4KyspKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBpbmRleCA9PT0gdmFsdWUubGVuZ3RoID8gY2RhdGEgOiBjZGF0YU9wZW5JbnNpZGVcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIENEQVRBLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IVtDREFUQVs+JjxdXT4gYlxuICAgKiAgICAgICAgICAgICAgICBeXl5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGNkYXRhKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gOTMpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNkYXRhQ2xvc2VcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSBjZGF0YVxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIGNkYXRhXG4gIH1cblxuICAvKipcbiAgICogSW4gQ0RBVEEsIGFmdGVyIGBdYCwgYXQgYW5vdGhlciBgXWAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwhW0NEQVRBWz4mPF1dPiBiXG4gICAqICAgICAgICAgICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBjZGF0YUNsb3NlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gOTMpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNkYXRhRW5kXG4gICAgfVxuICAgIHJldHVybiBjZGF0YShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIENEQVRBLCBhZnRlciBgXV1gLCBhdCBgPmAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDwhW0NEQVRBWz4mPF1dPiBiXG4gICAqICAgICAgICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gY2RhdGFFbmQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA2Mikge1xuICAgICAgcmV0dXJuIGVuZChjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gOTMpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGNkYXRhRW5kXG4gICAgfVxuICAgIHJldHVybiBjZGF0YShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGRlY2xhcmF0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IWI+IGNcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZGVjbGFyYXRpb24oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsIHx8IGNvZGUgPT09IDYyKSB7XG4gICAgICByZXR1cm4gZW5kKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gZGVjbGFyYXRpb25cbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiBkZWNsYXJhdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIEluIGluc3RydWN0aW9uLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8P2I/PiBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5zdHJ1Y3Rpb24oY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuICAgIGlmIChjb2RlID09PSA2Mykge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gaW5zdHJ1Y3Rpb25DbG9zZVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IGluc3RydWN0aW9uXG4gICAgICByZXR1cm4gbGluZUVuZGluZ0JlZm9yZShjb2RlKVxuICAgIH1cbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICByZXR1cm4gaW5zdHJ1Y3Rpb25cbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBpbnN0cnVjdGlvbiwgYWZ0ZXIgYD9gLCBhdCBgPmAuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDw/Yj8+IGNcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGluc3RydWN0aW9uQ2xvc2UoY29kZSkge1xuICAgIHJldHVybiBjb2RlID09PSA2MiA/IGVuZChjb2RlKSA6IGluc3RydWN0aW9uKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYDwvYCwgaW4gY2xvc2luZyB0YWcsIGF0IHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8L2I+IGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdDbG9zZVN0YXJ0KGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYWJldGljYWwuXG4gICAgaWYgKGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ0Nsb3NlXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgPC94YCwgaW4gYSB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPC9iPiBjXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ0Nsb3NlKGNvZGUpIHtcbiAgICAvLyBBU0NJSSBhbHBoYW51bWVyaWNhbCBhbmQgYC1gLlxuICAgIGlmIChjb2RlID09PSA0NSB8fCBhc2NpaUFscGhhbnVtZXJpYyhjb2RlKSkge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICByZXR1cm4gdGFnQ2xvc2VcbiAgICB9XG4gICAgcmV0dXJuIHRhZ0Nsb3NlQmV0d2Vlbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNsb3NpbmcgdGFnLCBhZnRlciB0YWcgbmFtZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPC9iPiBjXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ0Nsb3NlQmV0d2Vlbihjb2RlKSB7XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdDbG9zZUJldHdlZW5cbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdDbG9zZUJldHdlZW5cbiAgICB9XG4gICAgcmV0dXJuIGVuZChjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGA8eGAsIGluIG9wZW5pbmcgdGFnIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiPiBjXG4gICAqICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3Blbihjb2RlKSB7XG4gICAgLy8gQVNDSUkgYWxwaGFudW1lcmljYWwgYW5kIGAtYC5cbiAgICBpZiAoY29kZSA9PT0gNDUgfHwgYXNjaWlBbHBoYW51bWVyaWMoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5cbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDQ3IHx8IGNvZGUgPT09IDYyIHx8IG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSkpIHtcbiAgICAgIHJldHVybiB0YWdPcGVuQmV0d2Vlbihjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gb3BlbmluZyB0YWcsIGFmdGVyIHRhZyBuYW1lLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8Yj4gY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW5CZXR3ZWVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNDcpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGVuZFxuICAgIH1cblxuICAgIC8vIEFTQ0lJIGFscGhhYmV0aWNhbCBhbmQgYDpgIGFuZCBgX2AuXG4gICAgaWYgKGNvZGUgPT09IDU4IHx8IGNvZGUgPT09IDk1IHx8IGFzY2lpQWxwaGEoY29kZSkpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVOYW1lXG4gICAgfVxuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHJldHVyblN0YXRlID0gdGFnT3BlbkJldHdlZW5cbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuQmV0d2VlblxuICAgIH1cbiAgICByZXR1cm4gZW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gYXR0cmlidXRlIG5hbWUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM+IGRcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkF0dHJpYnV0ZU5hbWUoY29kZSkge1xuICAgIC8vIEFTQ0lJIGFscGhhYmV0aWNhbCBhbmQgYC1gLCBgLmAsIGA6YCwgYW5kIGBfYC5cbiAgICBpZiAoXG4gICAgICBjb2RlID09PSA0NSB8fFxuICAgICAgY29kZSA9PT0gNDYgfHxcbiAgICAgIGNvZGUgPT09IDU4IHx8XG4gICAgICBjb2RlID09PSA5NSB8fFxuICAgICAgYXNjaWlBbHBoYW51bWVyaWMoY29kZSlcbiAgICApIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVOYW1lXG4gICAgfVxuICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlTmFtZUFmdGVyKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgYXR0cmlidXRlIG5hbWUsIGJlZm9yZSBpbml0aWFsaXplciwgdGhlIGVuZCBvZiB0aGUgdGFnLCBvclxuICAgKiB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8YiBjPiBkXG4gICAqICAgICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiB0YWdPcGVuQXR0cmlidXRlTmFtZUFmdGVyKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjEpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZUJlZm9yZVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IHRhZ09wZW5BdHRyaWJ1dGVOYW1lQWZ0ZXJcbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlTmFtZUFmdGVyXG4gICAgfVxuICAgIHJldHVybiB0YWdPcGVuQmV0d2Vlbihjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEJlZm9yZSB1bnF1b3RlZCwgZG91YmxlIHF1b3RlZCwgb3Igc2luZ2xlIHF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUsIGFsbG93aW5nXG4gICAqIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBhIDxiIGM9ZD4gZVxuICAgKiAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZUJlZm9yZShjb2RlKSB7XG4gICAgaWYgKFxuICAgICAgY29kZSA9PT0gbnVsbCB8fFxuICAgICAgY29kZSA9PT0gNjAgfHxcbiAgICAgIGNvZGUgPT09IDYxIHx8XG4gICAgICBjb2RlID09PSA2MiB8fFxuICAgICAgY29kZSA9PT0gOTZcbiAgICApIHtcbiAgICAgIHJldHVybiBub2soY29kZSlcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDM0IHx8IGNvZGUgPT09IDM5KSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIG1hcmtlciA9IGNvZGVcbiAgICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWRcbiAgICB9XG4gICAgaWYgKG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkge1xuICAgICAgcmV0dXJuU3RhdGUgPSB0YWdPcGVuQXR0cmlidXRlVmFsdWVCZWZvcmVcbiAgICAgIHJldHVybiBsaW5lRW5kaW5nQmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIGlmIChtYXJrZG93blNwYWNlKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlVmFsdWVCZWZvcmVcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVVucXVvdGVkXG4gIH1cblxuICAvKipcbiAgICogSW4gZG91YmxlIG9yIHNpbmdsZSBxdW90ZWQgYXR0cmlidXRlIHZhbHVlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8YiBjPVwiZFwiPiBlXG4gICAqICAgICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVF1b3RlZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBtYXJrZXIgPSB1bmRlZmluZWRcbiAgICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlVmFsdWVRdW90ZWRBZnRlclxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBpZiAobWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICByZXR1cm5TdGF0ZSA9IHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVF1b3RlZFxuICAgICAgcmV0dXJuIGxpbmVFbmRpbmdCZWZvcmUoY29kZSlcbiAgICB9XG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgcmV0dXJuIHRhZ09wZW5BdHRyaWJ1dGVWYWx1ZVF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEluIHVucXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgPGIgYz1kPiBlXG4gICAqICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY29kZSkge1xuICAgIGlmIChcbiAgICAgIGNvZGUgPT09IG51bGwgfHxcbiAgICAgIGNvZGUgPT09IDM0IHx8XG4gICAgICBjb2RlID09PSAzOSB8fFxuICAgICAgY29kZSA9PT0gNjAgfHxcbiAgICAgIGNvZGUgPT09IDYxIHx8XG4gICAgICBjb2RlID09PSA5NlxuICAgICkge1xuICAgICAgcmV0dXJuIG5vayhjb2RlKVxuICAgIH1cbiAgICBpZiAoY29kZSA9PT0gNDcgfHwgY29kZSA9PT0gNjIgfHwgbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKSkge1xuICAgICAgcmV0dXJuIHRhZ09wZW5CZXR3ZWVuKGNvZGUpXG4gICAgfVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIHJldHVybiB0YWdPcGVuQXR0cmlidXRlVmFsdWVVbnF1b3RlZFxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGRvdWJsZSBvciBzaW5nbGUgcXVvdGVkIGF0dHJpYnV0ZSB2YWx1ZSwgYmVmb3JlIHdoaXRlc3BhY2Ugb3IgdGhlIGVuZFxuICAgKiBvZiB0aGUgdGFnLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8YiBjPVwiZFwiPiBlXG4gICAqICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gdGFnT3BlbkF0dHJpYnV0ZVZhbHVlUXVvdGVkQWZ0ZXIoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0NyB8fCBjb2RlID09PSA2MiB8fCBtYXJrZG93bkxpbmVFbmRpbmdPclNwYWNlKGNvZGUpKSB7XG4gICAgICByZXR1cm4gdGFnT3BlbkJldHdlZW4oY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyBvZiBhIHRhZyB3aGVyZSBvbmx5IGFuIGA+YCBpcyBhbGxvd2VkLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8YiBjPVwiZFwiPiBlXG4gICAqICAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gZW5kKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gNjIpIHtcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdodG1sVGV4dERhdGEnKVxuICAgICAgZWZmZWN0cy5leGl0KCdodG1sVGV4dCcpXG4gICAgICByZXR1cm4gb2tcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEF0IGVvbC5cbiAgICpcbiAgICogPiBcdUQ4M0RcdURDNDkgKipOb3RlKio6IHdlIGNhblx1MjAxOXQgaGF2ZSBibGFuayBsaW5lcyBpbiB0ZXh0LCBzbyBubyBuZWVkIHRvIHdvcnJ5IGFib3V0XG4gICAqID4gZW1wdHkgdG9rZW5zLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSA8IS0tYVxuICAgKiAgICAgICAgICAgIF5cbiAgICogICB8IGItLT5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGxpbmVFbmRpbmdCZWZvcmUoY29kZSkge1xuICAgIGVmZmVjdHMuZXhpdCgnaHRtbFRleHREYXRhJylcbiAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgIHJldHVybiBsaW5lRW5kaW5nQWZ0ZXJcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBlb2wsIGF0IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiB3ZSBjYW5cdTIwMTl0IGhhdmUgYmxhbmsgbGluZXMgaW4gdGV4dCwgc28gbm8gbmVlZCB0byB3b3JyeSBhYm91dFxuICAgKiA+IGVtcHR5IHRva2Vucy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IGEgPCEtLWFcbiAgICogPiB8IGItLT5cbiAgICogICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGxpbmVFbmRpbmdBZnRlcihjb2RlKSB7XG4gICAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICAgIHJldHVybiBtYXJrZG93blNwYWNlKGNvZGUpXG4gICAgICA/IGZhY3RvcnlTcGFjZShcbiAgICAgICAgICBlZmZlY3RzLFxuICAgICAgICAgIGxpbmVFbmRpbmdBZnRlclByZWZpeCxcbiAgICAgICAgICAnbGluZVByZWZpeCcsXG4gICAgICAgICAgc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoJ2NvZGVJbmRlbnRlZCcpXG4gICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiA0XG4gICAgICAgICkoY29kZSlcbiAgICAgIDogbGluZUVuZGluZ0FmdGVyUHJlZml4KGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQWZ0ZXIgZW9sLCBhZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogd2UgY2FuXHUyMDE5dCBoYXZlIGJsYW5rIGxpbmVzIGluIHRleHQsIHNvIG5vIG5lZWQgdG8gd29ycnkgYWJvdXRcbiAgICogPiBlbXB0eSB0b2tlbnMuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqICAgfCBhIDwhLS1hXG4gICAqID4gfCBiLS0+XG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBsaW5lRW5kaW5nQWZ0ZXJQcmVmaXgoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2h0bWxUZXh0RGF0YScpXG4gICAgcmV0dXJuIHJldHVyblN0YXRlKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXZlbnR9IEV2ZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlJlc29sdmVyfSBSZXNvbHZlclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtmYWN0b3J5RGVzdGluYXRpb259IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LWRlc3RpbmF0aW9uJ1xuaW1wb3J0IHtmYWN0b3J5TGFiZWx9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LWxhYmVsJ1xuaW1wb3J0IHtmYWN0b3J5VGl0bGV9IGZyb20gJ21pY3JvbWFyay1mYWN0b3J5LXRpdGxlJ1xuaW1wb3J0IHtmYWN0b3J5V2hpdGVzcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktd2hpdGVzcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtwdXNoLCBzcGxpY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWNodW5rZWQnXG5pbXBvcnQge25vcm1hbGl6ZUlkZW50aWZpZXJ9IGZyb20gJ21pY3JvbWFyay11dGlsLW5vcm1hbGl6ZS1pZGVudGlmaWVyJ1xuaW1wb3J0IHtyZXNvbHZlQWxsfSBmcm9tICdtaWNyb21hcmstdXRpbC1yZXNvbHZlLWFsbCdcbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGxhYmVsRW5kID0ge1xuICBuYW1lOiAnbGFiZWxFbmQnLFxuICB0b2tlbml6ZTogdG9rZW5pemVMYWJlbEVuZCxcbiAgcmVzb2x2ZVRvOiByZXNvbHZlVG9MYWJlbEVuZCxcbiAgcmVzb2x2ZUFsbDogcmVzb2x2ZUFsbExhYmVsRW5kXG59XG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgcmVzb3VyY2VDb25zdHJ1Y3QgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZVJlc291cmNlXG59XG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmNvbnN0IHJlZmVyZW5jZUZ1bGxDb25zdHJ1Y3QgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZVJlZmVyZW5jZUZ1bGxcbn1cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgcmVmZXJlbmNlQ29sbGFwc2VkQ29uc3RydWN0ID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVSZWZlcmVuY2VDb2xsYXBzZWRcbn1cblxuLyoqIEB0eXBlIHtSZXNvbHZlcn0gKi9cbmZ1bmN0aW9uIHJlc29sdmVBbGxMYWJlbEVuZChldmVudHMpIHtcbiAgbGV0IGluZGV4ID0gLTFcbiAgd2hpbGUgKCsraW5kZXggPCBldmVudHMubGVuZ3RoKSB7XG4gICAgY29uc3QgdG9rZW4gPSBldmVudHNbaW5kZXhdWzFdXG4gICAgaWYgKFxuICAgICAgdG9rZW4udHlwZSA9PT0gJ2xhYmVsSW1hZ2UnIHx8XG4gICAgICB0b2tlbi50eXBlID09PSAnbGFiZWxMaW5rJyB8fFxuICAgICAgdG9rZW4udHlwZSA9PT0gJ2xhYmVsRW5kJ1xuICAgICkge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBtYXJrZXIuXG4gICAgICBldmVudHMuc3BsaWNlKGluZGV4ICsgMSwgdG9rZW4udHlwZSA9PT0gJ2xhYmVsSW1hZ2UnID8gNCA6IDIpXG4gICAgICB0b2tlbi50eXBlID0gJ2RhdGEnXG4gICAgICBpbmRleCsrXG4gICAgfVxuICB9XG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqIEB0eXBlIHtSZXNvbHZlcn0gKi9cbmZ1bmN0aW9uIHJlc29sdmVUb0xhYmVsRW5kKGV2ZW50cywgY29udGV4dCkge1xuICBsZXQgaW5kZXggPSBldmVudHMubGVuZ3RoXG4gIGxldCBvZmZzZXQgPSAwXG4gIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gIGxldCB0b2tlblxuICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IG9wZW5cbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCBjbG9zZVxuICAvKiogQHR5cGUge0FycmF5PEV2ZW50Pn0gKi9cbiAgbGV0IG1lZGlhXG5cbiAgLy8gRmluZCBhbiBvcGVuaW5nLlxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHRva2VuID0gZXZlbnRzW2luZGV4XVsxXVxuICAgIGlmIChvcGVuKSB7XG4gICAgICAvLyBJZiB3ZSBzZWUgYW5vdGhlciBsaW5rLCBvciBpbmFjdGl2ZSBsaW5rIGxhYmVsLCB3ZVx1MjAxOXZlIGJlZW4gaGVyZSBiZWZvcmUuXG4gICAgICBpZiAoXG4gICAgICAgIHRva2VuLnR5cGUgPT09ICdsaW5rJyB8fFxuICAgICAgICAodG9rZW4udHlwZSA9PT0gJ2xhYmVsTGluaycgJiYgdG9rZW4uX2luYWN0aXZlKVxuICAgICAgKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIC8vIE1hcmsgb3RoZXIgbGluayBvcGVuaW5ncyBhcyBpbmFjdGl2ZSwgYXMgd2UgY2FuXHUyMDE5dCBoYXZlIGxpbmtzIGluXG4gICAgICAvLyBsaW5rcy5cbiAgICAgIGlmIChldmVudHNbaW5kZXhdWzBdID09PSAnZW50ZXInICYmIHRva2VuLnR5cGUgPT09ICdsYWJlbExpbmsnKSB7XG4gICAgICAgIHRva2VuLl9pbmFjdGl2ZSA9IHRydWVcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNsb3NlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicgJiZcbiAgICAgICAgKHRva2VuLnR5cGUgPT09ICdsYWJlbEltYWdlJyB8fCB0b2tlbi50eXBlID09PSAnbGFiZWxMaW5rJykgJiZcbiAgICAgICAgIXRva2VuLl9iYWxhbmNlZFxuICAgICAgKSB7XG4gICAgICAgIG9wZW4gPSBpbmRleFxuICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gJ2xhYmVsTGluaycpIHtcbiAgICAgICAgICBvZmZzZXQgPSAyXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG9rZW4udHlwZSA9PT0gJ2xhYmVsRW5kJykge1xuICAgICAgY2xvc2UgPSBpbmRleFxuICAgIH1cbiAgfVxuICBjb25zdCBncm91cCA9IHtcbiAgICB0eXBlOiBldmVudHNbb3Blbl1bMV0udHlwZSA9PT0gJ2xhYmVsTGluaycgPyAnbGluaycgOiAnaW1hZ2UnLFxuICAgIHN0YXJ0OiBPYmplY3QuYXNzaWduKHt9LCBldmVudHNbb3Blbl1bMV0uc3RhcnQpLFxuICAgIGVuZDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW2V2ZW50cy5sZW5ndGggLSAxXVsxXS5lbmQpXG4gIH1cbiAgY29uc3QgbGFiZWwgPSB7XG4gICAgdHlwZTogJ2xhYmVsJyxcbiAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW29wZW5dWzFdLnN0YXJ0KSxcbiAgICBlbmQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tjbG9zZV1bMV0uZW5kKVxuICB9XG4gIGNvbnN0IHRleHQgPSB7XG4gICAgdHlwZTogJ2xhYmVsVGV4dCcsXG4gICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tvcGVuICsgb2Zmc2V0ICsgMl1bMV0uZW5kKSxcbiAgICBlbmQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tjbG9zZSAtIDJdWzFdLnN0YXJ0KVxuICB9XG4gIG1lZGlhID0gW1xuICAgIFsnZW50ZXInLCBncm91cCwgY29udGV4dF0sXG4gICAgWydlbnRlcicsIGxhYmVsLCBjb250ZXh0XVxuICBdXG5cbiAgLy8gT3BlbmluZyBtYXJrZXIuXG4gIG1lZGlhID0gcHVzaChtZWRpYSwgZXZlbnRzLnNsaWNlKG9wZW4gKyAxLCBvcGVuICsgb2Zmc2V0ICsgMykpXG5cbiAgLy8gVGV4dCBvcGVuLlxuICBtZWRpYSA9IHB1c2gobWVkaWEsIFtbJ2VudGVyJywgdGV4dCwgY29udGV4dF1dKVxuXG4gIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgLy8gQmV0d2Vlbi5cbiAgbWVkaWEgPSBwdXNoKFxuICAgIG1lZGlhLFxuICAgIHJlc29sdmVBbGwoXG4gICAgICBjb250ZXh0LnBhcnNlci5jb25zdHJ1Y3RzLmluc2lkZVNwYW4ubnVsbCxcbiAgICAgIGV2ZW50cy5zbGljZShvcGVuICsgb2Zmc2V0ICsgNCwgY2xvc2UgLSAzKSxcbiAgICAgIGNvbnRleHRcbiAgICApXG4gIClcblxuICAvLyBUZXh0IGNsb3NlLCBtYXJrZXIgY2xvc2UsIGxhYmVsIGNsb3NlLlxuICBtZWRpYSA9IHB1c2gobWVkaWEsIFtcbiAgICBbJ2V4aXQnLCB0ZXh0LCBjb250ZXh0XSxcbiAgICBldmVudHNbY2xvc2UgLSAyXSxcbiAgICBldmVudHNbY2xvc2UgLSAxXSxcbiAgICBbJ2V4aXQnLCBsYWJlbCwgY29udGV4dF1cbiAgXSlcblxuICAvLyBSZWZlcmVuY2UsIHJlc291cmNlLCBvciBzby5cbiAgbWVkaWEgPSBwdXNoKG1lZGlhLCBldmVudHMuc2xpY2UoY2xvc2UgKyAxKSlcblxuICAvLyBNZWRpYSBjbG9zZS5cbiAgbWVkaWEgPSBwdXNoKG1lZGlhLCBbWydleGl0JywgZ3JvdXAsIGNvbnRleHRdXSlcbiAgc3BsaWNlKGV2ZW50cywgb3BlbiwgZXZlbnRzLmxlbmd0aCwgbWVkaWEpXG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMYWJlbEVuZChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGxldCBpbmRleCA9IHNlbGYuZXZlbnRzLmxlbmd0aFxuICAvKiogQHR5cGUge1Rva2VufSAqL1xuICBsZXQgbGFiZWxTdGFydFxuICAvKiogQHR5cGUge2Jvb2xlYW59ICovXG4gIGxldCBkZWZpbmVkXG5cbiAgLy8gRmluZCBhbiBvcGVuaW5nLlxuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIGlmIChcbiAgICAgIChzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2xhYmVsSW1hZ2UnIHx8XG4gICAgICAgIHNlbGYuZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnbGFiZWxMaW5rJykgJiZcbiAgICAgICFzZWxmLmV2ZW50c1tpbmRleF1bMV0uX2JhbGFuY2VkXG4gICAgKSB7XG4gICAgICBsYWJlbFN0YXJ0ID0gc2VsZi5ldmVudHNbaW5kZXhdWzFdXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgbGFiZWwgZW5kLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGNcbiAgICogICAgICAgXlxuICAgKiA+IHwgW2FdW2JdIGNcbiAgICogICAgICAgXlxuICAgKiA+IHwgW2FdW10gYlxuICAgKiAgICAgICBeXG4gICAqID4gfCBbYV0gYlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIC8vIElmIHRoZXJlIGlzIG5vdCBhbiBva2F5IG9wZW5pbmcuXG4gICAgaWYgKCFsYWJlbFN0YXJ0KSB7XG4gICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGNvcnJlc3BvbmRpbmcgbGFiZWwgKGxpbmspIHN0YXJ0IGlzIG1hcmtlZCBhcyBpbmFjdGl2ZSxcbiAgICAvLyBpdCBtZWFucyB3ZVx1MjAxOWQgYmUgd3JhcHBpbmcgYSBsaW5rLCBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyBgYGBtYXJrZG93blxuICAgIC8vID4gfCBhIFtiIFtjXShkKSBlXShmKSBnLlxuICAgIC8vICAgICAgICAgICAgICAgICAgXlxuICAgIC8vIGBgYFxuICAgIC8vXG4gICAgLy8gV2UgY2FuXHUyMDE5dCBoYXZlIHRoYXQsIHNvIGl0XHUyMDE5cyBqdXN0IGJhbGFuY2VkIGJyYWNrZXRzLlxuICAgIGlmIChsYWJlbFN0YXJ0Ll9pbmFjdGl2ZSkge1xuICAgICAgcmV0dXJuIGxhYmVsRW5kTm9rKGNvZGUpXG4gICAgfVxuICAgIGRlZmluZWQgPSBzZWxmLnBhcnNlci5kZWZpbmVkLmluY2x1ZGVzKFxuICAgICAgbm9ybWFsaXplSWRlbnRpZmllcihcbiAgICAgICAgc2VsZi5zbGljZVNlcmlhbGl6ZSh7XG4gICAgICAgICAgc3RhcnQ6IGxhYmVsU3RhcnQuZW5kLFxuICAgICAgICAgIGVuZDogc2VsZi5ub3coKVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIClcbiAgICBlZmZlY3RzLmVudGVyKCdsYWJlbEVuZCcpXG4gICAgZWZmZWN0cy5lbnRlcignbGFiZWxNYXJrZXInKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGFiZWxNYXJrZXInKVxuICAgIGVmZmVjdHMuZXhpdCgnbGFiZWxFbmQnKVxuICAgIHJldHVybiBhZnRlclxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIGBdYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtiXSBjXG4gICAqICAgICAgIF5cbiAgICogPiB8IFthXVtdIGJcbiAgICogICAgICAgXlxuICAgKiA+IHwgW2FdIGJcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIC8vIE5vdGU6IGBtYXJrZG93bi1yc2AgYWxzbyBwYXJzZXMgR0ZNIGZvb3Rub3RlcyBoZXJlLCB3aGljaCBmb3IgdXMgaXMgaW5cbiAgICAvLyBhbiBleHRlbnNpb24uXG5cbiAgICAvLyBSZXNvdXJjZSAoYFthc2RdKGZnaClgKT9cbiAgICBpZiAoY29kZSA9PT0gNDApIHtcbiAgICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICAgIHJlc291cmNlQ29uc3RydWN0LFxuICAgICAgICBsYWJlbEVuZE9rLFxuICAgICAgICBkZWZpbmVkID8gbGFiZWxFbmRPayA6IGxhYmVsRW5kTm9rXG4gICAgICApKGNvZGUpXG4gICAgfVxuXG4gICAgLy8gRnVsbCAoYFthc2RdW2ZnaF1gKSBvciBjb2xsYXBzZWQgKGBbYXNkXVtdYCkgcmVmZXJlbmNlP1xuICAgIGlmIChjb2RlID09PSA5MSkge1xuICAgICAgcmV0dXJuIGVmZmVjdHMuYXR0ZW1wdChcbiAgICAgICAgcmVmZXJlbmNlRnVsbENvbnN0cnVjdCxcbiAgICAgICAgbGFiZWxFbmRPayxcbiAgICAgICAgZGVmaW5lZCA/IHJlZmVyZW5jZU5vdEZ1bGwgOiBsYWJlbEVuZE5va1xuICAgICAgKShjb2RlKVxuICAgIH1cblxuICAgIC8vIFNob3J0Y3V0IChgW2FzZF1gKSByZWZlcmVuY2U/XG4gICAgcmV0dXJuIGRlZmluZWQgPyBsYWJlbEVuZE9rKGNvZGUpIDogbGFiZWxFbmROb2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgXWAsIGF0IGBbYCwgYnV0IG5vdCBhdCBhIGZ1bGwgcmVmZXJlbmNlLlxuICAgKlxuICAgKiA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogd2Ugb25seSBnZXQgaGVyZSBpZiB0aGUgbGFiZWwgaXMgZGVmaW5lZC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtdIGJcbiAgICogICAgICAgIF5cbiAgICogPiB8IFthXSBiXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZWZlcmVuY2VOb3RGdWxsKGNvZGUpIHtcbiAgICByZXR1cm4gZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgcmVmZXJlbmNlQ29sbGFwc2VkQ29uc3RydWN0LFxuICAgICAgbGFiZWxFbmRPayxcbiAgICAgIGxhYmVsRW5kTm9rXG4gICAgKShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIERvbmUsIHdlIGZvdW5kIHNvbWV0aGluZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXShiKSBjXG4gICAqICAgICAgICAgICBeXG4gICAqID4gfCBbYV1bYl0gY1xuICAgKiAgICAgICAgICAgXlxuICAgKiA+IHwgW2FdW10gYlxuICAgKiAgICAgICAgICBeXG4gICAqID4gfCBbYV0gYlxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gbGFiZWxFbmRPayhjb2RlKSB7XG4gICAgLy8gTm90ZTogYG1hcmtkb3duLXJzYCBkb2VzIGEgYnVuY2ggb2Ygc3R1ZmYgaGVyZS5cbiAgICByZXR1cm4gb2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEb25lLCBpdFx1MjAxOXMgbm90aGluZy5cbiAgICpcbiAgICogVGhlcmUgd2FzIGFuIG9rYXkgb3BlbmluZywgYnV0IHdlIGRpZG5cdTIwMTl0IG1hdGNoIGFueXRoaW5nLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIgY1xuICAgKiAgICAgICAgXlxuICAgKiA+IHwgW2FdW2IgY1xuICAgKiAgICAgICAgXlxuICAgKiA+IHwgW2FdIGJcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGxhYmVsRW5kTm9rKGNvZGUpIHtcbiAgICBsYWJlbFN0YXJ0Ll9iYWxhbmNlZCA9IHRydWVcbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVSZXNvdXJjZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIHJldHVybiByZXNvdXJjZVN0YXJ0XG5cbiAgLyoqXG4gICAqIEF0IGEgcmVzb3VyY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgY1xuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VTdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcigncmVzb3VyY2UnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ3Jlc291cmNlTWFya2VyJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ3Jlc291cmNlTWFya2VyJylcbiAgICByZXR1cm4gcmVzb3VyY2VCZWZvcmVcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgYChgLCBhdCBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZXNvdXJjZUJlZm9yZShjb2RlKSB7XG4gICAgcmV0dXJuIG1hcmtkb3duTGluZUVuZGluZ09yU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVdoaXRlc3BhY2UoZWZmZWN0cywgcmVzb3VyY2VPcGVuKShjb2RlKVxuICAgICAgOiByZXNvdXJjZU9wZW4oY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZSwgYXQgYClgIG9yIGEgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYikgY1xuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlT3Blbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDQxKSB7XG4gICAgICByZXR1cm4gcmVzb3VyY2VFbmQoY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIGZhY3RvcnlEZXN0aW5hdGlvbihcbiAgICAgIGVmZmVjdHMsXG4gICAgICByZXNvdXJjZURlc3RpbmF0aW9uQWZ0ZXIsXG4gICAgICByZXNvdXJjZURlc3RpbmF0aW9uTWlzc2luZyxcbiAgICAgICdyZXNvdXJjZURlc3RpbmF0aW9uJyxcbiAgICAgICdyZXNvdXJjZURlc3RpbmF0aW9uTGl0ZXJhbCcsXG4gICAgICAncmVzb3VyY2VEZXN0aW5hdGlvbkxpdGVyYWxNYXJrZXInLFxuICAgICAgJ3Jlc291cmNlRGVzdGluYXRpb25SYXcnLFxuICAgICAgJ3Jlc291cmNlRGVzdGluYXRpb25TdHJpbmcnLFxuICAgICAgMzJcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVzb3VyY2UsIGFmdGVyIGRlc3RpbmF0aW9uLCBhdCBvcHRpb25hbCB3aGl0ZXNwYWNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGNcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VEZXN0aW5hdGlvbkFmdGVyKGNvZGUpIHtcbiAgICByZXR1cm4gbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5V2hpdGVzcGFjZShlZmZlY3RzLCByZXNvdXJjZUJldHdlZW4pKGNvZGUpXG4gICAgICA6IHJlc291cmNlRW5kKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogQXQgaW52YWxpZCBkZXN0aW5hdGlvbi5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXSg8PCkgYlxuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlRGVzdGluYXRpb25NaXNzaW5nKGNvZGUpIHtcbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVzb3VyY2UsIGFmdGVyIGRlc3RpbmF0aW9uIGFuZCB3aGl0ZXNwYWNlLCBhdCBgKGAgb3IgdGl0bGUuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYiApIGNcbiAgICogICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlc291cmNlQmV0d2Vlbihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IDM0IHx8IGNvZGUgPT09IDM5IHx8IGNvZGUgPT09IDQwKSB7XG4gICAgICByZXR1cm4gZmFjdG9yeVRpdGxlKFxuICAgICAgICBlZmZlY3RzLFxuICAgICAgICByZXNvdXJjZVRpdGxlQWZ0ZXIsXG4gICAgICAgIG5vayxcbiAgICAgICAgJ3Jlc291cmNlVGl0bGUnLFxuICAgICAgICAncmVzb3VyY2VUaXRsZU1hcmtlcicsXG4gICAgICAgICdyZXNvdXJjZVRpdGxlU3RyaW5nJ1xuICAgICAgKShjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzb3VyY2VFbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYWZ0ZXIgdGl0bGUsIGF0IG9wdGlvbmFsIHdoaXRlc3BhY2UuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV0oYiBcImNcIikgZFxuICAgKiAgICAgICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VUaXRsZUFmdGVyKGNvZGUpIHtcbiAgICByZXR1cm4gbWFya2Rvd25MaW5lRW5kaW5nT3JTcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5V2hpdGVzcGFjZShlZmZlY3RzLCByZXNvdXJjZUVuZCkoY29kZSlcbiAgICAgIDogcmVzb3VyY2VFbmQoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiByZXNvdXJjZSwgYXQgYClgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdKGIpIGRcbiAgICogICAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVzb3VyY2VFbmQoY29kZSkge1xuICAgIGlmIChjb2RlID09PSA0MSkge1xuICAgICAgZWZmZWN0cy5lbnRlcigncmVzb3VyY2VNYXJrZXInKVxuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBlZmZlY3RzLmV4aXQoJ3Jlc291cmNlTWFya2VyJylcbiAgICAgIGVmZmVjdHMuZXhpdCgncmVzb3VyY2UnKVxuICAgICAgcmV0dXJuIG9rXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZVJlZmVyZW5jZUZ1bGwoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gcmVmZXJlbmNlRnVsbFxuXG4gIC8qKlxuICAgKiBJbiBhIHJlZmVyZW5jZSAoZnVsbCksIGF0IHRoZSBgW2AuXG4gICAqXG4gICAqIGBgYG1hcmtkb3duXG4gICAqID4gfCBbYV1bYl0gZFxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVmZXJlbmNlRnVsbChjb2RlKSB7XG4gICAgcmV0dXJuIGZhY3RvcnlMYWJlbC5jYWxsKFxuICAgICAgc2VsZixcbiAgICAgIGVmZmVjdHMsXG4gICAgICByZWZlcmVuY2VGdWxsQWZ0ZXIsXG4gICAgICByZWZlcmVuY2VGdWxsTWlzc2luZyxcbiAgICAgICdyZWZlcmVuY2UnLFxuICAgICAgJ3JlZmVyZW5jZU1hcmtlcicsXG4gICAgICAncmVmZXJlbmNlU3RyaW5nJ1xuICAgICkoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBhIHJlZmVyZW5jZSAoZnVsbCksIGFmdGVyIGBdYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtiXSBkXG4gICAqICAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUZ1bGxBZnRlcihjb2RlKSB7XG4gICAgcmV0dXJuIHNlbGYucGFyc2VyLmRlZmluZWQuaW5jbHVkZXMoXG4gICAgICBub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgICBzZWxmLnNsaWNlU2VyaWFsaXplKHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdWzFdKS5zbGljZSgxLCAtMSlcbiAgICAgIClcbiAgICApXG4gICAgICA/IG9rKGNvZGUpXG4gICAgICA6IG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHJlZmVyZW5jZSAoZnVsbCkgdGhhdCB3YXMgbWlzc2luZy5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IFthXVtiIGRcbiAgICogICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIHJlZmVyZW5jZUZ1bGxNaXNzaW5nKGNvZGUpIHtcbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVSZWZlcmVuY2VDb2xsYXBzZWQoZWZmZWN0cywgb2ssIG5vaykge1xuICByZXR1cm4gcmVmZXJlbmNlQ29sbGFwc2VkU3RhcnRcblxuICAvKipcbiAgICogSW4gcmVmZXJlbmNlIChjb2xsYXBzZWQpLCBhdCBgW2AuXG4gICAqXG4gICAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiB3ZSBvbmx5IGdldCBoZXJlIGlmIHRoZSBsYWJlbCBpcyBkZWZpbmVkLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdW10gZFxuICAgKiAgICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gcmVmZXJlbmNlQ29sbGFwc2VkU3RhcnQoY29kZSkge1xuICAgIC8vIFdlIG9ubHkgYXR0ZW1wdCBhIGNvbGxhcHNlZCBsYWJlbCBpZiB0aGVyZVx1MjAxOXMgYSBgW2AuXG5cbiAgICBlZmZlY3RzLmVudGVyKCdyZWZlcmVuY2UnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ3JlZmVyZW5jZU1hcmtlcicpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdyZWZlcmVuY2VNYXJrZXInKVxuICAgIHJldHVybiByZWZlcmVuY2VDb2xsYXBzZWRPcGVuXG4gIH1cblxuICAvKipcbiAgICogSW4gcmVmZXJlbmNlIChjb2xsYXBzZWQpLCBhdCBgXWAuXG4gICAqXG4gICAqID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiB3ZSBvbmx5IGdldCBoZXJlIGlmIHRoZSBsYWJlbCBpcyBkZWZpbmVkLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgW2FdW10gZFxuICAgKiAgICAgICAgIF5cbiAgICogYGBgXG4gICAqXG4gICAqICBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiByZWZlcmVuY2VDb2xsYXBzZWRPcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gOTMpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ3JlZmVyZW5jZU1hcmtlcicpXG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIGVmZmVjdHMuZXhpdCgncmVmZXJlbmNlTWFya2VyJylcbiAgICAgIGVmZmVjdHMuZXhpdCgncmVmZXJlbmNlJylcbiAgICAgIHJldHVybiBva1xuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplcn0gVG9rZW5pemVyXG4gKi9cblxuaW1wb3J0IHtsYWJlbEVuZH0gZnJvbSAnLi9sYWJlbC1lbmQuanMnXG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGxhYmVsU3RhcnRJbWFnZSA9IHtcbiAgbmFtZTogJ2xhYmVsU3RhcnRJbWFnZScsXG4gIHRva2VuaXplOiB0b2tlbml6ZUxhYmVsU3RhcnRJbWFnZSxcbiAgcmVzb2x2ZUFsbDogbGFiZWxFbmQucmVzb2x2ZUFsbFxufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7VG9rZW5pemVyfVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxhYmVsU3RhcnRJbWFnZShlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBsYWJlbCAoaW1hZ2UpIHN0YXJ0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSAhW2JdIGNcbiAgICogICAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2xhYmVsSW1hZ2UnKVxuICAgIGVmZmVjdHMuZW50ZXIoJ2xhYmVsSW1hZ2VNYXJrZXInKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGFiZWxJbWFnZU1hcmtlcicpXG4gICAgcmV0dXJuIG9wZW5cbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgIWAsIGF0IGBbYC5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8IGEgIVtiXSBjXG4gICAqICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBvcGVuKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gOTEpIHtcbiAgICAgIGVmZmVjdHMuZW50ZXIoJ2xhYmVsTWFya2VyJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdsYWJlbE1hcmtlcicpXG4gICAgICBlZmZlY3RzLmV4aXQoJ2xhYmVsSW1hZ2UnKVxuICAgICAgcmV0dXJuIGFmdGVyXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBgIVtgLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSAhW2JdIGNcbiAgICogICAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBUaGlzIGlzIG5lZWRlZCBpbiBiZWNhdXNlLCB3aGVuIEdGTSBmb290bm90ZXMgYXJlIGVuYWJsZWQsIGltYWdlcyBuZXZlclxuICAgKiBmb3JtIHdoZW4gc3RhcnRlZCB3aXRoIGEgYF5gLlxuICAgKiBJbnN0ZWFkLCBsaW5rcyBmb3JtOlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAhW15hXShiKVxuICAgKlxuICAgKiAhW15hXVtiXVxuICAgKlxuICAgKiBbYl06IGNcbiAgICogYGBgXG4gICAqXG4gICAqIGBgYGh0bWxcbiAgICogPHA+ITxhIGhyZWY9XFxcImJcXFwiPl5hPC9hPjwvcD5cbiAgICogPHA+ITxhIGhyZWY9XFxcImNcXFwiPl5hPC9hPjwvcD5cbiAgICogYGBgXG4gICAqXG4gICAqIEB0eXBlIHtTdGF0ZX1cbiAgICovXG4gIGZ1bmN0aW9uIGFmdGVyKGNvZGUpIHtcbiAgICAvLyBUbyBkbzogdXNlIGEgbmV3IGZpZWxkIHRvIGRvIHRoaXMsIHRoaXMgaXMgc3RpbGwgbmVlZGVkIGZvclxuICAgIC8vIGBtaWNyb21hcmstZXh0ZW5zaW9uLWdmbS1mb290bm90ZWAsIGJ1dCB0aGUgYGxhYmVsLXN0YXJ0LWxpbmtgXG4gICAgLy8gYmVoYXZpb3IgaXNuXHUyMDE5dC5cbiAgICAvLyBIaWRkZW4gZm9vdG5vdGVzIGhvb2suXG4gICAgLyogYzggaWdub3JlIG5leHQgMyAqL1xuICAgIHJldHVybiBjb2RlID09PSA5NCAmJiAnX2hpZGRlbkZvb3Rub3RlU3VwcG9ydCcgaW4gc2VsZi5wYXJzZXIuY29uc3RydWN0c1xuICAgICAgPyBub2soY29kZSlcbiAgICAgIDogb2soY29kZSlcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db25zdHJ1Y3R9IENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVDb250ZXh0fSBUb2tlbml6ZUNvbnRleHRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW5pemVyfSBUb2tlbml6ZXJcbiAqL1xuXG5pbXBvcnQge2xhYmVsRW5kfSBmcm9tICcuL2xhYmVsLWVuZC5qcydcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgbGFiZWxTdGFydExpbmsgPSB7XG4gIG5hbWU6ICdsYWJlbFN0YXJ0TGluaycsXG4gIHRva2VuaXplOiB0b2tlbml6ZUxhYmVsU3RhcnRMaW5rLFxuICByZXNvbHZlQWxsOiBsYWJlbEVuZC5yZXNvbHZlQWxsXG59XG5cbi8qKlxuICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGFiZWxTdGFydExpbmsoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICByZXR1cm4gc3RhcnRcblxuICAvKipcbiAgICogU3RhcnQgb2YgbGFiZWwgKGxpbmspIHN0YXJ0LlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgYSBbYl0gY1xuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcignbGFiZWxMaW5rJylcbiAgICBlZmZlY3RzLmVudGVyKCdsYWJlbE1hcmtlcicpXG4gICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgZWZmZWN0cy5leGl0KCdsYWJlbE1hcmtlcicpXG4gICAgZWZmZWN0cy5leGl0KCdsYWJlbExpbmsnKVxuICAgIHJldHVybiBhZnRlclxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gYWZ0ZXIoY29kZSkge1xuICAgIC8vIFRvIGRvOiB0aGlzIGlzblx1MjAxOXQgbmVlZGVkIGluIGBtaWNyb21hcmstZXh0ZW5zaW9uLWdmbS1mb290bm90ZWAsXG4gICAgLy8gcmVtb3ZlLlxuICAgIC8vIEhpZGRlbiBmb290bm90ZXMgaG9vay5cbiAgICAvKiBjOCBpZ25vcmUgbmV4dCAzICovXG4gICAgcmV0dXJuIGNvZGUgPT09IDk0ICYmICdfaGlkZGVuRm9vdG5vdGVTdXBwb3J0JyBpbiBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzXG4gICAgICA/IG5vayhjb2RlKVxuICAgICAgOiBvayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBsaW5lRW5kaW5nID0ge1xuICBuYW1lOiAnbGluZUVuZGluZycsXG4gIHRva2VuaXplOiB0b2tlbml6ZUxpbmVFbmRpbmdcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVMaW5lRW5kaW5nKGVmZmVjdHMsIG9rKSB7XG4gIHJldHVybiBzdGFydFxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIHN0YXJ0KGNvZGUpIHtcbiAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgIHJldHVybiBmYWN0b3J5U3BhY2UoZWZmZWN0cywgb2ssICdsaW5lUHJlZml4JylcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Db2RlfSBDb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvbnN0cnVjdH0gQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nLCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCB0aGVtYXRpY0JyZWFrID0ge1xuICBuYW1lOiAndGhlbWF0aWNCcmVhaycsXG4gIHRva2VuaXplOiB0b2tlbml6ZVRoZW1hdGljQnJlYWtcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVUaGVtYXRpY0JyZWFrKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgbGV0IHNpemUgPSAwXG4gIC8qKiBAdHlwZSB7Tm9uTnVsbGFibGU8Q29kZT59ICovXG4gIGxldCBtYXJrZXJcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIHRoZW1hdGljIGJyZWFrLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgKioqXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzdGFydChjb2RlKSB7XG4gICAgZWZmZWN0cy5lbnRlcigndGhlbWF0aWNCcmVhaycpXG4gICAgLy8gVG8gZG86IHBhcnNlIGluZGVudCBsaWtlIGBtYXJrZG93bi1yc2AuXG4gICAgcmV0dXJuIGJlZm9yZShjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEFmdGVyIG9wdGlvbmFsIHdoaXRlc3BhY2UsIGF0IG1hcmtlci5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICoqKlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYmVmb3JlKGNvZGUpIHtcbiAgICBtYXJrZXIgPSBjb2RlXG4gICAgcmV0dXJuIGF0QnJlYWsoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBzb21ldGhpbmcsIGJlZm9yZSBzb21ldGhpbmcgZWxzZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogPiB8ICoqKlxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gYXRCcmVhayhjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgZWZmZWN0cy5lbnRlcigndGhlbWF0aWNCcmVha1NlcXVlbmNlJylcbiAgICAgIHJldHVybiBzZXF1ZW5jZShjb2RlKVxuICAgIH1cbiAgICBpZiAoc2l6ZSA+PSAzICYmIChjb2RlID09PSBudWxsIHx8IG1hcmtkb3duTGluZUVuZGluZyhjb2RlKSkpIHtcbiAgICAgIGVmZmVjdHMuZXhpdCgndGhlbWF0aWNCcmVhaycpXG4gICAgICByZXR1cm4gb2soY29kZSlcbiAgICB9XG4gICAgcmV0dXJuIG5vayhjb2RlKVxuICB9XG5cbiAgLyoqXG4gICAqIEluIHNlcXVlbmNlLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiA+IHwgKioqXG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBzZXF1ZW5jZShjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG1hcmtlcikge1xuICAgICAgZWZmZWN0cy5jb25zdW1lKGNvZGUpXG4gICAgICBzaXplKytcbiAgICAgIHJldHVybiBzZXF1ZW5jZVxuICAgIH1cbiAgICBlZmZlY3RzLmV4aXQoJ3RoZW1hdGljQnJlYWtTZXF1ZW5jZScpXG4gICAgcmV0dXJuIG1hcmtkb3duU3BhY2UoY29kZSlcbiAgICAgID8gZmFjdG9yeVNwYWNlKGVmZmVjdHMsIGF0QnJlYWssICd3aGl0ZXNwYWNlJykoY29kZSlcbiAgICAgIDogYXRCcmVhayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29udGFpbmVyU3RhdGV9IENvbnRhaW5lclN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV4aXRlcn0gRXhpdGVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7YXNjaWlEaWdpdCwgbWFya2Rvd25TcGFjZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuaW1wb3J0IHtibGFua0xpbmV9IGZyb20gJy4vYmxhbmstbGluZS5qcydcbmltcG9ydCB7dGhlbWF0aWNCcmVha30gZnJvbSAnLi90aGVtYXRpYy1icmVhay5qcydcblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5leHBvcnQgY29uc3QgbGlzdCA9IHtcbiAgbmFtZTogJ2xpc3QnLFxuICB0b2tlbml6ZTogdG9rZW5pemVMaXN0U3RhcnQsXG4gIGNvbnRpbnVhdGlvbjoge1xuICAgIHRva2VuaXplOiB0b2tlbml6ZUxpc3RDb250aW51YXRpb25cbiAgfSxcbiAgZXhpdDogdG9rZW5pemVMaXN0RW5kXG59XG5cbi8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuY29uc3QgbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlQ29uc3RydWN0ID0ge1xuICB0b2tlbml6ZTogdG9rZW5pemVMaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UsXG4gIHBhcnRpYWw6IHRydWVcbn1cblxuLyoqIEB0eXBlIHtDb25zdHJ1Y3R9ICovXG5jb25zdCBpbmRlbnRDb25zdHJ1Y3QgPSB7XG4gIHRva2VuaXplOiB0b2tlbml6ZUluZGVudCxcbiAgcGFydGlhbDogdHJ1ZVxufVxuXG4vLyBUbyBkbzogYG1hcmtkb3duLXJzYCBwYXJzZXMgbGlzdCBpdGVtcyBvbiB0aGVpciBvd24gYW5kIGxhdGVyIHN0aXRjaGVzIHRoZW1cbi8vIHRvZ2V0aGVyLlxuXG4vKipcbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUxpc3RTdGFydChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGNvbnN0IHRhaWwgPSBzZWxmLmV2ZW50c1tzZWxmLmV2ZW50cy5sZW5ndGggLSAxXVxuICBsZXQgaW5pdGlhbFNpemUgPVxuICAgIHRhaWwgJiYgdGFpbFsxXS50eXBlID09PSAnbGluZVByZWZpeCdcbiAgICAgID8gdGFpbFsyXS5zbGljZVNlcmlhbGl6ZSh0YWlsWzFdLCB0cnVlKS5sZW5ndGhcbiAgICAgIDogMFxuICBsZXQgc2l6ZSA9IDBcbiAgcmV0dXJuIHN0YXJ0XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGNvbnN0IGtpbmQgPVxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS50eXBlIHx8XG4gICAgICAoY29kZSA9PT0gNDIgfHwgY29kZSA9PT0gNDMgfHwgY29kZSA9PT0gNDVcbiAgICAgICAgPyAnbGlzdFVub3JkZXJlZCdcbiAgICAgICAgOiAnbGlzdE9yZGVyZWQnKVxuICAgIGlmIChcbiAgICAgIGtpbmQgPT09ICdsaXN0VW5vcmRlcmVkJ1xuICAgICAgICA/ICFzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlciB8fCBjb2RlID09PSBzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlclxuICAgICAgICA6IGFzY2lpRGlnaXQoY29kZSlcbiAgICApIHtcbiAgICAgIGlmICghc2VsZi5jb250YWluZXJTdGF0ZS50eXBlKSB7XG4gICAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUudHlwZSA9IGtpbmRcbiAgICAgICAgZWZmZWN0cy5lbnRlcihraW5kLCB7XG4gICAgICAgICAgX2NvbnRhaW5lcjogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgaWYgKGtpbmQgPT09ICdsaXN0VW5vcmRlcmVkJykge1xuICAgICAgICBlZmZlY3RzLmVudGVyKCdsaXN0SXRlbVByZWZpeCcpXG4gICAgICAgIHJldHVybiBjb2RlID09PSA0MiB8fCBjb2RlID09PSA0NVxuICAgICAgICAgID8gZWZmZWN0cy5jaGVjayh0aGVtYXRpY0JyZWFrLCBub2ssIGF0TWFya2VyKShjb2RlKVxuICAgICAgICAgIDogYXRNYXJrZXIoY29kZSlcbiAgICAgIH1cbiAgICAgIGlmICghc2VsZi5pbnRlcnJ1cHQgfHwgY29kZSA9PT0gNDkpIHtcbiAgICAgICAgZWZmZWN0cy5lbnRlcignbGlzdEl0ZW1QcmVmaXgnKVxuICAgICAgICBlZmZlY3RzLmVudGVyKCdsaXN0SXRlbVZhbHVlJylcbiAgICAgICAgcmV0dXJuIGluc2lkZShjb2RlKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBpbnNpZGUoY29kZSkge1xuICAgIGlmIChhc2NpaURpZ2l0KGNvZGUpICYmICsrc2l6ZSA8IDEwKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBpbnNpZGVcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKCFzZWxmLmludGVycnVwdCB8fCBzaXplIDwgMikgJiZcbiAgICAgIChzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlclxuICAgICAgICA/IGNvZGUgPT09IHNlbGYuY29udGFpbmVyU3RhdGUubWFya2VyXG4gICAgICAgIDogY29kZSA9PT0gNDEgfHwgY29kZSA9PT0gNDYpXG4gICAgKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ2xpc3RJdGVtVmFsdWUnKVxuICAgICAgcmV0dXJuIGF0TWFya2VyKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqKi9cbiAgZnVuY3Rpb24gYXRNYXJrZXIoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ2xpc3RJdGVtTWFya2VyJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xpc3RJdGVtTWFya2VyJylcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLm1hcmtlciA9IHNlbGYuY29udGFpbmVyU3RhdGUubWFya2VyIHx8IGNvZGVcbiAgICByZXR1cm4gZWZmZWN0cy5jaGVjayhcbiAgICAgIGJsYW5rTGluZSxcbiAgICAgIC8vIENhblx1MjAxOXQgYmUgZW1wdHkgd2hlbiBpbnRlcnJ1cHRpbmcuXG4gICAgICBzZWxmLmludGVycnVwdCA/IG5vayA6IG9uQmxhbmssXG4gICAgICBlZmZlY3RzLmF0dGVtcHQoXG4gICAgICAgIGxpc3RJdGVtUHJlZml4V2hpdGVzcGFjZUNvbnN0cnVjdCxcbiAgICAgICAgZW5kT2ZQcmVmaXgsXG4gICAgICAgIG90aGVyUHJlZml4XG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gb25CbGFuayhjb2RlKSB7XG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lID0gdHJ1ZVxuICAgIGluaXRpYWxTaXplKytcbiAgICByZXR1cm4gZW5kT2ZQcmVmaXgoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIG90aGVyUHJlZml4KGNvZGUpIHtcbiAgICBpZiAobWFya2Rvd25TcGFjZShjb2RlKSkge1xuICAgICAgZWZmZWN0cy5lbnRlcignbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgZWZmZWN0cy5leGl0KCdsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UnKVxuICAgICAgcmV0dXJuIGVuZE9mUHJlZml4XG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGVuZE9mUHJlZml4KGNvZGUpIHtcbiAgICBzZWxmLmNvbnRhaW5lclN0YXRlLnNpemUgPVxuICAgICAgaW5pdGlhbFNpemUgK1xuICAgICAgc2VsZi5zbGljZVNlcmlhbGl6ZShlZmZlY3RzLmV4aXQoJ2xpc3RJdGVtUHJlZml4JyksIHRydWUpLmxlbmd0aFxuICAgIHJldHVybiBvayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGlzdENvbnRpbnVhdGlvbihlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHNlbGYuY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdyA9IHVuZGVmaW5lZFxuICByZXR1cm4gZWZmZWN0cy5jaGVjayhibGFua0xpbmUsIG9uQmxhbmssIG5vdEJsYW5rKVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIG9uQmxhbmsoY29kZSkge1xuICAgIHNlbGYuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXMgPVxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcyB8fFxuICAgICAgc2VsZi5jb250YWluZXJTdGF0ZS5pbml0aWFsQmxhbmtMaW5lXG5cbiAgICAvLyBXZSBoYXZlIGEgYmxhbmsgbGluZS5cbiAgICAvLyBTdGlsbCwgdHJ5IHRvIGNvbnN1bWUgYXQgbW9zdCB0aGUgaXRlbXMgc2l6ZS5cbiAgICByZXR1cm4gZmFjdG9yeVNwYWNlKFxuICAgICAgZWZmZWN0cyxcbiAgICAgIG9rLFxuICAgICAgJ2xpc3RJdGVtSW5kZW50JyxcbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUuc2l6ZSArIDFcbiAgICApKGNvZGUpXG4gIH1cblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBub3RCbGFuayhjb2RlKSB7XG4gICAgaWYgKHNlbGYuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXMgfHwgIW1hcmtkb3duU3BhY2UoY29kZSkpIHtcbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUuZnVydGhlckJsYW5rTGluZXMgPSB1bmRlZmluZWRcbiAgICAgIHNlbGYuY29udGFpbmVyU3RhdGUuaW5pdGlhbEJsYW5rTGluZSA9IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuIG5vdEluQ3VycmVudEl0ZW0oY29kZSlcbiAgICB9XG4gICAgc2VsZi5jb250YWluZXJTdGF0ZS5mdXJ0aGVyQmxhbmtMaW5lcyA9IHVuZGVmaW5lZFxuICAgIHNlbGYuY29udGFpbmVyU3RhdGUuaW5pdGlhbEJsYW5rTGluZSA9IHVuZGVmaW5lZFxuICAgIHJldHVybiBlZmZlY3RzLmF0dGVtcHQoaW5kZW50Q29uc3RydWN0LCBvaywgbm90SW5DdXJyZW50SXRlbSkoY29kZSlcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIG5vdEluQ3VycmVudEl0ZW0oY29kZSkge1xuICAgIC8vIFdoaWxlIHdlIGRvIGNvbnRpbnVlLCB3ZSBzaWduYWwgdGhhdCB0aGUgZmxvdyBzaG91bGQgYmUgY2xvc2VkLlxuICAgIHNlbGYuY29udGFpbmVyU3RhdGUuX2Nsb3NlRmxvdyA9IHRydWVcbiAgICAvLyBBcyB3ZVx1MjAxOXJlIGNsb3NpbmcgZmxvdywgd2VcdTIwMTlyZSBubyBsb25nZXIgaW50ZXJydXB0aW5nLlxuICAgIHNlbGYuaW50ZXJydXB0ID0gdW5kZWZpbmVkXG4gICAgLy8gQWx3YXlzIHBvcHVsYXRlZCBieSBkZWZhdWx0cy5cblxuICAgIHJldHVybiBmYWN0b3J5U3BhY2UoXG4gICAgICBlZmZlY3RzLFxuICAgICAgZWZmZWN0cy5hdHRlbXB0KGxpc3QsIG9rLCBub2spLFxuICAgICAgJ2xpbmVQcmVmaXgnLFxuICAgICAgc2VsZi5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoJ2NvZGVJbmRlbnRlZCcpXG4gICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgIDogNFxuICAgICkoY29kZSlcbiAgfVxufVxuXG4vKipcbiAqIEB0eXBlIHtUb2tlbml6ZXJ9XG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5mdW5jdGlvbiB0b2tlbml6ZUluZGVudChlZmZlY3RzLCBvaywgbm9rKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIHJldHVybiBmYWN0b3J5U3BhY2UoXG4gICAgZWZmZWN0cyxcbiAgICBhZnRlclByZWZpeCxcbiAgICAnbGlzdEl0ZW1JbmRlbnQnLFxuICAgIHNlbGYuY29udGFpbmVyU3RhdGUuc2l6ZSArIDFcbiAgKVxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGFmdGVyUHJlZml4KGNvZGUpIHtcbiAgICBjb25zdCB0YWlsID0gc2VsZi5ldmVudHNbc2VsZi5ldmVudHMubGVuZ3RoIC0gMV1cbiAgICByZXR1cm4gdGFpbCAmJlxuICAgICAgdGFpbFsxXS50eXBlID09PSAnbGlzdEl0ZW1JbmRlbnQnICYmXG4gICAgICB0YWlsWzJdLnNsaWNlU2VyaWFsaXplKHRhaWxbMV0sIHRydWUpLmxlbmd0aCA9PT0gc2VsZi5jb250YWluZXJTdGF0ZS5zaXplXG4gICAgICA/IG9rKGNvZGUpXG4gICAgICA6IG5vayhjb2RlKVxuICB9XG59XG5cbi8qKlxuICogQHR5cGUge0V4aXRlcn1cbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGlzdEVuZChlZmZlY3RzKSB7XG4gIGVmZmVjdHMuZXhpdCh0aGlzLmNvbnRhaW5lclN0YXRlLnR5cGUpXG59XG5cbi8qKlxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKi9cbmZ1bmN0aW9uIHRva2VuaXplTGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlKGVmZmVjdHMsIG9rLCBub2spIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcblxuICAvLyBBbHdheXMgcG9wdWxhdGVkIGJ5IGRlZmF1bHRzLlxuXG4gIHJldHVybiBmYWN0b3J5U3BhY2UoXG4gICAgZWZmZWN0cyxcbiAgICBhZnRlclByZWZpeCxcbiAgICAnbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlJyxcbiAgICBzZWxmLnBhcnNlci5jb25zdHJ1Y3RzLmRpc2FibGUubnVsbC5pbmNsdWRlcygnY29kZUluZGVudGVkJylcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6IDQgKyAxXG4gIClcblxuICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICBmdW5jdGlvbiBhZnRlclByZWZpeChjb2RlKSB7XG4gICAgY29uc3QgdGFpbCA9IHNlbGYuZXZlbnRzW3NlbGYuZXZlbnRzLmxlbmd0aCAtIDFdXG4gICAgcmV0dXJuICFtYXJrZG93blNwYWNlKGNvZGUpICYmXG4gICAgICB0YWlsICYmXG4gICAgICB0YWlsWzFdLnR5cGUgPT09ICdsaXN0SXRlbVByZWZpeFdoaXRlc3BhY2UnXG4gICAgICA/IG9rKGNvZGUpXG4gICAgICA6IG5vayhjb2RlKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuUmVzb2x2ZXJ9IFJlc29sdmVyXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlN0YXRlfSBTdGF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZXJ9IFRva2VuaXplclxuICovXG5cbmltcG9ydCB7ZmFjdG9yeVNwYWNlfSBmcm9tICdtaWNyb21hcmstZmFjdG9yeS1zcGFjZSdcbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nLCBtYXJrZG93blNwYWNlfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG4vKiogQHR5cGUge0NvbnN0cnVjdH0gKi9cbmV4cG9ydCBjb25zdCBzZXRleHRVbmRlcmxpbmUgPSB7XG4gIG5hbWU6ICdzZXRleHRVbmRlcmxpbmUnLFxuICB0b2tlbml6ZTogdG9rZW5pemVTZXRleHRVbmRlcmxpbmUsXG4gIHJlc29sdmVUbzogcmVzb2x2ZVRvU2V0ZXh0VW5kZXJsaW5lXG59XG5cbi8qKiBAdHlwZSB7UmVzb2x2ZXJ9ICovXG5mdW5jdGlvbiByZXNvbHZlVG9TZXRleHRVbmRlcmxpbmUoZXZlbnRzLCBjb250ZXh0KSB7XG4gIC8vIFRvIGRvOiByZXNvbHZlIGxpa2UgYG1hcmtkb3duLXJzYC5cbiAgbGV0IGluZGV4ID0gZXZlbnRzLmxlbmd0aFxuICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgbGV0IGNvbnRlbnRcbiAgLyoqIEB0eXBlIHtudW1iZXIgfCB1bmRlZmluZWR9ICovXG4gIGxldCB0ZXh0XG4gIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgZGVmaW5pdGlvblxuXG4gIC8vIEZpbmQgdGhlIG9wZW5pbmcgb2YgdGhlIGNvbnRlbnQuXG4gIC8vIEl0XHUyMDE5bGwgYWx3YXlzIGV4aXN0OiB3ZSBkb25cdTIwMTl0IHRva2VuaXplIGlmIGl0IGlzblx1MjAxOXQgdGhlcmUuXG4gIHdoaWxlIChpbmRleC0tKSB7XG4gICAgaWYgKGV2ZW50c1tpbmRleF1bMF0gPT09ICdlbnRlcicpIHtcbiAgICAgIGlmIChldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdjb250ZW50Jykge1xuICAgICAgICBjb250ZW50ID0gaW5kZXhcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdwYXJhZ3JhcGgnKSB7XG4gICAgICAgIHRleHQgPSBpbmRleFxuICAgICAgfVxuICAgIH1cbiAgICAvLyBFeGl0XG4gICAgZWxzZSB7XG4gICAgICBpZiAoZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAnY29udGVudCcpIHtcbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBjb250ZW50IGVuZCAoaWYgbmVlZGVkIHdlXHUyMDE5bGwgYWRkIGl0IGxhdGVyKVxuICAgICAgICBldmVudHMuc3BsaWNlKGluZGV4LCAxKVxuICAgICAgfVxuICAgICAgaWYgKCFkZWZpbml0aW9uICYmIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2RlZmluaXRpb24nKSB7XG4gICAgICAgIGRlZmluaXRpb24gPSBpbmRleFxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBoZWFkaW5nID0ge1xuICAgIHR5cGU6ICdzZXRleHRIZWFkaW5nJyxcbiAgICBzdGFydDogT2JqZWN0LmFzc2lnbih7fSwgZXZlbnRzW3RleHRdWzFdLnN0YXJ0KSxcbiAgICBlbmQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tldmVudHMubGVuZ3RoIC0gMV1bMV0uZW5kKVxuICB9XG5cbiAgLy8gQ2hhbmdlIHRoZSBwYXJhZ3JhcGggdG8gc2V0ZXh0IGhlYWRpbmcgdGV4dC5cbiAgZXZlbnRzW3RleHRdWzFdLnR5cGUgPSAnc2V0ZXh0SGVhZGluZ1RleHQnXG5cbiAgLy8gSWYgd2UgaGF2ZSBkZWZpbml0aW9ucyBpbiB0aGUgY29udGVudCwgd2VcdTIwMTlsbCBrZWVwIG9uIGhhdmluZyBjb250ZW50LFxuICAvLyBidXQgd2UgbmVlZCBtb3ZlIGl0LlxuICBpZiAoZGVmaW5pdGlvbikge1xuICAgIGV2ZW50cy5zcGxpY2UodGV4dCwgMCwgWydlbnRlcicsIGhlYWRpbmcsIGNvbnRleHRdKVxuICAgIGV2ZW50cy5zcGxpY2UoZGVmaW5pdGlvbiArIDEsIDAsIFsnZXhpdCcsIGV2ZW50c1tjb250ZW50XVsxXSwgY29udGV4dF0pXG4gICAgZXZlbnRzW2NvbnRlbnRdWzFdLmVuZCA9IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50c1tkZWZpbml0aW9uXVsxXS5lbmQpXG4gIH0gZWxzZSB7XG4gICAgZXZlbnRzW2NvbnRlbnRdWzFdID0gaGVhZGluZ1xuICB9XG5cbiAgLy8gQWRkIHRoZSBoZWFkaW5nIGV4aXQgYXQgdGhlIGVuZC5cbiAgZXZlbnRzLnB1c2goWydleGl0JywgaGVhZGluZywgY29udGV4dF0pXG4gIHJldHVybiBldmVudHNcbn1cblxuLyoqXG4gKiBAdGhpcyB7VG9rZW5pemVDb250ZXh0fVxuICogQHR5cGUge1Rva2VuaXplcn1cbiAqL1xuZnVuY3Rpb24gdG9rZW5pemVTZXRleHRVbmRlcmxpbmUoZWZmZWN0cywgb2ssIG5vaykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuICAvKiogQHR5cGUge05vbk51bGxhYmxlPENvZGU+fSAqL1xuICBsZXQgbWFya2VyXG4gIHJldHVybiBzdGFydFxuXG4gIC8qKlxuICAgKiBBdCBzdGFydCBvZiBoZWFkaW5nIChzZXRleHQpIHVuZGVybGluZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IGFhXG4gICAqID4gfCA9PVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgIGxldCBpbmRleCA9IHNlbGYuZXZlbnRzLmxlbmd0aFxuICAgIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgcGFyYWdyYXBoXG4gICAgLy8gRmluZCBhbiBvcGVuaW5nLlxuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAvLyBTa2lwIGVudGVyL2V4aXQgb2YgbGluZSBlbmRpbmcsIGxpbmUgcHJlZml4LCBhbmQgY29udGVudC5cbiAgICAgIC8vIFdlIGNhbiBub3cgZWl0aGVyIGhhdmUgYSBkZWZpbml0aW9uIG9yIGEgcGFyYWdyYXBoLlxuICAgICAgaWYgKFxuICAgICAgICBzZWxmLmV2ZW50c1tpbmRleF1bMV0udHlwZSAhPT0gJ2xpbmVFbmRpbmcnICYmXG4gICAgICAgIHNlbGYuZXZlbnRzW2luZGV4XVsxXS50eXBlICE9PSAnbGluZVByZWZpeCcgJiZcbiAgICAgICAgc2VsZi5ldmVudHNbaW5kZXhdWzFdLnR5cGUgIT09ICdjb250ZW50J1xuICAgICAgKSB7XG4gICAgICAgIHBhcmFncmFwaCA9IHNlbGYuZXZlbnRzW2luZGV4XVsxXS50eXBlID09PSAncGFyYWdyYXBoJ1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRvIGRvOiBoYW5kbGUgbGF6eS9waWVyY2UgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIC8vIFRvIGRvOiBwYXJzZSBpbmRlbnQgbGlrZSBgbWFya2Rvd24tcnNgLlxuICAgIGlmICghc2VsZi5wYXJzZXIubGF6eVtzZWxmLm5vdygpLmxpbmVdICYmIChzZWxmLmludGVycnVwdCB8fCBwYXJhZ3JhcGgpKSB7XG4gICAgICBlZmZlY3RzLmVudGVyKCdzZXRleHRIZWFkaW5nTGluZScpXG4gICAgICBtYXJrZXIgPSBjb2RlXG4gICAgICByZXR1cm4gYmVmb3JlKGNvZGUpXG4gICAgfVxuICAgIHJldHVybiBub2soY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBvcHRpb25hbCB3aGl0ZXNwYWNlLCBhdCBgLWAgb3IgYD1gLlxuICAgKlxuICAgKiBgYGBtYXJrZG93blxuICAgKiAgIHwgYWFcbiAgICogPiB8ID09XG4gICAqICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBiZWZvcmUoY29kZSkge1xuICAgIGVmZmVjdHMuZW50ZXIoJ3NldGV4dEhlYWRpbmdMaW5lU2VxdWVuY2UnKVxuICAgIHJldHVybiBpbnNpZGUoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBJbiBzZXF1ZW5jZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IGFhXG4gICAqID4gfCA9PVxuICAgKiAgICAgXlxuICAgKiBgYGBcbiAgICpcbiAgICogQHR5cGUge1N0YXRlfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5zaWRlKGNvZGUpIHtcbiAgICBpZiAoY29kZSA9PT0gbWFya2VyKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVybiBpbnNpZGVcbiAgICB9XG4gICAgZWZmZWN0cy5leGl0KCdzZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlJylcbiAgICByZXR1cm4gbWFya2Rvd25TcGFjZShjb2RlKVxuICAgICAgPyBmYWN0b3J5U3BhY2UoZWZmZWN0cywgYWZ0ZXIsICdsaW5lU3VmZml4JykoY29kZSlcbiAgICAgIDogYWZ0ZXIoY29kZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZnRlciBzZXF1ZW5jZSwgYWZ0ZXIgb3B0aW9uYWwgd2hpdGVzcGFjZS5cbiAgICpcbiAgICogYGBgbWFya2Rvd25cbiAgICogICB8IGFhXG4gICAqID4gfCA9PVxuICAgKiAgICAgICBeXG4gICAqIGBgYFxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGV9XG4gICAqL1xuICBmdW5jdGlvbiBhZnRlcihjb2RlKSB7XG4gICAgaWYgKGNvZGUgPT09IG51bGwgfHwgbWFya2Rvd25MaW5lRW5kaW5nKGNvZGUpKSB7XG4gICAgICBlZmZlY3RzLmV4aXQoJ3NldGV4dEhlYWRpbmdMaW5lJylcbiAgICAgIHJldHVybiBvayhjb2RlKVxuICAgIH1cbiAgICByZXR1cm4gbm9rKGNvZGUpXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbENvbnN0cnVjdH0gSW5pdGlhbENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsaXplcn0gSW5pdGlhbGl6ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKi9cblxuaW1wb3J0IHtibGFua0xpbmUsIGNvbnRlbnR9IGZyb20gJ21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsnXG5pbXBvcnQge2ZhY3RvcnlTcGFjZX0gZnJvbSAnbWljcm9tYXJrLWZhY3Rvcnktc3BhY2UnXG5pbXBvcnQge21hcmtkb3duTGluZUVuZGluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2hhcmFjdGVyJ1xuLyoqIEB0eXBlIHtJbml0aWFsQ29uc3RydWN0fSAqL1xuZXhwb3J0IGNvbnN0IGZsb3cgPSB7XG4gIHRva2VuaXplOiBpbml0aWFsaXplRmxvd1xufVxuXG4vKipcbiAqIEB0aGlzIHtUb2tlbml6ZUNvbnRleHR9XG4gKiBAdHlwZSB7SW5pdGlhbGl6ZXJ9XG4gKi9cbmZ1bmN0aW9uIGluaXRpYWxpemVGbG93KGVmZmVjdHMpIHtcbiAgY29uc3Qgc2VsZiA9IHRoaXNcbiAgY29uc3QgaW5pdGlhbCA9IGVmZmVjdHMuYXR0ZW1wdChcbiAgICAvLyBUcnkgdG8gcGFyc2UgYSBibGFuayBsaW5lLlxuICAgIGJsYW5rTGluZSxcbiAgICBhdEJsYW5rRW5kaW5nLFxuICAgIC8vIFRyeSB0byBwYXJzZSBpbml0aWFsIGZsb3cgKGVzc2VudGlhbGx5LCBvbmx5IGNvZGUpLlxuICAgIGVmZmVjdHMuYXR0ZW1wdChcbiAgICAgIHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZmxvd0luaXRpYWwsXG4gICAgICBhZnRlckNvbnN0cnVjdCxcbiAgICAgIGZhY3RvcnlTcGFjZShcbiAgICAgICAgZWZmZWN0cyxcbiAgICAgICAgZWZmZWN0cy5hdHRlbXB0KFxuICAgICAgICAgIHRoaXMucGFyc2VyLmNvbnN0cnVjdHMuZmxvdyxcbiAgICAgICAgICBhZnRlckNvbnN0cnVjdCxcbiAgICAgICAgICBlZmZlY3RzLmF0dGVtcHQoY29udGVudCwgYWZ0ZXJDb25zdHJ1Y3QpXG4gICAgICAgICksXG4gICAgICAgICdsaW5lUHJlZml4J1xuICAgICAgKVxuICAgIClcbiAgKVxuICByZXR1cm4gaW5pdGlhbFxuXG4gIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gIGZ1bmN0aW9uIGF0QmxhbmtFbmRpbmcoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nQmxhbmsnKVxuICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgIGVmZmVjdHMuZXhpdCgnbGluZUVuZGluZ0JsYW5rJylcbiAgICBzZWxmLmN1cnJlbnRDb25zdHJ1Y3QgPSB1bmRlZmluZWRcbiAgICByZXR1cm4gaW5pdGlhbFxuICB9XG5cbiAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgZnVuY3Rpb24gYWZ0ZXJDb25zdHJ1Y3QoY29kZSkge1xuICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBlZmZlY3RzLmVudGVyKCdsaW5lRW5kaW5nJylcbiAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICBlZmZlY3RzLmV4aXQoJ2xpbmVFbmRpbmcnKVxuICAgIHNlbGYuY3VycmVudENvbnN0cnVjdCA9IHVuZGVmaW5lZFxuICAgIHJldHVybiBpbml0aWFsXG4gIH1cbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsQ29uc3RydWN0fSBJbml0aWFsQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkluaXRpYWxpemVyfSBJbml0aWFsaXplclxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5SZXNvbHZlcn0gUmVzb2x2ZXJcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuU3RhdGV9IFN0YXRlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKi9cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVyID0ge1xuICByZXNvbHZlQWxsOiBjcmVhdGVSZXNvbHZlcigpXG59XG5leHBvcnQgY29uc3Qgc3RyaW5nID0gaW5pdGlhbGl6ZUZhY3RvcnkoJ3N0cmluZycpXG5leHBvcnQgY29uc3QgdGV4dCA9IGluaXRpYWxpemVGYWN0b3J5KCd0ZXh0JylcblxuLyoqXG4gKiBAcGFyYW0geydzdHJpbmcnIHwgJ3RleHQnfSBmaWVsZFxuICogQHJldHVybnMge0luaXRpYWxDb25zdHJ1Y3R9XG4gKi9cbmZ1bmN0aW9uIGluaXRpYWxpemVGYWN0b3J5KGZpZWxkKSB7XG4gIHJldHVybiB7XG4gICAgdG9rZW5pemU6IGluaXRpYWxpemVUZXh0LFxuICAgIHJlc29sdmVBbGw6IGNyZWF0ZVJlc29sdmVyKFxuICAgICAgZmllbGQgPT09ICd0ZXh0JyA/IHJlc29sdmVBbGxMaW5lU3VmZml4ZXMgOiB1bmRlZmluZWRcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge1Rva2VuaXplQ29udGV4dH1cbiAgICogQHR5cGUge0luaXRpYWxpemVyfVxuICAgKi9cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZVRleHQoZWZmZWN0cykge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzXG4gICAgY29uc3QgY29uc3RydWN0cyA9IHRoaXMucGFyc2VyLmNvbnN0cnVjdHNbZmllbGRdXG4gICAgY29uc3QgdGV4dCA9IGVmZmVjdHMuYXR0ZW1wdChjb25zdHJ1Y3RzLCBzdGFydCwgbm90VGV4dClcbiAgICByZXR1cm4gc3RhcnRcblxuICAgIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gICAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgICAgcmV0dXJuIGF0QnJlYWsoY29kZSkgPyB0ZXh0KGNvZGUpIDogbm90VGV4dChjb2RlKVxuICAgIH1cblxuICAgIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gICAgZnVuY3Rpb24gbm90VGV4dChjb2RlKSB7XG4gICAgICBpZiAoY29kZSA9PT0gbnVsbCkge1xuICAgICAgICBlZmZlY3RzLmNvbnN1bWUoY29kZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBlZmZlY3RzLmVudGVyKCdkYXRhJylcbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGRhdGFcbiAgICB9XG5cbiAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgIGZ1bmN0aW9uIGRhdGEoY29kZSkge1xuICAgICAgaWYgKGF0QnJlYWsoY29kZSkpIHtcbiAgICAgICAgZWZmZWN0cy5leGl0KCdkYXRhJylcbiAgICAgICAgcmV0dXJuIHRleHQoY29kZSlcbiAgICAgIH1cblxuICAgICAgLy8gRGF0YS5cbiAgICAgIGVmZmVjdHMuY29uc3VtZShjb2RlKVxuICAgICAgcmV0dXJuIGRhdGFcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBhdEJyZWFrKGNvZGUpIHtcbiAgICAgIGlmIChjb2RlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgICBjb25zdCBsaXN0ID0gY29uc3RydWN0c1tjb2RlXVxuICAgICAgbGV0IGluZGV4ID0gLTFcbiAgICAgIGlmIChsaXN0KSB7XG4gICAgICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsaXN0Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGl0ZW0gPSBsaXN0W2luZGV4XVxuICAgICAgICAgIGlmICghaXRlbS5wcmV2aW91cyB8fCBpdGVtLnByZXZpb3VzLmNhbGwoc2VsZiwgc2VsZi5wcmV2aW91cykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge1Jlc29sdmVyIHwgdW5kZWZpbmVkfSBbZXh0cmFSZXNvbHZlcl1cbiAqIEByZXR1cm5zIHtSZXNvbHZlcn1cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUmVzb2x2ZXIoZXh0cmFSZXNvbHZlcikge1xuICByZXR1cm4gcmVzb2x2ZUFsbFRleHRcblxuICAvKiogQHR5cGUge1Jlc29sdmVyfSAqL1xuICBmdW5jdGlvbiByZXNvbHZlQWxsVGV4dChldmVudHMsIGNvbnRleHQpIHtcbiAgICBsZXQgaW5kZXggPSAtMVxuICAgIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICAgIGxldCBlbnRlclxuXG4gICAgLy8gQSByYXRoZXIgYm9yaW5nIGNvbXB1dGF0aW9uICh0byBtZXJnZSBhZGphY2VudCBgZGF0YWAgZXZlbnRzKSB3aGljaFxuICAgIC8vIGltcHJvdmVzIG1tIHBlcmZvcm1hbmNlIGJ5IDI5JS5cbiAgICB3aGlsZSAoKytpbmRleCA8PSBldmVudHMubGVuZ3RoKSB7XG4gICAgICBpZiAoZW50ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoZXZlbnRzW2luZGV4XSAmJiBldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdkYXRhJykge1xuICAgICAgICAgIGVudGVyID0gaW5kZXhcbiAgICAgICAgICBpbmRleCsrXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWV2ZW50c1tpbmRleF0gfHwgZXZlbnRzW2luZGV4XVsxXS50eXBlICE9PSAnZGF0YScpIHtcbiAgICAgICAgLy8gRG9uXHUyMDE5dCBkbyBhbnl0aGluZyBpZiB0aGVyZSBpcyBvbmUgZGF0YSB0b2tlbi5cbiAgICAgICAgaWYgKGluZGV4ICE9PSBlbnRlciArIDIpIHtcbiAgICAgICAgICBldmVudHNbZW50ZXJdWzFdLmVuZCA9IGV2ZW50c1tpbmRleCAtIDFdWzFdLmVuZFxuICAgICAgICAgIGV2ZW50cy5zcGxpY2UoZW50ZXIgKyAyLCBpbmRleCAtIGVudGVyIC0gMilcbiAgICAgICAgICBpbmRleCA9IGVudGVyICsgMlxuICAgICAgICB9XG4gICAgICAgIGVudGVyID0gdW5kZWZpbmVkXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBleHRyYVJlc29sdmVyID8gZXh0cmFSZXNvbHZlcihldmVudHMsIGNvbnRleHQpIDogZXZlbnRzXG4gIH1cbn1cblxuLyoqXG4gKiBBIHJhdGhlciB1Z2x5IHNldCBvZiBpbnN0cnVjdGlvbnMgd2hpY2ggYWdhaW4gbG9va3MgYXQgY2h1bmtzIGluIHRoZSBpbnB1dFxuICogc3RyZWFtLlxuICogVGhlIHJlYXNvbiB0byBkbyB0aGlzIGhlcmUgaXMgdGhhdCBpdCBpcyAqbXVjaCogZmFzdGVyIHRvIHBhcnNlIGluIHJldmVyc2UuXG4gKiBBbmQgdGhhdCB3ZSBjYW5cdTIwMTl0IGhvb2sgaW50byBgbnVsbGAgdG8gc3BsaXQgdGhlIGxpbmUgc3VmZml4IGJlZm9yZSBhbiBFT0YuXG4gKiBUbyBkbzogZmlndXJlIG91dCBpZiB3ZSBjYW4gbWFrZSB0aGlzIGludG8gYSBjbGVhbiB1dGlsaXR5LCBvciBldmVuIGluIGNvcmUuXG4gKiBBcyBpdCB3aWxsIGJlIHVzZWZ1bCBmb3IgR0ZNcyBsaXRlcmFsIGF1dG9saW5rIGV4dGVuc2lvbiAoYW5kIG1heWJlIGV2ZW5cbiAqIHRhYmxlcz8pXG4gKlxuICogQHR5cGUge1Jlc29sdmVyfVxuICovXG5mdW5jdGlvbiByZXNvbHZlQWxsTGluZVN1ZmZpeGVzKGV2ZW50cywgY29udGV4dCkge1xuICBsZXQgZXZlbnRJbmRleCA9IDAgLy8gU2tpcCBmaXJzdC5cblxuICB3aGlsZSAoKytldmVudEluZGV4IDw9IGV2ZW50cy5sZW5ndGgpIHtcbiAgICBpZiAoXG4gICAgICAoZXZlbnRJbmRleCA9PT0gZXZlbnRzLmxlbmd0aCB8fFxuICAgICAgICBldmVudHNbZXZlbnRJbmRleF1bMV0udHlwZSA9PT0gJ2xpbmVFbmRpbmcnKSAmJlxuICAgICAgZXZlbnRzW2V2ZW50SW5kZXggLSAxXVsxXS50eXBlID09PSAnZGF0YSdcbiAgICApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBldmVudHNbZXZlbnRJbmRleCAtIDFdWzFdXG4gICAgICBjb25zdCBjaHVua3MgPSBjb250ZXh0LnNsaWNlU3RyZWFtKGRhdGEpXG4gICAgICBsZXQgaW5kZXggPSBjaHVua3MubGVuZ3RoXG4gICAgICBsZXQgYnVmZmVySW5kZXggPSAtMVxuICAgICAgbGV0IHNpemUgPSAwXG4gICAgICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gICAgICBsZXQgdGFic1xuICAgICAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICAgICAgY29uc3QgY2h1bmsgPSBjaHVua3NbaW5kZXhdXG4gICAgICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgYnVmZmVySW5kZXggPSBjaHVuay5sZW5ndGhcbiAgICAgICAgICB3aGlsZSAoY2h1bmsuY2hhckNvZGVBdChidWZmZXJJbmRleCAtIDEpID09PSAzMikge1xuICAgICAgICAgICAgc2l6ZSsrXG4gICAgICAgICAgICBidWZmZXJJbmRleC0tXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChidWZmZXJJbmRleCkgYnJlYWtcbiAgICAgICAgICBidWZmZXJJbmRleCA9IC0xXG4gICAgICAgIH1cbiAgICAgICAgLy8gTnVtYmVyXG4gICAgICAgIGVsc2UgaWYgKGNodW5rID09PSAtMikge1xuICAgICAgICAgIHRhYnMgPSB0cnVlXG4gICAgICAgICAgc2l6ZSsrXG4gICAgICAgIH0gZWxzZSBpZiAoY2h1bmsgPT09IC0xKSB7XG4gICAgICAgICAgLy8gRW1wdHlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBSZXBsYWNlbWVudCBjaGFyYWN0ZXIsIGV4aXQuXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzaXplKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0ge1xuICAgICAgICAgIHR5cGU6XG4gICAgICAgICAgICBldmVudEluZGV4ID09PSBldmVudHMubGVuZ3RoIHx8IHRhYnMgfHwgc2l6ZSA8IDJcbiAgICAgICAgICAgICAgPyAnbGluZVN1ZmZpeCdcbiAgICAgICAgICAgICAgOiAnaGFyZEJyZWFrVHJhaWxpbmcnLFxuICAgICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgICBsaW5lOiBkYXRhLmVuZC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBkYXRhLmVuZC5jb2x1bW4gLSBzaXplLFxuICAgICAgICAgICAgb2Zmc2V0OiBkYXRhLmVuZC5vZmZzZXQgLSBzaXplLFxuICAgICAgICAgICAgX2luZGV4OiBkYXRhLnN0YXJ0Ll9pbmRleCArIGluZGV4LFxuICAgICAgICAgICAgX2J1ZmZlckluZGV4OiBpbmRleFxuICAgICAgICAgICAgICA/IGJ1ZmZlckluZGV4XG4gICAgICAgICAgICAgIDogZGF0YS5zdGFydC5fYnVmZmVySW5kZXggKyBidWZmZXJJbmRleFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZW5kOiBPYmplY3QuYXNzaWduKHt9LCBkYXRhLmVuZClcbiAgICAgICAgfVxuICAgICAgICBkYXRhLmVuZCA9IE9iamVjdC5hc3NpZ24oe30sIHRva2VuLnN0YXJ0KVxuICAgICAgICBpZiAoZGF0YS5zdGFydC5vZmZzZXQgPT09IGRhdGEuZW5kLm9mZnNldCkge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oZGF0YSwgdG9rZW4pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXZlbnRzLnNwbGljZShcbiAgICAgICAgICAgIGV2ZW50SW5kZXgsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgWydlbnRlcicsIHRva2VuLCBjb250ZXh0XSxcbiAgICAgICAgICAgIFsnZXhpdCcsIHRva2VuLCBjb250ZXh0XVxuICAgICAgICAgIClcbiAgICAgICAgICBldmVudEluZGV4ICs9IDJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZXZlbnRJbmRleCsrXG4gICAgfVxuICB9XG4gIHJldHVybiBldmVudHNcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ2h1bmt9IENodW5rXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0fSBDb25zdHJ1Y3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29uc3RydWN0UmVjb3JkfSBDb25zdHJ1Y3RSZWNvcmRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRWZmZWN0c30gRWZmZWN0c1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Jbml0aWFsQ29uc3RydWN0fSBJbml0aWFsQ29uc3RydWN0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBhcnNlQ29udGV4dH0gUGFyc2VDb250ZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBvaW50fSBQb2ludFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5TdGF0ZX0gU3RhdGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVG9rZW59IFRva2VuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuVHlwZX0gVG9rZW5UeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VuaXplQ29udGV4dH0gVG9rZW5pemVDb250ZXh0XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgUmVzdG9yZVxuICogQHJldHVybnMge3ZvaWR9XG4gKlxuICogQHR5cGVkZWYgSW5mb1xuICogQHByb3BlcnR5IHtSZXN0b3JlfSByZXN0b3JlXG4gKiBAcHJvcGVydHkge251bWJlcn0gZnJvbVxuICpcbiAqIEBjYWxsYmFjayBSZXR1cm5IYW5kbGVcbiAqICAgSGFuZGxlIGEgc3VjY2Vzc2Z1bCBydW4uXG4gKiBAcGFyYW0ge0NvbnN0cnVjdH0gY29uc3RydWN0XG4gKiBAcGFyYW0ge0luZm99IGluZm9cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5cbmltcG9ydCB7bWFya2Rvd25MaW5lRW5kaW5nfSBmcm9tICdtaWNyb21hcmstdXRpbC1jaGFyYWN0ZXInXG5pbXBvcnQge3B1c2gsIHNwbGljZX0gZnJvbSAnbWljcm9tYXJrLXV0aWwtY2h1bmtlZCdcbmltcG9ydCB7cmVzb2x2ZUFsbH0gZnJvbSAnbWljcm9tYXJrLXV0aWwtcmVzb2x2ZS1hbGwnXG4vKipcbiAqIENyZWF0ZSBhIHRva2VuaXplci5cbiAqIFRva2VuaXplcnMgZGVhbCB3aXRoIG9uZSB0eXBlIG9mIGRhdGEgKGUuZy4sIGNvbnRhaW5lcnMsIGZsb3csIHRleHQpLlxuICogVGhlIHBhcnNlciBpcyB0aGUgb2JqZWN0IGRlYWxpbmcgd2l0aCBpdCBhbGwuXG4gKiBgaW5pdGlhbGl6ZWAgd29ya3MgbGlrZSBvdGhlciBjb25zdHJ1Y3RzLCBleGNlcHQgdGhhdCBvbmx5IGl0cyBgdG9rZW5pemVgXG4gKiBmdW5jdGlvbiBpcyB1c2VkLCBpbiB3aGljaCBjYXNlIGl0IGRvZXNuXHUyMDE5dCByZWNlaXZlIGFuIGBva2Agb3IgYG5va2AuXG4gKiBgZnJvbWAgY2FuIGJlIGdpdmVuIHRvIHNldCB0aGUgcG9pbnQgYmVmb3JlIHRoZSBmaXJzdCBjaGFyYWN0ZXIsIGFsdGhvdWdoXG4gKiB3aGVuIGZ1cnRoZXIgbGluZXMgYXJlIGluZGVudGVkLCB0aGV5IG11c3QgYmUgc2V0IHdpdGggYGRlZmluZVNraXBgLlxuICpcbiAqIEBwYXJhbSB7UGFyc2VDb250ZXh0fSBwYXJzZXJcbiAqIEBwYXJhbSB7SW5pdGlhbENvbnN0cnVjdH0gaW5pdGlhbGl6ZVxuICogQHBhcmFtIHtPbWl0PFBvaW50LCAnX2J1ZmZlckluZGV4JyB8ICdfaW5kZXgnPiB8IHVuZGVmaW5lZH0gW2Zyb21dXG4gKiBAcmV0dXJucyB7VG9rZW5pemVDb250ZXh0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVG9rZW5pemVyKHBhcnNlciwgaW5pdGlhbGl6ZSwgZnJvbSkge1xuICAvKiogQHR5cGUge1BvaW50fSAqL1xuICBsZXQgcG9pbnQgPSBPYmplY3QuYXNzaWduKFxuICAgIGZyb21cbiAgICAgID8gT2JqZWN0LmFzc2lnbih7fSwgZnJvbSlcbiAgICAgIDoge1xuICAgICAgICAgIGxpbmU6IDEsXG4gICAgICAgICAgY29sdW1uOiAxLFxuICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICB9LFxuICAgIHtcbiAgICAgIF9pbmRleDogMCxcbiAgICAgIF9idWZmZXJJbmRleDogLTFcbiAgICB9XG4gIClcbiAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBudW1iZXI+fSAqL1xuICBjb25zdCBjb2x1bW5TdGFydCA9IHt9XG4gIC8qKiBAdHlwZSB7QXJyYXk8Q29uc3RydWN0Pn0gKi9cbiAgY29uc3QgcmVzb2x2ZUFsbENvbnN0cnVjdHMgPSBbXVxuICAvKiogQHR5cGUge0FycmF5PENodW5rPn0gKi9cbiAgbGV0IGNodW5rcyA9IFtdXG4gIC8qKiBAdHlwZSB7QXJyYXk8VG9rZW4+fSAqL1xuICBsZXQgc3RhY2sgPSBbXVxuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBjb25zdW1lZCA9IHRydWVcblxuICAvKipcbiAgICogVG9vbHMgdXNlZCBmb3IgdG9rZW5pemluZy5cbiAgICpcbiAgICogQHR5cGUge0VmZmVjdHN9XG4gICAqL1xuICBjb25zdCBlZmZlY3RzID0ge1xuICAgIGNvbnN1bWUsXG4gICAgZW50ZXIsXG4gICAgZXhpdCxcbiAgICBhdHRlbXB0OiBjb25zdHJ1Y3RGYWN0b3J5KG9uc3VjY2Vzc2Z1bGNvbnN0cnVjdCksXG4gICAgY2hlY2s6IGNvbnN0cnVjdEZhY3Rvcnkob25zdWNjZXNzZnVsY2hlY2spLFxuICAgIGludGVycnVwdDogY29uc3RydWN0RmFjdG9yeShvbnN1Y2Nlc3NmdWxjaGVjaywge1xuICAgICAgaW50ZXJydXB0OiB0cnVlXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0ZSBhbmQgdG9vbHMgZm9yIHJlc29sdmluZyBhbmQgc2VyaWFsaXppbmcuXG4gICAqXG4gICAqIEB0eXBlIHtUb2tlbml6ZUNvbnRleHR9XG4gICAqL1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIHByZXZpb3VzOiBudWxsLFxuICAgIGNvZGU6IG51bGwsXG4gICAgY29udGFpbmVyU3RhdGU6IHt9LFxuICAgIGV2ZW50czogW10sXG4gICAgcGFyc2VyLFxuICAgIHNsaWNlU3RyZWFtLFxuICAgIHNsaWNlU2VyaWFsaXplLFxuICAgIG5vdyxcbiAgICBkZWZpbmVTa2lwLFxuICAgIHdyaXRlXG4gIH1cblxuICAvKipcbiAgICogVGhlIHN0YXRlIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7U3RhdGUgfCB2b2lkfVxuICAgKi9cbiAgbGV0IHN0YXRlID0gaW5pdGlhbGl6ZS50b2tlbml6ZS5jYWxsKGNvbnRleHQsIGVmZmVjdHMpXG5cbiAgLyoqXG4gICAqIFRyYWNrIHdoaWNoIGNoYXJhY3RlciB3ZSBleHBlY3QgdG8gYmUgY29uc3VtZWQsIHRvIGNhdGNoIGJ1Z3MuXG4gICAqXG4gICAqIEB0eXBlIHtDb2RlfVxuICAgKi9cbiAgbGV0IGV4cGVjdGVkQ29kZVxuICBpZiAoaW5pdGlhbGl6ZS5yZXNvbHZlQWxsKSB7XG4gICAgcmVzb2x2ZUFsbENvbnN0cnVjdHMucHVzaChpbml0aWFsaXplKVxuICB9XG4gIHJldHVybiBjb250ZXh0XG5cbiAgLyoqIEB0eXBlIHtUb2tlbml6ZUNvbnRleHRbJ3dyaXRlJ119ICovXG4gIGZ1bmN0aW9uIHdyaXRlKHNsaWNlKSB7XG4gICAgY2h1bmtzID0gcHVzaChjaHVua3MsIHNsaWNlKVxuICAgIG1haW4oKVxuXG4gICAgLy8gRXhpdCBpZiB3ZVx1MjAxOXJlIG5vdCBkb25lLCByZXNvbHZlIG1pZ2h0IGNoYW5nZSBzdHVmZi5cbiAgICBpZiAoY2h1bmtzW2NodW5rcy5sZW5ndGggLSAxXSAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFtdXG4gICAgfVxuICAgIGFkZFJlc3VsdChpbml0aWFsaXplLCAwKVxuXG4gICAgLy8gT3RoZXJ3aXNlLCByZXNvbHZlLCBhbmQgZXhpdC5cbiAgICBjb250ZXh0LmV2ZW50cyA9IHJlc29sdmVBbGwocmVzb2x2ZUFsbENvbnN0cnVjdHMsIGNvbnRleHQuZXZlbnRzLCBjb250ZXh0KVxuICAgIHJldHVybiBjb250ZXh0LmV2ZW50c1xuICB9XG5cbiAgLy9cbiAgLy8gVG9vbHMuXG4gIC8vXG5cbiAgLyoqIEB0eXBlIHtUb2tlbml6ZUNvbnRleHRbJ3NsaWNlU2VyaWFsaXplJ119ICovXG4gIGZ1bmN0aW9uIHNsaWNlU2VyaWFsaXplKHRva2VuLCBleHBhbmRUYWJzKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZUNodW5rcyhzbGljZVN0cmVhbSh0b2tlbiksIGV4cGFuZFRhYnMpXG4gIH1cblxuICAvKiogQHR5cGUge1Rva2VuaXplQ29udGV4dFsnc2xpY2VTdHJlYW0nXX0gKi9cbiAgZnVuY3Rpb24gc2xpY2VTdHJlYW0odG9rZW4pIHtcbiAgICByZXR1cm4gc2xpY2VDaHVua3MoY2h1bmtzLCB0b2tlbilcbiAgfVxuXG4gIC8qKiBAdHlwZSB7VG9rZW5pemVDb250ZXh0Wydub3cnXX0gKi9cbiAgZnVuY3Rpb24gbm93KCkge1xuICAgIC8vIFRoaXMgaXMgYSBob3QgcGF0aCwgc28gd2UgY2xvbmUgbWFudWFsbHkgaW5zdGVhZCBvZiBgT2JqZWN0LmFzc2lnbih7fSwgcG9pbnQpYFxuICAgIGNvbnN0IHtsaW5lLCBjb2x1bW4sIG9mZnNldCwgX2luZGV4LCBfYnVmZmVySW5kZXh9ID0gcG9pbnRcbiAgICByZXR1cm4ge1xuICAgICAgbGluZSxcbiAgICAgIGNvbHVtbixcbiAgICAgIG9mZnNldCxcbiAgICAgIF9pbmRleCxcbiAgICAgIF9idWZmZXJJbmRleFxuICAgIH1cbiAgfVxuXG4gIC8qKiBAdHlwZSB7VG9rZW5pemVDb250ZXh0WydkZWZpbmVTa2lwJ119ICovXG4gIGZ1bmN0aW9uIGRlZmluZVNraXAodmFsdWUpIHtcbiAgICBjb2x1bW5TdGFydFt2YWx1ZS5saW5lXSA9IHZhbHVlLmNvbHVtblxuICAgIGFjY291bnRGb3JQb3RlbnRpYWxTa2lwKClcbiAgfVxuXG4gIC8vXG4gIC8vIFN0YXRlIG1hbmFnZW1lbnQuXG4gIC8vXG5cbiAgLyoqXG4gICAqIE1haW4gbG9vcCAobm90ZSB0aGF0IGBfaW5kZXhgIGFuZCBgX2J1ZmZlckluZGV4YCBpbiBgcG9pbnRgIGFyZSBtb2RpZmllZCBieVxuICAgKiBgY29uc3VtZWApLlxuICAgKiBIZXJlIGlzIHdoZXJlIHdlIHdhbGsgdGhyb3VnaCB0aGUgY2h1bmtzLCB3aGljaCBlaXRoZXIgaW5jbHVkZSBzdHJpbmdzIG9mXG4gICAqIHNldmVyYWwgY2hhcmFjdGVycywgb3IgbnVtZXJpY2FsIGNoYXJhY3RlciBjb2Rlcy5cbiAgICogVGhlIHJlYXNvbiB0byBkbyB0aGlzIGluIGEgbG9vcCBpbnN0ZWFkIG9mIGEgY2FsbCBpcyBzbyB0aGUgc3RhY2sgY2FuXG4gICAqIGRyYWluLlxuICAgKlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIG1haW4oKSB7XG4gICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gICAgbGV0IGNodW5rSW5kZXhcbiAgICB3aGlsZSAocG9pbnQuX2luZGV4IDwgY2h1bmtzLmxlbmd0aCkge1xuICAgICAgY29uc3QgY2h1bmsgPSBjaHVua3NbcG9pbnQuX2luZGV4XVxuXG4gICAgICAvLyBJZiB3ZVx1MjAxOXJlIGluIGEgYnVmZmVyIGNodW5rLCBsb29wIHRocm91Z2ggaXQuXG4gICAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgICAgICBjaHVua0luZGV4ID0gcG9pbnQuX2luZGV4XG4gICAgICAgIGlmIChwb2ludC5fYnVmZmVySW5kZXggPCAwKSB7XG4gICAgICAgICAgcG9pbnQuX2J1ZmZlckluZGV4ID0gMFxuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICBwb2ludC5faW5kZXggPT09IGNodW5rSW5kZXggJiZcbiAgICAgICAgICBwb2ludC5fYnVmZmVySW5kZXggPCBjaHVuay5sZW5ndGhcbiAgICAgICAgKSB7XG4gICAgICAgICAgZ28oY2h1bmsuY2hhckNvZGVBdChwb2ludC5fYnVmZmVySW5kZXgpKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnbyhjaHVuaylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVhbCB3aXRoIG9uZSBjb2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge0NvZGV9IGNvZGVcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiBnbyhjb2RlKSB7XG4gICAgY29uc3VtZWQgPSB1bmRlZmluZWRcbiAgICBleHBlY3RlZENvZGUgPSBjb2RlXG4gICAgc3RhdGUgPSBzdGF0ZShjb2RlKVxuICB9XG5cbiAgLyoqIEB0eXBlIHtFZmZlY3RzWydjb25zdW1lJ119ICovXG4gIGZ1bmN0aW9uIGNvbnN1bWUoY29kZSkge1xuICAgIGlmIChtYXJrZG93bkxpbmVFbmRpbmcoY29kZSkpIHtcbiAgICAgIHBvaW50LmxpbmUrK1xuICAgICAgcG9pbnQuY29sdW1uID0gMVxuICAgICAgcG9pbnQub2Zmc2V0ICs9IGNvZGUgPT09IC0zID8gMiA6IDFcbiAgICAgIGFjY291bnRGb3JQb3RlbnRpYWxTa2lwKClcbiAgICB9IGVsc2UgaWYgKGNvZGUgIT09IC0xKSB7XG4gICAgICBwb2ludC5jb2x1bW4rK1xuICAgICAgcG9pbnQub2Zmc2V0KytcbiAgICB9XG5cbiAgICAvLyBOb3QgaW4gYSBzdHJpbmcgY2h1bmsuXG4gICAgaWYgKHBvaW50Ll9idWZmZXJJbmRleCA8IDApIHtcbiAgICAgIHBvaW50Ll9pbmRleCsrXG4gICAgfSBlbHNlIHtcbiAgICAgIHBvaW50Ll9idWZmZXJJbmRleCsrXG5cbiAgICAgIC8vIEF0IGVuZCBvZiBzdHJpbmcgY2h1bmsuXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFBvaW50cyB3LyBub24tbmVnYXRpdmUgYF9idWZmZXJJbmRleGAgcmVmZXJlbmNlXG4gICAgICAvLyBzdHJpbmdzLlxuICAgICAgaWYgKHBvaW50Ll9idWZmZXJJbmRleCA9PT0gY2h1bmtzW3BvaW50Ll9pbmRleF0ubGVuZ3RoKSB7XG4gICAgICAgIHBvaW50Ll9idWZmZXJJbmRleCA9IC0xXG4gICAgICAgIHBvaW50Ll9pbmRleCsrXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRXhwb3NlIHRoZSBwcmV2aW91cyBjaGFyYWN0ZXIuXG4gICAgY29udGV4dC5wcmV2aW91cyA9IGNvZGVcblxuICAgIC8vIE1hcmsgYXMgY29uc3VtZWQuXG4gICAgY29uc3VtZWQgPSB0cnVlXG4gIH1cblxuICAvKiogQHR5cGUge0VmZmVjdHNbJ2VudGVyJ119ICovXG4gIGZ1bmN0aW9uIGVudGVyKHR5cGUsIGZpZWxkcykge1xuICAgIC8qKiBAdHlwZSB7VG9rZW59ICovXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBQYXRjaCBpbnN0ZWFkIG9mIGFzc2lnbiByZXF1aXJlZCBmaWVsZHMgdG8gaGVscCBHQy5cbiAgICBjb25zdCB0b2tlbiA9IGZpZWxkcyB8fCB7fVxuICAgIHRva2VuLnR5cGUgPSB0eXBlXG4gICAgdG9rZW4uc3RhcnQgPSBub3coKVxuICAgIGNvbnRleHQuZXZlbnRzLnB1c2goWydlbnRlcicsIHRva2VuLCBjb250ZXh0XSlcbiAgICBzdGFjay5wdXNoKHRva2VuKVxuICAgIHJldHVybiB0b2tlblxuICB9XG5cbiAgLyoqIEB0eXBlIHtFZmZlY3RzWydleGl0J119ICovXG4gIGZ1bmN0aW9uIGV4aXQodHlwZSkge1xuICAgIGNvbnN0IHRva2VuID0gc3RhY2sucG9wKClcbiAgICB0b2tlbi5lbmQgPSBub3coKVxuICAgIGNvbnRleHQuZXZlbnRzLnB1c2goWydleGl0JywgdG9rZW4sIGNvbnRleHRdKVxuICAgIHJldHVybiB0b2tlblxuICB9XG5cbiAgLyoqXG4gICAqIFVzZSByZXN1bHRzLlxuICAgKlxuICAgKiBAdHlwZSB7UmV0dXJuSGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25zdWNjZXNzZnVsY29uc3RydWN0KGNvbnN0cnVjdCwgaW5mbykge1xuICAgIGFkZFJlc3VsdChjb25zdHJ1Y3QsIGluZm8uZnJvbSlcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNjYXJkIHJlc3VsdHMuXG4gICAqXG4gICAqIEB0eXBlIHtSZXR1cm5IYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbnN1Y2Nlc3NmdWxjaGVjayhfLCBpbmZvKSB7XG4gICAgaW5mby5yZXN0b3JlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IHRvIGF0dGVtcHQvY2hlY2svaW50ZXJydXB0LlxuICAgKlxuICAgKiBAcGFyYW0ge1JldHVybkhhbmRsZX0gb25yZXR1cm5cbiAgICogQHBhcmFtIHt7aW50ZXJydXB0PzogYm9vbGVhbiB8IHVuZGVmaW5lZH0gfCB1bmRlZmluZWR9IFtmaWVsZHNdXG4gICAqL1xuICBmdW5jdGlvbiBjb25zdHJ1Y3RGYWN0b3J5KG9ucmV0dXJuLCBmaWVsZHMpIHtcbiAgICByZXR1cm4gaG9va1xuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIGVpdGhlciBhbiBvYmplY3QgbWFwcGluZyBjb2RlcyB0byBjb25zdHJ1Y3RzLCBhIGxpc3Qgb2ZcbiAgICAgKiBjb25zdHJ1Y3RzLCBvciBhIHNpbmdsZSBjb25zdHJ1Y3QuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0FycmF5PENvbnN0cnVjdD4gfCBDb25zdHJ1Y3QgfCBDb25zdHJ1Y3RSZWNvcmR9IGNvbnN0cnVjdHNcbiAgICAgKiBAcGFyYW0ge1N0YXRlfSByZXR1cm5TdGF0ZVxuICAgICAqIEBwYXJhbSB7U3RhdGUgfCB1bmRlZmluZWR9IFtib2d1c1N0YXRlXVxuICAgICAqIEByZXR1cm5zIHtTdGF0ZX1cbiAgICAgKi9cbiAgICBmdW5jdGlvbiBob29rKGNvbnN0cnVjdHMsIHJldHVyblN0YXRlLCBib2d1c1N0YXRlKSB7XG4gICAgICAvKiogQHR5cGUge0FycmF5PENvbnN0cnVjdD59ICovXG4gICAgICBsZXQgbGlzdE9mQ29uc3RydWN0c1xuICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gICAgICBsZXQgY29uc3RydWN0SW5kZXhcbiAgICAgIC8qKiBAdHlwZSB7Q29uc3RydWN0fSAqL1xuICAgICAgbGV0IGN1cnJlbnRDb25zdHJ1Y3RcbiAgICAgIC8qKiBAdHlwZSB7SW5mb30gKi9cbiAgICAgIGxldCBpbmZvXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjb25zdHJ1Y3RzKSAvKiBjOCBpZ25vcmUgbmV4dCAxICovXG4gICAgICAgID8gaGFuZGxlTGlzdE9mQ29uc3RydWN0cyhjb25zdHJ1Y3RzKVxuICAgICAgICA6ICd0b2tlbml6ZScgaW4gY29uc3RydWN0c1xuICAgICAgICA/IC8vIEB0cy1leHBlY3QtZXJyb3IgTG9va3MgbGlrZSBhIGNvbnN0cnVjdC5cbiAgICAgICAgICBoYW5kbGVMaXN0T2ZDb25zdHJ1Y3RzKFtjb25zdHJ1Y3RzXSlcbiAgICAgICAgOiBoYW5kbGVNYXBPZkNvbnN0cnVjdHMoY29uc3RydWN0cylcblxuICAgICAgLyoqXG4gICAgICAgKiBIYW5kbGUgYSBsaXN0IG9mIGNvbnN0cnVjdC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge0NvbnN0cnVjdFJlY29yZH0gbWFwXG4gICAgICAgKiBAcmV0dXJucyB7U3RhdGV9XG4gICAgICAgKi9cbiAgICAgIGZ1bmN0aW9uIGhhbmRsZU1hcE9mQ29uc3RydWN0cyhtYXApIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0XG5cbiAgICAgICAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgICAgICAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgICAgICAgIGNvbnN0IGRlZiA9IGNvZGUgIT09IG51bGwgJiYgbWFwW2NvZGVdXG4gICAgICAgICAgY29uc3QgYWxsID0gY29kZSAhPT0gbnVsbCAmJiBtYXAubnVsbFxuICAgICAgICAgIGNvbnN0IGxpc3QgPSBbXG4gICAgICAgICAgICAvLyBUbyBkbzogYWRkIG1vcmUgZXh0ZW5zaW9uIHRlc3RzLlxuICAgICAgICAgICAgLyogYzggaWdub3JlIG5leHQgMiAqL1xuICAgICAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkoZGVmKSA/IGRlZiA6IGRlZiA/IFtkZWZdIDogW10pLFxuICAgICAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkoYWxsKSA/IGFsbCA6IGFsbCA/IFthbGxdIDogW10pXG4gICAgICAgICAgXVxuICAgICAgICAgIHJldHVybiBoYW5kbGVMaXN0T2ZDb25zdHJ1Y3RzKGxpc3QpKGNvZGUpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBIYW5kbGUgYSBsaXN0IG9mIGNvbnN0cnVjdC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge0FycmF5PENvbnN0cnVjdD59IGxpc3RcbiAgICAgICAqIEByZXR1cm5zIHtTdGF0ZX1cbiAgICAgICAqL1xuICAgICAgZnVuY3Rpb24gaGFuZGxlTGlzdE9mQ29uc3RydWN0cyhsaXN0KSB7XG4gICAgICAgIGxpc3RPZkNvbnN0cnVjdHMgPSBsaXN0XG4gICAgICAgIGNvbnN0cnVjdEluZGV4ID0gMFxuICAgICAgICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gYm9ndXNTdGF0ZVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYW5kbGVDb25zdHJ1Y3QobGlzdFtjb25zdHJ1Y3RJbmRleF0pXG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogSGFuZGxlIGEgc2luZ2xlIGNvbnN0cnVjdC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge0NvbnN0cnVjdH0gY29uc3RydWN0XG4gICAgICAgKiBAcmV0dXJucyB7U3RhdGV9XG4gICAgICAgKi9cbiAgICAgIGZ1bmN0aW9uIGhhbmRsZUNvbnN0cnVjdChjb25zdHJ1Y3QpIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0XG5cbiAgICAgICAgLyoqIEB0eXBlIHtTdGF0ZX0gKi9cbiAgICAgICAgZnVuY3Rpb24gc3RhcnQoY29kZSkge1xuICAgICAgICAgIC8vIFRvIGRvOiBub3QgbmVlZGVkIHRvIHN0b3JlIGlmIHRoZXJlIGlzIG5vIGJvZ3VzIHN0YXRlLCBwcm9iYWJseT9cbiAgICAgICAgICAvLyBDdXJyZW50bHkgZG9lc25cdTIwMTl0IHdvcmsgYmVjYXVzZSBgaW5zcGVjdGAgaW4gZG9jdW1lbnQgZG9lcyBhIGNoZWNrXG4gICAgICAgICAgLy8gdy9vIGEgYm9ndXMsIHdoaWNoIGRvZXNuXHUyMDE5dCBtYWtlIHNlbnNlLiBCdXQgaXQgZG9lcyBzZWVtIHRvIGhlbHAgcGVyZlxuICAgICAgICAgIC8vIGJ5IG5vdCBzdG9yaW5nLlxuICAgICAgICAgIGluZm8gPSBzdG9yZSgpXG4gICAgICAgICAgY3VycmVudENvbnN0cnVjdCA9IGNvbnN0cnVjdFxuICAgICAgICAgIGlmICghY29uc3RydWN0LnBhcnRpYWwpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY3VycmVudENvbnN0cnVjdCA9IGNvbnN0cnVjdFxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEFsd2F5cyBwb3B1bGF0ZWQgYnkgZGVmYXVsdHMuXG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjb25zdHJ1Y3QubmFtZSAmJlxuICAgICAgICAgICAgY29udGV4dC5wYXJzZXIuY29uc3RydWN0cy5kaXNhYmxlLm51bGwuaW5jbHVkZXMoY29uc3RydWN0Lm5hbWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9rKGNvZGUpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3QudG9rZW5pemUuY2FsbChcbiAgICAgICAgICAgIC8vIElmIHdlIGRvIGhhdmUgZmllbGRzLCBjcmVhdGUgYW4gb2JqZWN0IHcvIGBjb250ZXh0YCBhcyBpdHNcbiAgICAgICAgICAgIC8vIHByb3RvdHlwZS5cbiAgICAgICAgICAgIC8vIFRoaXMgYWxsb3dzIGEgXHUyMDFDbGl2ZSBiaW5kaW5nXHUyMDFELCB3aGljaCBpcyBuZWVkZWQgZm9yIGBpbnRlcnJ1cHRgLlxuICAgICAgICAgICAgZmllbGRzID8gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGNvbnRleHQpLCBmaWVsZHMpIDogY29udGV4dCxcbiAgICAgICAgICAgIGVmZmVjdHMsXG4gICAgICAgICAgICBvayxcbiAgICAgICAgICAgIG5va1xuICAgICAgICAgICkoY29kZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKiogQHR5cGUge1N0YXRlfSAqL1xuICAgICAgZnVuY3Rpb24gb2soY29kZSkge1xuICAgICAgICBjb25zdW1lZCA9IHRydWVcbiAgICAgICAgb25yZXR1cm4oY3VycmVudENvbnN0cnVjdCwgaW5mbylcbiAgICAgICAgcmV0dXJuIHJldHVyblN0YXRlXG4gICAgICB9XG5cbiAgICAgIC8qKiBAdHlwZSB7U3RhdGV9ICovXG4gICAgICBmdW5jdGlvbiBub2soY29kZSkge1xuICAgICAgICBjb25zdW1lZCA9IHRydWVcbiAgICAgICAgaW5mby5yZXN0b3JlKClcbiAgICAgICAgaWYgKCsrY29uc3RydWN0SW5kZXggPCBsaXN0T2ZDb25zdHJ1Y3RzLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVDb25zdHJ1Y3QobGlzdE9mQ29uc3RydWN0c1tjb25zdHJ1Y3RJbmRleF0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJvZ3VzU3RhdGVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtDb25zdHJ1Y3R9IGNvbnN0cnVjdFxuICAgKiBAcGFyYW0ge251bWJlcn0gZnJvbVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIGFkZFJlc3VsdChjb25zdHJ1Y3QsIGZyb20pIHtcbiAgICBpZiAoY29uc3RydWN0LnJlc29sdmVBbGwgJiYgIXJlc29sdmVBbGxDb25zdHJ1Y3RzLmluY2x1ZGVzKGNvbnN0cnVjdCkpIHtcbiAgICAgIHJlc29sdmVBbGxDb25zdHJ1Y3RzLnB1c2goY29uc3RydWN0KVxuICAgIH1cbiAgICBpZiAoY29uc3RydWN0LnJlc29sdmUpIHtcbiAgICAgIHNwbGljZShcbiAgICAgICAgY29udGV4dC5ldmVudHMsXG4gICAgICAgIGZyb20sXG4gICAgICAgIGNvbnRleHQuZXZlbnRzLmxlbmd0aCAtIGZyb20sXG4gICAgICAgIGNvbnN0cnVjdC5yZXNvbHZlKGNvbnRleHQuZXZlbnRzLnNsaWNlKGZyb20pLCBjb250ZXh0KVxuICAgICAgKVxuICAgIH1cbiAgICBpZiAoY29uc3RydWN0LnJlc29sdmVUbykge1xuICAgICAgY29udGV4dC5ldmVudHMgPSBjb25zdHJ1Y3QucmVzb2x2ZVRvKGNvbnRleHQuZXZlbnRzLCBjb250ZXh0KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSBzdGF0ZS5cbiAgICpcbiAgICogQHJldHVybnMge0luZm99XG4gICAqL1xuICBmdW5jdGlvbiBzdG9yZSgpIHtcbiAgICBjb25zdCBzdGFydFBvaW50ID0gbm93KClcbiAgICBjb25zdCBzdGFydFByZXZpb3VzID0gY29udGV4dC5wcmV2aW91c1xuICAgIGNvbnN0IHN0YXJ0Q3VycmVudENvbnN0cnVjdCA9IGNvbnRleHQuY3VycmVudENvbnN0cnVjdFxuICAgIGNvbnN0IHN0YXJ0RXZlbnRzSW5kZXggPSBjb250ZXh0LmV2ZW50cy5sZW5ndGhcbiAgICBjb25zdCBzdGFydFN0YWNrID0gQXJyYXkuZnJvbShzdGFjaylcbiAgICByZXR1cm4ge1xuICAgICAgcmVzdG9yZSxcbiAgICAgIGZyb206IHN0YXJ0RXZlbnRzSW5kZXhcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXN0b3JlIHN0YXRlLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gcmVzdG9yZSgpIHtcbiAgICAgIHBvaW50ID0gc3RhcnRQb2ludFxuICAgICAgY29udGV4dC5wcmV2aW91cyA9IHN0YXJ0UHJldmlvdXNcbiAgICAgIGNvbnRleHQuY3VycmVudENvbnN0cnVjdCA9IHN0YXJ0Q3VycmVudENvbnN0cnVjdFxuICAgICAgY29udGV4dC5ldmVudHMubGVuZ3RoID0gc3RhcnRFdmVudHNJbmRleFxuICAgICAgc3RhY2sgPSBzdGFydFN0YWNrXG4gICAgICBhY2NvdW50Rm9yUG90ZW50aWFsU2tpcCgpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdGhlIGN1cnJlbnQgcG9pbnQgYSBiaXQgZm9yd2FyZCBpbiB0aGUgbGluZSB3aGVuIGl0XHUyMDE5cyBvbiBhIGNvbHVtblxuICAgKiBza2lwLlxuICAgKlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGZ1bmN0aW9uIGFjY291bnRGb3JQb3RlbnRpYWxTa2lwKCkge1xuICAgIGlmIChwb2ludC5saW5lIGluIGNvbHVtblN0YXJ0ICYmIHBvaW50LmNvbHVtbiA8IDIpIHtcbiAgICAgIHBvaW50LmNvbHVtbiA9IGNvbHVtblN0YXJ0W3BvaW50LmxpbmVdXG4gICAgICBwb2ludC5vZmZzZXQgKz0gY29sdW1uU3RhcnRbcG9pbnQubGluZV0gLSAxXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBjaHVua3MgZnJvbSBhIHNsaWNlIG9mIGNodW5rcyBpbiB0aGUgcmFuZ2Ugb2YgYSB0b2tlbi5cbiAqXG4gKiBAcGFyYW0ge0FycmF5PENodW5rPn0gY2h1bmtzXG4gKiBAcGFyYW0ge1BpY2s8VG9rZW4sICdlbmQnIHwgJ3N0YXJ0Jz59IHRva2VuXG4gKiBAcmV0dXJucyB7QXJyYXk8Q2h1bms+fVxuICovXG5mdW5jdGlvbiBzbGljZUNodW5rcyhjaHVua3MsIHRva2VuKSB7XG4gIGNvbnN0IHN0YXJ0SW5kZXggPSB0b2tlbi5zdGFydC5faW5kZXhcbiAgY29uc3Qgc3RhcnRCdWZmZXJJbmRleCA9IHRva2VuLnN0YXJ0Ll9idWZmZXJJbmRleFxuICBjb25zdCBlbmRJbmRleCA9IHRva2VuLmVuZC5faW5kZXhcbiAgY29uc3QgZW5kQnVmZmVySW5kZXggPSB0b2tlbi5lbmQuX2J1ZmZlckluZGV4XG4gIC8qKiBAdHlwZSB7QXJyYXk8Q2h1bms+fSAqL1xuICBsZXQgdmlld1xuICBpZiAoc3RhcnRJbmRleCA9PT0gZW5kSW5kZXgpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBfYnVmZmVySW5kZXhgIGlzIHVzZWQgb24gc3RyaW5nIGNodW5rcy5cbiAgICB2aWV3ID0gW2NodW5rc1tzdGFydEluZGV4XS5zbGljZShzdGFydEJ1ZmZlckluZGV4LCBlbmRCdWZmZXJJbmRleCldXG4gIH0gZWxzZSB7XG4gICAgdmlldyA9IGNodW5rcy5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleClcbiAgICBpZiAoc3RhcnRCdWZmZXJJbmRleCA+IC0xKSB7XG4gICAgICBjb25zdCBoZWFkID0gdmlld1swXVxuICAgICAgaWYgKHR5cGVvZiBoZWFkID09PSAnc3RyaW5nJykge1xuICAgICAgICB2aWV3WzBdID0gaGVhZC5zbGljZShzdGFydEJ1ZmZlckluZGV4KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmlldy5zaGlmdCgpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlbmRCdWZmZXJJbmRleCA+IDApIHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYF9idWZmZXJJbmRleGAgaXMgdXNlZCBvbiBzdHJpbmcgY2h1bmtzLlxuICAgICAgdmlldy5wdXNoKGNodW5rc1tlbmRJbmRleF0uc2xpY2UoMCwgZW5kQnVmZmVySW5kZXgpKVxuICAgIH1cbiAgfVxuICByZXR1cm4gdmlld1xufVxuXG4vKipcbiAqIEdldCB0aGUgc3RyaW5nIHZhbHVlIG9mIGEgc2xpY2Ugb2YgY2h1bmtzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8Q2h1bms+fSBjaHVua3NcbiAqIEBwYXJhbSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gW2V4cGFuZFRhYnM9ZmFsc2VdXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBzZXJpYWxpemVDaHVua3MoY2h1bmtzLCBleHBhbmRUYWJzKSB7XG4gIGxldCBpbmRleCA9IC0xXG4gIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi9cbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgYXRUYWJcbiAgd2hpbGUgKCsraW5kZXggPCBjaHVua3MubGVuZ3RoKSB7XG4gICAgY29uc3QgY2h1bmsgPSBjaHVua3NbaW5kZXhdXG4gICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gICAgbGV0IHZhbHVlXG4gICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlID0gY2h1bmtcbiAgICB9IGVsc2VcbiAgICAgIHN3aXRjaCAoY2h1bmspIHtcbiAgICAgICAgY2FzZSAtNToge1xuICAgICAgICAgIHZhbHVlID0gJ1xccidcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgLTQ6IHtcbiAgICAgICAgICB2YWx1ZSA9ICdcXG4nXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIC0zOiB7XG4gICAgICAgICAgdmFsdWUgPSAnXFxyJyArICdcXG4nXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIC0yOiB7XG4gICAgICAgICAgdmFsdWUgPSBleHBhbmRUYWJzID8gJyAnIDogJ1xcdCdcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgLTE6IHtcbiAgICAgICAgICBpZiAoIWV4cGFuZFRhYnMgJiYgYXRUYWIpIGNvbnRpbnVlXG4gICAgICAgICAgdmFsdWUgPSAnICdcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAvLyBDdXJyZW50bHkgb25seSByZXBsYWNlbWVudCBjaGFyYWN0ZXIuXG4gICAgICAgICAgdmFsdWUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNodW5rKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgYXRUYWIgPSBjaHVuayA9PT0gLTJcbiAgICByZXN1bHQucHVzaCh2YWx1ZSlcbiAgfVxuICByZXR1cm4gcmVzdWx0LmpvaW4oJycpXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLkV4dGVuc2lvbn0gRXh0ZW5zaW9uXG4gKi9cblxuaW1wb3J0IHtcbiAgYXR0ZW50aW9uLFxuICBhdXRvbGluayxcbiAgYmxvY2tRdW90ZSxcbiAgY2hhcmFjdGVyRXNjYXBlLFxuICBjaGFyYWN0ZXJSZWZlcmVuY2UsXG4gIGNvZGVGZW5jZWQsXG4gIGNvZGVJbmRlbnRlZCxcbiAgY29kZVRleHQsXG4gIGRlZmluaXRpb24sXG4gIGhhcmRCcmVha0VzY2FwZSxcbiAgaGVhZGluZ0F0eCxcbiAgaHRtbEZsb3csXG4gIGh0bWxUZXh0LFxuICBsYWJlbEVuZCxcbiAgbGFiZWxTdGFydEltYWdlLFxuICBsYWJlbFN0YXJ0TGluayxcbiAgbGluZUVuZGluZyxcbiAgbGlzdCxcbiAgc2V0ZXh0VW5kZXJsaW5lLFxuICB0aGVtYXRpY0JyZWFrXG59IGZyb20gJ21pY3JvbWFyay1jb3JlLWNvbW1vbm1hcmsnXG5pbXBvcnQge3Jlc29sdmVyIGFzIHJlc29sdmVUZXh0fSBmcm9tICcuL2luaXRpYWxpemUvdGV4dC5qcydcblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnZG9jdW1lbnQnXX0gKi9cbmV4cG9ydCBjb25zdCBkb2N1bWVudCA9IHtcbiAgWzQyXTogbGlzdCxcbiAgWzQzXTogbGlzdCxcbiAgWzQ1XTogbGlzdCxcbiAgWzQ4XTogbGlzdCxcbiAgWzQ5XTogbGlzdCxcbiAgWzUwXTogbGlzdCxcbiAgWzUxXTogbGlzdCxcbiAgWzUyXTogbGlzdCxcbiAgWzUzXTogbGlzdCxcbiAgWzU0XTogbGlzdCxcbiAgWzU1XTogbGlzdCxcbiAgWzU2XTogbGlzdCxcbiAgWzU3XTogbGlzdCxcbiAgWzYyXTogYmxvY2tRdW90ZVxufVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydjb250ZW50SW5pdGlhbCddfSAqL1xuZXhwb3J0IGNvbnN0IGNvbnRlbnRJbml0aWFsID0ge1xuICBbOTFdOiBkZWZpbml0aW9uXG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ2Zsb3dJbml0aWFsJ119ICovXG5leHBvcnQgY29uc3QgZmxvd0luaXRpYWwgPSB7XG4gIFstMl06IGNvZGVJbmRlbnRlZCxcbiAgWy0xXTogY29kZUluZGVudGVkLFxuICBbMzJdOiBjb2RlSW5kZW50ZWRcbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnZmxvdyddfSAqL1xuZXhwb3J0IGNvbnN0IGZsb3cgPSB7XG4gIFszNV06IGhlYWRpbmdBdHgsXG4gIFs0Ml06IHRoZW1hdGljQnJlYWssXG4gIFs0NV06IFtzZXRleHRVbmRlcmxpbmUsIHRoZW1hdGljQnJlYWtdLFxuICBbNjBdOiBodG1sRmxvdyxcbiAgWzYxXTogc2V0ZXh0VW5kZXJsaW5lLFxuICBbOTVdOiB0aGVtYXRpY0JyZWFrLFxuICBbOTZdOiBjb2RlRmVuY2VkLFxuICBbMTI2XTogY29kZUZlbmNlZFxufVxuXG4vKiogQHNhdGlzZmllcyB7RXh0ZW5zaW9uWydzdHJpbmcnXX0gKi9cbmV4cG9ydCBjb25zdCBzdHJpbmcgPSB7XG4gIFszOF06IGNoYXJhY3RlclJlZmVyZW5jZSxcbiAgWzkyXTogY2hhcmFjdGVyRXNjYXBlXG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ3RleHQnXX0gKi9cbmV4cG9ydCBjb25zdCB0ZXh0ID0ge1xuICBbLTVdOiBsaW5lRW5kaW5nLFxuICBbLTRdOiBsaW5lRW5kaW5nLFxuICBbLTNdOiBsaW5lRW5kaW5nLFxuICBbMzNdOiBsYWJlbFN0YXJ0SW1hZ2UsXG4gIFszOF06IGNoYXJhY3RlclJlZmVyZW5jZSxcbiAgWzQyXTogYXR0ZW50aW9uLFxuICBbNjBdOiBbYXV0b2xpbmssIGh0bWxUZXh0XSxcbiAgWzkxXTogbGFiZWxTdGFydExpbmssXG4gIFs5Ml06IFtoYXJkQnJlYWtFc2NhcGUsIGNoYXJhY3RlckVzY2FwZV0sXG4gIFs5M106IGxhYmVsRW5kLFxuICBbOTVdOiBhdHRlbnRpb24sXG4gIFs5Nl06IGNvZGVUZXh0XG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ2luc2lkZVNwYW4nXX0gKi9cbmV4cG9ydCBjb25zdCBpbnNpZGVTcGFuID0ge1xuICBudWxsOiBbYXR0ZW50aW9uLCByZXNvbHZlVGV4dF1cbn1cblxuLyoqIEBzYXRpc2ZpZXMge0V4dGVuc2lvblsnYXR0ZW50aW9uTWFya2VycyddfSAqL1xuZXhwb3J0IGNvbnN0IGF0dGVudGlvbk1hcmtlcnMgPSB7XG4gIG51bGw6IFs0MiwgOTVdXG59XG5cbi8qKiBAc2F0aXNmaWVzIHtFeHRlbnNpb25bJ2Rpc2FibGUnXX0gKi9cbmV4cG9ydCBjb25zdCBkaXNhYmxlID0ge1xuICBudWxsOiBbXVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5DcmVhdGV9IENyZWF0ZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5GdWxsTm9ybWFsaXplZEV4dGVuc2lvbn0gRnVsbE5vcm1hbGl6ZWRFeHRlbnNpb25cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuSW5pdGlhbENvbnN0cnVjdH0gSW5pdGlhbENvbnN0cnVjdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5QYXJzZUNvbnRleHR9IFBhcnNlQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5QYXJzZU9wdGlvbnN9IFBhcnNlT3B0aW9uc1xuICovXG5cbmltcG9ydCB7Y29tYmluZUV4dGVuc2lvbnN9IGZyb20gJ21pY3JvbWFyay11dGlsLWNvbWJpbmUtZXh0ZW5zaW9ucydcbmltcG9ydCB7Y29udGVudH0gZnJvbSAnLi9pbml0aWFsaXplL2NvbnRlbnQuanMnXG5pbXBvcnQge2RvY3VtZW50fSBmcm9tICcuL2luaXRpYWxpemUvZG9jdW1lbnQuanMnXG5pbXBvcnQge2Zsb3d9IGZyb20gJy4vaW5pdGlhbGl6ZS9mbG93LmpzJ1xuaW1wb3J0IHt0ZXh0LCBzdHJpbmd9IGZyb20gJy4vaW5pdGlhbGl6ZS90ZXh0LmpzJ1xuaW1wb3J0IHtjcmVhdGVUb2tlbml6ZXJ9IGZyb20gJy4vY3JlYXRlLXRva2VuaXplci5qcydcbmltcG9ydCAqIGFzIGRlZmF1bHRDb25zdHJ1Y3RzIGZyb20gJy4vY29uc3RydWN0cy5qcydcblxuLyoqXG4gKiBAcGFyYW0ge1BhcnNlT3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcHRpb25zXVxuICogQHJldHVybnMge1BhcnNlQ29udGV4dH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKG9wdGlvbnMpIHtcbiAgY29uc3Qgc2V0dGluZ3MgPSBvcHRpb25zIHx8IHt9XG4gIGNvbnN0IGNvbnN0cnVjdHMgPVxuICAgIC8qKiBAdHlwZSB7RnVsbE5vcm1hbGl6ZWRFeHRlbnNpb259ICovXG4gICAgY29tYmluZUV4dGVuc2lvbnMoW2RlZmF1bHRDb25zdHJ1Y3RzLCAuLi4oc2V0dGluZ3MuZXh0ZW5zaW9ucyB8fCBbXSldKVxuXG4gIC8qKiBAdHlwZSB7UGFyc2VDb250ZXh0fSAqL1xuICBjb25zdCBwYXJzZXIgPSB7XG4gICAgZGVmaW5lZDogW10sXG4gICAgbGF6eToge30sXG4gICAgY29uc3RydWN0cyxcbiAgICBjb250ZW50OiBjcmVhdGUoY29udGVudCksXG4gICAgZG9jdW1lbnQ6IGNyZWF0ZShkb2N1bWVudCksXG4gICAgZmxvdzogY3JlYXRlKGZsb3cpLFxuICAgIHN0cmluZzogY3JlYXRlKHN0cmluZyksXG4gICAgdGV4dDogY3JlYXRlKHRleHQpXG4gIH1cbiAgcmV0dXJuIHBhcnNlclxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0luaXRpYWxDb25zdHJ1Y3R9IGluaXRpYWxcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZShpbml0aWFsKSB7XG4gICAgcmV0dXJuIGNyZWF0b3JcbiAgICAvKiogQHR5cGUge0NyZWF0ZX0gKi9cbiAgICBmdW5jdGlvbiBjcmVhdG9yKGZyb20pIHtcbiAgICAgIHJldHVybiBjcmVhdGVUb2tlbml6ZXIocGFyc2VyLCBpbml0aWFsLCBmcm9tKVxuICAgIH1cbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5DaHVua30gQ2h1bmtcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuQ29kZX0gQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FbmNvZGluZ30gRW5jb2RpbmdcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuVmFsdWV9IFZhbHVlXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgUHJlcHJvY2Vzc29yXG4gKiBAcGFyYW0ge1ZhbHVlfSB2YWx1ZVxuICogQHBhcmFtIHtFbmNvZGluZyB8IG51bGwgfCB1bmRlZmluZWR9IFtlbmNvZGluZ11cbiAqIEBwYXJhbSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFtlbmQ9ZmFsc2VdXG4gKiBAcmV0dXJucyB7QXJyYXk8Q2h1bms+fVxuICovXG5cbmNvbnN0IHNlYXJjaCA9IC9bXFwwXFx0XFxuXFxyXS9nXG5cbi8qKlxuICogQHJldHVybnMge1ByZXByb2Nlc3Nvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXByb2Nlc3MoKSB7XG4gIGxldCBjb2x1bW4gPSAxXG4gIGxldCBidWZmZXIgPSAnJ1xuICAvKiogQHR5cGUge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGxldCBzdGFydCA9IHRydWVcbiAgLyoqIEB0eXBlIHtib29sZWFuIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgYXRDYXJyaWFnZVJldHVyblxuICByZXR1cm4gcHJlcHJvY2Vzc29yXG5cbiAgLyoqIEB0eXBlIHtQcmVwcm9jZXNzb3J9ICovXG4gIGZ1bmN0aW9uIHByZXByb2Nlc3Nvcih2YWx1ZSwgZW5jb2RpbmcsIGVuZCkge1xuICAgIC8qKiBAdHlwZSB7QXJyYXk8Q2h1bms+fSAqL1xuICAgIGNvbnN0IGNodW5rcyA9IFtdXG4gICAgLyoqIEB0eXBlIHtSZWdFeHBNYXRjaEFycmF5IHwgbnVsbH0gKi9cbiAgICBsZXQgbWF0Y2hcbiAgICAvKiogQHR5cGUge251bWJlcn0gKi9cbiAgICBsZXQgbmV4dFxuICAgIC8qKiBAdHlwZSB7bnVtYmVyfSAqL1xuICAgIGxldCBzdGFydFBvc2l0aW9uXG4gICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gICAgbGV0IGVuZFBvc2l0aW9uXG4gICAgLyoqIEB0eXBlIHtDb2RlfSAqL1xuICAgIGxldCBjb2RlXG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGBCdWZmZXJgIGRvZXMgYWxsb3cgYW4gZW5jb2RpbmcuXG4gICAgdmFsdWUgPSBidWZmZXIgKyB2YWx1ZS50b1N0cmluZyhlbmNvZGluZylcbiAgICBzdGFydFBvc2l0aW9uID0gMFxuICAgIGJ1ZmZlciA9ICcnXG4gICAgaWYgKHN0YXJ0KSB7XG4gICAgICAvLyBUbyBkbzogYG1hcmtkb3duLXJzYCBhY3R1YWxseSBwYXJzZXMgQk9NcyAoYnl0ZSBvcmRlciBtYXJrKS5cbiAgICAgIGlmICh2YWx1ZS5jaGFyQ29kZUF0KDApID09PSA2NTI3OSkge1xuICAgICAgICBzdGFydFBvc2l0aW9uKytcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gdW5kZWZpbmVkXG4gICAgfVxuICAgIHdoaWxlIChzdGFydFBvc2l0aW9uIDwgdmFsdWUubGVuZ3RoKSB7XG4gICAgICBzZWFyY2gubGFzdEluZGV4ID0gc3RhcnRQb3NpdGlvblxuICAgICAgbWF0Y2ggPSBzZWFyY2guZXhlYyh2YWx1ZSlcbiAgICAgIGVuZFBvc2l0aW9uID1cbiAgICAgICAgbWF0Y2ggJiYgbWF0Y2guaW5kZXggIT09IHVuZGVmaW5lZCA/IG1hdGNoLmluZGV4IDogdmFsdWUubGVuZ3RoXG4gICAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChlbmRQb3NpdGlvbilcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgYnVmZmVyID0gdmFsdWUuc2xpY2Uoc3RhcnRQb3NpdGlvbilcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGlmIChjb2RlID09PSAxMCAmJiBzdGFydFBvc2l0aW9uID09PSBlbmRQb3NpdGlvbiAmJiBhdENhcnJpYWdlUmV0dXJuKSB7XG4gICAgICAgIGNodW5rcy5wdXNoKC0zKVxuICAgICAgICBhdENhcnJpYWdlUmV0dXJuID0gdW5kZWZpbmVkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYXRDYXJyaWFnZVJldHVybikge1xuICAgICAgICAgIGNodW5rcy5wdXNoKC01KVxuICAgICAgICAgIGF0Q2FycmlhZ2VSZXR1cm4gPSB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRQb3NpdGlvbiA8IGVuZFBvc2l0aW9uKSB7XG4gICAgICAgICAgY2h1bmtzLnB1c2godmFsdWUuc2xpY2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pKVxuICAgICAgICAgIGNvbHVtbiArPSBlbmRQb3NpdGlvbiAtIHN0YXJ0UG9zaXRpb25cbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICBjYXNlIDA6IHtcbiAgICAgICAgICAgIGNodW5rcy5wdXNoKDY1NTMzKVxuICAgICAgICAgICAgY29sdW1uKytcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgOToge1xuICAgICAgICAgICAgbmV4dCA9IE1hdGguY2VpbChjb2x1bW4gLyA0KSAqIDRcbiAgICAgICAgICAgIGNodW5rcy5wdXNoKC0yKVxuICAgICAgICAgICAgd2hpbGUgKGNvbHVtbisrIDwgbmV4dCkgY2h1bmtzLnB1c2goLTEpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIDEwOiB7XG4gICAgICAgICAgICBjaHVua3MucHVzaCgtNClcbiAgICAgICAgICAgIGNvbHVtbiA9IDFcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGF0Q2FycmlhZ2VSZXR1cm4gPSB0cnVlXG4gICAgICAgICAgICBjb2x1bW4gPSAxXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzdGFydFBvc2l0aW9uID0gZW5kUG9zaXRpb24gKyAxXG4gICAgfVxuICAgIGlmIChlbmQpIHtcbiAgICAgIGlmIChhdENhcnJpYWdlUmV0dXJuKSBjaHVua3MucHVzaCgtNSlcbiAgICAgIGlmIChidWZmZXIpIGNodW5rcy5wdXNoKGJ1ZmZlcilcbiAgICAgIGNodW5rcy5wdXNoKG51bGwpXG4gICAgfVxuICAgIHJldHVybiBjaHVua3NcbiAgfVxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FdmVudH0gRXZlbnRcbiAqL1xuXG5pbXBvcnQge3N1YnRva2VuaXplfSBmcm9tICdtaWNyb21hcmstdXRpbC1zdWJ0b2tlbml6ZSdcblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5PEV2ZW50Pn0gZXZlbnRzXG4gKiBAcmV0dXJucyB7QXJyYXk8RXZlbnQ+fVxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9zdHByb2Nlc3MoZXZlbnRzKSB7XG4gIHdoaWxlICghc3VidG9rZW5pemUoZXZlbnRzKSkge1xuICAgIC8vIEVtcHR5XG4gIH1cbiAgcmV0dXJuIGV2ZW50c1xufVxuIiwgIi8qKlxuICogVHVybiB0aGUgbnVtYmVyIChpbiBzdHJpbmcgZm9ybSBhcyBlaXRoZXIgaGV4YS0gb3IgcGxhaW4gZGVjaW1hbCkgY29taW5nIGZyb21cbiAqIGEgbnVtZXJpYyBjaGFyYWN0ZXIgcmVmZXJlbmNlIGludG8gYSBjaGFyYWN0ZXIuXG4gKlxuICogU29ydCBvZiBsaWtlIGBTdHJpbmcuZnJvbUNoYXJDb2RlKE51bWJlci5wYXJzZUludCh2YWx1ZSwgYmFzZSkpYCwgYnV0IG1ha2VzXG4gKiBub24tY2hhcmFjdGVycyBhbmQgY29udHJvbCBjaGFyYWN0ZXJzIHNhZmUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiAgIFZhbHVlIHRvIGRlY29kZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiYXNlXG4gKiAgIE51bWVyaWMgYmFzZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiAgIENoYXJhY3Rlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UodmFsdWUsIGJhc2UpIHtcbiAgY29uc3QgY29kZSA9IE51bWJlci5wYXJzZUludCh2YWx1ZSwgYmFzZSlcbiAgaWYgKFxuICAgIC8vIEMwIGV4Y2VwdCBmb3IgSFQsIExGLCBGRiwgQ1IsIHNwYWNlLlxuICAgIGNvZGUgPCA5IHx8XG4gICAgY29kZSA9PT0gMTEgfHxcbiAgICAoY29kZSA+IDEzICYmIGNvZGUgPCAzMikgfHxcbiAgICAvLyBDb250cm9sIGNoYXJhY3RlciAoREVMKSBvZiBDMCwgYW5kIEMxIGNvbnRyb2xzLlxuICAgIChjb2RlID4gMTI2ICYmIGNvZGUgPCAxNjApIHx8XG4gICAgLy8gTG9uZSBoaWdoIHN1cnJvZ2F0ZXMgYW5kIGxvdyBzdXJyb2dhdGVzLlxuICAgIChjb2RlID4gNTUyOTUgJiYgY29kZSA8IDU3MzQ0KSB8fFxuICAgIC8vIE5vbmNoYXJhY3RlcnMuXG4gICAgKGNvZGUgPiA2NDk3NSAmJiBjb2RlIDwgNjUwMDgpIC8qIGVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UgKi8gfHxcbiAgICAoY29kZSAmIDY1NTM1KSA9PT0gNjU1MzUgfHxcbiAgICAoY29kZSAmIDY1NTM1KSA9PT0gNjU1MzQgLyogZXNsaW50LWVuYWJsZSBuby1iaXR3aXNlICovIHx8XG4gICAgLy8gT3V0IG9mIHJhbmdlXG4gICAgY29kZSA+IDExMTQxMTFcbiAgKSB7XG4gICAgcmV0dXJuICdcXHVGRkZEJ1xuICB9XG4gIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpXG59XG4iLCAiaW1wb3J0IHtkZWNvZGVOYW1lZENoYXJhY3RlclJlZmVyZW5jZX0gZnJvbSAnZGVjb2RlLW5hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2UnXG5pbXBvcnQge2RlY29kZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWRlY29kZS1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UnXG5jb25zdCBjaGFyYWN0ZXJFc2NhcGVPclJlZmVyZW5jZSA9XG4gIC9cXFxcKFshLS86LUBbLWB7LX5dKXwmKCMoPzpcXGR7MSw3fXx4W1xcZGEtZl17MSw2fSl8W1xcZGEtel17MSwzMX0pOy9naVxuXG4vKipcbiAqIERlY29kZSBtYXJrZG93biBzdHJpbmdzICh3aGljaCBvY2N1ciBpbiBwbGFjZXMgc3VjaCBhcyBmZW5jZWQgY29kZSBpbmZvXG4gKiBzdHJpbmdzLCBkZXN0aW5hdGlvbnMsIGxhYmVscywgYW5kIHRpdGxlcykuXG4gKlxuICogVGhlIFx1MjAxQ3N0cmluZ1x1MjAxRCBjb250ZW50IHR5cGUgYWxsb3dzIGNoYXJhY3RlciBlc2NhcGVzIGFuZCAtcmVmZXJlbmNlcy5cbiAqIFRoaXMgZGVjb2RlcyB0aG9zZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqICAgVmFsdWUgdG8gZGVjb2RlLlxuICogQHJldHVybnMge3N0cmluZ31cbiAqICAgRGVjb2RlZCB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVN0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZShjaGFyYWN0ZXJFc2NhcGVPclJlZmVyZW5jZSwgZGVjb2RlKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSAkMFxuICogQHBhcmFtIHtzdHJpbmd9ICQxXG4gKiBAcGFyYW0ge3N0cmluZ30gJDJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGRlY29kZSgkMCwgJDEsICQyKSB7XG4gIGlmICgkMSkge1xuICAgIC8vIEVzY2FwZS5cbiAgICByZXR1cm4gJDFcbiAgfVxuXG4gIC8vIFJlZmVyZW5jZS5cbiAgY29uc3QgaGVhZCA9ICQyLmNoYXJDb2RlQXQoMClcbiAgaWYgKGhlYWQgPT09IDM1KSB7XG4gICAgY29uc3QgaGVhZCA9ICQyLmNoYXJDb2RlQXQoMSlcbiAgICBjb25zdCBoZXggPSBoZWFkID09PSAxMjAgfHwgaGVhZCA9PT0gODhcbiAgICByZXR1cm4gZGVjb2RlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZSgkMi5zbGljZShoZXggPyAyIDogMSksIGhleCA/IDE2IDogMTApXG4gIH1cbiAgcmV0dXJuIGRlY29kZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKCQyKSB8fCAkMFxufVxuIiwgIi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5FbmNvZGluZ30gRW5jb2RpbmdcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21pY3JvbWFyay11dGlsLXR5cGVzJykuRXZlbnR9IEV2ZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlBhcnNlT3B0aW9uc30gUGFyc2VPcHRpb25zXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtaWNyb21hcmstdXRpbC10eXBlcycpLlRva2VufSBUb2tlblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5Ub2tlbml6ZUNvbnRleHR9IFRva2VuaXplQ29udGV4dFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWljcm9tYXJrLXV0aWwtdHlwZXMnKS5WYWx1ZX0gVmFsdWVcbiAqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBhcmVudH0gVW5pc3RQYXJlbnRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuUG9pbnR9IFBvaW50XG4gKlxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5QaHJhc2luZ0NvbnRlbnR9IFBocmFzaW5nQ29udGVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5TdGF0aWNQaHJhc2luZ0NvbnRlbnR9IFN0YXRpY1BocmFzaW5nQ29udGVudFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5Db250ZW50fSBDb250ZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkJyZWFrfSBCcmVha1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5CbG9ja3F1b3RlfSBCbG9ja3F1b3RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkNvZGV9IENvZGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuRGVmaW5pdGlvbn0gRGVmaW5pdGlvblxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5FbXBoYXNpc30gRW1waGFzaXNcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuSGVhZGluZ30gSGVhZGluZ1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5IVE1MfSBIVE1MXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkltYWdlfSBJbWFnZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5JbWFnZVJlZmVyZW5jZX0gSW1hZ2VSZWZlcmVuY2VcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuSW5saW5lQ29kZX0gSW5saW5lQ29kZVxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5MaW5rfSBMaW5rXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLkxpbmtSZWZlcmVuY2V9IExpbmtSZWZlcmVuY2VcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuTGlzdH0gTGlzdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5MaXN0SXRlbX0gTGlzdEl0ZW1cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuUGFyYWdyYXBofSBQYXJhZ3JhcGhcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuUm9vdH0gUm9vdFxuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5TdHJvbmd9IFN0cm9uZ1xuICogQHR5cGVkZWYge2ltcG9ydCgnbWRhc3QnKS5UZXh0fSBUZXh0XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlRoZW1hdGljQnJlYWt9IFRoZW1hdGljQnJlYWtcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0JykuUmVmZXJlbmNlVHlwZX0gUmVmZXJlbmNlVHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vaW5kZXguanMnKS5Db21waWxlRGF0YX0gQ29tcGlsZURhdGFcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtSb290IHwgQ29udGVudH0gTm9kZVxuICogQHR5cGVkZWYge0V4dHJhY3Q8Tm9kZSwgVW5pc3RQYXJlbnQ+fSBQYXJlbnRcbiAqXG4gKiBAdHlwZWRlZiB7T21pdDxVbmlzdFBhcmVudCwgJ3R5cGUnIHwgJ2NoaWxkcmVuJz4gJiB7dHlwZTogJ2ZyYWdtZW50JywgY2hpbGRyZW46IEFycmF5PFBocmFzaW5nQ29udGVudD59fSBGcmFnbWVudFxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIFRyYW5zZm9ybVxuICogICBFeHRyYSB0cmFuc2Zvcm0sIHRvIGNoYW5nZSB0aGUgQVNUIGFmdGVyd2FyZHMuXG4gKiBAcGFyYW0ge1Jvb3R9IHRyZWVcbiAqICAgVHJlZSB0byB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7Um9vdCB8IHVuZGVmaW5lZCB8IG51bGwgfCB2b2lkfVxuICogICBOZXcgdHJlZSBvciBub3RoaW5nIChpbiB3aGljaCBjYXNlIHRoZSBjdXJyZW50IHRyZWUgaXMgdXNlZCkuXG4gKlxuICogQGNhbGxiYWNrIEhhbmRsZVxuICogICBIYW5kbGUgYSB0b2tlbi5cbiAqIEBwYXJhbSB7Q29tcGlsZUNvbnRleHR9IHRoaXNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7VG9rZW59IHRva2VuXG4gKiAgIEN1cnJlbnQgdG9rZW4uXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqICAgTm90aGluZy5cbiAqXG4gKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgSGFuZGxlPn0gSGFuZGxlc1xuICogICBUb2tlbiB0eXBlcyBtYXBwaW5nIHRvIGhhbmRsZXNcbiAqXG4gKiBAY2FsbGJhY2sgT25FbnRlckVycm9yXG4gKiAgIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgYHJpZ2h0YCB0b2tlbiBpcyBvcGVuLCBidXQgaXQgaXMgY2xvc2VkIChieSB0aGVcbiAqICAgYGxlZnRgIHRva2VuKSBvciBiZWNhdXNlIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuXG4gKiBAcGFyYW0ge09taXQ8Q29tcGlsZUNvbnRleHQsICdzbGljZVNlcmlhbGl6ZSc+fSB0aGlzXG4gKiAgIENvbnRleHQuXG4gKiBAcGFyYW0ge1Rva2VuIHwgdW5kZWZpbmVkfSBsZWZ0XG4gKiAgIExlZnQgdG9rZW4uXG4gKiBAcGFyYW0ge1Rva2VufSByaWdodFxuICogICBSaWdodCB0b2tlbi5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICogICBOb3RoaW5nLlxuICpcbiAqIEBjYWxsYmFjayBPbkV4aXRFcnJvclxuICogICBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGByaWdodGAgdG9rZW4gaXMgb3BlbiBidXQgaXQgaXMgY2xvc2VkIGJ5XG4gKiAgIGV4aXRpbmcgdGhlIGBsZWZ0YCB0b2tlbi5cbiAqIEBwYXJhbSB7T21pdDxDb21waWxlQ29udGV4dCwgJ3NsaWNlU2VyaWFsaXplJz59IHRoaXNcbiAqICAgQ29udGV4dC5cbiAqIEBwYXJhbSB7VG9rZW59IGxlZnRcbiAqICAgTGVmdCB0b2tlbi5cbiAqIEBwYXJhbSB7VG9rZW59IHJpZ2h0XG4gKiAgIFJpZ2h0IHRva2VuLlxuICogQHJldHVybnMge3ZvaWR9XG4gKiAgIE5vdGhpbmcuXG4gKlxuICogQHR5cGVkZWYge1tUb2tlbiwgT25FbnRlckVycm9yIHwgdW5kZWZpbmVkXX0gVG9rZW5UdXBsZVxuICogICBPcGVuIHRva2VuIG9uIHRoZSBzdGFjaywgd2l0aCBhbiBvcHRpb25hbCBlcnJvciBoYW5kbGVyIGZvciB3aGVuXG4gKiAgIHRoYXQgdG9rZW4gaXNuXHUyMDE5dCBjbG9zZWQgcHJvcGVybHkuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBDb25maWdcbiAqICAgQ29uZmlndXJhdGlvbi5cbiAqXG4gKiAgIFdlIGhhdmUgb3VyIGRlZmF1bHRzLCBidXQgZXh0ZW5zaW9ucyB3aWxsIGFkZCBtb3JlLlxuICogQHByb3BlcnR5IHtBcnJheTxzdHJpbmc+fSBjYW5Db250YWluRW9sc1xuICogICBUb2tlbiB0eXBlcyB3aGVyZSBsaW5lIGVuZGluZ3MgYXJlIHVzZWQuXG4gKiBAcHJvcGVydHkge0hhbmRsZXN9IGVudGVyXG4gKiAgIE9wZW5pbmcgaGFuZGxlcy5cbiAqIEBwcm9wZXJ0eSB7SGFuZGxlc30gZXhpdFxuICogICBDbG9zaW5nIGhhbmRsZXMuXG4gKiBAcHJvcGVydHkge0FycmF5PFRyYW5zZm9ybT59IHRyYW5zZm9ybXNcbiAqICAgVHJlZSB0cmFuc2Zvcm1zLlxuICpcbiAqIEB0eXBlZGVmIHtQYXJ0aWFsPENvbmZpZz59IEV4dGVuc2lvblxuICogICBDaGFuZ2UgaG93IG1hcmtkb3duIHRva2VucyBmcm9tIG1pY3JvbWFyayBhcmUgdHVybmVkIGludG8gbWRhc3QuXG4gKlxuICogQHR5cGVkZWYgQ29tcGlsZUNvbnRleHRcbiAqICAgbWRhc3QgY29tcGlsZXIgY29udGV4dC5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8Tm9kZSB8IEZyYWdtZW50Pn0gc3RhY2tcbiAqICAgU3RhY2sgb2Ygbm9kZXMuXG4gKiBAcHJvcGVydHkge0FycmF5PFRva2VuVHVwbGU+fSB0b2tlblN0YWNrXG4gKiAgIFN0YWNrIG9mIHRva2Vucy5cbiAqIEBwcm9wZXJ0eSB7PEtleSBleHRlbmRzIGtleW9mIENvbXBpbGVEYXRhPihrZXk6IEtleSkgPT4gQ29tcGlsZURhdGFbS2V5XX0gZ2V0RGF0YVxuICogICBHZXQgZGF0YSBmcm9tIHRoZSBrZXkvdmFsdWUgc3RvcmUuXG4gKiBAcHJvcGVydHkgezxLZXkgZXh0ZW5kcyBrZXlvZiBDb21waWxlRGF0YT4oa2V5OiBLZXksIHZhbHVlPzogQ29tcGlsZURhdGFbS2V5XSkgPT4gdm9pZH0gc2V0RGF0YVxuICogICBTZXQgZGF0YSBpbnRvIHRoZSBrZXkvdmFsdWUgc3RvcmUuXG4gKiBAcHJvcGVydHkgeyh0aGlzOiBDb21waWxlQ29udGV4dCkgPT4gdm9pZH0gYnVmZmVyXG4gKiAgIENhcHR1cmUgc29tZSBvZiB0aGUgb3V0cHV0IGRhdGEuXG4gKiBAcHJvcGVydHkgeyh0aGlzOiBDb21waWxlQ29udGV4dCkgPT4gc3RyaW5nfSByZXN1bWVcbiAqICAgU3RvcCBjYXB0dXJpbmcgYW5kIGFjY2VzcyB0aGUgb3V0cHV0IGRhdGEuXG4gKiBAcHJvcGVydHkgezxLaW5kIGV4dGVuZHMgTm9kZT4odGhpczogQ29tcGlsZUNvbnRleHQsIG5vZGU6IEtpbmQsIHRva2VuOiBUb2tlbiwgb25FcnJvcj86IE9uRW50ZXJFcnJvcikgPT4gS2luZH0gZW50ZXJcbiAqICAgRW50ZXIgYSB0b2tlbi5cbiAqIEBwcm9wZXJ0eSB7KHRoaXM6IENvbXBpbGVDb250ZXh0LCB0b2tlbjogVG9rZW4sIG9uRXJyb3I/OiBPbkV4aXRFcnJvcikgPT4gTm9kZX0gZXhpdFxuICogICBFeGl0IGEgdG9rZW4uXG4gKiBAcHJvcGVydHkge1Rva2VuaXplQ29udGV4dFsnc2xpY2VTZXJpYWxpemUnXX0gc2xpY2VTZXJpYWxpemVcbiAqICAgR2V0IHRoZSBzdHJpbmcgdmFsdWUgb2YgYSB0b2tlbi5cbiAqIEBwcm9wZXJ0eSB7Q29uZmlnfSBjb25maWdcbiAqICAgQ29uZmlndXJhdGlvbi5cbiAqXG4gKiBAdHlwZWRlZiBGcm9tTWFya2Rvd25PcHRpb25zXG4gKiAgIENvbmZpZ3VyYXRpb24gZm9yIGhvdyB0byBidWlsZCBtZGFzdC5cbiAqIEBwcm9wZXJ0eSB7QXJyYXk8RXh0ZW5zaW9uIHwgQXJyYXk8RXh0ZW5zaW9uPj4gfCBudWxsIHwgdW5kZWZpbmVkfSBbbWRhc3RFeHRlbnNpb25zXVxuICogICBFeHRlbnNpb25zIGZvciB0aGlzIHV0aWxpdHkgdG8gY2hhbmdlIGhvdyB0b2tlbnMgYXJlIHR1cm5lZCBpbnRvIGEgdHJlZS5cbiAqXG4gKiBAdHlwZWRlZiB7UGFyc2VPcHRpb25zICYgRnJvbU1hcmtkb3duT3B0aW9uc30gT3B0aW9uc1xuICogICBDb25maWd1cmF0aW9uLlxuICovXG5cbi8vIFRvIGRvOiBtaWNyb21hcms6IGNyZWF0ZSBhIHJlZ2lzdHJ5IG9mIHRva2Vucz9cbi8vIFRvIGRvOiBuZXh0IG1ham9yOiBkb25cdTIwMTl0IHJldHVybiBnaXZlbiBgTm9kZWAgZnJvbSBgZW50ZXJgLlxuLy8gVG8gZG86IG5leHQgbWFqb3I6IHJlbW92ZSBzZXR0ZXIvZ2V0dGVyLlxuXG5pbXBvcnQge3RvU3RyaW5nfSBmcm9tICdtZGFzdC11dGlsLXRvLXN0cmluZydcbmltcG9ydCB7cGFyc2V9IGZyb20gJ21pY3JvbWFyay9saWIvcGFyc2UuanMnXG5pbXBvcnQge3ByZXByb2Nlc3N9IGZyb20gJ21pY3JvbWFyay9saWIvcHJlcHJvY2Vzcy5qcydcbmltcG9ydCB7cG9zdHByb2Nlc3N9IGZyb20gJ21pY3JvbWFyay9saWIvcG9zdHByb2Nlc3MuanMnXG5pbXBvcnQge2RlY29kZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2V9IGZyb20gJ21pY3JvbWFyay11dGlsLWRlY29kZS1udW1lcmljLWNoYXJhY3Rlci1yZWZlcmVuY2UnXG5pbXBvcnQge2RlY29kZVN0cmluZ30gZnJvbSAnbWljcm9tYXJrLXV0aWwtZGVjb2RlLXN0cmluZydcbmltcG9ydCB7bm9ybWFsaXplSWRlbnRpZmllcn0gZnJvbSAnbWljcm9tYXJrLXV0aWwtbm9ybWFsaXplLWlkZW50aWZpZXInXG5pbXBvcnQge2RlY29kZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlfSBmcm9tICdkZWNvZGUtbmFtZWQtY2hhcmFjdGVyLXJlZmVyZW5jZSdcbmltcG9ydCB7c3RyaW5naWZ5UG9zaXRpb259IGZyb20gJ3VuaXN0LXV0aWwtc3RyaW5naWZ5LXBvc2l0aW9uJ1xuY29uc3Qgb3duID0ge30uaGFzT3duUHJvcGVydHlcblxuLyoqXG4gKiBAcGFyYW0gdmFsdWVcbiAqICAgTWFya2Rvd24gdG8gcGFyc2UuXG4gKiBAcGFyYW0gZW5jb2RpbmdcbiAqICAgQ2hhcmFjdGVyIGVuY29kaW5nIGZvciB3aGVuIGB2YWx1ZWAgaXMgYEJ1ZmZlcmAuXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogICBDb25maWd1cmF0aW9uLlxuICogQHJldHVybnNcbiAqICAgbWRhc3QgdHJlZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGZyb21NYXJrZG93biA9XG4gIC8qKlxuICAgKiBAdHlwZSB7KFxuICAgKiAgICgodmFsdWU6IFZhbHVlLCBlbmNvZGluZzogRW5jb2RpbmcsIG9wdGlvbnM/OiBPcHRpb25zIHwgbnVsbCB8IHVuZGVmaW5lZCkgPT4gUm9vdCkgJlxuICAgKiAgICgodmFsdWU6IFZhbHVlLCBvcHRpb25zPzogT3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWQpID0+IFJvb3QpXG4gICAqICl9XG4gICAqL1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1ZhbHVlfSB2YWx1ZVxuICAgKiBAcGFyYW0ge0VuY29kaW5nIHwgT3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWR9IFtlbmNvZGluZ11cbiAgICogQHBhcmFtIHtPcHRpb25zIHwgbnVsbCB8IHVuZGVmaW5lZH0gW29wdGlvbnNdXG4gICAqIEByZXR1cm5zIHtSb290fVxuICAgKi9cbiAgZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZywgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICBvcHRpb25zID0gZW5jb2RpbmdcbiAgICAgIGVuY29kaW5nID0gdW5kZWZpbmVkXG4gICAgfVxuICAgIHJldHVybiBjb21waWxlcihvcHRpb25zKShcbiAgICAgIHBvc3Rwcm9jZXNzKFxuICAgICAgICBwYXJzZShvcHRpb25zKS5kb2N1bWVudCgpLndyaXRlKHByZXByb2Nlc3MoKSh2YWx1ZSwgZW5jb2RpbmcsIHRydWUpKVxuICAgICAgKVxuICAgIClcbiAgfVxuXG4vKipcbiAqIE5vdGUgdGhpcyBjb21waWxlciBvbmx5IHVuZGVyc3RhbmQgY29tcGxldGUgYnVmZmVyaW5nLCBub3Qgc3RyZWFtaW5nLlxuICpcbiAqIEBwYXJhbSB7T3B0aW9ucyB8IG51bGwgfCB1bmRlZmluZWR9IFtvcHRpb25zXVxuICovXG5mdW5jdGlvbiBjb21waWxlcihvcHRpb25zKSB7XG4gIC8qKiBAdHlwZSB7Q29uZmlnfSAqL1xuICBjb25zdCBjb25maWcgPSB7XG4gICAgdHJhbnNmb3JtczogW10sXG4gICAgY2FuQ29udGFpbkVvbHM6IFsnZW1waGFzaXMnLCAnZnJhZ21lbnQnLCAnaGVhZGluZycsICdwYXJhZ3JhcGgnLCAnc3Ryb25nJ10sXG4gICAgZW50ZXI6IHtcbiAgICAgIGF1dG9saW5rOiBvcGVuZXIobGluayksXG4gICAgICBhdXRvbGlua1Byb3RvY29sOiBvbmVudGVyZGF0YSxcbiAgICAgIGF1dG9saW5rRW1haWw6IG9uZW50ZXJkYXRhLFxuICAgICAgYXR4SGVhZGluZzogb3BlbmVyKGhlYWRpbmcpLFxuICAgICAgYmxvY2tRdW90ZTogb3BlbmVyKGJsb2NrUXVvdGUpLFxuICAgICAgY2hhcmFjdGVyRXNjYXBlOiBvbmVudGVyZGF0YSxcbiAgICAgIGNoYXJhY3RlclJlZmVyZW5jZTogb25lbnRlcmRhdGEsXG4gICAgICBjb2RlRmVuY2VkOiBvcGVuZXIoY29kZUZsb3cpLFxuICAgICAgY29kZUZlbmNlZEZlbmNlSW5mbzogYnVmZmVyLFxuICAgICAgY29kZUZlbmNlZEZlbmNlTWV0YTogYnVmZmVyLFxuICAgICAgY29kZUluZGVudGVkOiBvcGVuZXIoY29kZUZsb3csIGJ1ZmZlciksXG4gICAgICBjb2RlVGV4dDogb3BlbmVyKGNvZGVUZXh0LCBidWZmZXIpLFxuICAgICAgY29kZVRleHREYXRhOiBvbmVudGVyZGF0YSxcbiAgICAgIGRhdGE6IG9uZW50ZXJkYXRhLFxuICAgICAgY29kZUZsb3dWYWx1ZTogb25lbnRlcmRhdGEsXG4gICAgICBkZWZpbml0aW9uOiBvcGVuZXIoZGVmaW5pdGlvbiksXG4gICAgICBkZWZpbml0aW9uRGVzdGluYXRpb25TdHJpbmc6IGJ1ZmZlcixcbiAgICAgIGRlZmluaXRpb25MYWJlbFN0cmluZzogYnVmZmVyLFxuICAgICAgZGVmaW5pdGlvblRpdGxlU3RyaW5nOiBidWZmZXIsXG4gICAgICBlbXBoYXNpczogb3BlbmVyKGVtcGhhc2lzKSxcbiAgICAgIGhhcmRCcmVha0VzY2FwZTogb3BlbmVyKGhhcmRCcmVhayksXG4gICAgICBoYXJkQnJlYWtUcmFpbGluZzogb3BlbmVyKGhhcmRCcmVhayksXG4gICAgICBodG1sRmxvdzogb3BlbmVyKGh0bWwsIGJ1ZmZlciksXG4gICAgICBodG1sRmxvd0RhdGE6IG9uZW50ZXJkYXRhLFxuICAgICAgaHRtbFRleHQ6IG9wZW5lcihodG1sLCBidWZmZXIpLFxuICAgICAgaHRtbFRleHREYXRhOiBvbmVudGVyZGF0YSxcbiAgICAgIGltYWdlOiBvcGVuZXIoaW1hZ2UpLFxuICAgICAgbGFiZWw6IGJ1ZmZlcixcbiAgICAgIGxpbms6IG9wZW5lcihsaW5rKSxcbiAgICAgIGxpc3RJdGVtOiBvcGVuZXIobGlzdEl0ZW0pLFxuICAgICAgbGlzdEl0ZW1WYWx1ZTogb25lbnRlcmxpc3RpdGVtdmFsdWUsXG4gICAgICBsaXN0T3JkZXJlZDogb3BlbmVyKGxpc3QsIG9uZW50ZXJsaXN0b3JkZXJlZCksXG4gICAgICBsaXN0VW5vcmRlcmVkOiBvcGVuZXIobGlzdCksXG4gICAgICBwYXJhZ3JhcGg6IG9wZW5lcihwYXJhZ3JhcGgpLFxuICAgICAgcmVmZXJlbmNlOiBvbmVudGVycmVmZXJlbmNlLFxuICAgICAgcmVmZXJlbmNlU3RyaW5nOiBidWZmZXIsXG4gICAgICByZXNvdXJjZURlc3RpbmF0aW9uU3RyaW5nOiBidWZmZXIsXG4gICAgICByZXNvdXJjZVRpdGxlU3RyaW5nOiBidWZmZXIsXG4gICAgICBzZXRleHRIZWFkaW5nOiBvcGVuZXIoaGVhZGluZyksXG4gICAgICBzdHJvbmc6IG9wZW5lcihzdHJvbmcpLFxuICAgICAgdGhlbWF0aWNCcmVhazogb3BlbmVyKHRoZW1hdGljQnJlYWspXG4gICAgfSxcbiAgICBleGl0OiB7XG4gICAgICBhdHhIZWFkaW5nOiBjbG9zZXIoKSxcbiAgICAgIGF0eEhlYWRpbmdTZXF1ZW5jZTogb25leGl0YXR4aGVhZGluZ3NlcXVlbmNlLFxuICAgICAgYXV0b2xpbms6IGNsb3NlcigpLFxuICAgICAgYXV0b2xpbmtFbWFpbDogb25leGl0YXV0b2xpbmtlbWFpbCxcbiAgICAgIGF1dG9saW5rUHJvdG9jb2w6IG9uZXhpdGF1dG9saW5rcHJvdG9jb2wsXG4gICAgICBibG9ja1F1b3RlOiBjbG9zZXIoKSxcbiAgICAgIGNoYXJhY3RlckVzY2FwZVZhbHVlOiBvbmV4aXRkYXRhLFxuICAgICAgY2hhcmFjdGVyUmVmZXJlbmNlTWFya2VySGV4YWRlY2ltYWw6IG9uZXhpdGNoYXJhY3RlcnJlZmVyZW5jZW1hcmtlcixcbiAgICAgIGNoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWM6IG9uZXhpdGNoYXJhY3RlcnJlZmVyZW5jZW1hcmtlcixcbiAgICAgIGNoYXJhY3RlclJlZmVyZW5jZVZhbHVlOiBvbmV4aXRjaGFyYWN0ZXJyZWZlcmVuY2V2YWx1ZSxcbiAgICAgIGNvZGVGZW5jZWQ6IGNsb3NlcihvbmV4aXRjb2RlZmVuY2VkKSxcbiAgICAgIGNvZGVGZW5jZWRGZW5jZTogb25leGl0Y29kZWZlbmNlZGZlbmNlLFxuICAgICAgY29kZUZlbmNlZEZlbmNlSW5mbzogb25leGl0Y29kZWZlbmNlZGZlbmNlaW5mbyxcbiAgICAgIGNvZGVGZW5jZWRGZW5jZU1ldGE6IG9uZXhpdGNvZGVmZW5jZWRmZW5jZW1ldGEsXG4gICAgICBjb2RlRmxvd1ZhbHVlOiBvbmV4aXRkYXRhLFxuICAgICAgY29kZUluZGVudGVkOiBjbG9zZXIob25leGl0Y29kZWluZGVudGVkKSxcbiAgICAgIGNvZGVUZXh0OiBjbG9zZXIob25leGl0Y29kZXRleHQpLFxuICAgICAgY29kZVRleHREYXRhOiBvbmV4aXRkYXRhLFxuICAgICAgZGF0YTogb25leGl0ZGF0YSxcbiAgICAgIGRlZmluaXRpb246IGNsb3NlcigpLFxuICAgICAgZGVmaW5pdGlvbkRlc3RpbmF0aW9uU3RyaW5nOiBvbmV4aXRkZWZpbml0aW9uZGVzdGluYXRpb25zdHJpbmcsXG4gICAgICBkZWZpbml0aW9uTGFiZWxTdHJpbmc6IG9uZXhpdGRlZmluaXRpb25sYWJlbHN0cmluZyxcbiAgICAgIGRlZmluaXRpb25UaXRsZVN0cmluZzogb25leGl0ZGVmaW5pdGlvbnRpdGxlc3RyaW5nLFxuICAgICAgZW1waGFzaXM6IGNsb3NlcigpLFxuICAgICAgaGFyZEJyZWFrRXNjYXBlOiBjbG9zZXIob25leGl0aGFyZGJyZWFrKSxcbiAgICAgIGhhcmRCcmVha1RyYWlsaW5nOiBjbG9zZXIob25leGl0aGFyZGJyZWFrKSxcbiAgICAgIGh0bWxGbG93OiBjbG9zZXIob25leGl0aHRtbGZsb3cpLFxuICAgICAgaHRtbEZsb3dEYXRhOiBvbmV4aXRkYXRhLFxuICAgICAgaHRtbFRleHQ6IGNsb3NlcihvbmV4aXRodG1sdGV4dCksXG4gICAgICBodG1sVGV4dERhdGE6IG9uZXhpdGRhdGEsXG4gICAgICBpbWFnZTogY2xvc2VyKG9uZXhpdGltYWdlKSxcbiAgICAgIGxhYmVsOiBvbmV4aXRsYWJlbCxcbiAgICAgIGxhYmVsVGV4dDogb25leGl0bGFiZWx0ZXh0LFxuICAgICAgbGluZUVuZGluZzogb25leGl0bGluZWVuZGluZyxcbiAgICAgIGxpbms6IGNsb3NlcihvbmV4aXRsaW5rKSxcbiAgICAgIGxpc3RJdGVtOiBjbG9zZXIoKSxcbiAgICAgIGxpc3RPcmRlcmVkOiBjbG9zZXIoKSxcbiAgICAgIGxpc3RVbm9yZGVyZWQ6IGNsb3NlcigpLFxuICAgICAgcGFyYWdyYXBoOiBjbG9zZXIoKSxcbiAgICAgIHJlZmVyZW5jZVN0cmluZzogb25leGl0cmVmZXJlbmNlc3RyaW5nLFxuICAgICAgcmVzb3VyY2VEZXN0aW5hdGlvblN0cmluZzogb25leGl0cmVzb3VyY2VkZXN0aW5hdGlvbnN0cmluZyxcbiAgICAgIHJlc291cmNlVGl0bGVTdHJpbmc6IG9uZXhpdHJlc291cmNldGl0bGVzdHJpbmcsXG4gICAgICByZXNvdXJjZTogb25leGl0cmVzb3VyY2UsXG4gICAgICBzZXRleHRIZWFkaW5nOiBjbG9zZXIob25leGl0c2V0ZXh0aGVhZGluZyksXG4gICAgICBzZXRleHRIZWFkaW5nTGluZVNlcXVlbmNlOiBvbmV4aXRzZXRleHRoZWFkaW5nbGluZXNlcXVlbmNlLFxuICAgICAgc2V0ZXh0SGVhZGluZ1RleHQ6IG9uZXhpdHNldGV4dGhlYWRpbmd0ZXh0LFxuICAgICAgc3Ryb25nOiBjbG9zZXIoKSxcbiAgICAgIHRoZW1hdGljQnJlYWs6IGNsb3NlcigpXG4gICAgfVxuICB9XG4gIGNvbmZpZ3VyZShjb25maWcsIChvcHRpb25zIHx8IHt9KS5tZGFzdEV4dGVuc2lvbnMgfHwgW10pXG5cbiAgLyoqIEB0eXBlIHtDb21waWxlRGF0YX0gKi9cbiAgY29uc3QgZGF0YSA9IHt9XG4gIHJldHVybiBjb21waWxlXG5cbiAgLyoqXG4gICAqIFR1cm4gbWljcm9tYXJrIGV2ZW50cyBpbnRvIGFuIG1kYXN0IHRyZWUuXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8RXZlbnQ+fSBldmVudHNcbiAgICogICBFdmVudHMuXG4gICAqIEByZXR1cm5zIHtSb290fVxuICAgKiAgIG1kYXN0IHRyZWUuXG4gICAqL1xuICBmdW5jdGlvbiBjb21waWxlKGV2ZW50cykge1xuICAgIC8qKiBAdHlwZSB7Um9vdH0gKi9cbiAgICBsZXQgdHJlZSA9IHtcbiAgICAgIHR5cGU6ICdyb290JyxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH1cbiAgICAvKiogQHR5cGUge09taXQ8Q29tcGlsZUNvbnRleHQsICdzbGljZVNlcmlhbGl6ZSc+fSAqL1xuICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICBzdGFjazogW3RyZWVdLFxuICAgICAgdG9rZW5TdGFjazogW10sXG4gICAgICBjb25maWcsXG4gICAgICBlbnRlcixcbiAgICAgIGV4aXQsXG4gICAgICBidWZmZXIsXG4gICAgICByZXN1bWUsXG4gICAgICBzZXREYXRhLFxuICAgICAgZ2V0RGF0YVxuICAgIH1cbiAgICAvKiogQHR5cGUge0FycmF5PG51bWJlcj59ICovXG4gICAgY29uc3QgbGlzdFN0YWNrID0gW11cbiAgICBsZXQgaW5kZXggPSAtMVxuICAgIHdoaWxlICgrK2luZGV4IDwgZXZlbnRzLmxlbmd0aCkge1xuICAgICAgLy8gV2UgcHJlcHJvY2VzcyBsaXN0cyB0byBhZGQgYGxpc3RJdGVtYCB0b2tlbnMsIGFuZCB0byBpbmZlciB3aGV0aGVyXG4gICAgICAvLyBpdGVtcyB0aGUgbGlzdCBpdHNlbGYgYXJlIHNwcmVhZCBvdXQuXG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50c1tpbmRleF1bMV0udHlwZSA9PT0gJ2xpc3RPcmRlcmVkJyB8fFxuICAgICAgICBldmVudHNbaW5kZXhdWzFdLnR5cGUgPT09ICdsaXN0VW5vcmRlcmVkJ1xuICAgICAgKSB7XG4gICAgICAgIGlmIChldmVudHNbaW5kZXhdWzBdID09PSAnZW50ZXInKSB7XG4gICAgICAgICAgbGlzdFN0YWNrLnB1c2goaW5kZXgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdGFpbCA9IGxpc3RTdGFjay5wb3AoKVxuICAgICAgICAgIGluZGV4ID0gcHJlcGFyZUxpc3QoZXZlbnRzLCB0YWlsLCBpbmRleClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpbmRleCA9IC0xXG4gICAgd2hpbGUgKCsraW5kZXggPCBldmVudHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBoYW5kbGVyID0gY29uZmlnW2V2ZW50c1tpbmRleF1bMF1dXG4gICAgICBpZiAob3duLmNhbGwoaGFuZGxlciwgZXZlbnRzW2luZGV4XVsxXS50eXBlKSkge1xuICAgICAgICBoYW5kbGVyW2V2ZW50c1tpbmRleF1bMV0udHlwZV0uY2FsbChcbiAgICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzbGljZVNlcmlhbGl6ZTogZXZlbnRzW2luZGV4XVsyXS5zbGljZVNlcmlhbGl6ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgICApLFxuICAgICAgICAgIGV2ZW50c1tpbmRleF1bMV1cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0b2tlbnMgc3RpbGwgYmVpbmcgb3Blbi5cbiAgICBpZiAoY29udGV4dC50b2tlblN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHRhaWwgPSBjb250ZXh0LnRva2VuU3RhY2tbY29udGV4dC50b2tlblN0YWNrLmxlbmd0aCAtIDFdXG4gICAgICBjb25zdCBoYW5kbGVyID0gdGFpbFsxXSB8fCBkZWZhdWx0T25FcnJvclxuICAgICAgaGFuZGxlci5jYWxsKGNvbnRleHQsIHVuZGVmaW5lZCwgdGFpbFswXSlcbiAgICB9XG5cbiAgICAvLyBGaWd1cmUgb3V0IGByb290YCBwb3NpdGlvbi5cbiAgICB0cmVlLnBvc2l0aW9uID0ge1xuICAgICAgc3RhcnQ6IHBvaW50KFxuICAgICAgICBldmVudHMubGVuZ3RoID4gMFxuICAgICAgICAgID8gZXZlbnRzWzBdWzFdLnN0YXJ0XG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGxpbmU6IDEsXG4gICAgICAgICAgICAgIGNvbHVtbjogMSxcbiAgICAgICAgICAgICAgb2Zmc2V0OiAwXG4gICAgICAgICAgICB9XG4gICAgICApLFxuICAgICAgZW5kOiBwb2ludChcbiAgICAgICAgZXZlbnRzLmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGV2ZW50c1tldmVudHMubGVuZ3RoIC0gMl1bMV0uZW5kXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGxpbmU6IDEsXG4gICAgICAgICAgICAgIGNvbHVtbjogMSxcbiAgICAgICAgICAgICAgb2Zmc2V0OiAwXG4gICAgICAgICAgICB9XG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gQ2FsbCB0cmFuc2Zvcm1zLlxuICAgIGluZGV4ID0gLTFcbiAgICB3aGlsZSAoKytpbmRleCA8IGNvbmZpZy50cmFuc2Zvcm1zLmxlbmd0aCkge1xuICAgICAgdHJlZSA9IGNvbmZpZy50cmFuc2Zvcm1zW2luZGV4XSh0cmVlKSB8fCB0cmVlXG4gICAgfVxuICAgIHJldHVybiB0cmVlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtBcnJheTxFdmVudD59IGV2ZW50c1xuICAgKiBAcGFyYW0ge251bWJlcn0gc3RhcnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgKi9cbiAgZnVuY3Rpb24gcHJlcGFyZUxpc3QoZXZlbnRzLCBzdGFydCwgbGVuZ3RoKSB7XG4gICAgbGV0IGluZGV4ID0gc3RhcnQgLSAxXG4gICAgbGV0IGNvbnRhaW5lckJhbGFuY2UgPSAtMVxuICAgIGxldCBsaXN0U3ByZWFkID0gZmFsc2VcbiAgICAvKiogQHR5cGUge1Rva2VuIHwgdW5kZWZpbmVkfSAqL1xuICAgIGxldCBsaXN0SXRlbVxuICAgIC8qKiBAdHlwZSB7bnVtYmVyIHwgdW5kZWZpbmVkfSAqL1xuICAgIGxldCBsaW5lSW5kZXhcbiAgICAvKiogQHR5cGUge251bWJlciB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgZmlyc3RCbGFua0xpbmVJbmRleFxuICAgIC8qKiBAdHlwZSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgICBsZXQgYXRNYXJrZXJcbiAgICB3aGlsZSAoKytpbmRleCA8PSBsZW5ndGgpIHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gZXZlbnRzW2luZGV4XVxuICAgICAgaWYgKFxuICAgICAgICBldmVudFsxXS50eXBlID09PSAnbGlzdFVub3JkZXJlZCcgfHxcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gJ2xpc3RPcmRlcmVkJyB8fFxuICAgICAgICBldmVudFsxXS50eXBlID09PSAnYmxvY2tRdW90ZSdcbiAgICAgICkge1xuICAgICAgICBpZiAoZXZlbnRbMF0gPT09ICdlbnRlcicpIHtcbiAgICAgICAgICBjb250YWluZXJCYWxhbmNlKytcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250YWluZXJCYWxhbmNlLS1cbiAgICAgICAgfVxuICAgICAgICBhdE1hcmtlciA9IHVuZGVmaW5lZFxuICAgICAgfSBlbHNlIGlmIChldmVudFsxXS50eXBlID09PSAnbGluZUVuZGluZ0JsYW5rJykge1xuICAgICAgICBpZiAoZXZlbnRbMF0gPT09ICdlbnRlcicpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBsaXN0SXRlbSAmJlxuICAgICAgICAgICAgIWF0TWFya2VyICYmXG4gICAgICAgICAgICAhY29udGFpbmVyQmFsYW5jZSAmJlxuICAgICAgICAgICAgIWZpcnN0QmxhbmtMaW5lSW5kZXhcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGZpcnN0QmxhbmtMaW5lSW5kZXggPSBpbmRleFxuICAgICAgICAgIH1cbiAgICAgICAgICBhdE1hcmtlciA9IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBldmVudFsxXS50eXBlID09PSAnbGluZVByZWZpeCcgfHxcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gJ2xpc3RJdGVtVmFsdWUnIHx8XG4gICAgICAgIGV2ZW50WzFdLnR5cGUgPT09ICdsaXN0SXRlbU1hcmtlcicgfHxcbiAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gJ2xpc3RJdGVtUHJlZml4JyB8fFxuICAgICAgICBldmVudFsxXS50eXBlID09PSAnbGlzdEl0ZW1QcmVmaXhXaGl0ZXNwYWNlJ1xuICAgICAgKSB7XG4gICAgICAgIC8vIEVtcHR5LlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXRNYXJrZXIgPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgKCFjb250YWluZXJCYWxhbmNlICYmXG4gICAgICAgICAgZXZlbnRbMF0gPT09ICdlbnRlcicgJiZcbiAgICAgICAgICBldmVudFsxXS50eXBlID09PSAnbGlzdEl0ZW1QcmVmaXgnKSB8fFxuICAgICAgICAoY29udGFpbmVyQmFsYW5jZSA9PT0gLTEgJiZcbiAgICAgICAgICBldmVudFswXSA9PT0gJ2V4aXQnICYmXG4gICAgICAgICAgKGV2ZW50WzFdLnR5cGUgPT09ICdsaXN0VW5vcmRlcmVkJyB8fFxuICAgICAgICAgICAgZXZlbnRbMV0udHlwZSA9PT0gJ2xpc3RPcmRlcmVkJykpXG4gICAgICApIHtcbiAgICAgICAgaWYgKGxpc3RJdGVtKSB7XG4gICAgICAgICAgbGV0IHRhaWxJbmRleCA9IGluZGV4XG4gICAgICAgICAgbGluZUluZGV4ID0gdW5kZWZpbmVkXG4gICAgICAgICAgd2hpbGUgKHRhaWxJbmRleC0tKSB7XG4gICAgICAgICAgICBjb25zdCB0YWlsRXZlbnQgPSBldmVudHNbdGFpbEluZGV4XVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0YWlsRXZlbnRbMV0udHlwZSA9PT0gJ2xpbmVFbmRpbmcnIHx8XG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID09PSAnbGluZUVuZGluZ0JsYW5rJ1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGlmICh0YWlsRXZlbnRbMF0gPT09ICdleGl0JykgY29udGludWVcbiAgICAgICAgICAgICAgaWYgKGxpbmVJbmRleCkge1xuICAgICAgICAgICAgICAgIGV2ZW50c1tsaW5lSW5kZXhdWzFdLnR5cGUgPSAnbGluZUVuZGluZ0JsYW5rJ1xuICAgICAgICAgICAgICAgIGxpc3RTcHJlYWQgPSB0cnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPSAnbGluZUVuZGluZydcbiAgICAgICAgICAgICAgbGluZUluZGV4ID0gdGFpbEluZGV4XG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICB0YWlsRXZlbnRbMV0udHlwZSA9PT0gJ2xpbmVQcmVmaXgnIHx8XG4gICAgICAgICAgICAgIHRhaWxFdmVudFsxXS50eXBlID09PSAnYmxvY2tRdW90ZVByZWZpeCcgfHxcbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPT09ICdibG9ja1F1b3RlUHJlZml4V2hpdGVzcGFjZScgfHxcbiAgICAgICAgICAgICAgdGFpbEV2ZW50WzFdLnR5cGUgPT09ICdibG9ja1F1b3RlTWFya2VyJyB8fFxuICAgICAgICAgICAgICB0YWlsRXZlbnRbMV0udHlwZSA9PT0gJ2xpc3RJdGVtSW5kZW50J1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIC8vIEVtcHR5XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBmaXJzdEJsYW5rTGluZUluZGV4ICYmXG4gICAgICAgICAgICAoIWxpbmVJbmRleCB8fCBmaXJzdEJsYW5rTGluZUluZGV4IDwgbGluZUluZGV4KVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgbGlzdEl0ZW0uX3NwcmVhZCA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBGaXggcG9zaXRpb24uXG4gICAgICAgICAgbGlzdEl0ZW0uZW5kID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgbGluZUluZGV4ID8gZXZlbnRzW2xpbmVJbmRleF1bMV0uc3RhcnQgOiBldmVudFsxXS5lbmRcbiAgICAgICAgICApXG4gICAgICAgICAgZXZlbnRzLnNwbGljZShsaW5lSW5kZXggfHwgaW5kZXgsIDAsIFsnZXhpdCcsIGxpc3RJdGVtLCBldmVudFsyXV0pXG4gICAgICAgICAgaW5kZXgrK1xuICAgICAgICAgIGxlbmd0aCsrXG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgbGlzdCBpdGVtLlxuICAgICAgICBpZiAoZXZlbnRbMV0udHlwZSA9PT0gJ2xpc3RJdGVtUHJlZml4Jykge1xuICAgICAgICAgIGxpc3RJdGVtID0ge1xuICAgICAgICAgICAgdHlwZTogJ2xpc3RJdGVtJyxcbiAgICAgICAgICAgIF9zcHJlYWQ6IGZhbHNlLFxuICAgICAgICAgICAgc3RhcnQ6IE9iamVjdC5hc3NpZ24oe30sIGV2ZW50WzFdLnN0YXJ0KSxcbiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IHdlXHUyMDE5bGwgYWRkIGBlbmRgIGluIGEgc2Vjb25kLlxuICAgICAgICAgICAgZW5kOiB1bmRlZmluZWRcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYGxpc3RJdGVtYCBpcyBtb3N0IGRlZmluaXRlbHkgZGVmaW5lZCwgVFMuLi5cbiAgICAgICAgICBldmVudHMuc3BsaWNlKGluZGV4LCAwLCBbJ2VudGVyJywgbGlzdEl0ZW0sIGV2ZW50WzJdXSlcbiAgICAgICAgICBpbmRleCsrXG4gICAgICAgICAgbGVuZ3RoKytcbiAgICAgICAgICBmaXJzdEJsYW5rTGluZUluZGV4ID0gdW5kZWZpbmVkXG4gICAgICAgICAgYXRNYXJrZXIgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXZlbnRzW3N0YXJ0XVsxXS5fc3ByZWFkID0gbGlzdFNwcmVhZFxuICAgIHJldHVybiBsZW5ndGhcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZGF0YS5cbiAgICpcbiAgICogQHRlbXBsYXRlIHtrZXlvZiBDb21waWxlRGF0YX0gS2V5XG4gICAqICAgRmllbGQgdHlwZS5cbiAgICogQHBhcmFtIHtLZXl9IGtleVxuICAgKiAgIEtleSBvZiBmaWVsZC5cbiAgICogQHBhcmFtIHtDb21waWxlRGF0YVtLZXldfSBbdmFsdWVdXG4gICAqICAgTmV3IHZhbHVlLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICogICBOb3RoaW5nLlxuICAgKi9cbiAgZnVuY3Rpb24gc2V0RGF0YShrZXksIHZhbHVlKSB7XG4gICAgZGF0YVtrZXldID0gdmFsdWVcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGF0YS5cbiAgICpcbiAgICogQHRlbXBsYXRlIHtrZXlvZiBDb21waWxlRGF0YX0gS2V5XG4gICAqICAgRmllbGQgdHlwZS5cbiAgICogQHBhcmFtIHtLZXl9IGtleVxuICAgKiAgIEtleSBvZiBmaWVsZC5cbiAgICogQHJldHVybnMge0NvbXBpbGVEYXRhW0tleV19XG4gICAqICAgVmFsdWUuXG4gICAqL1xuICBmdW5jdGlvbiBnZXREYXRhKGtleSkge1xuICAgIHJldHVybiBkYXRhW2tleV1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gb3BlbmVyIGhhbmRsZS5cbiAgICpcbiAgICogQHBhcmFtIHsodG9rZW46IFRva2VuKSA9PiBOb2RlfSBjcmVhdGVcbiAgICogICBDcmVhdGUgYSBub2RlLlxuICAgKiBAcGFyYW0ge0hhbmRsZX0gW2FuZF1cbiAgICogICBPcHRpb25hbCBmdW5jdGlvbiB0byBhbHNvIHJ1bi5cbiAgICogQHJldHVybnMge0hhbmRsZX1cbiAgICogICBIYW5kbGUuXG4gICAqL1xuICBmdW5jdGlvbiBvcGVuZXIoY3JlYXRlLCBhbmQpIHtcbiAgICByZXR1cm4gb3BlblxuXG4gICAgLyoqXG4gICAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgICAqIEBwYXJhbSB7VG9rZW59IHRva2VuXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gb3Blbih0b2tlbikge1xuICAgICAgZW50ZXIuY2FsbCh0aGlzLCBjcmVhdGUodG9rZW4pLCB0b2tlbilcbiAgICAgIGlmIChhbmQpIGFuZC5jYWxsKHRoaXMsIHRva2VuKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgZnVuY3Rpb24gYnVmZmVyKCkge1xuICAgIHRoaXMuc3RhY2sucHVzaCh7XG4gICAgICB0eXBlOiAnZnJhZ21lbnQnLFxuICAgICAgY2hpbGRyZW46IFtdXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGVtcGxhdGUge05vZGV9IEtpbmRcbiAgICogICBOb2RlIHR5cGUuXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogICBDb250ZXh0LlxuICAgKiBAcGFyYW0ge0tpbmR9IG5vZGVcbiAgICogICBOb2RlIHRvIGVudGVyLlxuICAgKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICAgKiAgIENvcnJlc3BvbmRpbmcgdG9rZW4uXG4gICAqIEBwYXJhbSB7T25FbnRlckVycm9yIHwgdW5kZWZpbmVkfSBbZXJyb3JIYW5kbGVyXVxuICAgKiAgIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGlzIHRva2VuIGlzIG9wZW4sIGJ1dCBpdCBpcyBjbG9zZWQgYnkgc29tZXRoaW5nIGVsc2UuXG4gICAqIEByZXR1cm5zIHtLaW5kfVxuICAgKiAgIFRoZSBnaXZlbiBub2RlLlxuICAgKi9cbiAgZnVuY3Rpb24gZW50ZXIobm9kZSwgdG9rZW4sIGVycm9ySGFuZGxlcikge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IEFzc3VtZSBgTm9kZWAgY2FuIGV4aXN0IGFzIGEgY2hpbGQgb2YgYHBhcmVudGAuXG4gICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSlcbiAgICB0aGlzLnN0YWNrLnB1c2gobm9kZSlcbiAgICB0aGlzLnRva2VuU3RhY2sucHVzaChbdG9rZW4sIGVycm9ySGFuZGxlcl0pXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogYGVuZGAgd2lsbCBiZSBwYXRjaGVkIGxhdGVyLlxuICAgIG5vZGUucG9zaXRpb24gPSB7XG4gICAgICBzdGFydDogcG9pbnQodG9rZW4uc3RhcnQpXG4gICAgfVxuICAgIHJldHVybiBub2RlXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY2xvc2VyIGhhbmRsZS5cbiAgICpcbiAgICogQHBhcmFtIHtIYW5kbGV9IFthbmRdXG4gICAqICAgT3B0aW9uYWwgZnVuY3Rpb24gdG8gYWxzbyBydW4uXG4gICAqIEByZXR1cm5zIHtIYW5kbGV9XG4gICAqICAgSGFuZGxlLlxuICAgKi9cbiAgZnVuY3Rpb24gY2xvc2VyKGFuZCkge1xuICAgIHJldHVybiBjbG9zZVxuXG4gICAgLyoqXG4gICAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgICAqIEBwYXJhbSB7VG9rZW59IHRva2VuXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgZnVuY3Rpb24gY2xvc2UodG9rZW4pIHtcbiAgICAgIGlmIChhbmQpIGFuZC5jYWxsKHRoaXMsIHRva2VuKVxuICAgICAgZXhpdC5jYWxsKHRoaXMsIHRva2VuKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqICAgQ29udGV4dC5cbiAgICogQHBhcmFtIHtUb2tlbn0gdG9rZW5cbiAgICogICBDb3JyZXNwb25kaW5nIHRva2VuLlxuICAgKiBAcGFyYW0ge09uRXhpdEVycm9yIHwgdW5kZWZpbmVkfSBbb25FeGl0RXJyb3JdXG4gICAqICAgSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGFub3RoZXIgdG9rZW4gaXMgb3Blbi5cbiAgICogQHJldHVybnMge05vZGV9XG4gICAqICAgVGhlIGNsb3NlZCBub2RlLlxuICAgKi9cbiAgZnVuY3Rpb24gZXhpdCh0b2tlbiwgb25FeGl0RXJyb3IpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFjay5wb3AoKVxuICAgIGNvbnN0IG9wZW4gPSB0aGlzLnRva2VuU3RhY2sucG9wKClcbiAgICBpZiAoIW9wZW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBjbG9zZSBgJyArXG4gICAgICAgICAgdG9rZW4udHlwZSArXG4gICAgICAgICAgJ2AgKCcgK1xuICAgICAgICAgIHN0cmluZ2lmeVBvc2l0aW9uKHtcbiAgICAgICAgICAgIHN0YXJ0OiB0b2tlbi5zdGFydCxcbiAgICAgICAgICAgIGVuZDogdG9rZW4uZW5kXG4gICAgICAgICAgfSkgK1xuICAgICAgICAgICcpOiBpdFx1MjAxOXMgbm90IG9wZW4nXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChvcGVuWzBdLnR5cGUgIT09IHRva2VuLnR5cGUpIHtcbiAgICAgIGlmIChvbkV4aXRFcnJvcikge1xuICAgICAgICBvbkV4aXRFcnJvci5jYWxsKHRoaXMsIHRva2VuLCBvcGVuWzBdKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IG9wZW5bMV0gfHwgZGVmYXVsdE9uRXJyb3JcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIHRva2VuLCBvcGVuWzBdKVxuICAgICAgfVxuICAgIH1cbiAgICBub2RlLnBvc2l0aW9uLmVuZCA9IHBvaW50KHRva2VuLmVuZClcbiAgICByZXR1cm4gbm9kZVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGZ1bmN0aW9uIHJlc3VtZSgpIHtcbiAgICByZXR1cm4gdG9TdHJpbmcodGhpcy5zdGFjay5wb3AoKSlcbiAgfVxuXG4gIC8vXG4gIC8vIEhhbmRsZXJzLlxuICAvL1xuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmVudGVybGlzdG9yZGVyZWQoKSB7XG4gICAgc2V0RGF0YSgnZXhwZWN0aW5nRmlyc3RMaXN0SXRlbVZhbHVlJywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmVudGVybGlzdGl0ZW12YWx1ZSh0b2tlbikge1xuICAgIGlmIChnZXREYXRhKCdleHBlY3RpbmdGaXJzdExpc3RJdGVtVmFsdWUnKSkge1xuICAgICAgY29uc3QgYW5jZXN0b3IgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMl1cbiAgICAgIGFuY2VzdG9yLnN0YXJ0ID0gTnVtYmVyLnBhcnNlSW50KHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pLCAxMClcbiAgICAgIHNldERhdGEoJ2V4cGVjdGluZ0ZpcnN0TGlzdEl0ZW1WYWx1ZScpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGNvZGVmZW5jZWRmZW5jZWluZm8oKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS5sYW5nID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGNvZGVmZW5jZWRmZW5jZW1ldGEoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS5tZXRhID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGNvZGVmZW5jZWRmZW5jZSgpIHtcbiAgICAvLyBFeGl0IGlmIHRoaXMgaXMgdGhlIGNsb3NpbmcgZmVuY2UuXG4gICAgaWYgKGdldERhdGEoJ2Zsb3dDb2RlSW5zaWRlJykpIHJldHVyblxuICAgIHRoaXMuYnVmZmVyKClcbiAgICBzZXREYXRhKCdmbG93Q29kZUluc2lkZScsIHRydWUpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0Y29kZWZlbmNlZCgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLnZhbHVlID0gZGF0YS5yZXBsYWNlKC9eKFxccj9cXG58XFxyKXwoXFxyP1xcbnxcXHIpJC9nLCAnJylcbiAgICBzZXREYXRhKCdmbG93Q29kZUluc2lkZScpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0Y29kZWluZGVudGVkKCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUudmFsdWUgPSBkYXRhLnJlcGxhY2UoLyhcXHI/XFxufFxccikkL2csICcnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG4gIGZ1bmN0aW9uIG9uZXhpdGRlZmluaXRpb25sYWJlbHN0cmluZyh0b2tlbikge1xuICAgIGNvbnN0IGxhYmVsID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLmxhYmVsID0gbGFiZWxcbiAgICBub2RlLmlkZW50aWZpZXIgPSBub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbilcbiAgICApLnRvTG93ZXJDYXNlKClcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRkZWZpbml0aW9udGl0bGVzdHJpbmcoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS50aXRsZSA9IGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRkZWZpbml0aW9uZGVzdGluYXRpb25zdHJpbmcoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS51cmwgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0YXR4aGVhZGluZ3NlcXVlbmNlKHRva2VuKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGlmICghbm9kZS5kZXB0aCkge1xuICAgICAgY29uc3QgZGVwdGggPSB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKS5sZW5ndGhcbiAgICAgIG5vZGUuZGVwdGggPSBkZXB0aFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRzZXRleHRoZWFkaW5ndGV4dCgpIHtcbiAgICBzZXREYXRhKCdzZXRleHRIZWFkaW5nU2x1cnBMaW5lRW5kaW5nJywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRzZXRleHRoZWFkaW5nbGluZXNlcXVlbmNlKHRva2VuKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUuZGVwdGggPSB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKS5jaGFyQ29kZUF0KDApID09PSA2MSA/IDEgOiAyXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0c2V0ZXh0aGVhZGluZygpIHtcbiAgICBzZXREYXRhKCdzZXRleHRIZWFkaW5nU2x1cnBMaW5lRW5kaW5nJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZW50ZXJkYXRhKHRva2VuKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGxldCB0YWlsID0gbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdXG4gICAgaWYgKCF0YWlsIHx8IHRhaWwudHlwZSAhPT0gJ3RleHQnKSB7XG4gICAgICAvLyBBZGQgYSBuZXcgdGV4dCBub2RlLlxuICAgICAgdGFpbCA9IHRleHQoKVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogd2VcdTIwMTlsbCBhZGQgYGVuZGAgbGF0ZXIuXG4gICAgICB0YWlsLnBvc2l0aW9uID0ge1xuICAgICAgICBzdGFydDogcG9pbnQodG9rZW4uc3RhcnQpXG4gICAgICB9XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBBc3N1bWUgYHBhcmVudGAgYWNjZXB0cyBgdGV4dGAuXG4gICAgICBub2RlLmNoaWxkcmVuLnB1c2godGFpbClcbiAgICB9XG4gICAgdGhpcy5zdGFjay5wdXNoKHRhaWwpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRkYXRhKHRva2VuKSB7XG4gICAgY29uc3QgdGFpbCA9IHRoaXMuc3RhY2sucG9wKClcbiAgICB0YWlsLnZhbHVlICs9IHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pXG4gICAgdGFpbC5wb3NpdGlvbi5lbmQgPSBwb2ludCh0b2tlbi5lbmQpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRsaW5lZW5kaW5nKHRva2VuKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIC8vIElmIHdlXHUyMDE5cmUgYXQgYSBoYXJkIGJyZWFrLCBpbmNsdWRlIHRoZSBsaW5lIGVuZGluZyBpbiB0aGVyZS5cbiAgICBpZiAoZ2V0RGF0YSgnYXRIYXJkQnJlYWsnKSkge1xuICAgICAgY29uc3QgdGFpbCA9IGNvbnRleHQuY2hpbGRyZW5bY29udGV4dC5jaGlsZHJlbi5sZW5ndGggLSAxXVxuICAgICAgdGFpbC5wb3NpdGlvbi5lbmQgPSBwb2ludCh0b2tlbi5lbmQpXG4gICAgICBzZXREYXRhKCdhdEhhcmRCcmVhaycpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKFxuICAgICAgIWdldERhdGEoJ3NldGV4dEhlYWRpbmdTbHVycExpbmVFbmRpbmcnKSAmJlxuICAgICAgY29uZmlnLmNhbkNvbnRhaW5Fb2xzLmluY2x1ZGVzKGNvbnRleHQudHlwZSlcbiAgICApIHtcbiAgICAgIG9uZW50ZXJkYXRhLmNhbGwodGhpcywgdG9rZW4pXG4gICAgICBvbmV4aXRkYXRhLmNhbGwodGhpcywgdG9rZW4pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0aGFyZGJyZWFrKCkge1xuICAgIHNldERhdGEoJ2F0SGFyZEJyZWFrJywgdHJ1ZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGh0bWxmbG93KCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUudmFsdWUgPSBkYXRhXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRodG1sdGV4dCgpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLnZhbHVlID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0Y29kZXRleHQoKSB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS52YWx1ZSA9IGRhdGFcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGxpbmsoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIC8vIE5vdGU6IHRoZXJlIGFyZSBhbHNvIGBpZGVudGlmaWVyYCBhbmQgYGxhYmVsYCBmaWVsZHMgb24gdGhpcyBsaW5rIG5vZGUhXG4gICAgLy8gVGhlc2UgYXJlIHVzZWQgLyBjbGVhbmVkIGhlcmUuXG4gICAgLy8gVG8gZG86IGNsZWFuLlxuICAgIGlmIChnZXREYXRhKCdpblJlZmVyZW5jZScpKSB7XG4gICAgICAvKiogQHR5cGUge1JlZmVyZW5jZVR5cGV9ICovXG4gICAgICBjb25zdCByZWZlcmVuY2VUeXBlID0gZ2V0RGF0YSgncmVmZXJlbmNlVHlwZScpIHx8ICdzaG9ydGN1dCdcbiAgICAgIG5vZGUudHlwZSArPSAnUmVmZXJlbmNlJ1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgbm9kZS5yZWZlcmVuY2VUeXBlID0gcmVmZXJlbmNlVHlwZVxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgZGVsZXRlIG5vZGUudXJsXG4gICAgICBkZWxldGUgbm9kZS50aXRsZVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBtdXRhdGUuXG4gICAgICBkZWxldGUgbm9kZS5pZGVudGlmaWVyXG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBtdXRhdGUuXG4gICAgICBkZWxldGUgbm9kZS5sYWJlbFxuICAgIH1cbiAgICBzZXREYXRhKCdyZWZlcmVuY2VUeXBlJylcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG9uZXhpdGltYWdlKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICAvLyBOb3RlOiB0aGVyZSBhcmUgYWxzbyBgaWRlbnRpZmllcmAgYW5kIGBsYWJlbGAgZmllbGRzIG9uIHRoaXMgbGluayBub2RlIVxuICAgIC8vIFRoZXNlIGFyZSB1c2VkIC8gY2xlYW5lZCBoZXJlLlxuICAgIC8vIFRvIGRvOiBjbGVhbi5cbiAgICBpZiAoZ2V0RGF0YSgnaW5SZWZlcmVuY2UnKSkge1xuICAgICAgLyoqIEB0eXBlIHtSZWZlcmVuY2VUeXBlfSAqL1xuICAgICAgY29uc3QgcmVmZXJlbmNlVHlwZSA9IGdldERhdGEoJ3JlZmVyZW5jZVR5cGUnKSB8fCAnc2hvcnRjdXQnXG4gICAgICBub2RlLnR5cGUgKz0gJ1JlZmVyZW5jZSdcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG11dGF0ZS5cbiAgICAgIG5vZGUucmVmZXJlbmNlVHlwZSA9IHJlZmVyZW5jZVR5cGVcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IG11dGF0ZS5cbiAgICAgIGRlbGV0ZSBub2RlLnVybFxuICAgICAgZGVsZXRlIG5vZGUudGl0bGVcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgZGVsZXRlIG5vZGUuaWRlbnRpZmllclxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogbXV0YXRlLlxuICAgICAgZGVsZXRlIG5vZGUubGFiZWxcbiAgICB9XG4gICAgc2V0RGF0YSgncmVmZXJlbmNlVHlwZScpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRsYWJlbHRleHQodG9rZW4pIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKVxuICAgIGNvbnN0IGFuY2VzdG9yID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDJdXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogc3Rhc2ggdGhpcyBvbiB0aGUgbm9kZSwgYXMgaXQgbWlnaHQgYmVjb21lIGEgcmVmZXJlbmNlXG4gICAgLy8gbGF0ZXIuXG4gICAgYW5jZXN0b3IubGFiZWwgPSBkZWNvZGVTdHJpbmcoc3RyaW5nKVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IHNhbWUgYXMgYWJvdmUuXG4gICAgYW5jZXN0b3IuaWRlbnRpZmllciA9IG5vcm1hbGl6ZUlkZW50aWZpZXIoc3RyaW5nKS50b0xvd2VyQ2FzZSgpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRsYWJlbCgpIHtcbiAgICBjb25zdCBmcmFnbWVudCA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICAvLyBBc3N1bWUgYSByZWZlcmVuY2UuXG4gICAgc2V0RGF0YSgnaW5SZWZlcmVuY2UnLCB0cnVlKVxuICAgIGlmIChub2RlLnR5cGUgPT09ICdsaW5rJykge1xuICAgICAgLyoqIEB0eXBlIHtBcnJheTxTdGF0aWNQaHJhc2luZ0NvbnRlbnQ+fSAqL1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogQXNzdW1lIHN0YXRpYyBwaHJhc2luZyBjb250ZW50LlxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBmcmFnbWVudC5jaGlsZHJlblxuICAgICAgbm9kZS5jaGlsZHJlbiA9IGNoaWxkcmVuXG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuYWx0ID0gdmFsdWVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRyZXNvdXJjZWRlc3RpbmF0aW9uc3RyaW5nKCkge1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnJlc3VtZSgpXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXVxuICAgIG5vZGUudXJsID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0cmVzb3VyY2V0aXRsZXN0cmluZygpIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5yZXN1bWUoKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLnRpdGxlID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0cmVzb3VyY2UoKSB7XG4gICAgc2V0RGF0YSgnaW5SZWZlcmVuY2UnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25lbnRlcnJlZmVyZW5jZSgpIHtcbiAgICBzZXREYXRhKCdyZWZlcmVuY2VUeXBlJywgJ2NvbGxhcHNlZCcpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cblxuICBmdW5jdGlvbiBvbmV4aXRyZWZlcmVuY2VzdHJpbmcodG9rZW4pIHtcbiAgICBjb25zdCBsYWJlbCA9IHRoaXMucmVzdW1lKClcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogc3Rhc2ggdGhpcyBvbiB0aGUgbm9kZSwgYXMgaXQgbWlnaHQgYmVjb21lIGEgcmVmZXJlbmNlXG4gICAgLy8gbGF0ZXIuXG4gICAgbm9kZS5sYWJlbCA9IGxhYmVsXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogc2FtZSBhcyBhYm92ZS5cbiAgICBub2RlLmlkZW50aWZpZXIgPSBub3JtYWxpemVJZGVudGlmaWVyKFxuICAgICAgdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbilcbiAgICApLnRvTG93ZXJDYXNlKClcbiAgICBzZXREYXRhKCdyZWZlcmVuY2VUeXBlJywgJ2Z1bGwnKVxuICB9XG5cbiAgLyoqXG4gICAqIEB0aGlzIHtDb21waWxlQ29udGV4dH1cbiAgICogQHR5cGUge0hhbmRsZX1cbiAgICovXG5cbiAgZnVuY3Rpb24gb25leGl0Y2hhcmFjdGVycmVmZXJlbmNlbWFya2VyKHRva2VuKSB7XG4gICAgc2V0RGF0YSgnY2hhcmFjdGVyUmVmZXJlbmNlVHlwZScsIHRva2VuLnR5cGUpXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0Y2hhcmFjdGVycmVmZXJlbmNldmFsdWUodG9rZW4pIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5zbGljZVNlcmlhbGl6ZSh0b2tlbilcbiAgICBjb25zdCB0eXBlID0gZ2V0RGF0YSgnY2hhcmFjdGVyUmVmZXJlbmNlVHlwZScpXG4gICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovXG4gICAgbGV0IHZhbHVlXG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIHZhbHVlID0gZGVjb2RlTnVtZXJpY0NoYXJhY3RlclJlZmVyZW5jZShcbiAgICAgICAgZGF0YSxcbiAgICAgICAgdHlwZSA9PT0gJ2NoYXJhY3RlclJlZmVyZW5jZU1hcmtlck51bWVyaWMnID8gMTAgOiAxNlxuICAgICAgKVxuICAgICAgc2V0RGF0YSgnY2hhcmFjdGVyUmVmZXJlbmNlVHlwZScpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGRlY29kZU5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKGRhdGEpXG4gICAgICB2YWx1ZSA9IHJlc3VsdFxuICAgIH1cbiAgICBjb25zdCB0YWlsID0gdGhpcy5zdGFjay5wb3AoKVxuICAgIHRhaWwudmFsdWUgKz0gdmFsdWVcbiAgICB0YWlsLnBvc2l0aW9uLmVuZCA9IHBvaW50KHRva2VuLmVuZClcbiAgfVxuXG4gIC8qKlxuICAgKiBAdGhpcyB7Q29tcGlsZUNvbnRleHR9XG4gICAqIEB0eXBlIHtIYW5kbGV9XG4gICAqL1xuICBmdW5jdGlvbiBvbmV4aXRhdXRvbGlua3Byb3RvY29sKHRva2VuKSB7XG4gICAgb25leGl0ZGF0YS5jYWxsKHRoaXMsIHRva2VuKVxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gMV1cbiAgICBub2RlLnVybCA9IHRoaXMuc2xpY2VTZXJpYWxpemUodG9rZW4pXG4gIH1cblxuICAvKipcbiAgICogQHRoaXMge0NvbXBpbGVDb250ZXh0fVxuICAgKiBAdHlwZSB7SGFuZGxlfVxuICAgKi9cbiAgZnVuY3Rpb24gb25leGl0YXV0b2xpbmtlbWFpbCh0b2tlbikge1xuICAgIG9uZXhpdGRhdGEuY2FsbCh0aGlzLCB0b2tlbilcbiAgICBjb25zdCBub2RlID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdXG4gICAgbm9kZS51cmwgPSAnbWFpbHRvOicgKyB0aGlzLnNsaWNlU2VyaWFsaXplKHRva2VuKVxuICB9XG5cbiAgLy9cbiAgLy8gQ3JlYXRlcnMuXG4gIC8vXG5cbiAgLyoqIEByZXR1cm5zIHtCbG9ja3F1b3RlfSAqL1xuICBmdW5jdGlvbiBibG9ja1F1b3RlKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnYmxvY2txdW90ZScsXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0NvZGV9ICovXG4gIGZ1bmN0aW9uIGNvZGVGbG93KCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnY29kZScsXG4gICAgICBsYW5nOiBudWxsLFxuICAgICAgbWV0YTogbnVsbCxcbiAgICAgIHZhbHVlOiAnJ1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7SW5saW5lQ29kZX0gKi9cbiAgZnVuY3Rpb24gY29kZVRleHQoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdpbmxpbmVDb2RlJyxcbiAgICAgIHZhbHVlOiAnJ1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7RGVmaW5pdGlvbn0gKi9cbiAgZnVuY3Rpb24gZGVmaW5pdGlvbigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2RlZmluaXRpb24nLFxuICAgICAgaWRlbnRpZmllcjogJycsXG4gICAgICBsYWJlbDogbnVsbCxcbiAgICAgIHRpdGxlOiBudWxsLFxuICAgICAgdXJsOiAnJ1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7RW1waGFzaXN9ICovXG4gIGZ1bmN0aW9uIGVtcGhhc2lzKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZW1waGFzaXMnLFxuICAgICAgY2hpbGRyZW46IFtdXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtIZWFkaW5nfSAqL1xuICBmdW5jdGlvbiBoZWFkaW5nKCkge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgYGRlcHRoYCB3aWxsIGJlIHNldCBsYXRlci5cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2hlYWRpbmcnLFxuICAgICAgZGVwdGg6IHVuZGVmaW5lZCxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7QnJlYWt9ICovXG4gIGZ1bmN0aW9uIGhhcmRCcmVhaygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2JyZWFrJ1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7SFRNTH0gKi9cbiAgZnVuY3Rpb24gaHRtbCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2h0bWwnLFxuICAgICAgdmFsdWU6ICcnXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtJbWFnZX0gKi9cbiAgZnVuY3Rpb24gaW1hZ2UoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICB0aXRsZTogbnVsbCxcbiAgICAgIHVybDogJycsXG4gICAgICBhbHQ6IG51bGxcbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge0xpbmt9ICovXG4gIGZ1bmN0aW9uIGxpbmsoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdsaW5rJyxcbiAgICAgIHRpdGxlOiBudWxsLFxuICAgICAgdXJsOiAnJyxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Rva2VufSB0b2tlblxuICAgKiBAcmV0dXJucyB7TGlzdH1cbiAgICovXG4gIGZ1bmN0aW9uIGxpc3QodG9rZW4pIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2xpc3QnLFxuICAgICAgb3JkZXJlZDogdG9rZW4udHlwZSA9PT0gJ2xpc3RPcmRlcmVkJyxcbiAgICAgIHN0YXJ0OiBudWxsLFxuICAgICAgc3ByZWFkOiB0b2tlbi5fc3ByZWFkLFxuICAgICAgY2hpbGRyZW46IFtdXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VG9rZW59IHRva2VuXG4gICAqIEByZXR1cm5zIHtMaXN0SXRlbX1cbiAgICovXG4gIGZ1bmN0aW9uIGxpc3RJdGVtKHRva2VuKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdsaXN0SXRlbScsXG4gICAgICBzcHJlYWQ6IHRva2VuLl9zcHJlYWQsXG4gICAgICBjaGVja2VkOiBudWxsLFxuICAgICAgY2hpbGRyZW46IFtdXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQYXJhZ3JhcGh9ICovXG4gIGZ1bmN0aW9uIHBhcmFncmFwaCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3BhcmFncmFwaCcsXG4gICAgICBjaGlsZHJlbjogW11cbiAgICB9XG4gIH1cblxuICAvKiogQHJldHVybnMge1N0cm9uZ30gKi9cbiAgZnVuY3Rpb24gc3Ryb25nKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnc3Ryb25nJyxcbiAgICAgIGNoaWxkcmVuOiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7VGV4dH0gKi9cbiAgZnVuY3Rpb24gdGV4dCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgdmFsdWU6ICcnXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtUaGVtYXRpY0JyZWFrfSAqL1xuICBmdW5jdGlvbiB0aGVtYXRpY0JyZWFrKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAndGhlbWF0aWNCcmVhaydcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDb3B5IGEgcG9pbnQtbGlrZSB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0ge1BvaW50fSBkXG4gKiAgIFBvaW50LWxpa2UgdmFsdWUuXG4gKiBAcmV0dXJucyB7UG9pbnR9XG4gKiAgIHVuaXN0IHBvaW50LlxuICovXG5mdW5jdGlvbiBwb2ludChkKSB7XG4gIHJldHVybiB7XG4gICAgbGluZTogZC5saW5lLFxuICAgIGNvbHVtbjogZC5jb2x1bW4sXG4gICAgb2Zmc2V0OiBkLm9mZnNldFxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtDb25maWd9IGNvbWJpbmVkXG4gKiBAcGFyYW0ge0FycmF5PEV4dGVuc2lvbiB8IEFycmF5PEV4dGVuc2lvbj4+fSBleHRlbnNpb25zXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gY29uZmlndXJlKGNvbWJpbmVkLCBleHRlbnNpb25zKSB7XG4gIGxldCBpbmRleCA9IC0xXG4gIHdoaWxlICgrK2luZGV4IDwgZXh0ZW5zaW9ucy5sZW5ndGgpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGV4dGVuc2lvbnNbaW5kZXhdXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBjb25maWd1cmUoY29tYmluZWQsIHZhbHVlKVxuICAgIH0gZWxzZSB7XG4gICAgICBleHRlbnNpb24oY29tYmluZWQsIHZhbHVlKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7Q29uZmlnfSBjb21iaW5lZFxuICogQHBhcmFtIHtFeHRlbnNpb259IGV4dGVuc2lvblxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGV4dGVuc2lvbihjb21iaW5lZCwgZXh0ZW5zaW9uKSB7XG4gIC8qKiBAdHlwZSB7a2V5b2YgRXh0ZW5zaW9ufSAqL1xuICBsZXQga2V5XG4gIGZvciAoa2V5IGluIGV4dGVuc2lvbikge1xuICAgIGlmIChvd24uY2FsbChleHRlbnNpb24sIGtleSkpIHtcbiAgICAgIGlmIChrZXkgPT09ICdjYW5Db250YWluRW9scycpIHtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBleHRlbnNpb25ba2V5XVxuICAgICAgICBpZiAocmlnaHQpIHtcbiAgICAgICAgICBjb21iaW5lZFtrZXldLnB1c2goLi4ucmlnaHQpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAndHJhbnNmb3JtcycpIHtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBleHRlbnNpb25ba2V5XVxuICAgICAgICBpZiAocmlnaHQpIHtcbiAgICAgICAgICBjb21iaW5lZFtrZXldLnB1c2goLi4ucmlnaHQpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZW50ZXInIHx8IGtleSA9PT0gJ2V4aXQnKSB7XG4gICAgICAgIGNvbnN0IHJpZ2h0ID0gZXh0ZW5zaW9uW2tleV1cbiAgICAgICAgaWYgKHJpZ2h0KSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihjb21iaW5lZFtrZXldLCByaWdodClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiogQHR5cGUge09uRW50ZXJFcnJvcn0gKi9cbmZ1bmN0aW9uIGRlZmF1bHRPbkVycm9yKGxlZnQsIHJpZ2h0KSB7XG4gIGlmIChsZWZ0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0Nhbm5vdCBjbG9zZSBgJyArXG4gICAgICAgIGxlZnQudHlwZSArXG4gICAgICAgICdgICgnICtcbiAgICAgICAgc3RyaW5naWZ5UG9zaXRpb24oe1xuICAgICAgICAgIHN0YXJ0OiBsZWZ0LnN0YXJ0LFxuICAgICAgICAgIGVuZDogbGVmdC5lbmRcbiAgICAgICAgfSkgK1xuICAgICAgICAnKTogYSBkaWZmZXJlbnQgdG9rZW4gKGAnICtcbiAgICAgICAgcmlnaHQudHlwZSArXG4gICAgICAgICdgLCAnICtcbiAgICAgICAgc3RyaW5naWZ5UG9zaXRpb24oe1xuICAgICAgICAgIHN0YXJ0OiByaWdodC5zdGFydCxcbiAgICAgICAgICBlbmQ6IHJpZ2h0LmVuZFxuICAgICAgICB9KSArXG4gICAgICAgICcpIGlzIG9wZW4nXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdDYW5ub3QgY2xvc2UgZG9jdW1lbnQsIGEgdG9rZW4gKGAnICtcbiAgICAgICAgcmlnaHQudHlwZSArXG4gICAgICAgICdgLCAnICtcbiAgICAgICAgc3RyaW5naWZ5UG9zaXRpb24oe1xuICAgICAgICAgIHN0YXJ0OiByaWdodC5zdGFydCxcbiAgICAgICAgICBlbmQ6IHJpZ2h0LmVuZFxuICAgICAgICB9KSArXG4gICAgICAgICcpIGlzIHN0aWxsIG9wZW4nXG4gICAgKVxuICB9XG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtZGFzdCcpLlJvb3R9IFJvb3RcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ21kYXN0LXV0aWwtZnJvbS1tYXJrZG93bicpLk9wdGlvbnN9IE9wdGlvbnNcbiAqL1xuXG5pbXBvcnQge2Zyb21NYXJrZG93bn0gZnJvbSAnbWRhc3QtdXRpbC1mcm9tLW1hcmtkb3duJ1xuXG4vKipcbiAqIEB0aGlzIHtpbXBvcnQoJ3VuaWZpZWQnKS5Qcm9jZXNzb3J9XG4gKiBAdHlwZSB7aW1wb3J0KCd1bmlmaWVkJykuUGx1Z2luPFtPcHRpb25zP10gfCB2b2lkW10sIHN0cmluZywgUm9vdD59XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlbWFya1BhcnNlKG9wdGlvbnMpIHtcbiAgLyoqIEB0eXBlIHtpbXBvcnQoJ3VuaWZpZWQnKS5QYXJzZXJGdW5jdGlvbjxSb290Pn0gKi9cbiAgY29uc3QgcGFyc2VyID0gKGRvYykgPT4ge1xuICAgIC8vIEFzc3VtZSBvcHRpb25zLlxuICAgIGNvbnN0IHNldHRpbmdzID0gLyoqIEB0eXBlIHtPcHRpb25zfSAqLyAodGhpcy5kYXRhKCdzZXR0aW5ncycpKVxuXG4gICAgcmV0dXJuIGZyb21NYXJrZG93bihcbiAgICAgIGRvYyxcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHNldHRpbmdzLCBvcHRpb25zLCB7XG4gICAgICAgIC8vIE5vdGU6IHRoZXNlIG9wdGlvbnMgYXJlIG5vdCBpbiB0aGUgcmVhZG1lLlxuICAgICAgICAvLyBUaGUgZ29hbCBpcyBmb3IgdGhlbSB0byBiZSBzZXQgYnkgcGx1Z2lucyBvbiBgZGF0YWAgaW5zdGVhZCBvZiBiZWluZ1xuICAgICAgICAvLyBwYXNzZWQgYnkgdXNlcnMuXG4gICAgICAgIGV4dGVuc2lvbnM6IHRoaXMuZGF0YSgnbWljcm9tYXJrRXh0ZW5zaW9ucycpIHx8IFtdLFxuICAgICAgICBtZGFzdEV4dGVuc2lvbnM6IHRoaXMuZGF0YSgnZnJvbU1hcmtkb3duRXh0ZW5zaW9ucycpIHx8IFtdXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIE9iamVjdC5hc3NpZ24odGhpcywge1BhcnNlcjogcGFyc2VyfSlcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuTm9kZX0gTm9kZVxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5QYXJlbnR9IFBhcmVudFxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIEZuXG4gKiBAdGVtcGxhdGUgRmFsbGJhY2tcbiAqIEB0eXBlZGVmIHtGbiBleHRlbmRzICh2YWx1ZTogYW55KSA9PiB2YWx1ZSBpcyBpbmZlciBUaGluZyA/IFRoaW5nIDogRmFsbGJhY2t9IFByZWRpY2F0ZVxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIENoZWNrXG4gKiAgIENoZWNrIHRoYXQgYW4gYXJiaXRyYXJ5IHZhbHVlIGlzIGEgbm9kZS5cbiAqIEBwYXJhbSB7dW5rbm93bn0gdGhpc1xuICogICBUaGUgZ2l2ZW4gY29udGV4dC5cbiAqIEBwYXJhbSB7dW5rbm93bn0gW25vZGVdXG4gKiAgIEFueXRoaW5nICh0eXBpY2FsbHkgYSBub2RlKS5cbiAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2luZGV4XVxuICogICBUaGUgbm9kZVx1MjAxOXMgcG9zaXRpb24gaW4gaXRzIHBhcmVudC5cbiAqIEBwYXJhbSB7UGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3BhcmVudF1cbiAqICAgVGhlIG5vZGVcdTIwMTlzIHBhcmVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogICBXaGV0aGVyIHRoaXMgaXMgYSBub2RlIGFuZCBwYXNzZXMgYSB0ZXN0LlxuICpcbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IE5vZGV9IFByb3BzXG4gKiAgIE9iamVjdCB0byBjaGVjayBmb3IgZXF1aXZhbGVuY2UuXG4gKlxuICogICBOb3RlOiBgTm9kZWAgaXMgaW5jbHVkZWQgYXMgaXQgaXMgY29tbW9uIGJ1dCBpcyBub3QgaW5kZXhhYmxlLlxuICpcbiAqIEB0eXBlZGVmIHtBcnJheTxQcm9wcyB8IFRlc3RGdW5jdGlvbiB8IHN0cmluZz4gfCBQcm9wcyB8IFRlc3RGdW5jdGlvbiB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWR9IFRlc3RcbiAqICAgQ2hlY2sgZm9yIGFuIGFyYml0cmFyeSBub2RlLlxuICpcbiAqIEBjYWxsYmFjayBUZXN0RnVuY3Rpb25cbiAqICAgQ2hlY2sgaWYgYSBub2RlIHBhc3NlcyBhIHRlc3QuXG4gKiBAcGFyYW0ge3Vua25vd259IHRoaXNcbiAqICAgVGhlIGdpdmVuIGNvbnRleHQuXG4gKiBAcGFyYW0ge05vZGV9IG5vZGVcbiAqICAgQSBub2RlLlxuICogQHBhcmFtIHtudW1iZXIgfCB1bmRlZmluZWR9IFtpbmRleF1cbiAqICAgVGhlIG5vZGVcdTIwMTlzIHBvc2l0aW9uIGluIGl0cyBwYXJlbnQuXG4gKiBAcGFyYW0ge1BhcmVudCB8IHVuZGVmaW5lZH0gW3BhcmVudF1cbiAqICAgVGhlIG5vZGVcdTIwMTlzIHBhcmVudC5cbiAqIEByZXR1cm5zIHtib29sZWFuIHwgdW5kZWZpbmVkIHwgdm9pZH1cbiAqICAgV2hldGhlciB0aGlzIG5vZGUgcGFzc2VzIHRoZSB0ZXN0LlxuICpcbiAqICAgTm90ZTogYHZvaWRgIGlzIGluY2x1ZGVkIHVudGlsIFRTIHNlZXMgbm8gcmV0dXJuIGFzIGB1bmRlZmluZWRgLlxuICovXG5cbi8qKlxuICogQ2hlY2sgaWYgYG5vZGVgIGlzIGEgYE5vZGVgIGFuZCB3aGV0aGVyIGl0IHBhc3NlcyB0aGUgZ2l2ZW4gdGVzdC5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IG5vZGVcbiAqICAgVGhpbmcgdG8gY2hlY2ssIHR5cGljYWxseSBgTm9kZWAuXG4gKiBAcGFyYW0ge1Rlc3R9IHRlc3RcbiAqICAgQSBjaGVjayBmb3IgYSBzcGVjaWZpYyBub2RlLlxuICogQHBhcmFtIHtudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkfSBpbmRleFxuICogICBUaGUgbm9kZVx1MjAxOXMgcG9zaXRpb24gaW4gaXRzIHBhcmVudC5cbiAqIEBwYXJhbSB7UGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZH0gcGFyZW50XG4gKiAgIFRoZSBub2RlXHUyMDE5cyBwYXJlbnQuXG4gKiBAcGFyYW0ge3Vua25vd259IGNvbnRleHRcbiAqICAgQ29udGV4dCBvYmplY3QgKGB0aGlzYCkgdG8gcGFzcyB0byBgdGVzdGAgZnVuY3Rpb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiAgIFdoZXRoZXIgYG5vZGVgIGlzIGEgbm9kZSBhbmQgcGFzc2VzIGEgdGVzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzID1cbiAgLy8gTm90ZTogb3ZlcmxvYWRzIGluIEpTRG9jIGNhblx1MjAxOXQgeWV0IHVzZSBkaWZmZXJlbnQgYEB0ZW1wbGF0ZWBzLlxuICAvKipcbiAgICogQHR5cGUgeyhcbiAgICogICAoPENvbmRpdGlvbiBleHRlbmRzIHN0cmluZz4obm9kZTogdW5rbm93biwgdGVzdDogQ29uZGl0aW9uLCBpbmRleD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIHBhcmVudD86IFBhcmVudCB8IG51bGwgfCB1bmRlZmluZWQsIGNvbnRleHQ/OiB1bmtub3duKSA9PiBub2RlIGlzIE5vZGUgJiB7dHlwZTogQ29uZGl0aW9ufSkgJlxuICAgKiAgICg8Q29uZGl0aW9uIGV4dGVuZHMgUHJvcHM+KG5vZGU6IHVua25vd24sIHRlc3Q6IENvbmRpdGlvbiwgaW5kZXg/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXJlbnQ/OiBQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBjb250ZXh0PzogdW5rbm93bikgPT4gbm9kZSBpcyBOb2RlICYgQ29uZGl0aW9uKSAmXG4gICAqICAgKDxDb25kaXRpb24gZXh0ZW5kcyBUZXN0RnVuY3Rpb24+KG5vZGU6IHVua25vd24sIHRlc3Q6IENvbmRpdGlvbiwgaW5kZXg/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXJlbnQ/OiBQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBjb250ZXh0PzogdW5rbm93bikgPT4gbm9kZSBpcyBOb2RlICYgUHJlZGljYXRlPENvbmRpdGlvbiwgTm9kZT4pICZcbiAgICogICAoKG5vZGU/OiBudWxsIHwgdW5kZWZpbmVkKSA9PiBmYWxzZSkgJlxuICAgKiAgICgobm9kZTogdW5rbm93biwgdGVzdD86IG51bGwgfCB1bmRlZmluZWQsIGluZGV4PzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgcGFyZW50PzogUGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZCwgY29udGV4dD86IHVua25vd24pID0+IG5vZGUgaXMgTm9kZSkgJlxuICAgKiAgICgobm9kZTogdW5rbm93biwgdGVzdD86IFRlc3QsIGluZGV4PzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgcGFyZW50PzogUGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZCwgY29udGV4dD86IHVua25vd24pID0+IGJvb2xlYW4pXG4gICAqICl9XG4gICAqL1xuICAoXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHt1bmtub3dufSBbbm9kZV1cbiAgICAgKiBAcGFyYW0ge1Rlc3R9IFt0ZXN0XVxuICAgICAqIEBwYXJhbSB7bnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZH0gW2luZGV4XVxuICAgICAqIEBwYXJhbSB7UGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZH0gW3BhcmVudF1cbiAgICAgKiBAcGFyYW0ge3Vua25vd259IFtjb250ZXh0XVxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtcGFyYW1zXG4gICAgZnVuY3Rpb24gKG5vZGUsIHRlc3QsIGluZGV4LCBwYXJlbnQsIGNvbnRleHQpIHtcbiAgICAgIGNvbnN0IGNoZWNrID0gY29udmVydCh0ZXN0KVxuXG4gICAgICBpZiAoXG4gICAgICAgIGluZGV4ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgaW5kZXggIT09IG51bGwgJiZcbiAgICAgICAgKHR5cGVvZiBpbmRleCAhPT0gJ251bWJlcicgfHxcbiAgICAgICAgICBpbmRleCA8IDAgfHxcbiAgICAgICAgICBpbmRleCA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgcG9zaXRpdmUgZmluaXRlIGluZGV4JylcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBwYXJlbnQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBwYXJlbnQgIT09IG51bGwgJiZcbiAgICAgICAgKCFpcyhwYXJlbnQpIHx8ICFwYXJlbnQuY2hpbGRyZW4pXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBwYXJlbnQgbm9kZScpXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgKHBhcmVudCA9PT0gdW5kZWZpbmVkIHx8IHBhcmVudCA9PT0gbnVsbCkgIT09XG4gICAgICAgIChpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4ID09PSBudWxsKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgYm90aCBwYXJlbnQgYW5kIGluZGV4JylcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxvb2tzTGlrZUFOb2RlKG5vZGUpXG4gICAgICAgID8gY2hlY2suY2FsbChjb250ZXh0LCBub2RlLCBpbmRleCwgcGFyZW50KVxuICAgICAgICA6IGZhbHNlXG4gICAgfVxuICApXG5cbi8qKlxuICogR2VuZXJhdGUgYW4gYXNzZXJ0aW9uIGZyb20gYSB0ZXN0LlxuICpcbiAqIFVzZWZ1bCBpZiB5b3VcdTIwMTlyZSBnb2luZyB0byB0ZXN0IG1hbnkgbm9kZXMsIGZvciBleGFtcGxlIHdoZW4gY3JlYXRpbmcgYVxuICogdXRpbGl0eSB3aGVyZSBzb21ldGhpbmcgZWxzZSBwYXNzZXMgYSBjb21wYXRpYmxlIHRlc3QuXG4gKlxuICogVGhlIGNyZWF0ZWQgZnVuY3Rpb24gaXMgYSBiaXQgZmFzdGVyIGJlY2F1c2UgaXQgZXhwZWN0cyB2YWxpZCBpbnB1dCBvbmx5OlxuICogYSBgbm9kZWAsIGBpbmRleGAsIGFuZCBgcGFyZW50YC5cbiAqXG4gKiBAcGFyYW0ge1Rlc3R9IHRlc3RcbiAqICAgKiAgIHdoZW4gbnVsbGlzaCwgY2hlY2tzIGlmIGBub2RlYCBpcyBhIGBOb2RlYC5cbiAqICAgKiAgIHdoZW4gYHN0cmluZ2AsIHdvcmtzIGxpa2UgcGFzc2luZyBgKG5vZGUpID0+IG5vZGUudHlwZSA9PT0gdGVzdGAuXG4gKiAgICogICB3aGVuIGBmdW5jdGlvbmAgY2hlY2tzIGlmIGZ1bmN0aW9uIHBhc3NlZCB0aGUgbm9kZSBpcyB0cnVlLlxuICogICAqICAgd2hlbiBgb2JqZWN0YCwgY2hlY2tzIHRoYXQgYWxsIGtleXMgaW4gdGVzdCBhcmUgaW4gbm9kZSwgYW5kIHRoYXQgdGhleSBoYXZlIChzdHJpY3RseSkgZXF1YWwgdmFsdWVzLlxuICogICAqICAgd2hlbiBgYXJyYXlgLCBjaGVja3MgaWYgYW55IG9uZSBvZiB0aGUgc3VidGVzdHMgcGFzcy5cbiAqIEByZXR1cm5zIHtDaGVja31cbiAqICAgQW4gYXNzZXJ0aW9uLlxuICovXG5leHBvcnQgY29uc3QgY29udmVydCA9XG4gIC8vIE5vdGU6IG92ZXJsb2FkcyBpbiBKU0RvYyBjYW5cdTIwMTl0IHlldCB1c2UgZGlmZmVyZW50IGBAdGVtcGxhdGVgcy5cbiAgLyoqXG4gICAqIEB0eXBlIHsoXG4gICAqICAgKDxDb25kaXRpb24gZXh0ZW5kcyBzdHJpbmc+KHRlc3Q6IENvbmRpdGlvbikgPT4gKG5vZGU6IHVua25vd24sIGluZGV4PzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgcGFyZW50PzogUGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZCwgY29udGV4dD86IHVua25vd24pID0+IG5vZGUgaXMgTm9kZSAmIHt0eXBlOiBDb25kaXRpb259KSAmXG4gICAqICAgKDxDb25kaXRpb24gZXh0ZW5kcyBQcm9wcz4odGVzdDogQ29uZGl0aW9uKSA9PiAobm9kZTogdW5rbm93biwgaW5kZXg/OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXJlbnQ/OiBQYXJlbnQgfCBudWxsIHwgdW5kZWZpbmVkLCBjb250ZXh0PzogdW5rbm93bikgPT4gbm9kZSBpcyBOb2RlICYgQ29uZGl0aW9uKSAmXG4gICAqICAgKDxDb25kaXRpb24gZXh0ZW5kcyBUZXN0RnVuY3Rpb24+KHRlc3Q6IENvbmRpdGlvbikgPT4gKG5vZGU6IHVua25vd24sIGluZGV4PzogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgcGFyZW50PzogUGFyZW50IHwgbnVsbCB8IHVuZGVmaW5lZCwgY29udGV4dD86IHVua25vd24pID0+IG5vZGUgaXMgTm9kZSAmIFByZWRpY2F0ZTxDb25kaXRpb24sIE5vZGU+KSAmXG4gICAqICAgKCh0ZXN0PzogbnVsbCB8IHVuZGVmaW5lZCkgPT4gKG5vZGU/OiB1bmtub3duLCBpbmRleD86IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIHBhcmVudD86IFBhcmVudCB8IG51bGwgfCB1bmRlZmluZWQsIGNvbnRleHQ/OiB1bmtub3duKSA9PiBub2RlIGlzIE5vZGUpICZcbiAgICogICAoKHRlc3Q/OiBUZXN0KSA9PiBDaGVjaylcbiAgICogKX1cbiAgICovXG4gIChcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1Rlc3R9IFt0ZXN0XVxuICAgICAqIEByZXR1cm5zIHtDaGVja31cbiAgICAgKi9cbiAgICBmdW5jdGlvbiAodGVzdCkge1xuICAgICAgaWYgKHRlc3QgPT09IG51bGwgfHwgdGVzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBva1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIHRlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNhc3RGYWN0b3J5KHRlc3QpXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdGVzdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodGVzdCkgPyBhbnlGYWN0b3J5KHRlc3QpIDogcHJvcHNGYWN0b3J5KHRlc3QpXG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgdGVzdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVGYWN0b3J5KHRlc3QpXG4gICAgICB9XG5cbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgZnVuY3Rpb24sIHN0cmluZywgb3Igb2JqZWN0IGFzIHRlc3QnKVxuICAgIH1cbiAgKVxuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXk8UHJvcHMgfCBUZXN0RnVuY3Rpb24gfCBzdHJpbmc+fSB0ZXN0c1xuICogQHJldHVybnMge0NoZWNrfVxuICovXG5mdW5jdGlvbiBhbnlGYWN0b3J5KHRlc3RzKSB7XG4gIC8qKiBAdHlwZSB7QXJyYXk8Q2hlY2s+fSAqL1xuICBjb25zdCBjaGVja3MgPSBbXVxuICBsZXQgaW5kZXggPSAtMVxuXG4gIHdoaWxlICgrK2luZGV4IDwgdGVzdHMubGVuZ3RoKSB7XG4gICAgY2hlY2tzW2luZGV4XSA9IGNvbnZlcnQodGVzdHNbaW5kZXhdKVxuICB9XG5cbiAgcmV0dXJuIGNhc3RGYWN0b3J5KGFueSlcblxuICAvKipcbiAgICogQHRoaXMge3Vua25vd259XG4gICAqIEB0eXBlIHtUZXN0RnVuY3Rpb259XG4gICAqL1xuICBmdW5jdGlvbiBhbnkoLi4ucGFyYW1ldGVycykge1xuICAgIGxldCBpbmRleCA9IC0xXG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGNoZWNrcy5sZW5ndGgpIHtcbiAgICAgIGlmIChjaGVja3NbaW5kZXhdLmFwcGx5KHRoaXMsIHBhcmFtZXRlcnMpKSByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbi8qKlxuICogVHVybiBhbiBvYmplY3QgaW50byBhIHRlc3QgZm9yIGEgbm9kZSB3aXRoIGEgY2VydGFpbiBmaWVsZHMuXG4gKlxuICogQHBhcmFtIHtQcm9wc30gY2hlY2tcbiAqIEByZXR1cm5zIHtDaGVja31cbiAqL1xuZnVuY3Rpb24gcHJvcHNGYWN0b3J5KGNoZWNrKSB7XG4gIGNvbnN0IGNoZWNrQXNSZWNvcmQgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSAqLyAoY2hlY2spXG5cbiAgcmV0dXJuIGNhc3RGYWN0b3J5KGFsbClcblxuICAvKipcbiAgICogQHBhcmFtIHtOb2RlfSBub2RlXG4gICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgKi9cbiAgZnVuY3Rpb24gYWxsKG5vZGUpIHtcbiAgICBjb25zdCBub2RlQXNSZWNvcmQgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHVua25vd24+fSAqLyAoXG4gICAgICAvKiogQHR5cGUge3Vua25vd259ICovIChub2RlKVxuICAgIClcblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqL1xuICAgIGxldCBrZXlcblxuICAgIGZvciAoa2V5IGluIGNoZWNrKSB7XG4gICAgICBpZiAobm9kZUFzUmVjb3JkW2tleV0gIT09IGNoZWNrQXNSZWNvcmRba2V5XSkgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxufVxuXG4vKipcbiAqIFR1cm4gYSBzdHJpbmcgaW50byBhIHRlc3QgZm9yIGEgbm9kZSB3aXRoIGEgY2VydGFpbiB0eXBlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaGVja1xuICogQHJldHVybnMge0NoZWNrfVxuICovXG5mdW5jdGlvbiB0eXBlRmFjdG9yeShjaGVjaykge1xuICByZXR1cm4gY2FzdEZhY3RvcnkodHlwZSlcblxuICAvKipcbiAgICogQHBhcmFtIHtOb2RlfSBub2RlXG4gICAqL1xuICBmdW5jdGlvbiB0eXBlKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZSAmJiBub2RlLnR5cGUgPT09IGNoZWNrXG4gIH1cbn1cblxuLyoqXG4gKiBUdXJuIGEgY3VzdG9tIHRlc3QgaW50byBhIHRlc3QgZm9yIGEgbm9kZSB0aGF0IHBhc3NlcyB0aGF0IHRlc3QuXG4gKlxuICogQHBhcmFtIHtUZXN0RnVuY3Rpb259IHRlc3RGdW5jdGlvblxuICogQHJldHVybnMge0NoZWNrfVxuICovXG5mdW5jdGlvbiBjYXN0RmFjdG9yeSh0ZXN0RnVuY3Rpb24pIHtcbiAgcmV0dXJuIGNoZWNrXG5cbiAgLyoqXG4gICAqIEB0aGlzIHt1bmtub3dufVxuICAgKiBAdHlwZSB7Q2hlY2t9XG4gICAqL1xuICBmdW5jdGlvbiBjaGVjayh2YWx1ZSwgaW5kZXgsIHBhcmVudCkge1xuICAgIHJldHVybiBCb29sZWFuKFxuICAgICAgbG9va3NMaWtlQU5vZGUodmFsdWUpICYmXG4gICAgICAgIHRlc3RGdW5jdGlvbi5jYWxsKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgdHlwZW9mIGluZGV4ID09PSAnbnVtYmVyJyA/IGluZGV4IDogdW5kZWZpbmVkLFxuICAgICAgICAgIHBhcmVudCB8fCB1bmRlZmluZWRcbiAgICAgICAgKVxuICAgIClcbiAgfVxufVxuXG5mdW5jdGlvbiBvaygpIHtcbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlXG4gKiBAcmV0dXJucyB7dmFsdWUgaXMgTm9kZX1cbiAqL1xuZnVuY3Rpb24gbG9va3NMaWtlQU5vZGUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgJ3R5cGUnIGluIHZhbHVlXG59XG4iLCAiLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yKGQpIHtcbiAgcmV0dXJuIGRcbn1cbiIsICIvKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ3VuaXN0JykuTm9kZX0gVW5pc3ROb2RlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLlBhcmVudH0gVW5pc3RQYXJlbnRcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtFeGNsdWRlPGltcG9ydCgndW5pc3QtdXRpbC1pcycpLlRlc3QsIHVuZGVmaW5lZD4gfCB1bmRlZmluZWR9IFRlc3RcbiAqICAgVGVzdCBmcm9tIGB1bmlzdC11dGlsLWlzYC5cbiAqXG4gKiAgIE5vdGU6IHdlIGhhdmUgcmVtb3ZlIGFuZCBhZGQgYHVuZGVmaW5lZGAsIGJlY2F1c2Ugb3RoZXJ3aXNlIHdoZW4gZ2VuZXJhdGluZ1xuICogICBhdXRvbWF0aWMgYC5kLnRzYCBmaWxlcywgVFMgdHJpZXMgdG8gZmxhdHRlbiBwYXRocyBmcm9tIGEgbG9jYWwgcGVyc3BlY3RpdmUsXG4gKiAgIHdoaWNoIGRvZXNuXHUyMDE5dCB3b3JrIHdoZW4gcHVibGlzaGluZyBvbiBucG0uXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBGbiBleHRlbmRzICh2YWx1ZTogYW55KSA9PiB2YWx1ZSBpcyBpbmZlciBUaGluZ1xuICogICA/IFRoaW5nXG4gKiAgIDogRmFsbGJhY2tcbiAqICl9IFByZWRpY2F0ZVxuICogICBHZXQgdGhlIHZhbHVlIG9mIGEgdHlwZSBndWFyZCBgRm5gLlxuICogQHRlbXBsYXRlIEZuXG4gKiAgIFZhbHVlOyB0eXBpY2FsbHkgZnVuY3Rpb24gdGhhdCBpcyBhIHR5cGUgZ3VhcmQgKHN1Y2ggYXMgYCh4KTogeCBpcyBZYCkuXG4gKiBAdGVtcGxhdGUgRmFsbGJhY2tcbiAqICAgVmFsdWUgdG8geWllbGQgaWYgYEZuYCBpcyBub3QgYSB0eXBlIGd1YXJkLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgQ2hlY2sgZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkIC8vIE5vIHRlc3QuXG4gKiAgID8gVmFsdWVcbiAqICAgOiBWYWx1ZSBleHRlbmRzIHt0eXBlOiBDaGVja30gLy8gU3RyaW5nICh0eXBlKSB0ZXN0LlxuICogICA/IFZhbHVlXG4gKiAgIDogVmFsdWUgZXh0ZW5kcyBDaGVjayAvLyBQYXJ0aWFsIHRlc3QuXG4gKiAgID8gVmFsdWVcbiAqICAgOiBDaGVjayBleHRlbmRzIEZ1bmN0aW9uIC8vIEZ1bmN0aW9uIHRlc3QuXG4gKiAgID8gUHJlZGljYXRlPENoZWNrLCBWYWx1ZT4gZXh0ZW5kcyBWYWx1ZVxuICogICAgID8gUHJlZGljYXRlPENoZWNrLCBWYWx1ZT5cbiAqICAgICA6IG5ldmVyXG4gKiAgIDogbmV2ZXIgLy8gU29tZSBvdGhlciB0ZXN0P1xuICogKX0gTWF0Y2hlc09uZVxuICogICBDaGVjayB3aGV0aGVyIGEgbm9kZSBtYXRjaGVzIGEgcHJpbWl0aXZlIGNoZWNrIGluIHRoZSB0eXBlIHN5c3RlbS5cbiAqIEB0ZW1wbGF0ZSBWYWx1ZVxuICogICBWYWx1ZTsgdHlwaWNhbGx5IHVuaXN0IGBOb2RlYC5cbiAqIEB0ZW1wbGF0ZSBDaGVja1xuICogICBWYWx1ZTsgdHlwaWNhbGx5IGB1bmlzdC11dGlsLWlzYC1jb21wYXRpYmxlIHRlc3QsIGJ1dCBub3QgYXJyYXlzLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgQ2hlY2sgZXh0ZW5kcyBBcnJheTxhbnk+XG4gKiAgID8gTWF0Y2hlc09uZTxWYWx1ZSwgQ2hlY2tba2V5b2YgQ2hlY2tdPlxuICogICA6IE1hdGNoZXNPbmU8VmFsdWUsIENoZWNrPlxuICogKX0gTWF0Y2hlc1xuICogICBDaGVjayB3aGV0aGVyIGEgbm9kZSBtYXRjaGVzIGEgY2hlY2sgaW4gdGhlIHR5cGUgc3lzdGVtLlxuICogQHRlbXBsYXRlIFZhbHVlXG4gKiAgIFZhbHVlOyB0eXBpY2FsbHkgdW5pc3QgYE5vZGVgLlxuICogQHRlbXBsYXRlIENoZWNrXG4gKiAgIFZhbHVlOyB0eXBpY2FsbHkgYHVuaXN0LXV0aWwtaXNgLWNvbXBhdGlibGUgdGVzdC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHswIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2IHwgNyB8IDggfCA5IHwgMTB9IFVpbnRcbiAqICAgTnVtYmVyOyBjYXBwZWQgcmVhc29uYWJseS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtJIGV4dGVuZHMgMCA/IDEgOiBJIGV4dGVuZHMgMSA/IDIgOiBJIGV4dGVuZHMgMiA/IDMgOiBJIGV4dGVuZHMgMyA/IDQgOiBJIGV4dGVuZHMgNCA/IDUgOiBJIGV4dGVuZHMgNSA/IDYgOiBJIGV4dGVuZHMgNiA/IDcgOiBJIGV4dGVuZHMgNyA/IDggOiBJIGV4dGVuZHMgOCA/IDkgOiAxMH0gSW5jcmVtZW50XG4gKiAgIEluY3JlbWVudCBhIG51bWJlciBpbiB0aGUgdHlwZSBzeXN0ZW0uXG4gKiBAdGVtcGxhdGUge1VpbnR9IFtJPTBdXG4gKiAgIEluZGV4LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgTm9kZSBleHRlbmRzIFVuaXN0UGFyZW50XG4gKiAgID8gTm9kZSBleHRlbmRzIHtjaGlsZHJlbjogQXJyYXk8aW5mZXIgQ2hpbGRyZW4+fVxuICogICAgID8gQ2hpbGQgZXh0ZW5kcyBDaGlsZHJlbiA/IE5vZGUgOiBuZXZlclxuICogICAgIDogbmV2ZXJcbiAqICAgOiBuZXZlclxuICogKX0gSW50ZXJuYWxQYXJlbnRcbiAqICAgQ29sbGVjdCBub2RlcyB0aGF0IGNhbiBiZSBwYXJlbnRzIG9mIGBDaGlsZGAuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gTm9kZVxuICogICBBbGwgbm9kZSB0eXBlcyBpbiBhIHRyZWUuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gQ2hpbGRcbiAqICAgTm9kZSB0byBzZWFyY2ggZm9yLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge0ludGVybmFsUGFyZW50PEluY2x1c2l2ZURlc2NlbmRhbnQ8VHJlZT4sIENoaWxkPn0gUGFyZW50XG4gKiAgIENvbGxlY3Qgbm9kZXMgaW4gYFRyZWVgIHRoYXQgY2FuIGJlIHBhcmVudHMgb2YgYENoaWxkYC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBUcmVlXG4gKiAgIEFsbCBub2RlIHR5cGVzIGluIGEgdHJlZS5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBDaGlsZFxuICogICBOb2RlIHRvIHNlYXJjaCBmb3IuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBEZXB0aCBleHRlbmRzIE1heFxuICogICA/IG5ldmVyXG4gKiAgIDpcbiAqICAgICB8IEludGVybmFsUGFyZW50PE5vZGUsIENoaWxkPlxuICogICAgIHwgSW50ZXJuYWxBbmNlc3RvcjxOb2RlLCBJbnRlcm5hbFBhcmVudDxOb2RlLCBDaGlsZD4sIE1heCwgSW5jcmVtZW50PERlcHRoPj5cbiAqICl9IEludGVybmFsQW5jZXN0b3JcbiAqICAgQ29sbGVjdCBub2RlcyBpbiBgVHJlZWAgdGhhdCBjYW4gYmUgYW5jZXN0b3JzIG9mIGBDaGlsZGAuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gTm9kZVxuICogICBBbGwgbm9kZSB0eXBlcyBpbiBhIHRyZWUuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gQ2hpbGRcbiAqICAgTm9kZSB0byBzZWFyY2ggZm9yLlxuICogQHRlbXBsYXRlIHtVaW50fSBbTWF4PTEwXVxuICogICBNYXg7IHNlYXJjaGVzIHVwIHRvIHRoaXMgZGVwdGguXG4gKiBAdGVtcGxhdGUge1VpbnR9IFtEZXB0aD0wXVxuICogICBDdXJyZW50IGRlcHRoLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge0ludGVybmFsQW5jZXN0b3I8SW5jbHVzaXZlRGVzY2VuZGFudDxUcmVlPiwgQ2hpbGQ+fSBBbmNlc3RvclxuICogICBDb2xsZWN0IG5vZGVzIGluIGBUcmVlYCB0aGF0IGNhbiBiZSBhbmNlc3RvcnMgb2YgYENoaWxkYC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBUcmVlXG4gKiAgIEFsbCBub2RlIHR5cGVzIGluIGEgdHJlZS5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBDaGlsZFxuICogICBOb2RlIHRvIHNlYXJjaCBmb3IuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBUcmVlIGV4dGVuZHMgVW5pc3RQYXJlbnRcbiAqICAgICA/IERlcHRoIGV4dGVuZHMgTWF4XG4gKiAgICAgICA/IFRyZWVcbiAqICAgICAgIDogVHJlZSB8IEluY2x1c2l2ZURlc2NlbmRhbnQ8VHJlZVsnY2hpbGRyZW4nXVtudW1iZXJdLCBNYXgsIEluY3JlbWVudDxEZXB0aD4+XG4gKiAgICAgOiBUcmVlXG4gKiApfSBJbmNsdXNpdmVEZXNjZW5kYW50XG4gKiAgIENvbGxlY3QgYWxsIChpbmNsdXNpdmUpIGRlc2NlbmRhbnRzIG9mIGBUcmVlYC5cbiAqXG4gKiAgID4gXHVEODNEXHVEQzQ5ICoqTm90ZSoqOiBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgdGhpcyBzZWVtcyB0byBiZSB0aGUgZmFzdGVzdCB3YXkgdG9cbiAqICAgPiByZWN1cnNlIHdpdGhvdXQgYWN0dWFsbHkgcnVubmluZyBpbnRvIGFuIGluZmluaXRlIGxvb3AsIHdoaWNoIHRoZVxuICogICA+IHByZXZpb3VzIHZlcnNpb24gZGlkLlxuICogICA+XG4gKiAgID4gUHJhY3RpY2FsbHksIGEgbWF4IG9mIGAyYCBpcyB0eXBpY2FsbHkgZW5vdWdoIGFzc3VtaW5nIGEgYFJvb3RgIGlzXG4gKiAgID4gcGFzc2VkLCBidXQgaXQgZG9lc25cdTIwMTl0IGltcHJvdmUgcGVyZm9ybWFuY2UuXG4gKiAgID4gSXQgZ2V0cyBoaWdoZXIgd2l0aCBgTGlzdCA+IExpc3RJdGVtID4gVGFibGUgPiBUYWJsZVJvdyA+IFRhYmxlQ2VsbGAuXG4gKiAgID4gVXNpbmcgdXAgdG8gYDEwYCBkb2Vzblx1MjAxOXQgaHVydCBvciBoZWxwIGVpdGhlci5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBUcmVlXG4gKiAgIFRyZWUgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7VWludH0gW01heD0xMF1cbiAqICAgTWF4OyBzZWFyY2hlcyB1cCB0byB0aGlzIGRlcHRoLlxuICogQHRlbXBsYXRlIHtVaW50fSBbRGVwdGg9MF1cbiAqICAgQ3VycmVudCBkZXB0aC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsnc2tpcCcgfCBib29sZWFufSBBY3Rpb25cbiAqICAgVW5pb24gb2YgdGhlIGFjdGlvbiB0eXBlcy5cbiAqXG4gKiBAdHlwZWRlZiB7bnVtYmVyfSBJbmRleFxuICogICBNb3ZlIHRvIHRoZSBzaWJsaW5nIGF0IGBpbmRleGAgbmV4dCAoYWZ0ZXIgbm9kZSBpdHNlbGYgaXMgY29tcGxldGVseVxuICogICB0cmF2ZXJzZWQpLlxuICpcbiAqICAgVXNlZnVsIGlmIG11dGF0aW5nIHRoZSB0cmVlLCBzdWNoIGFzIHJlbW92aW5nIHRoZSBub2RlIHRoZSB2aXNpdG9yIGlzXG4gKiAgIGN1cnJlbnRseSBvbiwgb3IgYW55IG9mIGl0cyBwcmV2aW91cyBzaWJsaW5ncy5cbiAqICAgUmVzdWx0cyBsZXNzIHRoYW4gMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYGNoaWxkcmVuLmxlbmd0aGAgc3RvcFxuICogICB0cmF2ZXJzaW5nIHRoZSBwYXJlbnQuXG4gKlxuICogQHR5cGVkZWYge1soQWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCB8IHZvaWQpPywgKEluZGV4IHwgbnVsbCB8IHVuZGVmaW5lZCk/XX0gQWN0aW9uVHVwbGVcbiAqICAgTGlzdCB3aXRoIG9uZSBvciB0d28gdmFsdWVzLCB0aGUgZmlyc3QgYW4gYWN0aW9uLCB0aGUgc2Vjb25kIGFuIGluZGV4LlxuICpcbiAqIEB0eXBlZGVmIHtBY3Rpb24gfCBBY3Rpb25UdXBsZSB8IEluZGV4IHwgbnVsbCB8IHVuZGVmaW5lZCB8IHZvaWR9IFZpc2l0b3JSZXN1bHRcbiAqICAgQW55IHZhbHVlIHRoYXQgY2FuIGJlIHJldHVybmVkIGZyb20gYSB2aXNpdG9yLlxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIFZpc2l0b3JcbiAqICAgSGFuZGxlIGEgbm9kZSAobWF0Y2hpbmcgYHRlc3RgLCBpZiBnaXZlbikuXG4gKlxuICogICBWaXNpdG9ycyBhcmUgZnJlZSB0byB0cmFuc2Zvcm0gYG5vZGVgLlxuICogICBUaGV5IGNhbiBhbHNvIHRyYW5zZm9ybSB0aGUgcGFyZW50IG9mIG5vZGUgKHRoZSBsYXN0IG9mIGBhbmNlc3RvcnNgKS5cbiAqXG4gKiAgIFJlcGxhY2luZyBgbm9kZWAgaXRzZWxmLCBpZiBgU0tJUGAgaXMgbm90IHJldHVybmVkLCBzdGlsbCBjYXVzZXMgaXRzXG4gKiAgIGRlc2NlbmRhbnRzIHRvIGJlIHdhbGtlZCAod2hpY2ggaXMgYSBidWcpLlxuICpcbiAqICAgV2hlbiBhZGRpbmcgb3IgcmVtb3ZpbmcgcHJldmlvdXMgc2libGluZ3Mgb2YgYG5vZGVgIChvciBuZXh0IHNpYmxpbmdzLCBpblxuICogICBjYXNlIG9mIHJldmVyc2UpLCB0aGUgYFZpc2l0b3JgIHNob3VsZCByZXR1cm4gYSBuZXcgYEluZGV4YCB0byBzcGVjaWZ5IHRoZVxuICogICBzaWJsaW5nIHRvIHRyYXZlcnNlIGFmdGVyIGBub2RlYCBpcyB0cmF2ZXJzZWQuXG4gKiAgIEFkZGluZyBvciByZW1vdmluZyBuZXh0IHNpYmxpbmdzIG9mIGBub2RlYCAob3IgcHJldmlvdXMgc2libGluZ3MsIGluIGNhc2VcbiAqICAgb2YgcmV2ZXJzZSkgaXMgaGFuZGxlZCBhcyBleHBlY3RlZCB3aXRob3V0IG5lZWRpbmcgdG8gcmV0dXJuIGEgbmV3IGBJbmRleGAuXG4gKlxuICogICBSZW1vdmluZyB0aGUgY2hpbGRyZW4gcHJvcGVydHkgb2YgYW4gYW5jZXN0b3Igc3RpbGwgcmVzdWx0cyBpbiB0aGVtIGJlaW5nXG4gKiAgIHRyYXZlcnNlZC5cbiAqIEBwYXJhbSB7VmlzaXRlZH0gbm9kZVxuICogICBGb3VuZCBub2RlLlxuICogQHBhcmFtIHtBcnJheTxWaXNpdGVkUGFyZW50cz59IGFuY2VzdG9yc1xuICogICBBbmNlc3RvcnMgb2YgYG5vZGVgLlxuICogQHJldHVybnMge1Zpc2l0b3JSZXN1bHR9XG4gKiAgIFdoYXQgdG8gZG8gbmV4dC5cbiAqXG4gKiAgIEFuIGBJbmRleGAgaXMgdHJlYXRlZCBhcyBhIHR1cGxlIG9mIGBbQ09OVElOVUUsIEluZGV4XWAuXG4gKiAgIEFuIGBBY3Rpb25gIGlzIHRyZWF0ZWQgYXMgYSB0dXBsZSBvZiBgW0FjdGlvbl1gLlxuICpcbiAqICAgUGFzc2luZyBhIHR1cGxlIGJhY2sgb25seSBtYWtlcyBzZW5zZSBpZiB0aGUgYEFjdGlvbmAgaXMgYFNLSVBgLlxuICogICBXaGVuIHRoZSBgQWN0aW9uYCBpcyBgRVhJVGAsIHRoYXQgYWN0aW9uIGNhbiBiZSByZXR1cm5lZC5cbiAqICAgV2hlbiB0aGUgYEFjdGlvbmAgaXMgYENPTlRJTlVFYCwgYEluZGV4YCBjYW4gYmUgcmV0dXJuZWQuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gW1Zpc2l0ZWQ9VW5pc3ROb2RlXVxuICogICBWaXNpdGVkIG5vZGUgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3RQYXJlbnR9IFtWaXNpdGVkUGFyZW50cz1VbmlzdFBhcmVudF1cbiAqICAgQW5jZXN0b3IgdHlwZS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtWaXNpdG9yPE1hdGNoZXM8SW5jbHVzaXZlRGVzY2VuZGFudDxUcmVlPiwgQ2hlY2s+LCBBbmNlc3RvcjxUcmVlLCBNYXRjaGVzPEluY2x1c2l2ZURlc2NlbmRhbnQ8VHJlZT4sIENoZWNrPj4+fSBCdWlsZFZpc2l0b3JcbiAqICAgQnVpbGQgYSB0eXBlZCBgVmlzaXRvcmAgZnVuY3Rpb24gZnJvbSBhIHRyZWUgYW5kIGEgdGVzdC5cbiAqXG4gKiAgIEl0IHdpbGwgaW5mZXIgd2hpY2ggdmFsdWVzIGFyZSBwYXNzZWQgYXMgYG5vZGVgIGFuZCB3aGljaCBhcyBgcGFyZW50c2AuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gW1RyZWU9VW5pc3ROb2RlXVxuICogICBUcmVlIHR5cGUuXG4gKiBAdGVtcGxhdGUge1Rlc3R9IFtDaGVjaz1UZXN0XVxuICogICBUZXN0IHR5cGUuXG4gKi9cblxuaW1wb3J0IHtjb252ZXJ0fSBmcm9tICd1bmlzdC11dGlsLWlzJ1xuaW1wb3J0IHtjb2xvcn0gZnJvbSAndW5pc3QtdXRpbC12aXNpdC1wYXJlbnRzL2RvLW5vdC11c2UtY29sb3InXG5cbi8qKiBAdHlwZSB7UmVhZG9ubHk8QWN0aW9uVHVwbGU+fSAqL1xuY29uc3QgZW1wdHkgPSBbXVxuXG4vKipcbiAqIENvbnRpbnVlIHRyYXZlcnNpbmcgYXMgbm9ybWFsLlxuICovXG5leHBvcnQgY29uc3QgQ09OVElOVUUgPSB0cnVlXG5cbi8qKlxuICogU3RvcCB0cmF2ZXJzaW5nIGltbWVkaWF0ZWx5LlxuICovXG5leHBvcnQgY29uc3QgRVhJVCA9IGZhbHNlXG5cbi8qKlxuICogRG8gbm90IHRyYXZlcnNlIHRoaXMgbm9kZVx1MjAxOXMgY2hpbGRyZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBTS0lQID0gJ3NraXAnXG5cbi8qKlxuICogVmlzaXQgbm9kZXMsIHdpdGggYW5jZXN0cmFsIGluZm9ybWF0aW9uLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIHBlcmZvcm1zICpkZXB0aC1maXJzdCogKnRyZWUgdHJhdmVyc2FsKiBpbiAqcHJlb3JkZXIqXG4gKiAoKipOTFIqKikgb3IgaWYgYHJldmVyc2VgIGlzIGdpdmVuLCBpbiAqcmV2ZXJzZSBwcmVvcmRlciogKCoqTlJMKiopLlxuICpcbiAqIFlvdSBjYW4gY2hvb3NlIGZvciB3aGljaCBub2RlcyBgdmlzaXRvcmAgaXMgY2FsbGVkIGJ5IHBhc3NpbmcgYSBgdGVzdGAuXG4gKiBGb3IgY29tcGxleCB0ZXN0cywgeW91IHNob3VsZCB0ZXN0IHlvdXJzZWxmIGluIGB2aXNpdG9yYCwgYXMgaXQgd2lsbCBiZVxuICogZmFzdGVyIGFuZCB3aWxsIGhhdmUgaW1wcm92ZWQgdHlwZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBXYWxraW5nIHRoZSB0cmVlIGlzIGFuIGludGVuc2l2ZSB0YXNrLlxuICogTWFrZSB1c2Ugb2YgdGhlIHJldHVybiB2YWx1ZXMgb2YgdGhlIHZpc2l0b3Igd2hlbiBwb3NzaWJsZS5cbiAqIEluc3RlYWQgb2Ygd2Fsa2luZyBhIHRyZWUgbXVsdGlwbGUgdGltZXMsIHdhbGsgaXQgb25jZSwgdXNlIGB1bmlzdC11dGlsLWlzYFxuICogdG8gY2hlY2sgaWYgYSBub2RlIG1hdGNoZXMsIGFuZCB0aGVuIHBlcmZvcm0gZGlmZmVyZW50IG9wZXJhdGlvbnMuXG4gKlxuICogWW91IGNhbiBjaGFuZ2UgdGhlIHRyZWUuXG4gKiBTZWUgYFZpc2l0b3JgIGZvciBtb3JlIGluZm8uXG4gKlxuICogQG92ZXJsb2FkXG4gKiBAcGFyYW0ge1RyZWV9IHRyZWVcbiAqIEBwYXJhbSB7Q2hlY2t9IGNoZWNrXG4gKiBAcGFyYW0ge0J1aWxkVmlzaXRvcjxUcmVlLCBDaGVjaz59IHZpc2l0b3JcbiAqIEBwYXJhbSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFtyZXZlcnNlXVxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqXG4gKiBAb3ZlcmxvYWRcbiAqIEBwYXJhbSB7VHJlZX0gdHJlZVxuICogQHBhcmFtIHtCdWlsZFZpc2l0b3I8VHJlZT59IHZpc2l0b3JcbiAqIEBwYXJhbSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFtyZXZlcnNlXVxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqXG4gKiBAcGFyYW0ge1VuaXN0Tm9kZX0gdHJlZVxuICogICBUcmVlIHRvIHRyYXZlcnNlLlxuICogQHBhcmFtIHtWaXNpdG9yIHwgVGVzdH0gdGVzdFxuICogICBgdW5pc3QtdXRpbC1pc2AtY29tcGF0aWJsZSB0ZXN0XG4gKiBAcGFyYW0ge1Zpc2l0b3IgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3Zpc2l0b3JdXG4gKiAgIEhhbmRsZSBlYWNoIG5vZGUuXG4gKiBAcGFyYW0ge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbcmV2ZXJzZV1cbiAqICAgVHJhdmVyc2UgaW4gcmV2ZXJzZSBwcmVvcmRlciAoTlJMKSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IHByZW9yZGVyIChOTFIpLlxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqICAgTm90aGluZy5cbiAqXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gVHJlZVxuICogICBOb2RlIHR5cGUuXG4gKiBAdGVtcGxhdGUge1Rlc3R9IENoZWNrXG4gKiAgIGB1bmlzdC11dGlsLWlzYC1jb21wYXRpYmxlIHRlc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdFBhcmVudHModHJlZSwgdGVzdCwgdmlzaXRvciwgcmV2ZXJzZSkge1xuICAvKiogQHR5cGUge1Rlc3R9ICovXG4gIGxldCBjaGVja1xuXG4gIGlmICh0eXBlb2YgdGVzdCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmlzaXRvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldmVyc2UgPSB2aXNpdG9yXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBubyB2aXNpdG9yIGdpdmVuLCBzbyBgdmlzaXRvcmAgaXMgdGVzdC5cbiAgICB2aXNpdG9yID0gdGVzdFxuICB9IGVsc2Uge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgdmlzaXRvciBnaXZlbiwgc28gYHRlc3RgIGlzblx1MjAxOXQgYSB2aXNpdG9yLlxuICAgIGNoZWNrID0gdGVzdFxuICB9XG5cbiAgY29uc3QgaXMgPSBjb252ZXJ0KGNoZWNrKVxuICBjb25zdCBzdGVwID0gcmV2ZXJzZSA/IC0xIDogMVxuXG4gIGZhY3RvcnkodHJlZSwgdW5kZWZpbmVkLCBbXSkoKVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1VuaXN0Tm9kZX0gbm9kZVxuICAgKiBAcGFyYW0ge251bWJlciB8IHVuZGVmaW5lZH0gaW5kZXhcbiAgICogQHBhcmFtIHtBcnJheTxVbmlzdFBhcmVudD59IHBhcmVudHNcbiAgICovXG4gIGZ1bmN0aW9uIGZhY3Rvcnkobm9kZSwgaW5kZXgsIHBhcmVudHMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59ICovIChcbiAgICAgIG5vZGUgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnID8gbm9kZSA6IHt9XG4gICAgKVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZS50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgbmFtZSA9XG4gICAgICAgIC8vIGBoYXN0YFxuICAgICAgICB0eXBlb2YgdmFsdWUudGFnTmFtZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IHZhbHVlLnRhZ05hbWVcbiAgICAgICAgICA6IC8vIGB4YXN0YFxuICAgICAgICAgIHR5cGVvZiB2YWx1ZS5uYW1lID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gdmFsdWUubmFtZVxuICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh2aXNpdCwgJ25hbWUnLCB7XG4gICAgICAgIHZhbHVlOlxuICAgICAgICAgICdub2RlICgnICsgY29sb3Iobm9kZS50eXBlICsgKG5hbWUgPyAnPCcgKyBuYW1lICsgJz4nIDogJycpKSArICcpJ1xuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmlzaXRcblxuICAgIGZ1bmN0aW9uIHZpc2l0KCkge1xuICAgICAgLyoqIEB0eXBlIHtSZWFkb25seTxBY3Rpb25UdXBsZT59ICovXG4gICAgICBsZXQgcmVzdWx0ID0gZW1wdHlcbiAgICAgIC8qKiBAdHlwZSB7UmVhZG9ubHk8QWN0aW9uVHVwbGU+fSAqL1xuICAgICAgbGV0IHN1YnJlc3VsdFxuICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovXG4gICAgICBsZXQgb2Zmc2V0XG4gICAgICAvKiogQHR5cGUge0FycmF5PFVuaXN0UGFyZW50Pn0gKi9cbiAgICAgIGxldCBncmFuZHBhcmVudHNcblxuICAgICAgaWYgKCF0ZXN0IHx8IGlzKG5vZGUsIGluZGV4LCBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV0gfHwgdW5kZWZpbmVkKSkge1xuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBgdmlzaXRvcmAgaXMgbm93IGEgdmlzaXRvci5cbiAgICAgICAgcmVzdWx0ID0gdG9SZXN1bHQodmlzaXRvcihub2RlLCBwYXJlbnRzKSlcblxuICAgICAgICBpZiAocmVzdWx0WzBdID09PSBFWElUKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICgnY2hpbGRyZW4nIGluIG5vZGUgJiYgbm9kZS5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBub2RlQXNQYXJlbnQgPSAvKiogQHR5cGUge1VuaXN0UGFyZW50fSAqLyAobm9kZSlcblxuICAgICAgICBpZiAobm9kZUFzUGFyZW50LmNoaWxkcmVuICYmIHJlc3VsdFswXSAhPT0gU0tJUCkge1xuICAgICAgICAgIG9mZnNldCA9IChyZXZlcnNlID8gbm9kZUFzUGFyZW50LmNoaWxkcmVuLmxlbmd0aCA6IC0xKSArIHN0ZXBcbiAgICAgICAgICBncmFuZHBhcmVudHMgPSBwYXJlbnRzLmNvbmNhdChub2RlQXNQYXJlbnQpXG5cbiAgICAgICAgICB3aGlsZSAob2Zmc2V0ID4gLTEgJiYgb2Zmc2V0IDwgbm9kZUFzUGFyZW50LmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlQXNQYXJlbnQuY2hpbGRyZW5bb2Zmc2V0XVxuXG4gICAgICAgICAgICBzdWJyZXN1bHQgPSBmYWN0b3J5KGNoaWxkLCBvZmZzZXQsIGdyYW5kcGFyZW50cykoKVxuXG4gICAgICAgICAgICBpZiAoc3VicmVzdWx0WzBdID09PSBFWElUKSB7XG4gICAgICAgICAgICAgIHJldHVybiBzdWJyZXN1bHRcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb2Zmc2V0ID1cbiAgICAgICAgICAgICAgdHlwZW9mIHN1YnJlc3VsdFsxXSA9PT0gJ251bWJlcicgPyBzdWJyZXN1bHRbMV0gOiBvZmZzZXQgKyBzdGVwXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUdXJuIGEgcmV0dXJuIHZhbHVlIGludG8gYSBjbGVhbiByZXN1bHQuXG4gKlxuICogQHBhcmFtIHtWaXNpdG9yUmVzdWx0fSB2YWx1ZVxuICogICBWYWxpZCByZXR1cm4gdmFsdWVzIGZyb20gdmlzaXRvcnMuXG4gKiBAcmV0dXJucyB7UmVhZG9ubHk8QWN0aW9uVHVwbGU+fVxuICogICBDbGVhbiByZXN1bHQuXG4gKi9cbmZ1bmN0aW9uIHRvUmVzdWx0KHZhbHVlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gW0NPTlRJTlVFLCB2YWx1ZV1cbiAgfVxuXG4gIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gZW1wdHkgOiBbdmFsdWVdXG59XG4iLCAiLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdCcpLk5vZGV9IFVuaXN0Tm9kZVxuICogQHR5cGVkZWYge2ltcG9ydCgndW5pc3QnKS5QYXJlbnR9IFVuaXN0UGFyZW50XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCd1bmlzdC11dGlsLXZpc2l0LXBhcmVudHMnKS5WaXNpdG9yUmVzdWx0fSBWaXNpdG9yUmVzdWx0XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7RXhjbHVkZTxpbXBvcnQoJ3VuaXN0LXV0aWwtaXMnKS5UZXN0LCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkfSBUZXN0XG4gKiAgIFRlc3QgZnJvbSBgdW5pc3QtdXRpbC1pc2AuXG4gKlxuICogICBOb3RlOiB3ZSBoYXZlIHJlbW92ZSBhbmQgYWRkIGB1bmRlZmluZWRgLCBiZWNhdXNlIG90aGVyd2lzZSB3aGVuIGdlbmVyYXRpbmdcbiAqICAgYXV0b21hdGljIGAuZC50c2AgZmlsZXMsIFRTIHRyaWVzIHRvIGZsYXR0ZW4gcGF0aHMgZnJvbSBhIGxvY2FsIHBlcnNwZWN0aXZlLFxuICogICB3aGljaCBkb2Vzblx1MjAxOXQgd29yayB3aGVuIHB1Ymxpc2hpbmcgb24gbnBtLlxuICovXG5cbi8vIFRvIGRvOiB1c2UgdHlwZXMgZnJvbSBgdW5pc3QtdXRpbC12aXNpdC1wYXJlbnRzYCB3aGVuIGl0XHUyMDE5cyByZWxlYXNlZC5cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBGbiBleHRlbmRzICh2YWx1ZTogYW55KSA9PiB2YWx1ZSBpcyBpbmZlciBUaGluZ1xuICogICA/IFRoaW5nXG4gKiAgIDogRmFsbGJhY2tcbiAqICl9IFByZWRpY2F0ZVxuICogICBHZXQgdGhlIHZhbHVlIG9mIGEgdHlwZSBndWFyZCBgRm5gLlxuICogQHRlbXBsYXRlIEZuXG4gKiAgIFZhbHVlOyB0eXBpY2FsbHkgZnVuY3Rpb24gdGhhdCBpcyBhIHR5cGUgZ3VhcmQgKHN1Y2ggYXMgYCh4KTogeCBpcyBZYCkuXG4gKiBAdGVtcGxhdGUgRmFsbGJhY2tcbiAqICAgVmFsdWUgdG8geWllbGQgaWYgYEZuYCBpcyBub3QgYSB0eXBlIGd1YXJkLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgQ2hlY2sgZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkIC8vIE5vIHRlc3QuXG4gKiAgID8gVmFsdWVcbiAqICAgOiBWYWx1ZSBleHRlbmRzIHt0eXBlOiBDaGVja30gLy8gU3RyaW5nICh0eXBlKSB0ZXN0LlxuICogICA/IFZhbHVlXG4gKiAgIDogVmFsdWUgZXh0ZW5kcyBDaGVjayAvLyBQYXJ0aWFsIHRlc3QuXG4gKiAgID8gVmFsdWVcbiAqICAgOiBDaGVjayBleHRlbmRzIEZ1bmN0aW9uIC8vIEZ1bmN0aW9uIHRlc3QuXG4gKiAgID8gUHJlZGljYXRlPENoZWNrLCBWYWx1ZT4gZXh0ZW5kcyBWYWx1ZVxuICogICAgID8gUHJlZGljYXRlPENoZWNrLCBWYWx1ZT5cbiAqICAgICA6IG5ldmVyXG4gKiAgIDogbmV2ZXIgLy8gU29tZSBvdGhlciB0ZXN0P1xuICogKX0gTWF0Y2hlc09uZVxuICogICBDaGVjayB3aGV0aGVyIGEgbm9kZSBtYXRjaGVzIGEgcHJpbWl0aXZlIGNoZWNrIGluIHRoZSB0eXBlIHN5c3RlbS5cbiAqIEB0ZW1wbGF0ZSBWYWx1ZVxuICogICBWYWx1ZTsgdHlwaWNhbGx5IHVuaXN0IGBOb2RlYC5cbiAqIEB0ZW1wbGF0ZSBDaGVja1xuICogICBWYWx1ZTsgdHlwaWNhbGx5IGB1bmlzdC11dGlsLWlzYC1jb21wYXRpYmxlIHRlc3QsIGJ1dCBub3QgYXJyYXlzLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgQ2hlY2sgZXh0ZW5kcyBBcnJheTxhbnk+XG4gKiAgID8gTWF0Y2hlc09uZTxWYWx1ZSwgQ2hlY2tba2V5b2YgQ2hlY2tdPlxuICogICA6IE1hdGNoZXNPbmU8VmFsdWUsIENoZWNrPlxuICogKX0gTWF0Y2hlc1xuICogICBDaGVjayB3aGV0aGVyIGEgbm9kZSBtYXRjaGVzIGEgY2hlY2sgaW4gdGhlIHR5cGUgc3lzdGVtLlxuICogQHRlbXBsYXRlIFZhbHVlXG4gKiAgIFZhbHVlOyB0eXBpY2FsbHkgdW5pc3QgYE5vZGVgLlxuICogQHRlbXBsYXRlIENoZWNrXG4gKiAgIFZhbHVlOyB0eXBpY2FsbHkgYHVuaXN0LXV0aWwtaXNgLWNvbXBhdGlibGUgdGVzdC5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHswIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2IHwgNyB8IDggfCA5IHwgMTB9IFVpbnRcbiAqICAgTnVtYmVyOyBjYXBwZWQgcmVhc29uYWJseS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtJIGV4dGVuZHMgMCA/IDEgOiBJIGV4dGVuZHMgMSA/IDIgOiBJIGV4dGVuZHMgMiA/IDMgOiBJIGV4dGVuZHMgMyA/IDQgOiBJIGV4dGVuZHMgNCA/IDUgOiBJIGV4dGVuZHMgNSA/IDYgOiBJIGV4dGVuZHMgNiA/IDcgOiBJIGV4dGVuZHMgNyA/IDggOiBJIGV4dGVuZHMgOCA/IDkgOiAxMH0gSW5jcmVtZW50XG4gKiAgIEluY3JlbWVudCBhIG51bWJlciBpbiB0aGUgdHlwZSBzeXN0ZW0uXG4gKiBAdGVtcGxhdGUge1VpbnR9IFtJPTBdXG4gKiAgIEluZGV4LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgTm9kZSBleHRlbmRzIFVuaXN0UGFyZW50XG4gKiAgID8gTm9kZSBleHRlbmRzIHtjaGlsZHJlbjogQXJyYXk8aW5mZXIgQ2hpbGRyZW4+fVxuICogICAgID8gQ2hpbGQgZXh0ZW5kcyBDaGlsZHJlbiA/IE5vZGUgOiBuZXZlclxuICogICAgIDogbmV2ZXJcbiAqICAgOiBuZXZlclxuICogKX0gSW50ZXJuYWxQYXJlbnRcbiAqICAgQ29sbGVjdCBub2RlcyB0aGF0IGNhbiBiZSBwYXJlbnRzIG9mIGBDaGlsZGAuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gTm9kZVxuICogICBBbGwgbm9kZSB0eXBlcyBpbiBhIHRyZWUuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gQ2hpbGRcbiAqICAgTm9kZSB0byBzZWFyY2ggZm9yLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge0ludGVybmFsUGFyZW50PEluY2x1c2l2ZURlc2NlbmRhbnQ8VHJlZT4sIENoaWxkPn0gUGFyZW50XG4gKiAgIENvbGxlY3Qgbm9kZXMgaW4gYFRyZWVgIHRoYXQgY2FuIGJlIHBhcmVudHMgb2YgYENoaWxkYC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBUcmVlXG4gKiAgIEFsbCBub2RlIHR5cGVzIGluIGEgdHJlZS5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBDaGlsZFxuICogICBOb2RlIHRvIHNlYXJjaCBmb3IuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7KFxuICogICBEZXB0aCBleHRlbmRzIE1heFxuICogICA/IG5ldmVyXG4gKiAgIDpcbiAqICAgICB8IEludGVybmFsUGFyZW50PE5vZGUsIENoaWxkPlxuICogICAgIHwgSW50ZXJuYWxBbmNlc3RvcjxOb2RlLCBJbnRlcm5hbFBhcmVudDxOb2RlLCBDaGlsZD4sIE1heCwgSW5jcmVtZW50PERlcHRoPj5cbiAqICl9IEludGVybmFsQW5jZXN0b3JcbiAqICAgQ29sbGVjdCBub2RlcyBpbiBgVHJlZWAgdGhhdCBjYW4gYmUgYW5jZXN0b3JzIG9mIGBDaGlsZGAuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gTm9kZVxuICogICBBbGwgbm9kZSB0eXBlcyBpbiBhIHRyZWUuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gQ2hpbGRcbiAqICAgTm9kZSB0byBzZWFyY2ggZm9yLlxuICogQHRlbXBsYXRlIHtVaW50fSBbTWF4PTEwXVxuICogICBNYXg7IHNlYXJjaGVzIHVwIHRvIHRoaXMgZGVwdGguXG4gKiBAdGVtcGxhdGUge1VpbnR9IFtEZXB0aD0wXVxuICogICBDdXJyZW50IGRlcHRoLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgVHJlZSBleHRlbmRzIFVuaXN0UGFyZW50XG4gKiAgICAgPyBEZXB0aCBleHRlbmRzIE1heFxuICogICAgICAgPyBUcmVlXG4gKiAgICAgICA6IFRyZWUgfCBJbmNsdXNpdmVEZXNjZW5kYW50PFRyZWVbJ2NoaWxkcmVuJ11bbnVtYmVyXSwgTWF4LCBJbmNyZW1lbnQ8RGVwdGg+PlxuICogICAgIDogVHJlZVxuICogKX0gSW5jbHVzaXZlRGVzY2VuZGFudFxuICogICBDb2xsZWN0IGFsbCAoaW5jbHVzaXZlKSBkZXNjZW5kYW50cyBvZiBgVHJlZWAuXG4gKlxuICogICA+IFx1RDgzRFx1REM0OSAqKk5vdGUqKjogZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHRoaXMgc2VlbXMgdG8gYmUgdGhlIGZhc3Rlc3Qgd2F5IHRvXG4gKiAgID4gcmVjdXJzZSB3aXRob3V0IGFjdHVhbGx5IHJ1bm5pbmcgaW50byBhbiBpbmZpbml0ZSBsb29wLCB3aGljaCB0aGVcbiAqICAgPiBwcmV2aW91cyB2ZXJzaW9uIGRpZC5cbiAqICAgPlxuICogICA+IFByYWN0aWNhbGx5LCBhIG1heCBvZiBgMmAgaXMgdHlwaWNhbGx5IGVub3VnaCBhc3N1bWluZyBhIGBSb290YCBpc1xuICogICA+IHBhc3NlZCwgYnV0IGl0IGRvZXNuXHUyMDE5dCBpbXByb3ZlIHBlcmZvcm1hbmNlLlxuICogICA+IEl0IGdldHMgaGlnaGVyIHdpdGggYExpc3QgPiBMaXN0SXRlbSA+IFRhYmxlID4gVGFibGVSb3cgPiBUYWJsZUNlbGxgLlxuICogICA+IFVzaW5nIHVwIHRvIGAxMGAgZG9lc25cdTIwMTl0IGh1cnQgb3IgaGVscCBlaXRoZXIuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gVHJlZVxuICogICBUcmVlIHR5cGUuXG4gKiBAdGVtcGxhdGUge1VpbnR9IFtNYXg9MTBdXG4gKiAgIE1heDsgc2VhcmNoZXMgdXAgdG8gdGhpcyBkZXB0aC5cbiAqIEB0ZW1wbGF0ZSB7VWludH0gW0RlcHRoPTBdXG4gKiAgIEN1cnJlbnQgZGVwdGguXG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgVmlzaXRvclxuICogICBIYW5kbGUgYSBub2RlIChtYXRjaGluZyBgdGVzdGAsIGlmIGdpdmVuKS5cbiAqXG4gKiAgIFZpc2l0b3JzIGFyZSBmcmVlIHRvIHRyYW5zZm9ybSBgbm9kZWAuXG4gKiAgIFRoZXkgY2FuIGFsc28gdHJhbnNmb3JtIGBwYXJlbnRgLlxuICpcbiAqICAgUmVwbGFjaW5nIGBub2RlYCBpdHNlbGYsIGlmIGBTS0lQYCBpcyBub3QgcmV0dXJuZWQsIHN0aWxsIGNhdXNlcyBpdHNcbiAqICAgZGVzY2VuZGFudHMgdG8gYmUgd2Fsa2VkICh3aGljaCBpcyBhIGJ1ZykuXG4gKlxuICogICBXaGVuIGFkZGluZyBvciByZW1vdmluZyBwcmV2aW91cyBzaWJsaW5ncyBvZiBgbm9kZWAgKG9yIG5leHQgc2libGluZ3MsIGluXG4gKiAgIGNhc2Ugb2YgcmV2ZXJzZSksIHRoZSBgVmlzaXRvcmAgc2hvdWxkIHJldHVybiBhIG5ldyBgSW5kZXhgIHRvIHNwZWNpZnkgdGhlXG4gKiAgIHNpYmxpbmcgdG8gdHJhdmVyc2UgYWZ0ZXIgYG5vZGVgIGlzIHRyYXZlcnNlZC5cbiAqICAgQWRkaW5nIG9yIHJlbW92aW5nIG5leHQgc2libGluZ3Mgb2YgYG5vZGVgIChvciBwcmV2aW91cyBzaWJsaW5ncywgaW4gY2FzZVxuICogICBvZiByZXZlcnNlKSBpcyBoYW5kbGVkIGFzIGV4cGVjdGVkIHdpdGhvdXQgbmVlZGluZyB0byByZXR1cm4gYSBuZXcgYEluZGV4YC5cbiAqXG4gKiAgIFJlbW92aW5nIHRoZSBjaGlsZHJlbiBwcm9wZXJ0eSBvZiBgcGFyZW50YCBzdGlsbCByZXN1bHRzIGluIHRoZW0gYmVpbmdcbiAqICAgdHJhdmVyc2VkLlxuICogQHBhcmFtIHtWaXNpdGVkfSBub2RlXG4gKiAgIEZvdW5kIG5vZGUuXG4gKiBAcGFyYW0ge1Zpc2l0ZWQgZXh0ZW5kcyBVbmlzdE5vZGUgPyBudW1iZXIgfCB1bmRlZmluZWQgOiBuZXZlcn0gaW5kZXhcbiAqICAgSW5kZXggb2YgYG5vZGVgIGluIGBwYXJlbnRgLlxuICogQHBhcmFtIHtBbmNlc3RvciBleHRlbmRzIFVuaXN0UGFyZW50ID8gQW5jZXN0b3IgfCB1bmRlZmluZWQgOiBuZXZlcn0gcGFyZW50XG4gKiAgIFBhcmVudCBvZiBgbm9kZWAuXG4gKiBAcmV0dXJucyB7VmlzaXRvclJlc3VsdH1cbiAqICAgV2hhdCB0byBkbyBuZXh0LlxuICpcbiAqICAgQW4gYEluZGV4YCBpcyB0cmVhdGVkIGFzIGEgdHVwbGUgb2YgYFtDT05USU5VRSwgSW5kZXhdYC5cbiAqICAgQW4gYEFjdGlvbmAgaXMgdHJlYXRlZCBhcyBhIHR1cGxlIG9mIGBbQWN0aW9uXWAuXG4gKlxuICogICBQYXNzaW5nIGEgdHVwbGUgYmFjayBvbmx5IG1ha2VzIHNlbnNlIGlmIHRoZSBgQWN0aW9uYCBpcyBgU0tJUGAuXG4gKiAgIFdoZW4gdGhlIGBBY3Rpb25gIGlzIGBFWElUYCwgdGhhdCBhY3Rpb24gY2FuIGJlIHJldHVybmVkLlxuICogICBXaGVuIHRoZSBgQWN0aW9uYCBpcyBgQ09OVElOVUVgLCBgSW5kZXhgIGNhbiBiZSByZXR1cm5lZC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBbVmlzaXRlZD1VbmlzdE5vZGVdXG4gKiAgIFZpc2l0ZWQgbm9kZSB0eXBlLlxuICogQHRlbXBsYXRlIHtVbmlzdFBhcmVudH0gW0FuY2VzdG9yPVVuaXN0UGFyZW50XVxuICogICBBbmNlc3RvciB0eXBlLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1Zpc2l0b3I8VmlzaXRlZCwgUGFyZW50PEFuY2VzdG9yLCBWaXNpdGVkPj59IEJ1aWxkVmlzaXRvckZyb21NYXRjaFxuICogICBCdWlsZCBhIHR5cGVkIGBWaXNpdG9yYCBmdW5jdGlvbiBmcm9tIGEgbm9kZSBhbmQgYWxsIHBvc3NpYmxlIHBhcmVudHMuXG4gKlxuICogICBJdCB3aWxsIGluZmVyIHdoaWNoIHZhbHVlcyBhcmUgcGFzc2VkIGFzIGBub2RlYCBhbmQgd2hpY2ggYXMgYHBhcmVudGAuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gVmlzaXRlZFxuICogICBOb2RlIHR5cGUuXG4gKiBAdGVtcGxhdGUge1VuaXN0UGFyZW50fSBBbmNlc3RvclxuICogICBQYXJlbnQgdHlwZS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHsoXG4gKiAgIEJ1aWxkVmlzaXRvckZyb21NYXRjaDxcbiAqICAgICBNYXRjaGVzPERlc2NlbmRhbnQsIENoZWNrPixcbiAqICAgICBFeHRyYWN0PERlc2NlbmRhbnQsIFVuaXN0UGFyZW50PlxuICogICA+XG4gKiApfSBCdWlsZFZpc2l0b3JGcm9tRGVzY2VuZGFudHNcbiAqICAgQnVpbGQgYSB0eXBlZCBgVmlzaXRvcmAgZnVuY3Rpb24gZnJvbSBhIGxpc3Qgb2YgZGVzY2VuZGFudHMgYW5kIGEgdGVzdC5cbiAqXG4gKiAgIEl0IHdpbGwgaW5mZXIgd2hpY2ggdmFsdWVzIGFyZSBwYXNzZWQgYXMgYG5vZGVgIGFuZCB3aGljaCBhcyBgcGFyZW50YC5cbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBEZXNjZW5kYW50XG4gKiAgIE5vZGUgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7VGVzdH0gQ2hlY2tcbiAqICAgVGVzdCB0eXBlLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgeyhcbiAqICAgQnVpbGRWaXNpdG9yRnJvbURlc2NlbmRhbnRzPFxuICogICAgIEluY2x1c2l2ZURlc2NlbmRhbnQ8VHJlZT4sXG4gKiAgICAgQ2hlY2tcbiAqICAgPlxuICogKX0gQnVpbGRWaXNpdG9yXG4gKiAgIEJ1aWxkIGEgdHlwZWQgYFZpc2l0b3JgIGZ1bmN0aW9uIGZyb20gYSB0cmVlIGFuZCBhIHRlc3QuXG4gKlxuICogICBJdCB3aWxsIGluZmVyIHdoaWNoIHZhbHVlcyBhcmUgcGFzc2VkIGFzIGBub2RlYCBhbmQgd2hpY2ggYXMgYHBhcmVudGAuXG4gKiBAdGVtcGxhdGUge1VuaXN0Tm9kZX0gW1RyZWU9VW5pc3ROb2RlXVxuICogICBOb2RlIHR5cGUuXG4gKiBAdGVtcGxhdGUge1Rlc3R9IFtDaGVjaz1UZXN0XVxuICogICBUZXN0IHR5cGUuXG4gKi9cblxuaW1wb3J0IHt2aXNpdFBhcmVudHN9IGZyb20gJ3VuaXN0LXV0aWwtdmlzaXQtcGFyZW50cydcblxuZXhwb3J0IHtDT05USU5VRSwgRVhJVCwgU0tJUH0gZnJvbSAndW5pc3QtdXRpbC12aXNpdC1wYXJlbnRzJ1xuXG4vKipcbiAqIFZpc2l0IG5vZGVzLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIHBlcmZvcm1zICpkZXB0aC1maXJzdCogKnRyZWUgdHJhdmVyc2FsKiBpbiAqcHJlb3JkZXIqXG4gKiAoKipOTFIqKikgb3IgaWYgYHJldmVyc2VgIGlzIGdpdmVuLCBpbiAqcmV2ZXJzZSBwcmVvcmRlciogKCoqTlJMKiopLlxuICpcbiAqIFlvdSBjYW4gY2hvb3NlIGZvciB3aGljaCBub2RlcyBgdmlzaXRvcmAgaXMgY2FsbGVkIGJ5IHBhc3NpbmcgYSBgdGVzdGAuXG4gKiBGb3IgY29tcGxleCB0ZXN0cywgeW91IHNob3VsZCB0ZXN0IHlvdXJzZWxmIGluIGB2aXNpdG9yYCwgYXMgaXQgd2lsbCBiZVxuICogZmFzdGVyIGFuZCB3aWxsIGhhdmUgaW1wcm92ZWQgdHlwZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBXYWxraW5nIHRoZSB0cmVlIGlzIGFuIGludGVuc2l2ZSB0YXNrLlxuICogTWFrZSB1c2Ugb2YgdGhlIHJldHVybiB2YWx1ZXMgb2YgdGhlIHZpc2l0b3Igd2hlbiBwb3NzaWJsZS5cbiAqIEluc3RlYWQgb2Ygd2Fsa2luZyBhIHRyZWUgbXVsdGlwbGUgdGltZXMsIHdhbGsgaXQgb25jZSwgdXNlIGB1bmlzdC11dGlsLWlzYFxuICogdG8gY2hlY2sgaWYgYSBub2RlIG1hdGNoZXMsIGFuZCB0aGVuIHBlcmZvcm0gZGlmZmVyZW50IG9wZXJhdGlvbnMuXG4gKlxuICogWW91IGNhbiBjaGFuZ2UgdGhlIHRyZWUuXG4gKiBTZWUgYFZpc2l0b3JgIGZvciBtb3JlIGluZm8uXG4gKlxuICogQG92ZXJsb2FkXG4gKiBAcGFyYW0ge1RyZWV9IHRyZWVcbiAqIEBwYXJhbSB7Q2hlY2t9IGNoZWNrXG4gKiBAcGFyYW0ge0J1aWxkVmlzaXRvcjxUcmVlLCBDaGVjaz59IHZpc2l0b3JcbiAqIEBwYXJhbSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFtyZXZlcnNlXVxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqXG4gKiBAb3ZlcmxvYWRcbiAqIEBwYXJhbSB7VHJlZX0gdHJlZVxuICogQHBhcmFtIHtCdWlsZFZpc2l0b3I8VHJlZT59IHZpc2l0b3JcbiAqIEBwYXJhbSB7Ym9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWR9IFtyZXZlcnNlXVxuICogQHJldHVybnMge3VuZGVmaW5lZH1cbiAqXG4gKiBAcGFyYW0ge1VuaXN0Tm9kZX0gdHJlZVxuICogICBUcmVlIHRvIHRyYXZlcnNlLlxuICogQHBhcmFtIHtWaXNpdG9yIHwgVGVzdH0gdGVzdE9yVmlzaXRvclxuICogICBgdW5pc3QtdXRpbC1pc2AtY29tcGF0aWJsZSB0ZXN0IChvcHRpb25hbCwgb21pdCB0byBwYXNzIGEgdmlzaXRvcikuXG4gKiBAcGFyYW0ge1Zpc2l0b3IgfCBib29sZWFuIHwgbnVsbCB8IHVuZGVmaW5lZH0gW3Zpc2l0b3JPclJldmVyc2VdXG4gKiAgIEhhbmRsZSBlYWNoIG5vZGUgKHdoZW4gdGVzdCBpcyBvbWl0dGVkLCBwYXNzIGByZXZlcnNlYCkuXG4gKiBAcGFyYW0ge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSBbbWF5YmVSZXZlcnNlPWZhbHNlXVxuICogICBUcmF2ZXJzZSBpbiByZXZlcnNlIHByZW9yZGVyIChOUkwpIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgcHJlb3JkZXIgKE5MUikuXG4gKiBAcmV0dXJucyB7dW5kZWZpbmVkfVxuICogICBOb3RoaW5nLlxuICpcbiAqIEB0ZW1wbGF0ZSB7VW5pc3ROb2RlfSBUcmVlXG4gKiAgIE5vZGUgdHlwZS5cbiAqIEB0ZW1wbGF0ZSB7VGVzdH0gQ2hlY2tcbiAqICAgYHVuaXN0LXV0aWwtaXNgLWNvbXBhdGlibGUgdGVzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZpc2l0KHRyZWUsIHRlc3RPclZpc2l0b3IsIHZpc2l0b3JPclJldmVyc2UsIG1heWJlUmV2ZXJzZSkge1xuICAvKiogQHR5cGUge2Jvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkfSAqL1xuICBsZXQgcmV2ZXJzZVxuICAvKiogQHR5cGUge1Rlc3R9ICovXG4gIGxldCB0ZXN0XG4gIC8qKiBAdHlwZSB7VmlzaXRvcn0gKi9cbiAgbGV0IHZpc2l0b3JcblxuICBpZiAoXG4gICAgdHlwZW9mIHRlc3RPclZpc2l0b3IgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgdmlzaXRvck9yUmV2ZXJzZSAhPT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICB0ZXN0ID0gdW5kZWZpbmVkXG4gICAgdmlzaXRvciA9IHRlc3RPclZpc2l0b3JcbiAgICByZXZlcnNlID0gdmlzaXRvck9yUmV2ZXJzZVxuICB9IGVsc2Uge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGFzc3VtZSB0aGUgb3ZlcmxvYWQgd2l0aCB0ZXN0IHdhcyBnaXZlbi5cbiAgICB0ZXN0ID0gdGVzdE9yVmlzaXRvclxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IGFzc3VtZSB0aGUgb3ZlcmxvYWQgd2l0aCB0ZXN0IHdhcyBnaXZlbi5cbiAgICB2aXNpdG9yID0gdmlzaXRvck9yUmV2ZXJzZVxuICAgIHJldmVyc2UgPSBtYXliZVJldmVyc2VcbiAgfVxuXG4gIHZpc2l0UGFyZW50cyh0cmVlLCB0ZXN0LCBvdmVybG9hZCwgcmV2ZXJzZSlcblxuICAvKipcbiAgICogQHBhcmFtIHtVbmlzdE5vZGV9IG5vZGVcbiAgICogQHBhcmFtIHtBcnJheTxVbmlzdFBhcmVudD59IHBhcmVudHNcbiAgICovXG4gIGZ1bmN0aW9uIG92ZXJsb2FkKG5vZGUsIHBhcmVudHMpIHtcbiAgICBjb25zdCBwYXJlbnQgPSBwYXJlbnRzW3BhcmVudHMubGVuZ3RoIC0gMV1cbiAgICBjb25zdCBpbmRleCA9IHBhcmVudCA/IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKG5vZGUpIDogdW5kZWZpbmVkXG4gICAgcmV0dXJuIHZpc2l0b3Iobm9kZSwgaW5kZXgsIHBhcmVudClcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBQUEsU0FBMkNBLElBQU1DLElBQUFBO0FBQzFCLGtCQUFBLE9BQVpDLFdBQTBDLFlBQUEsT0FBWEMsVUFDeENBLFFBQU9ELFVBQVVELEdBQUFBLElBQ1EsY0FBQSxPQUFYRyxVQUF5QkEsT0FBT0MsTUFDOUNELE9BQU8sQ0FBQSxHQUFJSCxFQUFBQSxJQUNlLFlBQUEsT0FBWkMsVUFDZEEsUUFBZSxRQUFJRCxHQUFBQSxJQUVuQkQsR0FBWSxRQUFJQyxHQUFBQTtJQUFBQSxFQUNmSyxNQUFNLFdBQUE7QUFDVCxjQUFBLE1BQUE7QUFBQTtBQ1RBLFlBQUlDLEtBQXNCLEVDQTFCLEdBQXdCLENBQUNMLElBQVNNLE9BQUFBO0FBQ2pDLG1CQUFRQyxNQUFPRDtBQUNYRCxZQUFBQSxHQUFvQkcsRUFBRUYsSUFBWUMsRUFBQUEsS0FBQUEsQ0FBU0YsR0FBb0JHLEVBQUVSLElBQVNPLEVBQUFBLEtBQzVFRSxPQUFPQyxlQUFlVixJQUFTTyxJQUFLLEVBQUVJLFlBQUFBLE1BQWtCQyxLQUFLTixHQUFXQyxFQUFBQSxFQUFBQSxDQUFBQTtRQUFBQSxHQ0ozRSxHQUF3QixDQUFDTSxJQUFLQyxPQUFVTCxPQUFPTSxVQUFVQyxlQUFlQyxLQUFLSixJQUFLQyxFQUFBQSxHQ0NsRixHQUF5QmQsQ0FBQUEsT0FBQUE7QUFDSCx5QkFBQSxPQUFYa0IsVUFBMEJBLE9BQU9DLGVBQzFDVixPQUFPQyxlQUFlVixJQUFTa0IsT0FBT0MsYUFBYSxFQUFFQyxPQUFPLFNBQUEsQ0FBQSxHQUU3RFgsT0FBT0MsZUFBZVYsSUFBUyxjQUFjLEVBQUVvQixPQUFBQSxLQUFPLENBQUE7UUFBQSxFQUFBLEdBQUFDLEtBQUEsQ0FBQTtBQUFBLFFBQUFDLEdBQUEsRUFBQUQsSUFBQSxFQUFBLFNBQUEsTUFBQUUsR0FBQSxDQUFBO0FB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QUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixNQUFNO0FBQUEsRUFDTixjQUFjO0FBQUEsRUFDZCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxPQUFPO0FBQUEsRUFDUCxZQUFZO0FBQUEsRUFDWixRQUFRO0FBQUEsRUFDUixVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixjQUFjO0FBQUEsRUFDZCxVQUFVO0FBQUEsRUFDVixZQUFZO0FBQUEsRUFDWixPQUFPO0FBQUEsRUFDUCxZQUFZO0FBQUEsRUFDWixRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxXQUFXO0FBQUEsRUFDWCxVQUFVO0FBQUEsRUFDVixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixPQUFPO0FBQUEsRUFDUCxZQUFZO0FBQUEsRUFDWixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxjQUFjO0FBQUEsRUFDZCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxhQUFhO0FBQUEsRUFDYixPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixVQUFVO0FBQUEsRUFDVixpQkFBaUI7QUFBQSxFQUNqQixZQUFZO0FBQUEsRUFDWixjQUFjO0FBQUEsRUFDZCxPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixRQUFRO0FBQUEsRUFDUixnQkFBZ0I7QUFBQSxFQUNoQixPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxpQkFBaUI7QUFBQSxFQUNqQixRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDViw0QkFBNEI7QUFBQSxFQUM1QixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxxQkFBcUI7QUFBQSxFQUNyQixPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxZQUFZO0FBQUEsRUFDWixVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxNQUFNO0FBQUEsRUFDTixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxpQkFBaUI7QUFBQSxFQUNqQixNQUFNO0FBQUEsRUFDTixhQUFhO0FBQUEsRUFDYixVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixhQUFhO0FBQUEsRUFDYixzQkFBc0I7QUFBQSxFQUN0QixPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixhQUFhO0FBQUEsRUFDYixZQUFZO0FBQUEsRUFDWixhQUFhO0FBQUEsRUFDYixXQUFXO0FBQUEsRUFDWCxXQUFXO0FBQUEsRUFDWCxlQUFlO0FBQUEsRUFDZixrQkFBa0I7QUFBQSxFQUNsQixNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxhQUFhO0FBQUEsRUFDYixRQUFRO0FBQUEsRUFDUixlQUFlO0FBQUEsRUFDZixTQUFTO0FBQUEsRUFDVCxTQUFTO0FBQUEsRUFDVCxnQkFBZ0I7QUFBQSxFQUNoQixnQkFBZ0I7QUFBQSxFQUNoQixjQUFjO0FBQUEsRUFDZCxPQUFPO0FBQUEsRUFDUCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxXQUFXO0FBQUEsRUFDWCxZQUFZO0FBQUEsRUFDWixNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxTQUFTO0FBQUEsRUFDVCxjQUFjO0FBQUEsRUFDZCxRQUFRO0FBQUEsRUFDUixPQUFPO0FBQUEsRUFDUCxXQUFXO0FBQUEsRUFDWCxTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixxQkFBcUI7QUFBQSxFQUNyQixVQUFVO0FBQUEsRUFDVixhQUFhO0FBQUEsRUFDYixPQUFPO0FBQUEsRUFDUCxZQUFZO0FBQUEsRUFDWixXQUFXO0FBQUEsRUFDWCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxtQkFBbUI7QUFBQSxFQUNuQixjQUFjO0FBQUEsRUFDZCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxRQUFRO0FBQUEsRUFDUixjQUFjO0FBQUEsRUFDZCxRQUFRO0FBQUEsRUFDUixTQUFTO0FBQUEsRUFDVCxVQUFVO0FBQUEsRUFDVixZQUFZO0FBQUEsRUFDWixRQUFRO0FBQUEsRUFDUixVQUFVO0FBQUEsRUFDVixnQkFBZ0I7QUFBQSxFQUNoQixPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixNQUFNO0FBQUEsRUFDTixjQUFjO0FBQUEsRUFDZCxTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixjQUFjO0FBQUEsRUFDZCxhQUFhO0FBQUEsRUFDYixZQUFZO0FBQUEsRUFDWixTQUFTO0FBQUEsRUFDVCxjQUFjO0FBQUEsRUFDZCxNQUFNO0FBQUEsRUFDTixXQUFXO0FBQUEsRUFDWCxjQUFjO0FBQUEsRUFDZCxVQUFVO0FBQUEsRUFDVixjQUFjO0FBQUEsRUFDZCxZQUFZO0FBQUEsRUFDWixhQUFhO0FBQUEsRUFDYixVQUFVO0FBQUEsRUFDVixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEsRUFDTixVQUFVO0FBQUEsRUFDVixNQUFNO0FBQUEsRUFDTixLQUFLO0FBQUEsRUFDTCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixrQkFBa0I7QUFBQSxFQUNsQixTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixpQkFBaUI7QUFBQSxFQUNqQixjQUFjO0FBQUEsRUFDZCxnQkFBZ0I7QUFBQSxFQUNoQixPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxZQUFZO0FBQUEsRUFDWixPQUFPO0FBQUEsRUFDUCxpQkFBaUI7QUFBQSxFQUNqQixPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxVQUFVO0FBQUEsRUFDVixNQUFNO0FBQUEsRUFDTixjQUFjO0FBQUEsRUFDZCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxTQUFTO0FBQUEsRUFDVCxTQUFTO0FBQUEsRUFDVCxpQkFBaUI7QUFBQSxFQUNqQixVQUFVO0FBQUEsRUFDVixXQUFXO0FBQUEsRUFDWCxpQkFBaUI7QUFBQSxFQUNqQixTQUFTO0FBQUEsRUFDVCxNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsRUFDVCxPQUFPO0FBQUEsRUFDUCxPQUFPO0FBQUEsRUFDUCxRQUFRO0FBQUEsRUFDUixXQUFXO0FBQUEsRUFDWCxRQUFRO0FBQUEsRUFDUixRQUFRO0FBQUEsRUFDUixNQUFNO0FBQUEs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LEVBQ1QsYUFBWTtBQUFBLEVBQ1osT0FBTTtBQUFBLEVBQ04sV0FBVTtBQUFBLEVBQ1YsWUFBVztBQUFBLEVBQ1gsU0FBUTtBQUFBLEVBQ1IsV0FBVTtBQUFBLEVBQ1YsVUFBUztBQUFBLEVBQ1QsY0FBYTtBQUFBLEVBQ2IsUUFBTztBQUFBLEVBQ1AsUUFBTztBQUFBLEVBQ1AsUUFBTztBQUFBLEVBQ1AsU0FBUTtBQUFBLEVBQ1IsbUJBQWtCO0FBQUEsRUFDbEIsY0FBYTtBQUFBLEVBQ2IsUUFBTztBQUFBLEVBQ1AsUUFBTztBQUFBLEVBQ1AsUUFBTztBQUFBLEVBQ1AsU0FBUTtBQUFBLEVBQ1IsU0FBUTtBQUFBLEVBQ1IsT0FBTTtBQUFBLEVBQ04sT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsY0FBYTtBQUFBLEVBQ2IsUUFBTztBQUFBLEVBQ1AsU0FBUTtBQUFBLEVBQ1IsUUFBTztBQUFBLEVBQ1AsVUFBUztBQUFBLEVBQ1QsWUFBVztBQUFBLEVBQ1gsUUFBTztBQUFBLEVBQ1AsTUFBSztBQUFBLEVBQ0wsVUFBUztBQUFBLEVBQ1QsVUFBUztBQUFBLEVBQ1QsVUFBUztBQUFBLEVBQ1QsYUFBWTtBQUFBLEVBQ1osT0FBTTtBQUFBLEVBQ04sVUFBUztBQUFBLEVBQ1QsTUFBSztBQUFBLEVBQ0wsY0FBYTtBQUFBLEVBQ2IsU0FBUTtBQUFBLEVBQ1IsUUFBTztBQUFBLEVBQ1AsT0FBTTtBQUFBLEVBQ04sVUFBUztBQUFBLEVBQ1QsY0FBYTtBQUFBLEVBQ2IsYUFBWTtBQUFBLEVBQ1osWUFBVztBQUFBLEVBQ1gsU0FBUTtBQUFBLEVBQ1IsY0FBYTtBQUFBLEVBQ2IsTUFBSztBQUFBLEVBQ0wsV0FBVTtBQUFBLEVBQ1YsY0FBYTtBQUFBLEVBQ2IsY0FBYTtBQUFBLEVBQ2IsVUFBUztBQUFBLEVBQ1QsVUFBUztBQUFBLEVBQ1QsY0FBYTtBQUFBLEVBQ2IsWUFBVztBQUFBLEVBQ1gsT0FBTTtBQUFBLEVBQ04sVUFBUztBQUFBLEVBQ1QsUUFBTztBQUFBLEVBQ1AsYUFBWTtBQUFBLEVBQ1osVUFBUztBQUFBLEVBQ1QsY0FBYTtBQUFBLEVBQ2IsUUFBTztBQUFBLEVBQ1AsVUFBUztBQUFBLEVBQ1QsTUFBSztBQUFBLEVBQ0wsVUFBUztBQUFBLEVBQ1QsTUFBSztBQUFBLEVBQ0wsS0FBSTtBQUFBLEVBQ0osT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsS0FBSTtBQUFBLEVBQ0osVUFBUztBQUFBLEVBQ1QsT0FBTTtBQUFBLEVBQ04sVUFBUztBQUFBLEVBQ1QsT0FBTTtBQUFBLEVBQ04sT0FBTTtBQUFBLEVBQ04sVUFBUztBQUFBLEVBQ1QsU0FBUTtBQUFBLEVBQ1IsUUFBTztBQUFBLEVBQ1AsU0FBUTtBQUFBLEVBQ1IsT0FBTTtBQUFBLEVBQ04sWUFBVztBQUFBLEVBQ1gsT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsT0FBTTtBQUFBLEVBQ04sWUFBVztBQUFBLEVBQ1gsa0JBQWlCO0FBQUEsRUFDakIsU0FBUTtBQUFBLEVBQ1IsUUFBTztBQUFBLEVBQ1AsTUFBSztBQUFBLEVBQ0wsUUFBTztBQUFBLEVBQ1AsT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsUUFBTztBQUFBLEVBQ1AsU0FBUTtBQUFBLEVBQ1IsVUFBUztBQUFBLEVBQ1QsaUJBQWdCO0FBQUEsRUFDaEIsY0FBYTtBQUFBLEVBQ2IsZ0JBQWU7QUFBQSxFQUNmLFNBQVE7QUFBQSxFQUNSLGFBQVk7QUFBQSxFQUNaLFVBQVM7QUFBQSxFQUNULE9BQU07QUFBQSxFQUNOLFNBQVE7QUFBQSxFQUNSLFlBQVc7QUFBQSxFQUNYLE9BQU07QUFBQSxFQUNOLGlCQUFnQjtBQUFBLEVBQ2hCLE9BQU07QUFBQSxFQUNOLE9BQU07QUFBQSxFQUNOLFVBQVM7QUFBQSxFQUNULE1BQUs7QUFBQSxFQUNMLGNBQWE7QUFBQSxFQUNiLE9BQU07QUFBQSxFQUNOLE9BQU07QUFBQSxFQUNOLFlBQVc7QUFBQSxFQUNYLFFBQU87QUFBQSxFQUNQLFNBQVE7QUFBQSxFQUNSLFNBQVE7QUFBQSxFQUNSLFVBQVM7QUFBQSxFQUNULGlCQUFnQjtBQUFBLEVBQ2hCLFVBQVM7QUFBQSxFQUNULFNBQVE7QUFBQSxFQUNSLFdBQVU7QUFBQSxFQUNWLGlCQUFnQjtBQUFBLEVBQ2hCLFNBQVE7QUFBQSxFQUNSLE1BQUs7QUFBQSxFQUNMLFNBQVE7QUFBQSxFQUNSLE9BQU07QUFBQSxFQUNOLE9BQU07QUFBQSxFQUNOLE9BQU07QUFBQSxFQUNOLFdBQVU7QUFBQSxFQUNWLFFBQU87QUFBQSxFQUNQLFVBQVM7QUFBQSxFQUNULFdBQVU7QUFBQSxFQUNWLFFBQU87QUFBQSxFQUNQLFVBQVM7QUFBQSxFQUNULFFBQU87QUFBQSxFQUNQLFFBQU87QUFBQSxFQUNQLGNBQWE7QUFBQSxFQUNiLE1BQUs7QUFBQSxFQUNMLGNBQWE7QUFBQSxFQUNiLFlBQVc7QUFBQSxFQUNYLGdCQUFlO0FBQUEsRUFDZixXQUFVO0FBQUEsRUFDVixNQUFLO0FBQUEsRUFDTCxXQUFVO0FBQUEsRUFDVixPQUFNO0FBQUEsRUFDTixPQUFNO0FBQUEsRUFDTixLQUFJO0FBQUEsRUFDSixRQUFPO0FBQUEsRUFDUCxTQUFRO0FBQUEsRUFDUixZQUFXO0FBQUEsRUFDWCxXQUFVO0FBQUEsRUFDVixRQUFPO0FBQUEsRUFDUCxPQUFNO0FBQUEsRUFDTixnQkFBZTtBQUFBLEVBQ2YsTUFBSztBQUFBLEVBQ0wsY0FBYTtBQUFBLEVBQ2IsUUFBTztBQUFBLEVBQ1AsV0FBVTtBQUFBLEVBQ1YsVUFBUztBQUFBLEVBQ1QsUUFBTztBQUFBLEVBQ1AsUUFBTztBQUFBLEVBQ1AsV0FBVTtBQUFBLEVBQ1YsZUFBYztBQUFBLEVBQ2QsTUFBSztBQUFBLEVBQ0wsTUFBSztBQUFBLEVBQ0wsUUFBTztBQUFBLEVBQ1AsU0FBUTtBQUFBLEVBQ1IsYUFBWTtBQUFBLEVBQ1osV0FBVTtBQUFBLEVBQ1YsUUFBTztBQUFBLEVBQ1AsVUFBUztBQUFBLEVBQ1QsUUFBTztBQUFBLEVBQ1AsT0FBTTtBQUFBLEVBQ04sUUFBTztBQUFBLEVBQ1AsT0FBTTtBQUNQO0FBQ0EsSUFBTSxtQkFBNEM7QUFBQTtBQUFBLEVBQ2pELFFBQU87QUFBQSxFQUNQLFVBQVM7QUFBQSxFQUNULFVBQVM7QUFBQSxFQUNULFNBQVE7QUFBQSxFQUNSLGNBQWE7QUFBQSxFQUNiLFdBQVU7QUFBQSxFQUNWLGVBQWM7QUFBQSxFQUNkLFVBQVM7QUFBQSxFQUNULE9BQU07QUFDUDtBQUNPLElBQU0saUJBQTBDLEVBQUMsR0FBRyxpQkFBZ0IsR0FBRyx3QkFBdUIsR0FBRyxpQkFBZ0I7QUFDakgsSUFBTSxzQkFBK0M7QUFBQTtBQUFBLEVBQzNELGNBQWM7QUFBQSxFQUNkLGFBQWE7QUFBQSxFQUNiLGNBQWM7QUFBQSxFQUNkLGVBQWU7QUFBQSxFQUNmLGlCQUFpQjtBQUFBLEVBQ2pCLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLFVBQVU7QUFBQSxFQUNWLHdCQUF3QjtBQUFBLEVBQ3hCLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLGVBQWU7QUFBQSxFQUNmLFdBQVc7QUFBQSxFQUNYLGdCQUFnQjtBQUFBLEVBQ2hCLFlBQVk7QUFBQSxFQUNaLGdCQUFnQjtBQUFBLEVBQ2hCLGNBQWM7QUFBQSxFQUNkLFVBQVU7QUFBQSxFQUNWLFlBQVk7QUFBQSxFQUNaLE9BQU87QUFBQSxFQUNQLFNBQVM7QUFBQSxFQUNULE1BQU07QUFBQSxFQUNOLEtBQUs7QUFBQSxFQUNMLE9BQU87QUFBQSxFQUNQLFdBQVc7QUFBQSxFQUNYLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULGdCQUFnQjtBQUFBLEVBQ2hCLFdBQVc7QUFBQSxFQUNYLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLEtBQUs7QUFBQSxFQUNMLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULFFBQVE7QUFBQSxFQUNSLGlCQUFpQjtBQUFBLEVBQ2pCLFVBQVU7QUFBQSxFQUNWLGtCQUFrQjtBQUFBLEVBQ2xCLGdCQUFnQjtBQUFBLEVBQ2hCLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNWLE1BQU07QUFBQSxFQUNOLDRCQUE0QjtBQUFBLEVBQzVCLFFBQVE7QUFBQSxFQUNSLFdBQVc7QUFBQSxFQUNYLGdDQUFnQztBQUFBLEVBQ2hDLHNCQUFzQjtBQUFBLEVBQ3RCLFVBQVU7QUFBQSxFQUNWLFlBQVk7QUFBQSxFQUNaLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLGFBQWE7QUFBQSxFQUNiLE1BQU07QUFBQSxFQUNOLFVBQVU7QUFBQSxFQUNWLFdBQVc7QUFBQSxFQUNYLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLGNBQWM7QUFBQSxFQUNkLFdBQVc7QUFBQSxFQUNYLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLE1BQU07QUFBQSxFQUNOLFFBQVE7QUFBQSxFQUNSLGNBQWM7QUFBQSxFQUNkLFFBQVE7QUFBQSxFQUNSLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULFVBQVU7QUFBQSxFQUNWLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxFQUNULFFBQVE7QUFBQSxFQUNSLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLGNBQWM7QUFBQSxFQUNkLFlBQVk7QUFBQSxFQUNaLFdBQVc7QUFBQSxFQUNYLE9BQU87QUFBQSxFQUNQLFlBQVk7QUFBQSxFQUNaLFVBQVU7QUFBQSxFQUNWLGFBQWE7QUFBQSxFQUNiLE9BQU87QUFBQSxFQUNQLFdBQVc7QUFBQSxFQUNYLFNBQVM7QUFBQSxFQUNULE9BQU87QUFBQSxFQUNQLE9BQU87QUFBQSxFQUNQLFFBQVE7QUFBQSxFQUNSLGlCQUFpQjtBQUFBLEVBQ2pCLGVBQWU7QUFBQSxFQUNmLFNBQVM7QUFBQSxFQUNULFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLFVBQVU7QUFBQSxFQUNWLFFBQVE7QUFBQSxFQUNSLE9BQU87QUFBQSxFQUNQLFVBQVU7QUFBQSxFQUNW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RUFDaEIsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsVUFBVTtBQUFBLEVBQ1YsTUFBTTtBQUFBLEVBQ04sNEJBQTRCO0FBQUEsRUFDNUIsUUFBUTtBQUFBLEVBQ1IsV0FBVztBQUFBLEVBQ1gsZ0NBQWdDO0FBQUEsRUFDaEMsc0JBQXNCO0FBQUEsRUFDdEIsVUFBVTtBQUFBLEVBQ1YsWUFBWTtBQUFBLEVBQ1osT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsYUFBYTtBQUFBLEVBQ2IsTUFBTTtBQUFBLEVBQ04sVUFBVTtBQUFBLEVBQ1YsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsY0FBYztBQUFBLEVBQ2QsV0FBVztBQUFBLEVBQ1gsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsTUFBTTtBQUFBLEVBQ04sUUFBUTtBQUFBLEVBQ1IsY0FBYztBQUFBLEVBQ2QsUUFBUTtBQUFBLEVBQ1IsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsU0FBUztBQUFBLEVBQ1QsU0FBUztBQUFBLEVBQ1QsUUFBUTtBQUFBLEVBQ1IsVUFBVTtBQUFBLEVBQ1YsUUFBUTtBQUFBLEVBQ1IsY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osV0FBVztBQUFBLEVBQ1gsT0FBTztBQUFBLEVBQ1AsWUFBWTtBQUFBLEVBQ1osVUFBVTtBQUFBLEVBQ1YsYUFBYTtBQUFBLEVBQ2IsT0FBTztBQUFBLEVBQ1AsV0FBVztBQUFBLEVBQ1gsU0FBUztBQUFBLEVBQ1QsT0FBTztBQUFBLEVBQ1AsT0FBTztBQUFBLEVBQ1AsUUFBUTtBQUFBLEVBQ1IsaUJBQWlCO0FBQUEsRUFDakIsZUFBZTtBQUFBLEVBQ2YsU0FBUztBQUFBLEVBQ1QsVUFBVTtBQUFBLEVBQ1YsVUFBVTtBQUFBLEVB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LFdBQVVBLEdBQUUsUUFBTSxXQUFVQSxHQUFFLGlCQUFlLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxPQUFLLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsaUJBQWUsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsZUFBYSxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxnQkFBYyxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsVUFBUSxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxPQUFLLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxPQUFLLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsU0FBTyxXQUFVQSxHQUFFLFFBQU0sV0FBVUEsR0FBRSxRQUFNLFdBQVVBLEdBQUUsV0FBUyxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGVBQWEsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSx1QkFBcUIsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsZUFBYSxXQUFVQSxHQUFFLGlCQUFlLFdBQVVBLEdBQUUsaUJBQWUsV0FBVUEsR0FBRSxpQkFBZSxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsUUFBTSxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxtQkFBaUIsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsZUFBYSxXQUFVQSxHQUFFLGVBQWEsV0FBVUEsR0FBRSxpQkFBZSxXQUFVQSxHQUFFLGtCQUFnQixXQUFVQSxHQUFFLG9CQUFrQixXQUFVQSxHQUFFLGtCQUFnQixXQUFVQSxHQUFFLGtCQUFnQixXQUFVQSxHQUFFLGVBQWEsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxjQUFZLFdBQVVBLEdBQUUsVUFBUSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsU0FBTyxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGdCQUFjLFdBQVVBLEdBQUUsZ0JBQWMsV0FBVUEsR0FBRSxhQUFXLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLE9BQUssV0FBVUEsR0FBRSxPQUFLLFdBQVVBLEdBQUUsT0FBSyxXQUFVQSxHQUFFLGFBQVcsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLGNBQVksV0FBVUEsR0FBRSxTQUFPLFdBQVVBLEdBQUUsYUFBVyxXQUFVQSxHQUFFLFdBQVMsV0FBVUEsR0FBRSxXQUFTLFdBQVVBLEdBQUUsU0FBTyxXQUFVQSxHQUFFLFVBQVEsV0FBVUEsR0FBRSxZQUFVLFdBQVVBLEdBQUUsWUFBVSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxPQUFLLFdBQVVBLEdBQUUsY0FBWSxXQUFVQSxHQUFFLFlBQVUsV0FBVUEsR0FBRSxNQUFJLFdBQVVBLEdBQUUs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QUUsR0FBRyxHQUFFRSxLQUFFLEVBQUMsR0FBRSxFQUFFRCxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRUUsS0FBRUYsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQztBQUFFLFNBQU8sV0FBU0UsT0FBSUQsR0FBRSxJQUFFLEVBQUVDLEVBQUMsSUFBRSxNQUFLRDtBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTRixJQUFFO0FBQUMsTUFBSUMsS0FBRUQsR0FBRSxNQUFNLEVBQUUsR0FBRyxHQUFFRSxLQUFFLEVBQUVELEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFRSxLQUFFLEVBQUVGLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFRyxLQUFFLEVBQUVILEdBQUUsQ0FBQyxLQUFHQSxHQUFFLENBQUMsQ0FBQyxHQUFFSSxLQUFFSixHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLEdBQUVLLEtBQUUsRUFBQyxHQUFFLEtBQUssSUFBSUosSUFBRSxHQUFHLEdBQUUsR0FBRSxLQUFLLElBQUlDLElBQUUsR0FBRyxHQUFFLEdBQUUsS0FBSyxJQUFJQyxJQUFFLEdBQUcsRUFBQztBQUFFLFNBQU8sV0FBU0MsT0FBSUMsR0FBRSxJQUFFLEVBQUVELEVBQUMsSUFBR0M7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU04sSUFBRTtBQUFDLE1BQUlDLEtBQUVELEdBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRUUsS0FBRSxFQUFFRCxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUUsS0FBRSxFQUFFRixHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUcsS0FBRSxFQUFFSCxHQUFFLENBQUMsS0FBR0EsR0FBRSxDQUFDLENBQUMsR0FBRUksS0FBRUosR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxHQUFFSyxLQUFFLEVBQUVKLElBQUVDLElBQUVDLEVBQUM7QUFBRSxTQUFPLFdBQVNDLE9BQUlDLEdBQUUsSUFBRSxFQUFFRCxFQUFDLElBQUdDO0FBQUMsR0FBRSxFQUFFLEVBQUUsSUFBSSxJQUFFLFNBQVNOLElBQUU7QUFBQyxNQUFJQyxLQUFFRCxHQUFFLE1BQU0sRUFBRSxJQUFJLEdBQUVFLEtBQUUsRUFBRUQsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVFLEtBQUUsRUFBRUYsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVHLEtBQUUsRUFBRUgsR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVJLEtBQUUsRUFBRUosR0FBRSxDQUFDLEtBQUdBLEdBQUUsQ0FBQyxDQUFDLEdBQUVLLEtBQUVMLEdBQUUsQ0FBQyxLQUFHQSxHQUFFLEVBQUUsR0FBRU0sS0FBRSxFQUFFTCxJQUFFQyxJQUFFQyxJQUFFQyxFQUFDO0FBQUUsU0FBTyxXQUFTQyxPQUFJQyxHQUFFLElBQUUsRUFBRUQsRUFBQyxJQUFHQztBQUFDLEdBQUU7QUFBcnRMLElBQXd0TCxNQUFJLElBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFFLFNBQVNQLElBQUU7QUFBQyxNQUFJQyxLQUFFLEVBQUMsR0FBRSxFQUFFLEdBQUcsT0FBT0QsR0FBRSxDQUFDLENBQUMsR0FBRSxHQUFFLEVBQUUsR0FBRyxPQUFPQSxHQUFFLENBQUMsQ0FBQyxHQUFFLEdBQUUsRUFBRSxHQUFHLE9BQU9BLEdBQUUsQ0FBQyxDQUFDLEVBQUM7QUFBRSxTQUFPLEVBQUVBLElBQUUsR0FBRyxNQUFJQyxHQUFFLElBQUUsS0FBSyxJQUFJLEVBQUUsR0FBRyxPQUFPRCxHQUFFLENBQUMsR0FBRSxJQUFFLEdBQUUsQ0FBQyxJQUFHQztBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTRCxJQUFFO0FBQUMsU0FBTyxLQUFLLElBQUlBLEVBQUM7QUFBQyxHQUFFLEVBQUUsRUFBRSxHQUFHLElBQUUsU0FBU0EsSUFBRTtBQUFDLE1BQUlDLEtBQUUsRUFBRSxHQUFHLE9BQU9ELEdBQUUsQ0FBQyxDQUFDLEdBQUVFLEtBQUUsRUFBRSxHQUFHLE9BQU9GLEdBQUUsQ0FBQyxDQUFDLEdBQUVHLEtBQUUsRUFBRSxFQUFFSCxHQUFFLENBQUMsR0FBRUMsSUFBRUMsRUFBQztBQUFFLFNBQU8sRUFBRUYsSUFBRSxHQUFHLE1BQUlHLEdBQUUsSUFBRSxFQUFFSCxHQUFFLENBQUMsSUFBR0c7QUFBQyxHQUFFLEVBQUUsRUFBRSxJQUFJLElBQUUsU0FBU0gsSUFBRTtBQUFDLE1BQUlDLEtBQUUsRUFBRSxHQUFHLE9BQU9ELEdBQUUsQ0FBQyxDQUFDLEdBQUVFLEtBQUUsRUFBRSxHQUFHLE9BQU9GLEdBQUUsQ0FBQyxDQUFDLEdBQUVHLEtBQUUsRUFBRSxHQUFHLE9BQU9ILEdBQUUsQ0FBQyxDQUFDLEdBQUVJLEtBQUUsRUFBRSxHQUFHLE9BQU9KLEdBQUUsQ0FBQyxDQUFDLEdBQUVLLEtBQUUsRUFBRUosSUFBRUMsSUFBRUMsSUFBRUMsRUFBQztBQUFFLFNBQU8sRUFBRUosSUFBRSxHQUFHLE1BQUlLLEdBQUUsSUFBRSxFQUFFTCxHQUFFLENBQUMsSUFBR0s7QUFBQyxHQUFFO0FBQXZxTSxJQUEwcU0sS0FBRyxTQUFTTCxJQUFFQyxJQUFFO0FBQUMsU0FBTyxXQUFTQSxPQUFJQSxLQUFFLEVBQUVELEVBQUMsSUFBRyxZQUFVLE9BQU9BLEtBQUUsRUFBRUMsRUFBQyxFQUFFRCxFQUFDLElBQUUsRUFBRUMsRUFBQyxFQUFFRCxFQUFDO0FBQUM7QUFBenZNLElBQTJ2TSxPQUFLLElBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFFLFNBQVNBLElBQUU7QUFBQyxTQUFNLEVBQUMsR0FBRSxFQUFFQSxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEVBQUM7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTQSxJQUFFO0FBQUMsTUFBSUMsS0FBRSxHQUFHLElBQUlELEVBQUM7QUFBRSxTQUFPQyxHQUFFLElBQUUsRUFBRUQsSUFBRSxHQUFHLElBQUUsRUFBRSxNQUFJQSxHQUFFLENBQUMsSUFBRSxRQUFPQztBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTRCxJQUFFQyxJQUFFO0FBQUMsU0FBTyxFQUFFRCxJQUFFLEdBQUcsS0FBRyxPQUFPQSxHQUFFLEdBQUUsR0FBR0EsSUFBRUMsRUFBQztBQUFDLEdBQUUsRUFBRSxPQUFLLFNBQVNELElBQUVDLElBQUU7QUFBQyxTQUFPRCxHQUFFLElBQUUsRUFBRUEsSUFBRSxHQUFHLElBQUUsRUFBRUEsR0FBRSxDQUFDLElBQUUsR0FBRSxHQUFHQSxJQUFFQyxFQUFDO0FBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLFNBQVNELElBQUVDLElBQUU7QUFBQyxNQUFJQyxLQUFFLEVBQUVGLEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUM7QUFBRSxTQUFPLE9BQU9FLEdBQUUsR0FBRSxHQUFHQSxJQUFFRCxFQUFDO0FBQUMsR0FBRSxFQUFFLE9BQUssU0FBU0QsSUFBRUMsSUFBRTtBQUFDLE1BQUlDLEtBQUUsR0FBRyxJQUFJRixJQUFFQyxFQUFDO0FBQUUsU0FBT0MsR0FBRSxJQUFFLEVBQUVGLElBQUUsR0FBRyxJQUFFLEVBQUVBLEdBQUUsR0FBRUMsRUFBQyxJQUFFLEdBQUVDO0FBQUMsR0FBRSxFQUFFLEVBQUUsSUFBSSxJQUFFLFNBQVNGLElBQUVDLElBQUU7QUFBQyxTQUFPLEdBQUcsRUFBRUQsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxHQUFFQyxFQUFDO0FBQUMsR0FBRSxFQUFFLFFBQU0sU0FBU0QsSUFBRUMsSUFBRTtBQUFDLE1BQUlDLEtBQUUsR0FBRyxLQUFLRixJQUFFQyxFQUFDO0FBQUUsU0FBT0MsR0FBRSxJQUFFLEVBQUVGLElBQUUsR0FBRyxJQUFFLEVBQUVBLEdBQUUsR0FBRUMsRUFBQyxJQUFFLEdBQUVDO0FB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T0ssSUFBRTtBQUFBLElBQUMsS0FBSyxFQUFFO0FBQUEsSUFBSTtBQUFRLGFBQU9HLEtBQUUsS0FBSyxLQUFLLEdBQUdELElBQUUsQ0FBQyxHQUFFTixJQUFFRSxJQUFFTSxFQUFDLElBQUUsS0FBSyxJQUFJLEdBQUdGLElBQUUsQ0FBQyxHQUFFTixJQUFFRSxJQUFFTSxFQUFDO0FBQUEsSUFBRSxLQUFLLEVBQUU7QUFBSSxhQUFPRCxLQUFFLEtBQUssS0FBS0QsSUFBRU4sSUFBRUUsSUFBRU0sSUFBRUwsRUFBQyxJQUFFLEtBQUssSUFBSUcsSUFBRU4sSUFBRUUsSUFBRU0sSUFBRUwsRUFBQztBQUFBLElBQUUsS0FBSyxFQUFFO0FBQUksYUFBT0ksS0FBRSxLQUFLLEtBQUtELElBQUVOLElBQUVFLElBQUVNLElBQUVMLEVBQUMsSUFBRSxLQUFLLElBQUlHLElBQUVOLElBQUVFLElBQUVNLElBQUVMLEVBQUM7QUFBQSxFQUFDO0FBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxJQUFFLFNBQVNKLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxTQUFPRixHQUFFRCxJQUFFRSxFQUFDLEVBQUUsSUFBSyxTQUFTRixJQUFFO0FBQUMsV0FBT0csS0FBRSxFQUFFLElBQUksRUFBRUgsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQyxDQUFDLElBQUUsR0FBRyxJQUFJLEVBQUVBLEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsQ0FBQztBQUFBLEVBQUMsQ0FBRTtBQUFDLEdBQUUsRUFBRSxPQUFLLFNBQVNDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxTQUFPRixHQUFFRCxJQUFFRSxFQUFDLEVBQUUsSUFBSyxTQUFTRixJQUFFO0FBQUMsV0FBT0csS0FBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFSCxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFDLEdBQUUsTUFBSSxFQUFFQSxHQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFQSxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFDLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0FBQUEsRUFBQyxDQUFFO0FBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxTQUFPSCxHQUFFRCxJQUFFRSxFQUFDLEVBQUUsSUFBSyxTQUFTRixJQUFFO0FBQUMsV0FBT0csS0FBRSxFQUFFLElBQUksR0FBRyxFQUFFSCxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLEdBQUVJLEVBQUMsQ0FBQyxJQUFFLEdBQUcsSUFBSSxFQUFFSixHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLEdBQUVJLEVBQUM7QUFBQSxFQUFDLENBQUU7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBT0gsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFSCxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFDLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEVBQUMsQ0FBQyxHQUFFSSxFQUFDLENBQUMsSUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRSxFQUFFSixHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLENBQUMsR0FBRSxFQUFDLEdBQUUsRUFBRUEsR0FBRSxDQUFDLEVBQUMsQ0FBQyxHQUFFSSxFQUFDO0FBQUEsRUFBQyxDQUFFO0FBQUMsR0FBRSxFQUFFLEVBQUUsR0FBRyxJQUFFLFNBQVNMLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxTQUFPSCxHQUFFRCxJQUFFRSxFQUFDLEVBQUUsSUFBSyxTQUFTRixJQUFFO0FBQUMsV0FBT0csS0FBRSxFQUFFLElBQUksR0FBRyxFQUFDLEdBQUVILEdBQUUsR0FBRSxHQUFFQSxHQUFFLEdBQUUsR0FBRUEsR0FBRSxFQUFDLEdBQUVJLEVBQUMsQ0FBQyxJQUFFLEdBQUcsSUFBSSxFQUFFSixHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDLEdBQUVJLEVBQUM7QUFBQSxFQUFDLENBQUU7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsU0FBT0gsR0FBRUQsSUFBRUUsRUFBQyxFQUFFLElBQUssU0FBU0YsSUFBRTtBQUFDLFdBQU9HLEtBQUUsRUFBRSxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRUgsRUFBQyxHQUFFLEVBQUMsR0FBRSxFQUFFQSxHQUFFLENBQUMsRUFBQyxDQUFDLEdBQUVJLEVBQUMsQ0FBQyxJQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUVKLEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLENBQUMsQ0FBQyxHQUFFLEVBQUMsR0FBRSxFQUFFQSxHQUFFLENBQUMsRUFBQyxDQUFDLEdBQUVJLEVBQUM7QUFBQSxFQUFDLENBQUU7QUFBQyxHQUFFO0FBQTNxUixJQUE4cVIsT0FBSyxJQUFFLEVBQUMsS0FBSSxTQUFTSixJQUFFQyxJQUFFO0FBQUMsTUFBSUMsSUFBRUUsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRUMsS0FBRWxCLEdBQUUsSUFBSyxTQUFTRCxJQUFFO0FBQUMsUUFBSUMsS0FBRSxFQUFFRCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFQyxFQUFDO0FBQUEsRUFBQyxDQUFFLEdBQUVtQixLQUFFbEIsT0FBSSxFQUFFLGNBQVlpQixHQUFFLElBQUssU0FBU25CLElBQUU7QUFBQyxRQUFJQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFQyxNQUFHZCxLQUFFRCxHQUFFLEdBQUVFLEtBQUVGLEdBQUUsR0FBRUcsS0FBRUgsR0FBRSxHQUFFSSxLQUFFLEtBQUssSUFBSUgsSUFBRUMsSUFBRUMsRUFBQyxHQUFFRSxLQUFFLEtBQUssSUFBSSxNQUFJSixJQUFFLE1BQUlDLElBQUUsTUFBSUMsRUFBQyxHQUFFRyxLQUFFTCxLQUFFRyxJQUFFRyxLQUFFTCxLQUFFRSxJQUFFSSxLQUFFTCxLQUFFQyxJQUFFSyxLQUFFLEtBQUssSUFBSUgsSUFBRUMsRUFBQyxHQUFFRyxLQUFFSixLQUFFRyxJQUFFRSxNQUFHSixLQUFFRSxNQUFHLEdBQUVHLE1BQUdKLEtBQUVELEtBQUVFLE1BQUcsR0FBRUksS0FBRSxLQUFLLElBQUlILElBQUVDLElBQUVDLEVBQUMsSUFBRSxLQUFLLElBQUlOLElBQUVDLElBQUVDLEVBQUMsR0FBRU0sS0FBRSxNQUFNRCxFQUFDLEtBQUdBLE9BQUksSUFBRSxLQUFHQSxNQUFHLElBQUUsSUFBRUEsSUFBRSxFQUFDLEdBQUVILEtBQUVJLEtBQUVULElBQUUsR0FBRU0sS0FBRUcsS0FBRVQsSUFBRSxHQUFFTyxLQUFFRSxLQUFFVCxHQUFDO0FBQUcsV0FBTyxFQUFFTCxJQUFFLEdBQUcsTUFBSWUsR0FBRSxJQUFFZixHQUFFLElBQUdlO0FBQUEsRUFBQyxDQUFFLElBQUU7QUFBSyxXQUFTTSxHQUFFcEIsSUFBRTtBQUFDLFFBQUlFLEtBQUVELE9BQUksRUFBRSxXQUFTLEVBQUMsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxFQUFDLElBQUUsRUFBQyxHQUFFLEdBQUUsR0FBRSxHQUFFLEdBQUUsR0FBRSxHQUFFLEVBQUM7QUFBRSxXQUFPRCxHQUFFLE9BQVEsU0FBU0EsSUFBRUUsSUFBRTtBQUFDLFVBQUlFLEtBQUUsRUFBRUYsSUFBRSxHQUFHLElBQUVBLEdBQUUsSUFBRSxHQUFFRyxLQUFFLEVBQUMsR0FBRSxLQUFLLElBQUlMLEdBQUUsSUFBRUUsR0FBRSxJQUFFRSxJQUFFLEdBQUcsR0FBRSxHQUFFLEtBQUssSUFBSUosR0FBRSxJQUFFRSxHQUFFLElBQUVFLElBQUUsR0FBRyxHQUFFLEdBQUUsS0FBRyxJQUFFQSxPQUFJLElBQUVKLEdBQUUsR0FBRSxHQUFFTSxLQUFFLE9BQU1OLEtBQUVBLEdBQUUsSUFBRUEsR0FBRSxHQUFFTyxLQUFFLE9BQU1MLEtBQUVBLEdBQUUsSUFBRUEsR0FBRTtBQUFFLGFBQU8sRUFBRSxFQUFFLENBQUMsR0FBRUcsRUFBQyxHQUFFSixPQUFJLEVBQUUsV0FBUyxFQUFDLEdBQUUsS0FBSyxJQUFJSyxLQUFFQyxLQUFFSCxJQUFFLEdBQUcsRUFBQyxJQUFFLEVBQUMsR0FBRSxLQUFLLElBQUlFLEtBQUVDLEtBQUVILElBQUUsR0FBRyxFQUFDLENBQUM7QUFBQSxJQUFDLEdBQUdGLEVBQUM7QUFBQSxFQUFDO0FBQUMsTUFBR0QsT0FBSSxFQUFFO0FBQVMsSUFBQUMsS0FBRWtCLEdBQUVGLEVBQUM7QUFBQSxPQUFNO0FBQUMsUUFBSUcsS0FBRUQsR0FBRUQsRUFBQztBQUFFLElBQUFmLEtBQUVpQixHQUFFLEdBQUVoQixLQUFFZ0IsR0FBRSxHQUFFZixLQUFFZSxHQUFFLEdBQUVkLEtBQUUsS0FBSyxJQUFJSCxJQUFFQyxJQUFFQyxFQUFDLEdBQUVFLEtBQUUsS0FBSyxJQUFJLE1BQUlKLElBQUUsTUFBSUMsSUFBRSxNQUFJQyxFQUFDLEdBQUVHLEtBQUVMLEtBQUVHLElBQUVHLEtBQUVMLEtBQUVFLElBQUVJLEtBQUVMLEtBQUVDLElBQUVLLEtBQUUsS0FBSyxJQUFJRixJQUFFQyxFQUFDLEdBQUVFLEtBQUVKLEtBQUVDLEtBQUVFLElBQUVFLEtBQUVKLEtBQUVFLElBQUVHLEtBQUUsS0FBR0osS0FBRUMsS0FBR0ksS0FBRSxLQUFLLElBQUlILElBQUVDLElBQUVDLEVBQUMsSUFBRSxLQUFLLElBQUlOLElBQUVDLElBQUVDLEVBQUMsR0FBRU0sS0FBRSxNQUFNRCxFQUFDLEtBQUdBLE9BQUksSUFBRSxLQUFHQSxNQUFHLElBQUUsSUFBRUEsS0FBR2QsS0FBRSxFQUFDLEdBQUVXLEtBQUVJLEtBQUVULElBQUUsR0FBRU0sS0FBRUcsS0FBRVQsSUFBRSxHQUFFTyxLQUFFRSxLQUFFVCxHQUFDLEdBQUcsSUFBRWEsR0FBRTtBQUFBLEVBQUM7QUFBQyxTQUFNLEVBQUMsR0FBRSxFQUFFbkIsR0FBRSxDQUFDLEdBQUUsR0FBRSxFQUFFQSxHQUFFLENBQUMsR0FBRSxHQUFFLEVBQUVBLEdBQUUsQ0FBQyxHQUFFLEdBQUUsRUFBRUEsR0FBRSxHQUFFLEdBQUUsQ0FBQyxFQUFDO0FBQUMsRUFBQyxHQUFHLEVBQUUsR0FBRyxJQUFFLFNBQVNILElBQUVDLElBQUVDLElBQUU7QUFBQyxNQUFJQyxLQUFFLEtBQUssSUFBSUgsSUFBRUMsRUFBQztBQUFFLFNBQU8sT0FBT0UsR0FBRSxHQUFFRCxLQUFFLEVBQUUsSUFBSUMsRUFBQyxJQUFFLEdBQUcsSUFBSUEsRUFBQztBQUFDLEdBQUUsRUFBRSxPQUFLLFNBQVNILElBQUVDLElBQUVDLElBQUU7QUFBQyxNQUFJQyxLQUFFLEtBQUssSUFBSUgsSUFBRUMsRUFBQztBQUFFLFNBQU9FLEdBQUUsSUFBRUQsS0FBRSxNQUFJLEVBQUVDLEdBQUUsQ0FBQyxJQUFFLEVBQUVBLEdBQUUsQ0FBQyxHQUFFRCxLQUFFLEVBQUUsSUFBSUMsRUFBQyxJQUFFLEdBQUcsS0FBS0EsRUFBQztBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxLQUFLLElBQUlKLElBQUVDLEVBQUM7QUFBRSxTQUFPLE9BQU9HLEdBQUUsR0FBRUYsS0FBRSxFQUFFLElBQUlFLEVBQUMsSUFBRSxHQUFHLElBQUlBLElBQUVELEVBQUM7QUFBQyxHQUFFLEVBQUUsT0FBSyxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxLQUFLLElBQUlKLElBQUVDLEVBQUM7QUFBRSxTQUFPQyxLQUFFLEVBQUUsSUFBSUUsRUFBQyxJQUFFLEdBQUcsS0FBS0EsSUFBRUQsRUFBQztBQUFDLEdBQUUsRUFBRSxFQUFFLEdBQUcsSUFBRSxTQUFTSCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsTUFBSUMsS0FBRSxLQUFLLElBQUlKLElBQUVDLEVBQUMsR0FBRUksS0FBRSxFQUFFRCxHQUFFLEdBQUVBLEdBQUUsR0FBRUEsR0FBRSxDQUFDO0FBQUUsU0FBTyxPQUFPQSxHQUFFLEdBQUUsT0FBT0MsR0FBRSxHQUFFSCxLQUFFLEVBQUUsSUFBSUcsRUFBQyxJQUFFLEdBQUcsSUFBSUQsSUFBRUQsRUFBQztBQUFDLEdBQUUsRUFBRSxPQUFLLFNBQVNILElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxNQUFJQyxLQUFFLEtBQUssSUFBSUosSUFBRUMsRUFBQyxHQUFFSSxLQUFFLEVBQUVELEdBQUUsR0FBRUEsR0FBRSxHQUFFQSxHQUFFLEdBQUVBLEdBQUUsQ0FBQztBQUFFLFNBQU9GLEtBQUUsRUFBRSxJQUFJRyxFQUFDLElBQUUsR0FBRyxLQUFLRCxJQUFFRCxFQUFDO0FBQUMsR0FBRTtBQUFseFUsSUFBcXhVLEtBQUcsU0FBU0YsSUFBRUMsSUFBRTtBQUFDLFNBQU8sRUFBRSxFQUFDLEdBQUUsRUFBRUQsR0FBRSxHQUFFQyxFQUFDLEdBQUUsR0FBRSxFQUFFRCxHQUFFLEdBQUVDLEVBQUMsR0FBRSxHQUFFLEVBQUVELEdBQUUsR0FBRUMsRUFBQyxFQUFDLEdBQUUsRUFBRUQsSUFBRSxHQUFHLElBQUUsRUFBQyxHQUFFLEVBQUVBLEdBQUUsR0FBRUMsRUFBQyxFQUFDLElBQUUsQ0FBQyxDQUFDO0FBQUM7QUFBMzJVLElBQTYyVSxLQUFHLFNBQVNELElBQUVDLElBQUU7QUFBQyxTQUFPLEVBQUUsRUFBQyxHQUFFLEVBQUVELEdBQUUsR0FBRUMsRUFBQyxHQUFFLEdBQUUsRUFBRUQsR0FBRSxHQUFFQyxFQUFDLEdBQUUsR0FBRSxFQUFFRCxHQUFFLEdBQUVD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LEdBQUcsR0FBRSxLQUFLLGlCQUFpQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGlCQUFpQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxJQUFJLElBQUUsS0FBSyxJQUFJLElBQUUsRUFBRUEsSUFBRSxHQUFFLENBQUMsR0FBRTtBQUFBLEVBQUksR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxLQUFLLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGdCQUFnQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxLQUFLLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGdCQUFnQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxLQUFLLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGdCQUFnQjtBQUFBLEVBQUMsR0FBRUMsR0FBRSxVQUFVLE9BQUssU0FBU0QsSUFBRTtBQUFDLFdBQU8sS0FBSyxLQUFLLElBQUUsRUFBRUEsSUFBRSxHQUFFLEdBQUcsR0FBRSxLQUFLLGdCQUFnQjtBQUFBLEVBQUMsR0FBRSxPQUFPLGVBQWVDLEdBQUUsV0FBVSxZQUFXLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxLQUFLO0FBQUEsRUFBUyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxJQUFJLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLEtBQUksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxLQUFLLEdBQUUsS0FBSyxRQUFRO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGFBQVksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEdBQUcsSUFBSSxLQUFLLEdBQUc7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsY0FBYSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sR0FBRyxLQUFLLEtBQUssR0FBRztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxhQUFZLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGNBQWEsRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUUsS0FBSyxTQUFTLEdBQUUsRUFBQyxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLGFBQVksRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFNLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsY0FBYSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxFQUFFLENBQUMsR0FBRSxLQUFLLFNBQVMsR0FBRSxFQUFDLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsY0FBYSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU0sRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxlQUFjLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLEVBQUUsQ0FBQyxHQUFFLEtBQUssVUFBVSxHQUFFLEVBQUMsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxPQUFNLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLElBQUksRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLFFBQU8sRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsSUFBSSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsTUFBSSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxPQUFNLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLElBQUksRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLFFBQU8sRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsSUFBSSxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsT0FBTSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxJQUFJLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRSxPQUFPLGVBQWVBLEdBQUUsV0FBVSxRQUFPLEVBQUMsS0FBSSxXQUFVO0FBQUMsV0FBTyxFQUFFLElBQUksRUFBQyxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssR0FBRSxHQUFFLEtBQUssRUFBQyxDQUFDO0FBQUEsRUFBQyxHQUFFLFlBQVcsT0FBRyxjQUFhLEtBQUUsQ0FBQyxHQUFFLE9BQU8sZUFBZUEsR0FBRSxXQUFVLFFBQU8sRUFBQyxLQUFJLFdBQVU7QUFBQyxXQUFPLEVBQUUsS0FBSyxFQUFDLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxHQUFFLEdBQUUsS0FBSyxFQUFDLENBQUM7QUFBQSxFQUFDLEdBQUUsWUFBVyxPQUFHLGNBQWEsS0FBRSxDQUFDLEdBQUUsT0FBTyxlQUFlQSxHQUFFLFdBQVUsU0FBUSxFQUFDLEtBQUksV0FBVTtBQUFDLFdBQU8sRUFBRSxLQUFLLEVBQUMsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEdBQUUsR0FBRSxLQUFLLEVBQUMsQ0FBQztBQUFBLEVBQUMsR0FBRSxZQUFXLE9BQUcsY0FBYSxLQUFFLENBQUMsR0FBRUEsR0FBRSxRQUFNLFNBQVNELElBQUVDLElBQUU7QUFBQyxlQUFTQSxPQUFJQSxLQUFFO0FBQUksUUFBSUMsS0FBRSxFQUFFRixFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRSxJQUFFRCxJQUFFLEdBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUEsR0FBRSxTQUFPLFNBQVNELElBQUVDLElBQUU7QUFBQyxlQUFTQSxPQUFJQSxLQUFFO0FBQUksUUFBSUMsS0FBRSxFQUFFRixFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRSxJQUFFRCxJQUFFLEdBQUUsR0FBRyxNQUFLLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUEsR0FBRSxRQUFNLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFTRCxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRTtBQUFHLFFBQUlDLEtBQUUsRUFBRUgsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUcsSUFBRUYsSUFBRUMsSUFBRSxHQUFHLEtBQUksRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFNBQU8sU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQVNELE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFO0FBQUcsUUFBSUMsS0FBRSxFQUFFSCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRyxJQUFFRixJQUFFQyxJQUFFLEdBQUcsTUFBSyxFQUFFLEdBQUc7QUFBQSxFQUFDLEdBQUVELEdBQUUsUUFBTSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBU0QsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUU7QUFBRyxRQUFJQyxLQUFFLEVBQUVILEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVHLElBQUVGLElBQUVDLElBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUQsR0FBRSxTQUFPLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxlQUFTRCxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRTtBQUFHLFFBQUlDLEtBQUUsRUFBRUgsRUFBQztBQUFFLFdBQU8sR0FBR0EsSUFBRUcsSUFBRUYsSUFBRUMsSUFBRSxHQUFHLE1BQUssRUFBRSxHQUFHO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFNBQU8sU0FBU0QsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLGVBQVNELE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFO0FBQUcsUUFBSUMsS0FBRSxFQUFFSCxFQUFDO0FBQUUsV0FBTyxHQUFHQSxJQUFFRyxJQUFFRixJQUFFQyxJQUFFLEdBQUcsTUFBSyxFQUFFLElBQUk7QUFBQSxFQUFDLEdBQUVELEdBQUUsVUFBUSxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsZUFBU0QsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUU7QUFBRyxRQUFJQyxLQUFFLEVBQUVILEVBQUM7QUFBRSxXQUFPLEdBQUdBLElBQUVHLElBQUVGLElBQUVDLElBQUUsR0FBRyxPQUFNLEVBQUUsSUFBSTtBQUFBLEVBQUMsR0FBRUQsR0FBRSxjQUFZLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxlQUFhLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxNQUFLLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxjQUFZLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxlQUFhLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxNQUFLLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxjQUFZLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxLQUFJLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxlQUFhLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsSUFBRyxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUdKLElBQUVDLElBQUVDLElBQUVDLElBQUVDLElBQUUsR0FBRyxNQUFLLEVBQUUsR0FBRztBQUFBLEVBQUMsR0FBRUgsR0FBRSxZQUFVLFNBQVNELElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNELE9BQUlBLEtBQUUsRUFBRSxXQUFVLFdBQVNDLE9BQUlBLEtBQUUsT0FBSSxHQUFHLElBQUlGLElBQUVDLElBQUVDLEVBQUM7QUFBQSxFQUFDLEdBQUVELEdBQUUsYUFBVyxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRCxPQUFJQSxLQUFFLEVBQUUsV0FBVSxXQUFTQyxPQUFJQSxLQUFFLE9BQUksR0FBRyxLQUFLRixJQUFFQyxJQUFFQyxFQUFDO0FBQUEsRUFBQyxHQUFFRCxHQUFFLFlBQVUsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0YsT0FBSUEsS0FBRSxFQUFFLFdBQVUsV0FBU0MsT0FBSUEsS0FBRSxPQUFJLFdBQVNDLE9BQUlBLEtBQUUsSUFBRyxHQUFHLElBQUlILElBQUVDLElBQUVDLElBQUVDLEVBQUM7QUFBQSxFQUFDLEdBQUVGLEdBQUUsYUFBVyxTQUFTRCxJQUFFQyxJQUFFQyxJQUFFQyxJQUFFO0FBQUMsV0FBTyxXQUFTRixPQUFJQSxLQUFFLEVBQUUsV0FBVSxXQUFTQyxPQUFJQSxLQUFFLE9BQUksV0FBU0MsT0FBSUEsS0FBRSxJQUFHLEdBQUcsS0FBS0gsSUFBRUMsSUFBRUMsSUFBRUMsRUFBQztBQUFBLEVBQUMsR0FBRUYsR0FBRSxZQUFVLFNBQVNELElBQUVDLElBQUVDLElBQUVDLElBQUU7QUFBQyxXQUFPLFdBQVNGLE9BQUlBLEtBQUUsRUFBRSxXQUFVLFdBQVNDLE9BQUlBLEtBQUUsT0FBSSxXQUFTQyxPQUFJQSxLQUFFLElBQUcsR0FBRyxJQUFJSCxJQUFFQyxJQUFFQyxJQUFFQyxFQUFDO0FBQUEsRUFBQyxHQUFFRixHQUFFLGFBQVcsU0FBU0QsSUFBRUMsSUFBRUMsSUFBRUMsSUFBRTtBQUFDLFdBQU8sV0FBU0YsT0FBSUEsS0FBRSxFQUFFLFdBQVUsV0FBU0MsT0FBSUEsS0FBRSxPQUFJ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QixxQkFBYSxXQUFXO0FBQ3hCLHNCQUFjLFdBQVcsTUFBSTtBQUM1QixlQUFLLGdCQUFnQjtBQUFBLFFBQ3RCLEdBQUUsR0FBSTtBQUFBLE1BQ1A7QUFBQSxJQUNELEdBQUUsSUFBSSxDQUFDO0FBRVAsU0FBSyxJQUFJLFVBQVUsY0FBYyxNQUFJO0FBQUMsV0FBSyxnQkFBZ0I7QUFBQSxJQUFDLENBQUM7QUFFN0QsWUFBUSxJQUFJLDRCQUE0QjtBQUFBLEVBQ3pDO0FBQUEsRUFFQSxXQUFXO0FBQ1YsU0FBSyw0QkFBNEIsV0FBVztBQUM1QywyQkFBdUI7QUFDdkIsK0JBQTJCO0FBQzNCLGVBQVcsT0FBTyxPQUFPLE9BQU8sS0FBSyxhQUFhO0FBQ2pELFVBQUksZ0JBQWdCLEdBQUc7QUFDeEIsWUFBUSxJQUFJLDhCQUE4QjtBQUFBLEVBQzNDO0FBQUEsRUFFQSxNQUFNLGVBQWU7QUFDcEIsU0FBSyxXQUFXLE9BQU8sT0FBTyxDQUFDLEdBQUcsZ0JBQWdCLGdCQUFnQixHQUFHLE1BQU0sS0FBSyxTQUFTLENBQUM7QUFBQSxFQUMzRjtBQUFBLEVBRUEsTUFBTSxlQUFlO0FBQ3BCLFVBQU0sS0FBSyxTQUFTLEtBQUssUUFBUTtBQUNqQyxTQUFLLElBQUksVUFBVSxjQUFjO0FBQ2pDLGtCQUFjLEtBQUssVUFBUyxLQUFLLEdBQUc7QUFBQSxFQUNyQztBQUFBLEVBRUEsa0JBQWtCO0FBQ2pCLFNBQUssSUFBSSxVQUFVLGtCQUFrQixDQUFDLFNBQXdCO0FBQzdELFVBQUksS0FBSyxnQkFBZ0IsaUNBQWdCLEtBQUssS0FBSyxRQUFRLE1BQU07QUFDaEUsYUFBSyxLQUFLLFlBQVksU0FBUyxJQUFJO0FBQUEsSUFDckMsQ0FBQztBQUFBLEVBQ0Y7QUFDRDsiLAogICJuYW1lcyI6IFsicm9vdCIsICJmYWN0b3J5IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImRlZmluZSIsICJhbWQiLCAic2VsZiIsICJfX3dlYnBhY2tfcmVxdWlyZV9fIiwgImRlZmluaXRpb24iLCAia2V5IiwgIm8iLCAiT2JqZWN0IiwgImRlZmluZVByb3BlcnR5IiwgImVudW1lcmFibGUiLCAiZ2V0IiwgIm9iaiIsICJwcm9wIiwgInByb3RvdHlwZSIsICJoYXNPd25Qcm9wZXJ0eSIsICJjYWxsIiwgIlN5bWJvbCIsICJ0b1N0cmluZ1RhZyIsICJ2YWx1ZSIsICJlIiwgInQiLCAiTCIsICJldmVudExpc3RlbmVyIiwgIm1ldGhvZCIsICJlbGVtZW50cyIsICJldmVudHMiLCAiZm4iLCAib3B0aW9ucyIsICJIVE1MQ29sbGVjdGlvbiIsICJOb2RlTGlzdCIsICJBcnJheSIsICJmcm9tIiwgImlzQXJyYXkiLCAiZWwiLCAiZXYiLCAiY2FwdHVyZSIsICJzbGljZSIsICJhcmd1bWVudHMiLCAicCIsICJyIiwgImEiLCAibCIsICJzIiwgImkiLCAiYyIsICJvbiIsICJiaW5kIiwgIm9mZiIsICJjcmVhdGVFbGVtZW50RnJvbVN0cmluZyIsICJodG1sIiwgImRpdiIsICJkb2N1bWVudCIsICJjcmVhdGVFbGVtZW50IiwgImlubmVySFRNTCIsICJ0cmltIiwgImZpcnN0RWxlbWVudENoaWxkIiwgImNyZWF0ZUZyb21UZW1wbGF0ZSIsICJzdHIiLCAicmVtb3ZlQXR0cmlidXRlIiwgIm5hbWUiLCAiZ2V0QXR0cmlidXRlIiwgInJlc29sdmUiLCAiZWxlbWVudCIsICJiYXNlIiwgImNvbiIsICJzdWJ0cmVlIiwgImNoaWxkIiwgImNoaWxkcmVuIiwgImFyciIsICJzdWIiLCAicHVzaCIsICJrZXlzIiwgImxlbmd0aCIsICJldmVudFBhdGgiLCAiZXZ0IiwgInBhdGgiLCAiY29tcG9zZWRQYXRoIiwgInRhcmdldCIsICJwYXJlbnRFbGVtZW50IiwgIndpbmRvdyIsICJyZXNvbHZlRWxlbWVudCIsICJ2YWwiLCAiRWxlbWVudCIsICJzcGxpdCIsICJyZWR1Y2UiLCAicHYiLCAiY3YiLCAiY2kiLCAicXVlcnlTZWxlY3RvciIsICJzaGFkb3dSb290IiwgImFkanVzdGFibGVJbnB1dE51bWJlcnMiLCAibWFwcGVyIiwgInYiLCAiaGFuZGxlU2Nyb2xsIiwgImluYyIsICJOdW1iZXIiLCAic2hpZnRLZXkiLCAiY3RybEtleSIsICJkZWx0YVkiLCAiaW5kZXgiLCAic2VsZWN0aW9uU3RhcnQiLCAicmVwbGFjZSIsICJmb2N1cyIsICJzZXRTZWxlY3Rpb25SYW5nZSIsICJwcmV2ZW50RGVmYXVsdCIsICJkaXNwYXRjaEV2ZW50IiwgIkV2ZW50IiwgInBhc3NpdmUiLCAibWluIiwgIm1heCIsICJmbG9vciIsICJyb3VuZCIsICJNYXRoIiwgImhzdlRvUmdiIiwgImgiLCAiZiIsICJxIiwgIm1vZCIsICJoc3ZUb0hzbCIsICJyZ2JUb0hzdiIsICJnIiwgImIiLCAibWluVmFsIiwgIm1heFZhbCIsICJkZWx0YSIsICJkciIsICJkZyIsICJkYiIsICJjbXlrVG9Ic3YiLCAibSIsICJ5IiwgImsiLCAiaHNsVG9Ic3YiLCAibnMiLCAiaXNOYU4iLCAiaGV4VG9Ic3YiLCAiaGV4IiwgIm1hdGNoIiwgIm1hcCIsICJwYXJzZUludCIsICJwYXJzZVRvSFNWQSIsICJ0b0xvd2VyQ2FzZSIsICJjdHgiLCAiZ2V0Q29udGV4dCIsICJmaWxsU3R5bGUiLCAicmVnZXgiLCAiY215ayIsICJyZ2JhIiwgImhzbGEiLCAiaHN2YSIsICJoZXhhIiwgIm51bWFyaXplIiwgImFycmF5IiwgInRlc3QiLCAidW5kZWZpbmVkIiwgImludmFsaWQiLCAidHlwZSIsICJleGVjIiwgImFscGhhVmFsaWQiLCAidmFsdWVzIiwgImpvaW4iLCAicmF3IiwgInN1YnN0cmluZyIsICJIU1ZhQ29sb3IiLCAib3JpZ2luYWwiLCAibmV4dCIsICJwcmVjaXNpb24iLCAidG9GaXhlZCIsICJ0aGF0IiwgInRvSFNWQSIsICJ0b1N0cmluZyIsICJ0b0hTTEEiLCAidG9SR0JBIiwgInRvQ01ZSyIsICJyZ2IiLCAidG9IRVhBIiwgInBhZFN0YXJ0IiwgImFscGhhIiwgInRvVXBwZXJDYXNlIiwgImNsb25lIiwgImNsYW1wIiwgIk1vdmVhYmxlIiwgIm9wdCIsICJhc3NpZ24iLCAibG9jayIsICJvbmNoYW5nZSIsICJvbnN0b3AiLCAiX2tleWJvYXJkIiwgImFjdGl2ZUVsZW1lbnQiLCAid3JhcHBlciIsICJ1cCIsICJyaWdodCIsICJkb3duIiwgImxlZnQiLCAieG0iLCAieW0iLCAidXBkYXRlIiwgImNhY2hlIiwgIngiLCAic3RhcnRzV2l0aCIsICJfdGFwc3RhcnQiLCAiXyIsICJfdGFwc3RvcCIsICJfdGFwbW92ZSIsICJjYW5jZWxhYmxlIiwgImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsICJ0b3VjaCIsICJ0b3VjaGVzIiwgImNsaWVudFgiLCAiY2xpZW50WSIsICJ3aWR0aCIsICJ0b3AiLCAiaGVpZ2h0IiwgInN0eWxlIiwgIm9mZnNldFdpZHRoIiwgIm9mZnNldEhlaWdodCIsICJjeCIsICJjeSIsICJ0cmlnZ2VyIiwgImRlc3Ryb3kiLCAiU2VsZWN0YWJsZSIsICJjbGFzc05hbWUiLCAib25UYXAiLCAiZm9yRWFjaCIsICJjbGFzc0xpc3QiLCAic3RvcFByb3BhZ2F0aW9uIiwgImRlZmF1bHRzIiwgInZhcmlhbnRGbGlwT3JkZXIiLCAic3RhcnQiLCAibWlkZGxlIiwgImVuZCIsICJwb3NpdGlvbkZsaXBPcmRlciIsICJib3R0b20iLCAicG9zaXRpb24iLCAibWFyZ2luIiwgInJlcG9zaXRpb24iLCAicmVmZXJlbmNlIiwgInBvcHBlciIsICJjb250YWluZXIiLCAiZG9jdW1lbnRFbGVtZW50IiwgIm9yaWdpbmFsTGVmdCIsICJvcmlnaW5hbFRvcCIsICJyZWZCb3giLCAicG9wQm94IiwgInBvc2l0aW9uU3RvcmUiLCAidmFyaWFudFN0b3JlIiwgInZzIiwgInZtIiwgInZlIiwgImhzIiwgImhtIiwgImhlIiwgInBvc0tleSIsICJ2YXJLZXkiLCAicG9zaXRpb25zIiwgInZhcmlhbnRzIiwgInZlcnRpY2FsIiwgInBvc2l0aW9uVmFsIiwgInBvc2l0aW9uS2V5IiwgInZhcmlhbnRLZXkiLCAicG9zaXRpb25TaXplIiwgInZhcmlhbnRTaXplIiwgInBvc2l0aW9uTWF4aW11bSIsICJ2YXJpYW50TWF4aW11bSIsICJwb3NpdGlvbk1pbmltdW0iLCAidmFyaWFudE1pbmltdW0iLCAidmFyaWFudFZhbCIsICJFIiwgIlBpY2tyIiwgImNvbnN0cnVjdG9yIiwgImluaXQiLCAic2F2ZSIsICJoaWRlIiwgInNob3ciLCAiY2xlYXIiLCAiY2hhbmdlIiwgImNoYW5nZXN0b3AiLCAiY2FuY2VsIiwgInN3YXRjaHNlbGVjdCIsICJ0aGlzIiwgIkRFRkFVTFRfT1BUSU9OUyIsICJzd2F0Y2hlcyIsICJjb21wb25lbnRzIiwgInRoZW1lIiwgInNsaWRlcnMiLCAibG9ja09wYWNpdHkiLCAicGFkZGluZyIsICJpbmNsdWRlcyIsICJpbnRlcmFjdGlvbiIsICJwcmV2aWV3IiwgIm9wYWNpdHkiLCAiaHVlIiwgInBhbGV0dGUiLCAiX3ByZUJ1aWxkIiwgIl9idWlsZENvbXBvbmVudHMiLCAiX2JpbmRFdmVudHMiLCAiX2ZpbmFsQnVpbGQiLCAiY29sb3IiLCAiYWRkU3dhdGNoIiwgImJ1dHRvbiIsICJhcHAiLCAiX3Jvb3QiLCAiX25hbm9wb3AiLCAiYmFzZU9wdGlvbnMiLCAiSFRNTEVsZW1lbnQiLCAiW29iamVjdCBPYmplY3RdIiwgIkVycm9yIiwgInNldEF0dHJpYnV0ZSIsICJfdCIsICJfc2V0dXBBbmltYXRpb25GcmFtZSIsICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCAiY2IiLCAic2V0Q29sb3IiLCAiZGVmYXVsdCIsICJfcmVQb3NpdGlvbmluZ1BpY2tlciIsICJkZWZhdWx0UmVwcmVzZW50YXRpb24iLCAiX3JlcHJlc2VudGF0aW9uIiwgInNldENvbG9yUmVwcmVzZW50YXRpb24iLCAic2hvd0Fsd2F5cyIsICJfaW5pdGlhbGl6aW5nQWN0aXZlIiwgIl9lbWl0IiwgImluc3RhbmNlIiwgInVzZUFzQnV0dG9uIiwgImlubGluZSIsICJhcHBDbGFzcyIsICJoaWRkZW4iLCAiaW5wdXQiLCAiaW50IiwgImZpbmQiLCAiYWRkIiwgImNvbnRhaW5zIiwgImFwcGVuZENoaWxkIiwgInJlbW92ZUNoaWxkIiwgInBhcmVudCIsICJuZXh0U2libGluZyIsICJpbnNlcnRCZWZvcmUiLCAicmVtb3ZlIiwgInBhcmVudE5vZGUiLCAicmVwbGFjZUNoaWxkIiwgImRpc2FibGVkIiwgImRpc2FibGUiLCAiY29tcGFyaXNvbiIsICJ0cmFuc2l0aW9uIiwgImxhc3RDb2xvciIsICJpbnN0IiwgImNzIiwgInJlcGVhdCIsICJzbyIsICJzaCIsICJnZXRDb2xvciIsICJfY29sb3IiLCAiX2xhc3RDb2xvciIsICJwaWNrZXIiLCAiY3VycmVudENvbG9yIiwgIl9yZWNhbGMiLCAiX3VwZGF0ZU91dHB1dCIsICJjc3NSR0JhU3RyaW5nIiwgImJhY2tncm91bmQiLCAic2V0UHJvcGVydHkiLCAiX3N3YXRjaENvbG9ycyIsICJzbGlkZXIiLCAiYmFja2dyb3VuZENvbG9yIiwgInNlbGVjdGFibGUiLCAiX2NvbXBvbmVudHMiLCAiZXZlbnRCaW5kaW5ncyIsICJfY2xlYXJDb2xvciIsICJzZXRIU1ZBIiwgImFwcGx5Q29sb3IiLCAicmVzdWx0IiwgInN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiIsICJjayIsICJjbG9zZVdpdGhLZXkiLCAiaXNPcGVuIiwgImNvZGUiLCAic29tZSIsICJhZGp1c3RhYmxlTnVtYmVycyIsICJyYW5nZXMiLCAic3RlcCIsICJyYW5nZSIsICJnZXRDb2xvclJlcHJlc2VudGF0aW9uIiwgIm52IiwgInRvUHJlY2lzaW9uIiwgImF1dG9SZXBvc2l0aW9uIiwgInRpbWVvdXQiLCAiY2xvc2VPblNjcm9sbCIsICJzZXRUaW1lb3V0IiwgInJzIiwgImNsZWFyVGltZW91dCIsICJfZXZlbnRCaW5kaW5ncyIsICJib2R5IiwgImViIiwgImlubmVySGVpZ2h0IiwgImlubmVyV2lkdGgiLCAiZXZlbnRTb3VyY2UiLCAib3V0cHV0UHJlY2lzaW9uIiwgInNpbGVudCIsICJfcGFyc2VMb2NhbENvbG9yIiwgImFscGhhTWFrZXNBQ2hhbmdlIiwgImkxOG4iLCAiSTE4Tl9ERUZBVUxUUyIsICJldmVudCIsICJhcmdzIiwgIl9ldmVudExpc3RlbmVyIiwgImNhbGxCYWNrcyIsICJpbmRleE9mIiwgInNwbGljZSIsICJyZW1vdmVTd2F0Y2giLCAic3dhdGNoQ29sb3IiLCAiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCAiZGVzdHJveUFuZFJlbW92ZSIsICJyZWNhbGMiLCAic3RyaW5nIiwgInV0eXBlIiwgImNsaWNrIiwgImdldFNlbGVjdGVkQ29sb3IiLCAiZ2V0Um9vdCIsICJlbmFibGUiLCAiVkVSU0lPTiIsICJtb2R1bGUiLCAiaXNCdWZmZXIiLCAibW9kdWxlIiwgImlzQXJyYXkiLCAiaXNQbGFpbk9iamVjdCIsICJzZXRQcm9wZXJ0eSIsICJnZXRQcm9wZXJ0eSIsICJleHRlbmQiLCAiaSIsICJpbXBvcnRfb2JzaWRpYW4iLCAidCIsICJlIiwgInIiLCAibiIsICJpIiwgIm8iLCAiYSIsICJ1IiwgImMiLCAicyIsICJkIiwgImgiLCAibCIsICJmIiwgImciLCAicCIsICJiIiwgIkYiLCAibSIsICJ5IiwgIkEiLCAiRSIsICJ2IiwgInRleHQiLCAidmFsdWUiLCAiZSIsICJQaWNrciIsICJpIiwgImltcG9ydF9vYnNpZGlhbiIsICJjb2RlU2VjdGlvbiIsICJjb2RlVGV4dCIsICJfIiwgImUiLCAidGV4dCIsICJpIiwgInZhbHVlIiwgIl9hIiwgInRleHQiLCAiZnJvbSIsICJ0byIsICJlbXB0eSIsICJsYW5ndWFnZUljb25zIiwgInBvc2l0aW9uIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfaXNfYnVmZmVyIiwgImluZGV4IiwgInBvaW50IiwgInBvc2l0aW9uIiwgImluZGV4IiwgInBhdGgiLCAiaW5kZXgiLCAicGF0aCIsICJpbmRleCIsICJpbmRleCIsICJwcm9wIiwgInBhdGgiLCAiZGlybmFtZSIsICJhc3NlcnRQYXRoIiwgImJhc2VuYW1lIiwgImV4dG5hbWUiLCAiYnVmZmVyTGlrZSIsICJwYXJzZSIsICJpbmRleCIsICJleHRlbmQiLCAidmFsdWUiLCAib3B0aW9ucyIsICJub2RlIiwgImZpbGUiLCAiaXNCdWZmZXIiLCAiaW5kZXgiLCAibGlzdCIsICJhbGwiLCAiaW5kZXgiLCAiZXh0ZW5zaW9uIiwgImxpc3QiLCAib2siLCAicHJldmlvdXMiLCAiZG9jdW1lbnQiLCAic2VsZiIsICJwb2ludCIsICJpbmRleCIsICJvayIsICJjb25zdHJ1Y3RzIiwgImluZGV4IiwgImluZGV4IiwgInRleHQiLCAib2siLCAiYXR0ZW50aW9uTWFya2VycyIsICJwcmV2aW91cyIsICJwb2ludCIsICJvayIsICJvayIsICJvayIsICJzZWxmIiwgIm9rIiwgImNoYXJhY3RlclJlZmVyZW5jZSIsICJvayIsICJzZWxmIiwgIm9rIiwgInNlbGYiLCAiZWZmZWN0cyIsICJub2siLCAic3RhcnQiLCAib2siLCAic2VsZiIsICJmdXJ0aGVyU3RhcnQiLCAiaW5kZXgiLCAib2siLCAic2VsZiIsICJpbmRleCIsICJwcmV2aW91cyIsICJzdGFydCIsICJjb250ZW50IiwgIm9rIiwgInByZXZpb3VzIiwgInNlbGYiLCAib2siLCAib2siLCAic2VsZiIsICJvayIsICJvayIsICJvayIsICJzZWxmIiwgInRpdGxlQmVmb3JlIiwgIm9rIiwgImNvbnRlbnQiLCAidGV4dCIsICJvayIsICJpbmRleCIsICJvayIsICJzZWxmIiwgImJ1ZmZlciIsICJvayIsICJzZWxmIiwgImluZGV4IiwgImluZGV4IiwgInRleHQiLCAib2siLCAic2VsZiIsICJvayIsICJzZWxmIiwgIm9rIiwgInNlbGYiLCAib2siLCAib2siLCAib2siLCAic2VsZiIsICJpbmRleCIsICJjb250ZW50IiwgInRleHQiLCAiZGVmaW5pdGlvbiIsICJvayIsICJzZWxmIiwgInNlbGYiLCAiY29udGVudCIsICJzZWxmIiwgImNvbnN0cnVjdHMiLCAidGV4dCIsICJsaXN0IiwgImluZGV4IiwgInBvaW50IiwgImV4aXQiLCAiXyIsICJjb25zdHJ1Y3RzIiwgImFsbCIsICJsaXN0IiwgIm9rIiwgImZyb20iLCAiaW5kZXgiLCAiZG9jdW1lbnQiLCAiZmxvdyIsICJzdHJpbmciLCAidGV4dCIsICJkb2N1bWVudCIsICJmbG93IiwgInN0cmluZyIsICJ0ZXh0IiwgImNvbnN0cnVjdHMiLCAiZG9jdW1lbnQiLCAiYnVmZmVyIiwgImJhc2UiLCAiaGVhZCIsICJvd24iLCAiYmxvY2tRdW90ZSIsICJidWZmZXIiLCAiY29kZVRleHQiLCAiZGVmaW5pdGlvbiIsICJsaXN0IiwgInRoZW1hdGljQnJlYWsiLCAiZXhpdCIsICJpbmRleCIsICJwb2ludCIsICJsaXN0SXRlbSIsICJub2RlIiwgImRhdGEiLCAidGV4dCIsICJzdHJpbmciLCAiZCIsICJleHRlbnNpb24iLCAiaW5kZXgiLCAiYWxsIiwgIm5vZGUiLCAiZCIsICJpcyIsICJub2RlIiwgImluZGV4IiwgInZpc2l0IiwgIm5vZGUiLCAiaW5kZXgiLCAiZWxlbWVudCIsICJfIiwgInRleHQiLCAiaW5kZXgiLCAibm9kZSJdCn0K
diff --git a/src/ApplyStyling.ts b/src/ApplyStyling.ts
index 2d3ce03..ad9eedd 100644
--- a/src/ApplyStyling.ts
+++ b/src/ApplyStyling.ts
@@ -35,7 +35,7 @@ const THEME_STYLES: Record = {
}
export function updateStyling(settings: CodeStylerSettings, app: App): void {
- let currentTheme = getCurrentTheme(app);
+ const currentTheme = getCurrentTheme(app);
let styleTag = document.getElementById(STYLE_ID);
if (!styleTag) {
styleTag = document.createElement('style');
@@ -157,20 +157,9 @@ function styleLanguageColours (themeSettings: CodeStylerThemeSettings, redirectL
}
function addThemeSettingsClasses (themeSettings: CodeStylerThemeSettings): void {
- if (themeSettings.codeblock.lineNumbers)
- document.body.classList.add("code-styler-show-line-numbers");
- else
- document.body.classList.remove("code-styler-show-line-numbers");
-
- if (themeSettings.gutter.highlight)
- document.body.classList.add('code-styler-gutter-highlight');
- else
- document.body.classList.remove('code-styler-gutter-highlight');
-
- if (themeSettings.gutter.activeLine)
- document.body.classList.add('code-styler-gutter-active-line');
- else
- document.body.classList.remove('code-styler-gutter-active-line');
+ themeSettings.codeblock.lineNumbers ? document.body.classList.add("code-styler-show-line-numbers") : document.body.classList.remove("code-styler-show-line-numbers");
+ themeSettings.gutter.highlight ? document.body.classList.add('code-styler-gutter-highlight') : document.body.classList.remove('code-styler-gutter-highlight');
+ themeSettings.gutter.activeLine ? document.body.classList.add('code-styler-gutter-active-line') : document.body.classList.remove('code-styler-gutter-active-line');
document.body.classList.remove("code-styler-active-line-highlight","code-styler-active-line-highlight-codeblock","code-styler-active-line-highlight-editor")
if (themeSettings.highlights.activeEditorLine && themeSettings.highlights.activeCodeblockLine) // Inside and outside of codeblocks with different colours
diff --git a/src/CodeblockDecorating.ts b/src/CodeblockDecorating.ts
index fd3a92f..e53487e 100644
--- a/src/CodeblockDecorating.ts
+++ b/src/CodeblockDecorating.ts
@@ -33,7 +33,7 @@ export function createInlineOpener(inlineCodeParameters: InlineCodeParameters, l
openerContainer.appendChild(createSpan({cls: `code-styler-inline-title`, text: inlineCodeParameters.title}));
return openerContainer;
}
-function createImageWrapper(iconURL: string, imageWrapper: HTMLElement, imgClass: string = "code-styler-icon"): HTMLElement {
+function createImageWrapper(iconURL: string, imageWrapper: HTMLElement, imgClass = "code-styler-icon"): HTMLElement {
const img = document.createElement("img");
img.classList.add(imgClass);
img.src = iconURL;
@@ -67,3 +67,11 @@ export function getLineClass(codeblockParameters: CodeblockParameters, lineNumbe
classList = ['code-styler-line']
return classList;
}
+export function getLineNumberDisplay(codeblockParameters: CodeblockParameters): string {
+ let lineNumberDisplay = '';
+ if (!codeblockParameters.lineNumbers.alwaysEnabled && codeblockParameters.lineNumbers.alwaysDisabled)
+ lineNumberDisplay = '-hide';
+ else if (codeblockParameters.lineNumbers.alwaysEnabled && !codeblockParameters.lineNumbers.alwaysDisabled)
+ lineNumberDisplay = '-specific';
+ return lineNumberDisplay;
+}
diff --git a/src/CodeblockParsing.ts b/src/CodeblockParsing.ts
index 5b51b35..b69b358 100644
--- a/src/CodeblockParsing.ts
+++ b/src/CodeblockParsing.ts
@@ -42,19 +42,22 @@ export async function parseCodeblockSource(codeSection: Array, sourcePat
//@ts-expect-error Undocumented Obsidian API
const plugins: Record = plugin.app.plugins.plugins;
const admonitions: boolean = 'obsidian-admonition' in plugins;
- let codeblocks: Array> = [];
- let codeblocksParameters: Array = [];
+ const codeblocks: Array> = [];
+ const codeblocksParameters: Array = [];
function parseCodeblockSection(codeSection: Array): void {
if (codeSection.length === 0)
return;
- let openingCodeblockLine = getOpeningLine(codeSection);
+
+ const openingCodeblockLine = getOpeningLine(codeSection);
if (!openingCodeblockLine)
return;
- let openDelimiter = /^\s*(?:>\s*)*((?:```+|~~~+)).*$/.exec(openingCodeblockLine)?.[1];
+
+ const openDelimiter = /^\s*(?:>\s*)*((?:```+|~~~+)).*$/.exec(openingCodeblockLine)?.[1];
if (!openDelimiter)
return;
- let openDelimiterIndex = codeSection.indexOf(openingCodeblockLine);
- let closeDelimiterIndex = codeSection.slice(openDelimiterIndex+1).findIndex((line)=>line.indexOf(openDelimiter as string)!==-1);
+
+ const openDelimiterIndex = codeSection.indexOf(openingCodeblockLine);
+ const closeDelimiterIndex = codeSection.slice(openDelimiterIndex+1).findIndex((line)=>line.indexOf(openDelimiter)!==-1);
if (!admonitions || !/^\s*(?:>\s*)*(?:```+|~~~+) *ad-.*$/.test(openingCodeblockLine))
codeblocks.push(codeSection.slice(0,openDelimiterIndex+2+closeDelimiterIndex))
else
@@ -63,8 +66,8 @@ export async function parseCodeblockSource(codeSection: Array, sourcePat
parseCodeblockSection(codeSection.slice(openDelimiterIndex+1+closeDelimiterIndex+1));
}
parseCodeblockSection(codeSection);
- for (let codeblockLines of codeblocks) {
- let parameterLine = getParameterLine(codeblockLines);
+ for (const codeblockLines of codeblocks) {
+ const parameterLine = getParameterLine(codeblockLines);
if (!parameterLine)
continue;
let codeblockParameters = parseCodeblockParameters(parameterLine,plugin.settings.currentTheme);
@@ -79,7 +82,7 @@ export async function parseCodeblockSource(codeSection: Array, sourcePat
}
export function parseInlineCode(codeText: string): {parameters: InlineCodeParameters | null, text: string} {
- let match = /^({} ?)?{([^}]*)} ?(.*)$/.exec(codeText);
+ const match = /^({} ?)?{([^}]*)} ?(.*)$/.exec(codeText);
if (!match?.[1] && !(match?.[2] && match?.[3]))
return {parameters: null, text: ''};
@@ -90,7 +93,7 @@ export function parseInlineCode(codeText: string): {parameters: InlineCodeParame
}
export function parseCodeblockParameters(parameterLine: string, theme: CodeStylerTheme): CodeblockParameters {
- let codeblockParameters: CodeblockParameters = {
+ const codeblockParameters: CodeblockParameters = {
language: '',
title: '',
fold: {
@@ -124,7 +127,7 @@ export function parseCodeblockParameters(parameterLine: string, theme: CodeStyle
} else {
return codeblockParameters;
}
- let languageBreak = parameterLine.indexOf(' ');
+ const languageBreak = parameterLine.indexOf(' ');
codeblockParameters.language = parameterLine.slice(0,languageBreak !== -1?languageBreak:parameterLine.length).toLowerCase();
if (languageBreak === -1)
return codeblockParameters;
@@ -137,7 +140,7 @@ export function parseCodeblockParameters(parameterLine: string, theme: CodeStyle
export async function pluginAdjustParameters(codeblockParameters: CodeblockParameters, plugins: Record, codeblockLines: Array, sourcePath: string): Promise {
if (codeblockParameters.language === 'preview') {
if ('obsidian-code-preview' in plugins) {
- let codePreviewParams = await plugins['obsidian-code-preview'].code(codeblockLines.slice(1,-1).join('\n'),sourcePath);
+ const codePreviewParams = await plugins['obsidian-code-preview'].code(codeblockLines.slice(1,-1).join('\n'),sourcePath);
if (!codeblockParameters.lineNumbers.alwaysDisabled && !codeblockParameters.lineNumbers.alwaysEnabled) {
if (typeof codePreviewParams.start === 'number')
codeblockParameters.lineNumbers.offset = codePreviewParams.start - 1;
@@ -158,12 +161,12 @@ export async function pluginAdjustParameters(codeblockParameters: CodeblockParam
return codeblockParameters
}
function parseInlineCodeParameters(parameterLine: string): InlineCodeParameters {
- let inlineCodeParameters: InlineCodeParameters = {
+ const inlineCodeParameters: InlineCodeParameters = {
language: '',
title: '',
icon: false,
}
- let languageBreak = parameterLine.indexOf(' ');
+ const languageBreak = parameterLine.indexOf(' ');
inlineCodeParameters.language = parameterLine.slice(0,languageBreak !== -1?languageBreak:parameterLine.length).toLowerCase();
if (languageBreak === -1)
return inlineCodeParameters;
@@ -176,11 +179,11 @@ function parseInlineCodeParameters(parameterLine: string): InlineCodeParameters
function parseCodeblockParameterString(parameterString: string, codeblockParameters: CodeblockParameters, theme: CodeStylerTheme): void {
if (parameterString.startsWith('title:')) {
- let titleMatch = /(["']?)([^\1]+)\1/.exec(parameterString.slice('title:'.length));
+ const titleMatch = /(["']?)([^\1]+)\1/.exec(parameterString.slice('title:'.length));
if (titleMatch)
codeblockParameters.title = titleMatch[2].trim();
} else if (parameterString.startsWith('fold:')) {
- let foldPlaceholderMatch = /(["']?)([^\1]+)\1/.exec(parameterString.slice('fold:'.length));
+ const foldPlaceholderMatch = /(["']?)([^\1]+)\1/.exec(parameterString.slice('fold:'.length));
if (foldPlaceholderMatch) {
codeblockParameters.fold = {
enabled: true,
@@ -249,9 +252,9 @@ function parseCodeblockParameterString(parameterString: string, codeblockParamet
}
}
} else {
- let highlightMatch = /^(\w+):(.+)$/.exec(parameterString);
+ const highlightMatch = /^(\w+):(.+)$/.exec(parameterString);
if (highlightMatch) {
- let highlights = parseHighlightedLines(highlightMatch[2]);
+ const highlights = parseHighlightedLines(highlightMatch[2]);
if (highlightMatch[1] === 'hl')
codeblockParameters.highlights.default = highlights;
else
@@ -262,9 +265,9 @@ function parseCodeblockParameterString(parameterString: string, codeblockParamet
}
function parseHighlightedLines(highlightedLinesString: string): Highlights {
const highlightRules = highlightedLinesString.split(',');
- let lineNumbers: Set = new Set();
- let plainText: Set = new Set();
- let regularExpressions: Set = new Set();
+ const lineNumbers: Set = new Set();
+ const plainText: Set = new Set();
+ const regularExpressions: Set = new Set();
highlightRules.forEach(highlightRule => {
if (/\d+-\d+/.test(highlightRule)) { // Number Range
const [start,end] = highlightRule.split('-').map(num => parseInt(num));
@@ -273,7 +276,9 @@ function parseHighlightedLines(highlightedLinesString: string): Highlights {
} else if (/^\/(.*)\/$/.test(highlightRule)) { // Regex
try {
regularExpressions.add(new RegExp(highlightRule.replace(/^\/(.*)\/$/,"$1")));
- } catch { }
+ } catch {
+ //pass
+ }
} else if (/".*"/.test(highlightRule)) { // Plain Text
plainText.add(highlightRule.substring(1,highlightRule.length-1));
} else if (/'.*'/.test(highlightRule)) { // Plain Text
@@ -301,7 +306,7 @@ function parseRegexExcludedLanguages(excludedLanguagesString: string): Array): string | undefined {
let openingCodeblockLine = getOpeningLine(codeblockLines);
- if (openingCodeblockLine && (openingCodeblockLine !== codeblockLines[0] || />\s*(?:`|~)/.test(openingCodeblockLine)))
+ if (openingCodeblockLine && (openingCodeblockLine !== codeblockLines[0] || />\s*(?:[`~])/.test(openingCodeblockLine)))
openingCodeblockLine = cleanParameterLine(openingCodeblockLine);
return openingCodeblockLine
}
@@ -319,7 +324,7 @@ function getOpeningLine(codeblockLines: Array): string | undefined {
return codeblockLines.find((line: string)=>Boolean(testOpeningLine(line)));
}
export function testOpeningLine(codeblockLine: string): string {
- let lineMatch = /^(\s*(?:>\s*)*)(```+|~~~+)/.exec(codeblockLine);
+ const lineMatch = /^(\s*(?:>\s*)*)(```+|~~~+)/.exec(codeblockLine);
if (!lineMatch)
return '';
if (codeblockLine.indexOf(lineMatch[2],lineMatch[1].length+lineMatch[2].length+1)===-1)
@@ -348,6 +353,6 @@ export async function getFileContentLines(sourcePath: string, plugin: CodeStyler
return fileContent.split(/\n/g);
}
-export function arraysEqual(array1: Array,array2: Array): boolean {
+export function arraysEqual(array1: Array,array2: Array): boolean {
return array1.length === array2.length && array1.every((el) => array2.includes(el));
}
diff --git a/src/EditingView.ts b/src/EditingView.ts
index e13881a..55ab1ae 100644
--- a/src/EditingView.ts
+++ b/src/EditingView.ts
@@ -1,14 +1,16 @@
import { editorEditorField, editorInfoField, editorLivePreviewField } from "obsidian";
import { ViewPlugin, EditorView, ViewUpdate, Decoration, DecorationSet, WidgetType } from "@codemirror/view";
import { Extension, EditorState, StateField, StateEffect, StateEffectType, Range, RangeSetBuilder, Transaction, TransactionSpec, Line, SelectionRange, Annotation } from "@codemirror/state";
-import { syntaxTree, tokenClassNodeProp, LanguageSupport } from "@codemirror/language";
+import { syntaxTree, tokenClassNodeProp } from "@codemirror/language";
import { SyntaxNodeRef } from "@lezer/common";
-import { highlightTree, classHighlighter } from "@lezer/highlight";
+//NOSONAR
+// import { LanguageSupport } from "@codemirror/language"; //NOTE: For future CM6 Compatibility
+// import { highlightTree, classHighlighter } from "@lezer/highlight"; //NOTE: For future CM6 Compatibility
// import { languages } from "@codemirror/language-data"; //NOTE: For future CM6 Compatibility
import { CodeStylerSettings, CodeStylerThemeSettings } from "./Settings";
import { CodeblockParameters, parseCodeblockParameters, testOpeningLine, isExcluded, arraysEqual, trimParameterLine, InlineCodeParameters, parseInlineCode } from "./CodeblockParsing";
-import { createHeader, createInlineOpener, getLanguageIcon, getLineClass } from "./CodeblockDecorating";
+import { createHeader, createInlineOpener, getLanguageIcon, getLineClass, getLineNumberDisplay } from "./CodeblockDecorating";
export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings, languageIcons: Record) {
const codeblockLineNumberCharWidth = StateField.define({
@@ -92,9 +94,9 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
const codeblocks = findUnduplicatedCodeblocks(view);
for (const codeblock of codeblocks) {
let codeblockParameters: CodeblockParameters;
- let excludedCodeblock: boolean = false;
- let lineNumber: number = 0;
- let maxLineNum: number = 0;
+ let excludedCodeblock = false;
+ let lineNumber = 0;
+ let maxLineNum = 0;
let lineNumberMargin: number | undefined = 0;
syntaxTree(view.state).iterate({from: codeblock.from, to: codeblock.to,
enter: (syntaxNode)=>{
@@ -107,7 +109,7 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
excludedCodeblock = isExcluded(codeblockParameters.language,[this.settings.excludedCodeblocks,this.settings.excludedLanguages].join(',')) || codeblockParameters.ignore;
lineNumber = 0;
let lineNumberCount = line.number + 1;
- let startDelimiter = testOpeningLine(lineText);
+ const startDelimiter = testOpeningLine(lineText);
while (startDelimiter !== testOpeningLine(view.state.doc.line(lineNumberCount).text)) {
lineNumberCount += 1;
}
@@ -149,12 +151,12 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
return Decoration.none;
const builder = new RangeSetBuilder();
let codeblockParameters: CodeblockParameters;
- let startLine: boolean = true;
- let startDelimiter: string = '```';
+ let startLine = true;
+ let startDelimiter = '```';
for (let i = 1; i < transaction.state.doc.lines; i++) {
const line = transaction.state.doc.line(i);
const lineText = line.text.toString();
- let currentDelimiter = testOpeningLine(lineText);
+ const currentDelimiter = testOpeningLine(lineText);
if (currentDelimiter) {
if (startLine) {
startLine = false;
@@ -185,12 +187,12 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
let codeblockParameters: CodeblockParameters;
let collapseStart: Line | null = null;
let collapseEnd: Line | null = null;
- let startLine: boolean = true;
- let startDelimiter: string = '```';
+ let startLine = true;
+ let startDelimiter = '```';
for (let i = 1; i < state.doc.lines; i++) {
const line = state.doc.line(i);
const lineText = line.text.toString();
- let currentDelimiter = testOpeningLine(lineText);
+ const currentDelimiter = testOpeningLine(lineText);
if (currentDelimiter) {
if (startLine) {
startLine = false;
@@ -252,6 +254,7 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
decorations: DecorationSet;
settings: CodeStylerSettings;
syntaxHighlight: boolean;
+ //NOSONAR
// loadedLanguages: Record; //NOTE: For future CM6 Compatibility
constructor(view: EditorView) {
@@ -259,17 +262,17 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
this.settings = settings;
this.syntaxHighlight = settings.currentTheme.settings.inline.syntaxHighlight;
this.buildDecorations(view);
+ //NOSONAR
// this.loadedLanguages = {}; //NOTE: For future CM6 Compatibility
}
update(update: ViewUpdate) {
if (update.docChanged || update.viewportChanged || update.selectionSet || update.state.field(editorLivePreviewField)!==update.startState.field(editorLivePreviewField) || this.settings.currentTheme.settings.inline.syntaxHighlight !== this.syntaxHighlight) {
- if (this.settings.currentTheme.settings.inline.syntaxHighlight !== this.syntaxHighlight)
- console.log(this.syntaxHighlight)
this.syntaxHighlight = this.settings.currentTheme.settings.inline.syntaxHighlight;
if (update.docChanged)
this.decorations = this.decorations.map(update.changes);
this.buildDecorations(update.view);
+ //NOSONAR
//NOTE: For future CM6 Compatibility
// const toHighlight = this.buildDecorations(update.view);
// toHighlight.forEach((highlightSet)=>{
@@ -297,12 +300,14 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
}
}
- buildDecorations(view: EditorView): void { //Array<{start: number, text: string, language: string}> //NOTE: For future CM6 Compatibility
+ buildDecorations(view: EditorView): void { //Array<{start: number, text: string, language: string}> //NOTE: For future CM6 Compatibility //NOSONAR
if (!view?.visibleRanges?.length || editingViewIgnore(view.state)) {
this.decorations = Decoration.none;
return;
+ //NOSONAR
// return [];//NOTE: For future CM6 Compatibility
}
+ //NOSONAR
// let toHighlight: Array<{start: number, text: string, language: string}> = []; //NOTE: For future CM6 Compatibility
for (const {from,to} of view.visibleRanges) {
syntaxTree(view.state).iterate({from: from, to: to,
@@ -310,13 +315,13 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
const properties = new Set(syntaxNode.node.type.prop(tokenClassNodeProp)?.split(" "));
if (!(properties.has("inline-code") && !properties.has("formatting")))
return;
- let previousSibling = syntaxNode.node.prevSibling;
+ const previousSibling = syntaxNode.node.prevSibling;
if (!previousSibling)
return;
- let delimiterSize = previousSibling.to-previousSibling.from;
- let inlineCodeText = view.state.doc.sliceString(syntaxNode.from, syntaxNode.to);
- let {parameters,text} = parseInlineCode(inlineCodeText);
- let endOfParameters = inlineCodeText.lastIndexOf(text);
+ const delimiterSize = previousSibling.to-previousSibling.from;
+ const inlineCodeText = view.state.doc.sliceString(syntaxNode.from, syntaxNode.to);
+ const {parameters,text} = parseInlineCode(inlineCodeText);
+ const endOfParameters = inlineCodeText.lastIndexOf(text);
if (!parameters) {
if (text) {
if (view.state.selection.ranges.some((range: SelectionRange)=>range.to >= syntaxNode.from-delimiterSize && range.from <= syntaxNode.to+delimiterSize))
@@ -346,11 +351,12 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
if (!settings.currentTheme.settings.inline.syntaxHighlight)
return;
this.decorations = this.decorations.update({add: modeHighlight({start: syntaxNode.from + endOfParameters, text: text, language: parameters.language})});
+ //NOSONAR
// toHighlight.push({start: syntaxNode.from + endOfParameters, text: text, language: parameters.language}); //NOTE: For future CM6 Compatibility
}
},
});
- };
+ }
// return toHighlight; //NOTE: For future CM6 Compatibility
}
},
@@ -360,9 +366,9 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
)
function cursorIntoCollapsedTransactionFilter() {
return EditorState.transactionFilter.of((transaction) => {
- let extraTransactions: Array = [];
- let collapsedRangeSet = transaction.startState.field(codeblockCollapse,false)?.map(transaction.changes) ?? Decoration.none;
- let temporarilyUncollapsedRangeSet = transaction.startState.field(temporarilyUncollapsed,false)?.map(transaction.changes) ?? Decoration.none;
+ const extraTransactions: Array = [];
+ const collapsedRangeSet = transaction.startState.field(codeblockCollapse,false)?.map(transaction.changes) ?? Decoration.none;
+ const temporarilyUncollapsedRangeSet = transaction.startState.field(temporarilyUncollapsed,false)?.map(transaction.changes) ?? Decoration.none;
transaction.newSelection.ranges.forEach((range: SelectionRange)=>{
collapsedRangeSet.between(range.from, range.to, (collapseStartFrom, collapseEndTo, decorationValue) => {
if (collapseStartFrom <= range.head && range.head <= collapseEndTo)
@@ -380,28 +386,28 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
}
//todo Finish this filter
- function manageCollapsedTransactionFilter() {
- return EditorState.transactionFilter.of((transaction) => {
- let extraTransactions: Array = [];
- let collapsedRangeSet = transaction.startState.field(codeblockCollapse,false) ?? Decoration.none;
- let temporarilyUncollapsedRangeSet = transaction.startState.field(temporarilyUncollapsed,false) ?? Decoration.none;
- transaction.changes.iterChanges((fromA,toA,fromB,toB,inserted)=>{
- if (fromB === toB && inserted.toString() === '') {
- console.log(fromA,toA,fromB,toB,inserted)
- collapsedRangeSet.between(fromA-100, toA+100, (collapseStartFrom, collapseEndTo, decorationValue) => {
- console.log(fromA,toA,collapseStartFrom,collapseEndTo)
- if ((fromA <= collapseStartFrom && collapseStartFrom <= toA) || (fromA <= collapseEndTo && collapseEndTo <= toA))
- extraTransactions.push({effects: uncollapse.of({filter: (from,to) => (to <= collapseStartFrom || from >= collapseEndTo), filterFrom: collapseStartFrom, filterTo: collapseEndTo}), annotations: temporaryUncollapseAnnotation.of({decorationRange: {from: collapseStartFrom, to: collapseEndTo, value: decorationValue}, uncollapse: true})});
- });
- }
- });
- if (extraTransactions.length !== 0)
- console.log('foo',extraTransactions)
- if (extraTransactions.length !== 0)
- return [transaction,...extraTransactions];
- return transaction;
- });
- }
+ // function manageCollapsedTransactionFilter() {
+ // return EditorState.transactionFilter.of((transaction) => {
+ // const extraTransactions: Array = [];
+ // const collapsedRangeSet = transaction.startState.field(codeblockCollapse,false) ?? Decoration.none;
+ // const temporarilyUncollapsedRangeSet = transaction.startState.field(temporarilyUncollapsed,false) ?? Decoration.none;
+ // transaction.changes.iterChanges((fromA,toA,fromB,toB,inserted)=>{
+ // if (fromB === toB && inserted.toString() === '') {
+ // console.log(fromA,toA,fromB,toB,inserted)
+ // collapsedRangeSet.between(fromA-100, toA+100, (collapseStartFrom, collapseEndTo, decorationValue) => {
+ // console.log(fromA,toA,collapseStartFrom,collapseEndTo)
+ // if ((fromA <= collapseStartFrom && collapseStartFrom <= toA) || (fromA <= collapseEndTo && collapseEndTo <= toA))
+ // extraTransactions.push({effects: uncollapse.of({filter: (from,to) => (to <= collapseStartFrom || from >= collapseEndTo), filterFrom: collapseStartFrom, filterTo: collapseEndTo}), annotations: temporaryUncollapseAnnotation.of({decorationRange: {from: collapseStartFrom, to: collapseEndTo, value: decorationValue}, uncollapse: true})});
+ // });
+ // }
+ // });
+ // if (extraTransactions.length !== 0)
+ // console.log('foo',extraTransactions)
+ // if (extraTransactions.length !== 0)
+ // return [transaction,...extraTransactions];
+ // return transaction;
+ // });
+ // }
class LineNumberWidget extends WidgetType {
lineNumber: number;
@@ -422,12 +428,7 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
}
toDOM(view: EditorView): HTMLElement {
- let lineNumberDisplay = '';
- if (!this.codeblockParameters.lineNumbers.alwaysEnabled && this.codeblockParameters.lineNumbers.alwaysDisabled)
- lineNumberDisplay = '-hide'
- else if (this.codeblockParameters.lineNumbers.alwaysEnabled && !this.codeblockParameters.lineNumbers.alwaysDisabled)
- lineNumberDisplay = '-specific'
- return createSpan({attr: {style: this.maxLineNum.toString().length > (this.lineNumber + this.codeblockParameters.lineNumbers.offset).toString().length?'width: var(--line-number-gutter-width);':''}, cls: `code-styler-line-number${lineNumberDisplay}`, text: this.empty?'':(this.lineNumber + this.codeblockParameters.lineNumbers.offset).toString()});
+ return createSpan({attr: {style: this.maxLineNum.toString().length > (this.lineNumber + this.codeblockParameters.lineNumbers.offset).toString().length?'width: var(--line-number-gutter-width);':''}, cls: `code-styler-line-number${getLineNumberDisplay(this.codeblockParameters)}`, text: this.empty?'':(this.lineNumber + this.codeblockParameters.lineNumbers.offset).toString()});
}
}
class HeaderWidget extends WidgetType {
@@ -517,12 +518,12 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
let collapseStart: Line | null = null;
let collapseEnd: Line | null = null;
- let startLine: boolean = true;
- let startDelimiter: string = '```';
+ let startLine = true;
+ let startDelimiter = '```';
for (let i = 1; i < view.state.doc.lines; i++) {
const line = view.state.doc.line(i);
const lineText = line.text.toString();
- let currentDelimiter = testOpeningLine(lineText);
+ const currentDelimiter = testOpeningLine(lineText);
if (currentDelimiter) {
if (startLine) {
startLine = false;
@@ -553,21 +554,21 @@ export function createCodeblockCodeMirrorExtensions(settings: CodeStylerSettings
}
const collapse: StateEffectType> = StateEffect.define();
- const uncollapse: StateEffectType<{filter: (from: any, to: any) => boolean, filterFrom: number, filterTo: number}> = StateEffect.define();
+ const uncollapse: StateEffectType<{filter: (from: number, to: number) => boolean, filterFrom: number, filterTo: number}> = StateEffect.define();
const temporaryUncollapseAnnotation = Annotation.define<{decorationRange: Range, uncollapse: boolean}>();
return [codeblockLineNumberCharWidth,codeblockLines,codeblockHeader,codeblockCollapse,temporarilyUncollapsed,inlineCodeDecorator,cursorIntoCollapsedTransactionFilter()];
}
function getCharWidth(state: EditorState, default_value: number): number {
- let charWidths = Array.from(state.field(editorEditorField).contentDOM.querySelectorAll(".HyperMD-codeblock-end")).reduce((result: Array,beginningElement: HTMLElement): Array => {
- let nextElement = beginningElement.previousElementSibling as HTMLElement;
+ const charWidths = Array.from(state.field(editorEditorField).contentDOM.querySelectorAll(".HyperMD-codeblock-end")).reduce((result: Array,beginningElement: HTMLElement): Array => {
+ const nextElement = beginningElement.previousElementSibling as HTMLElement;
if (!nextElement)
return result;
- let lineNumberElement = nextElement.querySelector("[class^='code-styler-line-number']") as HTMLElement;
+ const lineNumberElement = nextElement.querySelector("[class^='code-styler-line-number']") as HTMLElement;
if (!lineNumberElement || lineNumberElement.innerText.length <= 2)
return result;
- let computedStyles = window.getComputedStyle(lineNumberElement, null);
+ const computedStyles = window.getComputedStyle(lineNumberElement, null);
result.push((lineNumberElement.getBoundingClientRect().width - parseFloat(computedStyles.paddingLeft) - parseFloat(computedStyles.paddingRight)) / lineNumberElement.innerText.length)
return result;
},[])
@@ -600,26 +601,27 @@ function findCodeblocks(view: EditorView): Array {
return codeblocks;
}
-function languageHighlight({start,text,language}: {start: number, text: string, language: string},loadedLanguages: Record): Array> {
- //NOTE: Uses codemirror 6 implementation which Obsidian does not currently use
- let markDecorations: Array> = [];
- const tree = loadedLanguages[language].language.parser.parse(text);
- highlightTree(tree,classHighlighter,(from,to,token) => { //todo (@mayurankv) Change this highlighter
- if (token)
- markDecorations.push({from: start+from, to: start+to, value: Decoration.mark({class: token})});
- });
- return markDecorations;
-}
+//NOSONAR
+// function languageHighlight({start,text,language}: {start: number, text: string, language: string},loadedLanguages: Record): Array> {
+// //NOTE: Uses codemirror 6 implementation which Obsidian does not currently use
+// let markDecorations: Array> = [];
+// const tree = loadedLanguages[language].language.parser.parse(text);
+// highlightTree(tree,classHighlighter,(from,to,token) => { //todo (@mayurankv) Change this highlighter
+// if (token)
+// markDecorations.push({from: start+from, to: start+to, value: Decoration.mark({class: token})});
+// });
+// return markDecorations;
+// }
function modeHighlight ({start,text,language}: {start: number, text: string, language: string}): Array> {
//NOTE: Uses CodeMirror 5 implementation which Obsidian currently uses
- let markDecorations: Array> = [];
+ const markDecorations: Array> = [];
//@ts-expect-error Undocumented Obsidian API
const mode = window.CodeMirror.getMode(window.CodeMirror.defaults,window.CodeMirror.findModeByName(language)?.mime); // Alternatives: `text/x-${parameters.language}`, window.CodeMirror.findModeByName('js').mime
- let state = window.CodeMirror.startState(mode);
+ const state = window.CodeMirror.startState(mode);
if (mode?.token) {
- let stream = new window.CodeMirror.StringStream(text);
+ const stream = new window.CodeMirror.StringStream(text);
while (!stream.eol()) {
- let style = mode.token(stream,state);
+ const style = mode.token(stream,state);
if (style)
markDecorations.push({from: start+stream.start, to: start+stream.pos, value: Decoration.mark({class: `cm-${style}`})})
stream.start = stream.pos;
diff --git a/src/ReadingView.ts b/src/ReadingView.ts
index f5eb0fc..12f6dcb 100644
--- a/src/ReadingView.ts
+++ b/src/ReadingView.ts
@@ -5,144 +5,39 @@ import {visit} from "unist-util-visit";
import CodeStylerPlugin from "./main";
import { TRANSITION_LENGTH } from "./Settings";
-import { CodeblockParameters, getFileContentLines, isExcluded, parseCodeblockSource, parseInlineCode } from "./CodeblockParsing";
-import { createHeader, createInlineOpener, getLineClass } from "./CodeblockDecorating";
+import { CodeblockParameters, InlineCodeParameters, getFileContentLines, isExcluded, parseCodeblockSource, parseInlineCode } from "./CodeblockParsing";
+import { createHeader, createInlineOpener, getLineClass as getLineClasses, getLineNumberDisplay } from "./CodeblockDecorating";
-export async function readingViewCodeblockDecoratingPostProcessor(element: HTMLElement, {sourcePath,getSectionInfo,frontmatter}: {sourcePath: string, getSectionInfo: (element: HTMLElement) => MarkdownSectionInformation | null, frontmatter: FrontMatterCache | undefined}, plugin: CodeStylerPlugin, editingEmbeds: boolean = false) {
+export async function readingViewCodeblockDecoratingPostProcessor(element: HTMLElement, {sourcePath,getSectionInfo,frontmatter}: {sourcePath: string, getSectionInfo: (element: HTMLElement) => MarkdownSectionInformation | null, frontmatter: FrontMatterCache | undefined}, plugin: CodeStylerPlugin, editingEmbeds = false) {
const cache: CachedMetadata | null = plugin.app.metadataCache.getCache(sourcePath);
if (!sourcePath || !element || (frontmatter ?? cache?.frontmatter)?.['code-styler-ignore'] === true)
return;
- let codeblockPreElements: Array;
editingEmbeds = editingEmbeds || Boolean(element.matchParent(".cm-embed-block"));
- const specific = !Boolean(element.querySelector(".view-content > *"));
+ const specific = !element.querySelector(".view-content > *");
const printing = Boolean(element.querySelector("div.print > *"));
if (printing && !plugin.settings.decoratePrint)
return;
- if (!editingEmbeds && !specific)
- codeblockPreElements = Array.from(element.querySelectorAll('.markdown-reading-view pre:not(.frontmatter)'));
- else if (!editingEmbeds && specific) {
- codeblockPreElements = Array.from(element.querySelectorAll('pre:not(.frontmatter)'));
- let admonitionCodeElement = codeblockPreElements?.[0]?.querySelector('pre:not([class]) > code[class*="language-ad-"]');
- if (admonitionCodeElement) {
- await sleep(50);
- codeblockPreElements = Array.from(element.querySelectorAll('pre:not(.frontmatter)'));
- }
- } else if (editingEmbeds && !specific)
- codeblockPreElements = Array.from(element.querySelectorAll('.markdown-source-view .cm-embed-block pre:not(.frontmatter)'));
- else
- codeblockPreElements = [];
+ const codeblockPreElements: Array = await getCodeblockPreElements(element,specific,editingEmbeds);
if (codeblockPreElements.length === 0 && !(editingEmbeds && specific))
return;
const codeblockSectionInfo: MarkdownSectionInformation | null = getSectionInfo(codeblockPreElements[0]);
if (codeblockSectionInfo && specific && !editingEmbeds)
- renderSpecificReadingSection(codeblockPreElements,sourcePath,codeblockSectionInfo,plugin);
- else if (specific && !printing) {
- await sleep(50);
- editingEmbeds = editingEmbeds || Boolean(element.matchParent(".cm-embed-block"));
- if (editingEmbeds || !element.classList.contains("admonition-content")) {
- let contentEl = element.matchParent('.view-content') as HTMLElement;
- await readingViewCodeblockDecoratingPostProcessor(contentEl?contentEl:(element.matchParent('div.print') as HTMLElement),{sourcePath,getSectionInfo,frontmatter},plugin,editingEmbeds); // Re-render whole document
- }
- }
+ await renderSpecificReadingSection(codeblockPreElements,sourcePath,codeblockSectionInfo,plugin);
+ else if (specific && !printing)
+ await retriggerProcessor(element,{sourcePath,getSectionInfo,frontmatter},plugin,editingEmbeds);
else
- renderDocument(codeblockPreElements,sourcePath,cache,editingEmbeds,printing,plugin);
+ await renderDocument(codeblockPreElements,sourcePath,cache,editingEmbeds,printing,plugin);
}
-async function renderSpecificReadingSection(codeblockPreElements: Array, sourcePath: string, codeblockSectionInfo: MarkdownSectionInformation, plugin: CodeStylerPlugin): Promise {
- const codeblocksParameters = (await parseCodeblockSource(Array.from({length: codeblockSectionInfo.lineEnd-codeblockSectionInfo.lineStart+1}, (_,num) => num + codeblockSectionInfo.lineStart).map((lineNumber)=>codeblockSectionInfo.text.split('\n')[lineNumber]),sourcePath,plugin)).codeblocksParameters;
- if (codeblockPreElements.length !== codeblocksParameters.length)
- return;
- for (let [key,codeblockPreElement] of codeblockPreElements.entries()) {
- let codeblockParameters = codeblocksParameters[key];
- let codeblockCodeElement = codeblockPreElement.querySelector('pre > code');
- if (!codeblockCodeElement)
- return;
- if (Array.from(codeblockCodeElement.classList).some(className => /^language-\S+/.test(className)))
- while(!codeblockCodeElement.classList.contains("is-loaded"))
- await sleep(2);
- if (isExcluded(codeblockParameters.language,plugin.settings.excludedLanguages) || codeblockParameters.ignore)
- continue;
- await remakeCodeblock(codeblockCodeElement as HTMLElement,codeblockPreElement,codeblockParameters,true,plugin);
- }
-}
-async function renderDocument(codeblockPreElements: Array, sourcePath: string, cache: CachedMetadata | null, editingEmbeds: boolean, printing: boolean, plugin: CodeStylerPlugin) {
- const fileContentLines = await getFileContentLines(sourcePath,plugin);
- if (!fileContentLines)
- return;
- let codeblocksParameters: Array = [];
-
- if (typeof cache?.sections !== 'undefined') {
- for (const section of cache.sections) {
- if (!editingEmbeds || section.type === 'code' || section.type === 'callout') {
- const parsedCodeblocksParameters = await parseCodeblockSource(fileContentLines.slice(section.position.start.line,section.position.end.line+1),sourcePath,plugin);
- if (!editingEmbeds || parsedCodeblocksParameters.nested)
- codeblocksParameters = codeblocksParameters.concat(parsedCodeblocksParameters.codeblocksParameters);
- }
- }
- } else {
- console.error(`Metadata cache not found for file: ${sourcePath}`);
- return;
- }
- if (codeblockPreElements.length !== codeblocksParameters.length)
- return;
- try {
- for (let [key,codeblockPreElement] of Array.from(codeblockPreElements).entries()) {
- let codeblockParameters = codeblocksParameters[key];
- let codeblockCodeElement: HTMLPreElement | null = codeblockPreElement.querySelector("pre > code");
- if (!codeblockCodeElement)
- return;
- if (Array.from(codeblockCodeElement.classList).some(className => /^language-\S+/.test(className)))
- while(!codeblockCodeElement.classList.contains("is-loaded"))
- await sleep(2);
- if (codeblockCodeElement.querySelector("code [class*='code-styler-line']"))
- continue;
- if (isExcluded(codeblockParameters.language,plugin.settings.excludedLanguages) || codeblockParameters.ignore)
- continue;
- await remakeCodeblock(codeblockCodeElement,codeblockPreElement,codeblockParameters,!printing,plugin);
- }
- } catch (error) {
- console.error(`Error rendering document: ${error.message}`);
- return;
- }
-}
-
-export async function readingViewInlineDecoratingPostProcessor(element: HTMLElement, {sourcePath,getSectionInfo,frontmatter}: {sourcePath: string, getSectionInfo: (element: HTMLElement) => MarkdownSectionInformation | null, frontmatter: FrontMatterCache | undefined}, plugin: CodeStylerPlugin) {
+export async function readingViewInlineDecoratingPostProcessor(element: HTMLElement, {sourcePath}: {sourcePath: string, getSectionInfo: (element: HTMLElement) => MarkdownSectionInformation | null, frontmatter: FrontMatterCache | undefined}, plugin: CodeStylerPlugin) {
if (!sourcePath || !element)
return;
- for (let inlineCodeElement of Array.from(element.querySelectorAll(':not(pre) > code'))) {
- if (inlineCodeElement.classList.contains('code-styler-highlighted') || inlineCodeElement.classList.contains('code-styler-highlight-ignore'))
- return;
- let tempRenderContainer = createDiv();
- let renderedCodeElement: HTMLElement | null;
- let inlineCodeText = (inlineCodeElement as HTMLElement).innerText;
- let {parameters,text} = parseInlineCode(inlineCodeText);
- if (!parameters) {
- if (!text)
- return;
- MarkdownRenderer.renderMarkdown('`'.repeat(20)+text+'`'.repeat(20),tempRenderContainer,'',new Component());
- renderedCodeElement = tempRenderContainer.querySelector('code');
- if (!renderedCodeElement)
- return;
- inlineCodeElement.innerHTML = renderedCodeElement.innerHTML;
- inlineCodeElement.classList.add('code-styler-highlight-ignore');
- } else {
- MarkdownRenderer.renderMarkdown(['```',plugin.settings.currentTheme.settings.inline.syntaxHighlight?parameters.language:'','\n',text,'\n','```'].join(''),tempRenderContainer,'',new Component());
- renderedCodeElement = tempRenderContainer.querySelector('pre > code');
- if (!renderedCodeElement)
- return;
- while(plugin.settings.currentTheme.settings.inline.syntaxHighlight && !renderedCodeElement.classList.contains("is-loaded"))
- await sleep(2);
- inlineCodeElement.innerHTML = renderedCodeElement.innerHTML;
- inlineCodeElement.classList.add('code-styler-highlighted');
- inlineCodeElement.setAttribute("parameters",inlineCodeText.substring(0,inlineCodeText.lastIndexOf(text)));
- if (parameters.icon || parameters.title)
- inlineCodeElement.insertBefore(createInlineOpener(parameters,plugin.languageIcons),inlineCodeElement.childNodes[0]);
- }
+ for (const inlineCodeElement of Array.from(element.querySelectorAll(':not(pre) > code'))) {
+ await remakeInlineCode(inlineCodeElement as HTMLElement,plugin);
}
}
-
export function destroyReadingModeElements(): void {
document.querySelectorAll(".code-styler-pre-parent").forEach(codeblockPreParent => {
codeblockPreParent.classList.remove('code-styler-pre-parent');
@@ -185,102 +80,203 @@ export function destroyReadingModeElements(): void {
});
}
-async function remakeCodeblock(codeblockCodeElement: HTMLElement, codeblockPreElement: HTMLElement, codeblockParameters: CodeblockParameters, dynamic: boolean, plugin: CodeStylerPlugin) {
- function escapeHTML(plaintext: string) {
- return plaintext.replace(//g,'>').replace(/"/g,'"');
+async function renderSpecificReadingSection(codeblockPreElements: Array, sourcePath: string, codeblockSectionInfo: MarkdownSectionInformation, plugin: CodeStylerPlugin): Promise {
+ const codeblocksParameters = (await parseCodeblockSource(Array.from({length: codeblockSectionInfo.lineEnd-codeblockSectionInfo.lineStart+1}, (_,num) => num + codeblockSectionInfo.lineStart).map((lineNumber)=>codeblockSectionInfo.text.split('\n')[lineNumber]),sourcePath,plugin)).codeblocksParameters;
+ if (codeblockPreElements.length !== codeblocksParameters.length)
+ return;
+ for (const [key,codeblockPreElement] of codeblockPreElements.entries()) {
+ const codeblockParameters = codeblocksParameters[key];
+ const codeblockCodeElement = codeblockPreElement.querySelector('pre > code');
+ if (!codeblockCodeElement)
+ return;
+ if (Array.from(codeblockCodeElement.classList).some(className => /^language-\S+/.test(className)))
+ while(!codeblockCodeElement.classList.contains("is-loaded"))
+ await sleep(2);
+ if (isExcluded(codeblockParameters.language,plugin.settings.excludedLanguages) || codeblockParameters.ignore)
+ continue;
+ await remakeCodeblock(codeblockCodeElement as HTMLElement,codeblockPreElement,codeblockParameters,true,plugin);
}
-
- // Add Execute Code Observer
- if (dynamic) {
- plugin.executeCodeMutationObserver.observe(codeblockPreElement,{
- childList: true,
- subtree: true,
- attributes: true,
- characterData: true,
- });
+}
+async function retriggerProcessor(element: HTMLElement, context: {sourcePath: string, getSectionInfo: (element: HTMLElement) => MarkdownSectionInformation | null, frontmatter: FrontMatterCache | undefined}, plugin: CodeStylerPlugin, editingEmbeds: boolean) {
+ await sleep(50);
+ editingEmbeds = editingEmbeds || Boolean(element.matchParent(".cm-embed-block"));
+ if (editingEmbeds || !element.classList.contains("admonition-content")) {
+ const contentEl = element.matchParent('.view-content') as HTMLElement;
+ await readingViewCodeblockDecoratingPostProcessor(contentEl || (element.matchParent('div.print') as HTMLElement),context,plugin,editingEmbeds); // Re-render whole document
}
-
- // Add Parent Classes
- codeblockPreElement.classList.add(`code-styler-pre`);
- if (codeblockParameters.language)
- codeblockPreElement.classList.add(`language-${codeblockParameters.language}`);
- if (codeblockPreElement.parentElement)
- codeblockPreElement.parentElement.classList.add(`code-styler-pre-parent`);
-
- // Create Header
- const headerContainer = createHeader(codeblockParameters, plugin.settings.currentTheme.settings,plugin.languageIcons);
- codeblockPreElement.insertBefore(headerContainer,codeblockPreElement.childNodes[0]);
-
- if (dynamic) {
- // Add listener for header collapsing on click
- headerContainer.addEventListener("click",()=>toggleFold(codeblockPreElement));
- if (codeblockParameters.fold.enabled)
- codeblockPreElement.classList.add("code-styler-collapsed");
-
- // Line Wrapping Classes //TODO (@mayurankv) Turn these into classes (ideally phase out codeblockCodeElement)
- if (codeblockParameters.lineUnwrap.alwaysEnabled) {
- codeblockCodeElement.style.setProperty('--line-wrapping','pre');
- if (codeblockParameters.lineUnwrap.activeWrap)
- codeblockCodeElement.style.setProperty('--line-active-wrapping','pre-wrap');
- else
- codeblockCodeElement.style.setProperty('--line-active-wrapping','pre');
- } else if (codeblockParameters.lineUnwrap.alwaysDisabled)
- codeblockCodeElement.style.setProperty('--line-wrapping','pre-wrap');
- } else if (codeblockParameters.fold.enabled) //TODO (@mayurankv) Can this be removed? Is it just folding codeblocks in exports?
- codeblockPreElement.classList.add("code-styler-collapsed");
-
- // Ignore styled lines
- if (codeblockCodeElement.querySelector("code [class*='code-styler-line']"))
+}
+async function renderDocument(codeblockPreElements: Array, sourcePath: string, cache: CachedMetadata | null, editingEmbeds: boolean, printing: boolean, plugin: CodeStylerPlugin) {
+ const codeblocksParameters: Array = await getCodeblocksParameters(sourcePath,cache,plugin,editingEmbeds);
+ if (codeblocksParameters.length !== codeblockPreElements.length)
return;
- // Add line numbers
- let tree = unified().use(remarkParse).parse(codeblockCodeElement.innerHTML.replace(/\n/g,'
'));
- let stack: Array = [];
- let codeblockHTML: string = '';
- codeblockCodeElement.innerHTML = "";
- visit(tree,(node)=>{
- if (node.type === 'html' || node.type === 'text') {
- if (node.type === 'html' && node.value !== '
') {
- if (node.value.startsWith('')
- node.value = ''.repeat(stack.length)+'
'+stack.join('');
- else
- node.value = escapeHTML(node.value);
- codeblockHTML += node.value;
+ try {
+ for (const [key,codeblockPreElement] of Array.from(codeblockPreElements).entries()) {
+ const codeblockParameters = codeblocksParameters[key];
+ const codeblockCodeElement: HTMLPreElement | null = codeblockPreElement.querySelector("pre > code");
+ if (!codeblockCodeElement)
+ return;
+ if (Array.from(codeblockCodeElement.classList).some(className => /^language-\S+/.test(className)))
+ while(!codeblockCodeElement.classList.contains("is-loaded"))
+ await sleep(2);
+ if (codeblockCodeElement.querySelector("code [class*='code-styler-line']"))
+ continue;
+ if (isExcluded(codeblockParameters.language,plugin.settings.excludedLanguages) || codeblockParameters.ignore)
+ continue;
+ await remakeCodeblock(codeblockCodeElement,codeblockPreElement,codeblockParameters,!printing,plugin);
}
- });
- let codeblockLines = codeblockHTML.split('
');
- if (codeblockLines.length == 1)
- codeblockLines = ['',''];
- codeblockLines.forEach((line,index) => {
- if (index === codeblockLines.length-1)
- return;
- const lineNumber = index + 1;
- const lineWrapper = document.createElement("div");
- getLineClass(codeblockParameters,lineNumber,line).forEach((lineClass) => {
- lineWrapper.classList.add(lineClass);
- });
- codeblockCodeElement.appendChild(lineWrapper);
- let lineNumberDisplay = '';
- if (!codeblockParameters.lineNumbers.alwaysEnabled && codeblockParameters.lineNumbers.alwaysDisabled)
- lineNumberDisplay = '-hide';
- else if (codeblockParameters.lineNumbers.alwaysEnabled && !codeblockParameters.lineNumbers.alwaysDisabled)
- lineNumberDisplay = '-specific';
- lineWrapper.appendChild(createDiv({cls: `code-styler-line-number${lineNumberDisplay}`, text: (lineNumber+codeblockParameters.lineNumbers.offset).toString()}));
- lineWrapper.appendChild(createDiv({cls: `code-styler-line-text`, text: sanitizeHTMLToDom(line !== "" ? line : "
")}));
- });
+ } catch (error) {
+ console.error(`Error rendering document: ${error.message}`);
+ return;
+ }
}
-async function toggleFold(codeblockPreElement: HTMLElement) {
+async function remakeCodeblock(codeblockCodeElement: HTMLElement, codeblockPreElement: HTMLElement, codeblockParameters: CodeblockParameters, dynamic: boolean, plugin: CodeStylerPlugin) {
+ if (dynamic)
+ plugin.executeCodeMutationObserver.observe(codeblockPreElement,{childList: true,subtree: true,attributes: true,characterData: true}); // Add Execute Code Observer
+
+ insertHeader(codeblockPreElement,codeblockParameters,plugin,dynamic);
+
+ codeblockPreElement.classList.add(...getPreClasses(codeblockParameters,dynamic));
+ if (codeblockPreElement.parentElement)
+ codeblockPreElement.parentElement.classList.add(`code-styler-pre-parent`);
+
+ if (!codeblockCodeElement.querySelector("code [class*='code-styler-line']")) // Ignore styled lines
+ decorateCodeblockLines(codeblockCodeElement,codeblockParameters)
+}
+async function remakeInlineCode(inlineCodeElement: HTMLElement, plugin: CodeStylerPlugin): Promise {
+ if (inlineCodeElement.classList.contains('code-styler-inline'))
+ return;
+ const inlineCodeText = inlineCodeElement.innerText;
+ const {parameters,text} = parseInlineCode(inlineCodeText);
+ if (parameters && plugin.settings.currentTheme.settings.inline.syntaxHighlight)
+ inlineCodeElement.innerHTML = await getHighlightedHTML(parameters,text,plugin);
+ else if ((!parameters && text) || (parameters && !plugin.settings.currentTheme.settings.inline.syntaxHighlight))
+ inlineCodeElement.innerHTML = text;
+ else
+ return;
+
+ inlineCodeElement.classList.add('code-styler-inline');
+ if (parameters) {
+ const parameterString = inlineCodeText.substring(0,inlineCodeText.lastIndexOf(text));
+ inlineCodeElement.setAttribute("parameters",parameterString); // Store parameter string as attribute so original text can be restored on plugin removal
+ if (parameters.icon || parameters.title)
+ inlineCodeElement.insertBefore(createInlineOpener(parameters,plugin.languageIcons),inlineCodeElement.childNodes[0]);
+ }
+}
+
+async function getCodeblockPreElements(element: HTMLElement, specific: boolean,editingEmbeds: boolean): Promise> {
+ let codeblockPreElements: Array;
+ if (!editingEmbeds && !specific)
+ codeblockPreElements = Array.from(element.querySelectorAll('.markdown-reading-view pre:not(.frontmatter)'));
+ else if (editingEmbeds && !specific)
+ codeblockPreElements = Array.from(element.querySelectorAll('.markdown-source-view .cm-embed-block pre:not(.frontmatter)'));
+ else if (!editingEmbeds && specific) {
+ codeblockPreElements = Array.from(element.querySelectorAll('pre:not(.frontmatter)'));
+ const admonitionCodeElement = codeblockPreElements?.[0]?.querySelector('pre:not([class]) > code[class*="language-ad-"]');
+ if (admonitionCodeElement) {
+ await sleep(50);
+ codeblockPreElements = Array.from(element.querySelectorAll('pre:not(.frontmatter)'));
+ }
+ } else
+ codeblockPreElements = [];
+ return codeblockPreElements
+}
+async function getCodeblocksParameters(sourcePath: string, cache: CachedMetadata | null, plugin: CodeStylerPlugin, editingEmbeds: boolean): Promise> {
+ let codeblocksParameters: Array = [];
+ const fileContentLines = await getFileContentLines(sourcePath,plugin);
+ if (!fileContentLines)
+ return [];
+
+ if (typeof cache?.sections !== 'undefined') {
+ for (const section of cache.sections) {
+ if (!editingEmbeds || section.type === 'code' || section.type === 'callout') {
+ const parsedCodeblocksParameters = await parseCodeblockSource(fileContentLines.slice(section.position.start.line,section.position.end.line+1),sourcePath,plugin);
+ if (!editingEmbeds || parsedCodeblocksParameters.nested)
+ codeblocksParameters = codeblocksParameters.concat(parsedCodeblocksParameters.codeblocksParameters);
+ }
+ }
+ } else
+ console.error(`Metadata cache not found for file: ${sourcePath}`);
+ return codeblocksParameters;
+}
+async function toggleFold(codeblockPreElement: HTMLElement): Promise {
codeblockPreElement.querySelectorAll('pre > code').forEach((codeblockCodeElement: HTMLElement)=>codeblockCodeElement.style.setProperty('max-height',`calc(${Math.ceil(codeblockCodeElement.scrollHeight+0.01)}px + var(--code-padding) * ${codeblockCodeElement.classList.contains('execute-code-output')?'3.5 + var(--header-separator-width)':'2'})`));
await sleep(1);
codeblockPreElement.classList.toggle("code-styler-collapsed");
await sleep(TRANSITION_LENGTH);
codeblockPreElement.querySelectorAll('pre > code').forEach((codeblockCodeElement: HTMLElement)=>codeblockCodeElement.style.removeProperty('max-height'));
}
+function insertHeader(codeblockPreElement: HTMLElement, codeblockParameters: CodeblockParameters, plugin: CodeStylerPlugin, dynamic: boolean): void {
+ const headerContainer = createHeader(codeblockParameters, plugin.settings.currentTheme.settings,plugin.languageIcons);
+ if (dynamic)
+ headerContainer.addEventListener("click",()=>{toggleFold(codeblockPreElement)}); // Add listener for header collapsing on click
+ codeblockPreElement.insertBefore(headerContainer,codeblockPreElement.childNodes[0]);
+}
+function getPreClasses(codeblockParameters: CodeblockParameters, dynamic: boolean): Array {
+ const preClassList = ['code-styler-pre'];
+ if (codeblockParameters.language)
+ preClassList.push(`language-${codeblockParameters.language}`);
+ if (dynamic) {
+ if (codeblockParameters.fold.enabled)
+ preClassList.push("code-styler-collapsed");
+ if (codeblockParameters.lineUnwrap.alwaysEnabled)
+ preClassList.push(codeblockParameters.lineUnwrap.activeWrap?'unwrapped-inactive':'unwrapped');
+ else if (codeblockParameters.lineUnwrap.alwaysDisabled)
+ preClassList.push('unwrapped');
+ }
+ return preClassList;
+}
+function decorateCodeblockLines(codeblockCodeElement: HTMLElement, codeblockParameters: CodeblockParameters): void {
+ getCodeblockLines(codeblockCodeElement).forEach((line,index,codeblockLines) => {
+ if (index !== codeblockLines.length-1)
+ insertLineWrapper(codeblockCodeElement,codeblockParameters,index+1,line);
+ });
+}
+function getCodeblockLines(codeblockCodeElement: HTMLElement): Array {
+ function escapeHTML(plaintext: string) {
+ return plaintext.replace(//g,'>').replace(/"/g,'"');
+ }
+
+ const tree = unified().use(remarkParse).parse(codeblockCodeElement.innerHTML.replace(/\n/g,'
'));
+ const stack: Array = [];
+ let codeblockHTML = '';
+ visit(tree,['text','html'],(node)=>{
+ if (node.type === 'html' && node.value !== '
') {
+ if (node.value.startsWith('')
+ node.value = ''.repeat(stack.length)+'
'+stack.join('');
+ else if (node.type === 'text')
+ node.value = escapeHTML(node.value);
+ if ('value' in node)
+ codeblockHTML += node.value;
+ });
+ let codeblockLines = codeblockHTML.split('
');
+ if (codeblockLines.length == 1)
+ codeblockLines = ['',''];
+ codeblockCodeElement.innerHTML = "";
+ return codeblockLines;
+}
+function insertLineWrapper(codeblockCodeElement: HTMLElement, codeblockParameters: CodeblockParameters, lineNumber: number, line: string): void {
+ const lineWrapper = document.createElement("div");
+ codeblockCodeElement.appendChild(lineWrapper);
+ getLineClasses(codeblockParameters,lineNumber,line).forEach((lineClass) => lineWrapper.classList.add(lineClass));
+ lineWrapper.appendChild(createDiv({cls: `code-styler-line-number${getLineNumberDisplay(codeblockParameters)}`, text: (lineNumber+codeblockParameters.lineNumbers.offset).toString()}));
+ lineWrapper.appendChild(createDiv({cls: `code-styler-line-text`, text: sanitizeHTMLToDom(line !== "" ? line : "
")}));
+}
+async function getHighlightedHTML(parameters: InlineCodeParameters, text: string, plugin: CodeStylerPlugin): Promise {
+ const temporaryRenderingContainer = createDiv();
+ MarkdownRenderer.renderMarkdown(['```',parameters.language,'\n',text,'\n','```'].join(''),temporaryRenderingContainer,'',new Component());
+ const renderedCodeElement = temporaryRenderingContainer.querySelector('code');
+ if (!renderedCodeElement)
+ return 'ERROR: Could not render highlighted code';
+ while(plugin.settings.currentTheme.settings.inline.syntaxHighlight && !renderedCodeElement.classList.contains("is-loaded"))
+ await sleep(2);
+ return renderedCodeElement.innerHTML;
+}
export const executeCodeMutationObserver = new MutationObserver((mutations) => {
mutations.forEach((mutation: MutationRecord) => {
diff --git a/src/SettingsTab.ts b/src/SettingsTab.ts
index 225fd20..5b968f9 100644
--- a/src/SettingsTab.ts
+++ b/src/SettingsTab.ts
@@ -4,7 +4,6 @@ import { ColorTranslator } from "colortranslator";
import CodeStylerPlugin from "./main";
import { Colour, CSS, HEX, Display, CodeStylerSettings, CodeStylerThemeColours, PARAMETERS, DEFAULT_SETTINGS, LANGUAGE_NAMES, LANGUAGE_ICONS_DATA } from './Settings';
-import { todo } from "node:test";
const DISPLAY_OPTIONS: Record = {
"none": "Never",
@@ -261,7 +260,7 @@ export class SettingsTab extends PluginSettingTab {
new Setting(containerEl)
.setName('Highlight Line Numbers')
.setDesc('If enabled, highlights will also highlight the line numbers.')
- .addToggle(toggle => {let highlightLineNumbersToggle = toggle
+ .addToggle(toggle => {const highlightLineNumbersToggle = toggle
.setValue(this.plugin.settings.currentTheme.settings.gutter.highlight)
.setDisabled(!this.plugin.settings.currentTheme.settings.codeblock.lineNumbers)
.onChange((value) => {
@@ -274,7 +273,7 @@ export class SettingsTab extends PluginSettingTab {
.setName('Indicate Current Line Number')
.setDesc('If enabled, the current line number in codeblocks will be indicated with a separate colour.')
.setClass('code-styler-spaced')
- .addToggle(toggle => {let indicateCurrentLineNumberToggle = toggle
+ .addToggle(toggle => {const indicateCurrentLineNumberToggle = toggle
.setValue(this.plugin.settings.currentTheme.settings.gutter.activeLine)
.setDisabled(!this.plugin.settings.currentTheme.settings.codeblock.lineNumbers)
.onChange((value) => {
@@ -908,13 +907,7 @@ export class SettingsTab extends PluginSettingTab {
} else {
try {
this.plugin.settings.redirectLanguages = JSON.parse(value);
- Object.entries(this.plugin.settings.redirectLanguages).forEach(([languageName, languageSettings]: [string, {colour?: Colour, icon?: string}])=>{
- if ('icon' in languageSettings) {
- if (LANGUAGE_NAMES[languageName] in this.plugin.languageIcons)
- URL.revokeObjectURL(this.plugin.languageIcons[LANGUAGE_NAMES[languageName]]);
- this.plugin.languageIcons[LANGUAGE_NAMES[languageName]] = URL.createObjectURL(new Blob([``], { type: "image/svg+xml" }));
- }
- });
+ this.redirectLanguages();
(async () => {await this.plugin.saveSettings()})();
} catch {
new Notice('Invalid JSON'); //NOSONAR
@@ -933,9 +926,20 @@ export class SettingsTab extends PluginSettingTab {
donationDiv.appendChild(donationButton);
}
+ // Setting Parsing
+ redirectLanguages() {
+ Object.entries(this.plugin.settings.redirectLanguages).forEach(([languageName, languageSettings]: [string, {colour?: Colour, icon?: string}])=>{
+ if ('icon' in languageSettings) {
+ if (LANGUAGE_NAMES[languageName] in this.plugin.languageIcons)
+ URL.revokeObjectURL(this.plugin.languageIcons[LANGUAGE_NAMES[languageName]]);
+ this.plugin.languageIcons[LANGUAGE_NAMES[languageName]] = URL.createObjectURL(new Blob([``], { type: "image/svg+xml" }));
+ }
+ });
+ }
+
// Setting Creation
createPickr(plugin: CodeStylerPlugin, containerEl: HTMLElement, setting: Setting, id: string, getRelevantThemeColour: (relevantThemeColours: CodeStylerThemeColours)=>Colour, saveRelevantThemeColour: (relevantThemeColours: CodeStylerThemeColours, saveColour: Colour)=>void, disabled?: ()=>boolean) {
- let pickr: PickrResettable = new PickrResettable(plugin,containerEl,setting,getRelevantThemeColour,saveRelevantThemeColour);
+ const pickr: PickrResettable = new PickrResettable(plugin,containerEl,setting,getRelevantThemeColour,saveRelevantThemeColour);
pickr
.on('show', (colour: Pickr.HSVaColor, instance: Pickr) => {
if (typeof disabled !== 'undefined' && disabled())
@@ -958,7 +962,7 @@ export class SettingsTab extends PluginSettingTab {
this.pickrs[id]=pickr;
}
- // Setting Updates
+ // Setting Tab Updates
updateDropdown(dropdown: DropdownComponent, settings: CodeStylerSettings) {
dropdown.selectEl.empty();
Object.keys(settings.themes).forEach((theme_name: string) => {
@@ -1068,7 +1072,7 @@ function calc(calcString: string): string {
return calcString;
}
function getCssVariable(cssVariable: CSS): HEX {
- let variableValue = window.getComputedStyle(document.body).getPropertyValue(cssVariable).trim();
+ const variableValue = window.getComputedStyle(document.body).getPropertyValue(cssVariable).trim();
if (typeof variableValue === "string" && variableValue.trim().startsWith('#'))
return `#${variableValue.trim().substring(1)}`;
else if (variableValue.startsWith('rgb'))
@@ -1080,7 +1084,7 @@ function getCssVariable(cssVariable: CSS): HEX {
return `#${ColorTranslator.toHEXA(variableValue).substring(1)}`;
}
export function getColour(themeColour: Colour): Colour {
- return isCss(themeColour)?getCssVariable(themeColour):themeColour;;
+ return isCss(themeColour)?getCssVariable(themeColour):themeColour;
}
function getCurrentMode() {
diff --git a/src/css/codeblocks.css b/src/css/codeblocks.css
index a949b4e..a28e749 100644
--- a/src/css/codeblocks.css
+++ b/src/css/codeblocks.css
@@ -34,6 +34,17 @@
overflow-x: overlay;
white-space: var(--line-wrapping);
}
+.code-styler pre.code-styler-pre.wrapped > code {
+ --line-wrapping: pre-wrap;
+}
+.code-styler pre.code-styler-pre.unwrapped > code {
+ --line-wrapping: pre;
+ --line-active-wrapping: pre;
+}
+.code-styler pre.code-styler-pre.unwrapped-inactive > code {
+ --line-wrapping: pre;
+ --line-active-wrapping: pre-wrap;
+}
.code-styler pre.code-styler-pre code:not(:has( > input[style*="display: inline;"])):active {
--line-wrapping: var(--line-active-wrapping) !important;
}
diff --git a/src/main.ts b/src/main.ts
index c5a4cc4..a80459a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -42,7 +42,7 @@ export default class CodeStylerPlugin extends Plugin {
let zoomTimeout: NodeJS.Timeout = setTimeout(()=>{});
this.registerEvent(this.app.workspace.on('css-change',()=>{
updateStyling(this.settings,this.app); // Update styling on css changes
- let currentFontSize = document.body.getCssPropertyValue('--font-text-size');
+ const currentFontSize = document.body.getCssPropertyValue('--font-text-size');
if (this.sizes.font !== currentFontSize) {
this.sizes.font = currentFontSize;
clearTimeout(zoomTimeout);
@@ -52,7 +52,7 @@ export default class CodeStylerPlugin extends Plugin {
}
},this));
this.registerEvent(this.app.workspace.on('resize',()=>{
- let currentZoomSize = document.body.getCssPropertyValue('--zoom-factor');
+ const currentZoomSize = document.body.getCssPropertyValue('--zoom-factor');
if (this.sizes.zoom !== currentZoomSize) {
this.sizes.zoom = currentZoomSize;
clearTimeout(zoomTimeout);
diff --git a/styles.css b/styles.css
index ffdb4ea..8a65821 100644
--- a/styles.css
+++ b/styles.css
@@ -37,6 +37,17 @@
overflow-x: overlay;
white-space: var(--line-wrapping);
}
+.code-styler pre.code-styler-pre.wrapped > code {
+ --line-wrapping: pre-wrap;
+}
+.code-styler pre.code-styler-pre.unwrapped > code {
+ --line-wrapping: pre;
+ --line-active-wrapping: pre;
+}
+.code-styler pre.code-styler-pre.unwrapped-inactive > code {
+ --line-wrapping: pre;
+ --line-active-wrapping: pre-wrap;
+}
.code-styler pre.code-styler-pre code:not(:has(> input[style*="display: inline;"])):active {
--line-wrapping: var(--line-active-wrapping) !important;
}
@@ -1186,4 +1197,4 @@ body {
width: 400px;
height: 220px;
}
-/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2Nzcy9jb2RlYmxvY2tzLmNzcyIsICJzcmMvY3NzL2lubGluZUNvZGUuY3NzIiwgInNyYy9jc3MvcGRmRXhwb3J0LmNzcyIsICJzcmMvY3NzL3BpY2tyLmNzcyIsICJzcmMvY3NzL3BsdWdpbkNvbXBhdGliaWxpdHkuY3NzIiwgInNyYy9zdHlsZXMuY3NzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiogUHJlIGVsZW1lbnRzICovXG4uY29kZS1zdHlsZXItcHJlLXBhcmVudHtcblx0bWFyZ2luLWJvdHRvbTogMTZweDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlIHtcblx0YmFja2dyb3VuZDogdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAhaW1wb3J0YW50O1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKSAhaW1wb3J0YW50O1xuXHRtaW4taGVpZ2h0OiB1bnNldDtcblx0cGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG5cdG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlW2NsYXNzKj0nbGFuZ3VhZ2UtJ10ge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWxhbmd1YWdlLWJvcmRlci1jb2xvdXIpLCB2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpLCB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCksIHZhcigtLWNvZGUtc3R5bGVyLWNvZGVibG9jay1iYWNrZ3JvdW5kLWNvbG91cikgMTAwJSkgIWltcG9ydGFudDtcblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgY29kZSB7XG5cdHBhZGRpbmctdG9wOiB2YXIoLS1jb2RlLXBhZGRpbmcpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctYm90dG9tOiB2YXIoLS1jb2RlLXBhZGRpbmcpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgcHJlLmNvZGUtc3R5bGVyLXByZSA+IGNvZGUge1xuXHRkaXNwbGF5OiBncmlkO1xuXHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IGF1dG87XG5cdGdyaWQtdGVtcGxhdGUtcm93czogYXV0bztcblx0cGFkZGluZy10b3A6IHZhcigtLWNvZGUtcGFkZGluZykgIWltcG9ydGFudDtcblx0cGFkZGluZy1ib3R0b206IHZhcigtLWNvZGUtcGFkZGluZykgIWltcG9ydGFudDtcblx0cGFkZGluZy1sZWZ0OiAwcHggIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuXHRiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG5cdHRyYW5zaXRpb24tcHJvcGVydHk6IG1heC1oZWlnaHQsIHBhZGRpbmcsIGJvcmRlci10b3A7XG5cdHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDtcblx0bWF4LWhlaWdodDogdW5zZXQ7XG5cdG92ZXJmbG93LXg6IG92ZXJsYXk7XG5cdHdoaXRlLXNwYWNlOiB2YXIoLS1saW5lLXdyYXBwaW5nKTtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlIGNvZGU6bm90KDpoYXMoID4gaW5wdXRbc3R5bGUqPVwiZGlzcGxheTogaW5saW5lO1wiXSkpOmFjdGl2ZSB7XG5cdC0tbGluZS13cmFwcGluZzogdmFyKC0tbGluZS1hY3RpdmUtd3JhcHBpbmcpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgcHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgPiBjb2RlIHtcblx0cGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcblx0cGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcblx0bWF4LWhlaWdodDogMCAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIHByZS5jb2RlLXN0eWxlci1wcmU6OmJlZm9yZSxcbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlOjphZnRlciB7XG5cdGNvbnRlbnQ6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5jbS1lbWJlZC1ibG9jayBwcmUuY29kZS1zdHlsZXItcHJlIHtcblx0bWFyZ2luOiAxZW0gMHB4O1xufVxuXG4vKiogRWRpdGluZyBNb2RlIEJvZHkgKi9cbi5jb2RlLXN0eWxlciAubWFya2Rvd24tc291cmNlLXZpZXcgW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4ge1xuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwcHggIWltcG9ydGFudDtcblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IFtjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLkh5cGVyTUQtY29kZWJsb2NrLWVuZCB7XG5cdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG59XG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoIGltZy5jb2RlLXN0eWxlci1pY29uKSkgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5IC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoW2NsYXNzKj0nY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy0nXSkpICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ10pICsgW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5IC5tYXJrZG93bi1zb3VyY2UtdmlldyBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXS5IeXBlck1ELWNvZGVibG9jay1iZWdpbjpudGgtb2YtdHlwZSgxKSB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cykgIWltcG9ydGFudDtcblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tZ3JhZGllbnQtYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3ApLCB0cmFuc3BhcmVudCAxMDAlKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tc2l6ZS00LTQpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXVtjbGFzcyo9J2xhbmd1YWdlLSddIHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSwgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLWNvbG91cikgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSwgdmFyKC0tZ3JhZGllbnQtYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCkgdmFyKC0tZ3JhZGllbnQtaGlnaGxpZ2h0cy1jb2xvdXItc3RvcCksIHRyYW5zcGFyZW50IDEwMCUpLCB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXVtjbGFzcyo9J2xhbmd1YWdlLSddIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHRtYXJnaW4tbGVmdDogdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKTtcbn1cblxuLyoqIEhlYWRlciBzdHlsaW5nICovXG5ib2R5Om5vdChbY2xhc3MqPSdjb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucyddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYyBkaXY6aGFzKD4gaW1nLmNvZGUtc3R5bGVyLWljb24pLFxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cykgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIgZGl2Omhhcyg+IGltZy5jb2RlLXN0eWxlci1pY29uKSB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5ib2R5Om5vdChbY2xhc3MqPSdjb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcyddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYyBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSxcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKCBpbWcuY29kZS1zdHlsZXItaWNvbikpIHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdChbY2xhc3MqPSdsYW5ndWFnZS0nXSksXG5ib2R5IHByZS5jb2RlLXN0eWxlci1wcmU6bm90KFtjbGFzcyo9J2xhbmd1YWdlLSddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbltjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdGZvbnQtc2l6ZTogdmFyKC0taGVhZGVyLWZvbnQtc2l6ZSk7XG5cdHVzZXItc2VsZWN0OiBub25lO1xuXHRoZWlnaHQ6IHZhcigtLWNvbnRhaW5lci1oZWlnaHQpO1xuXHRtaW4taGVpZ2h0OiB2YXIoLS1jb250YWluZXItbWluLWhlaWdodCk7XG5cdHBhZGRpbmctdG9wOiB2YXIoLS1oZWFkZXItcGFkZGluZyk7XG5cdG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyAgXG5cdGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcblx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdHRyYW5zaXRpb246IGJvcmRlci1ib3R0b20gZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0Ym94LXNpemluZzogY29udGVudC1ib3g7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYmFja2dyb3VuZC1jb2xvdXIpIDAlLHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG91cikgY2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLCB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItc2VwYXJhdG9yLWNvbG91cikgY2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLCB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItc2VwYXJhdG9yLWNvbG91cikgMTAwJSkgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSBib3R0b20vMTAwJSBib3JkZXItYm94IG5vLXJlcGVhdCx2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCk7XG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG5cdHBhZGRpbmctYm90dG9tOiB2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKTtcblx0Ym9yZGVyLXRvcDogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJvcmRlcik7XG5cdGJvcmRlci1sZWZ0OiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcblx0Ym9yZGVyLXJpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIHtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJhY2tncm91bmQtY29sb3VyKTtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkgc29saWQgdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLXNlcGFyYXRvci1jb2xvdXIpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ106bm90KDpoYXMoKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4pKSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYmFja2dyb3VuZC1jb2xvdXIpIDAlLHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG91cikgMTAwJSkgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSBib3R0b20vMTAwJSBib3JkZXItYm94IG5vLXJlcGVhdCx2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWJvdHRvbTogdmFyKC0taGVhZGVyLXBhZGRpbmcpO1xuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcblx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItYm90dG9tOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0tY29sbGFwc2VkLWJvdHRvbS1ib3JkZXIpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIHtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0tY29sbGFwc2VkLWJvdHRvbS1ib3JkZXIpO1xufVxuW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0aGVpZ2h0OiAxMDAlO1xuXHRwYWRkaW5nLWxlZnQ6IHZhcigtLWhlYWRlci1zcGFjaW5nKTtcblx0cGFkZGluZy1yaWdodDogdmFyKC0taGVhZGVyLXNwYWNpbmcpO1xuXHRtYXJnaW4tcmlnaHQ6IHZhcigtLWhlYWRlci1zcGFjaW5nKTtcblx0cGFkZGluZy10b3A6IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0cGFkZGluZy1ib3R0b206IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0Zm9udC1zaXplOiBpbmhlcml0O1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKSB2YXIoLS1ib3JkZXItcmFkaXVzKSAwcHggMHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLWJhY2tncm91bmQtY29sb3VyKTtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctdGV4dC1jb2xvdXIpO1xuXHRmb250LXdlaWdodDogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy10ZXh0LWJvbGQsIG5vcm1hbCk7XG5cdGZvbnQtc3R5bGU6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctdGV4dC1pdGFsaWMsIG5vcm1hbCk7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0dHJhbnNpdGlvbjogYm9yZGVyLXJhZGl1cyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBwYWRkaW5nIGVhc2UtaW4tb3V0IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTpub3QoOmhhcygrIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbikpIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdLFxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG59XG4uY29kZS1zdHlsZXItaGVhZGVyLXRleHQge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0YWxpZ24tY29udGVudDogY2VudGVyO1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRwYWRkaW5nLWxlZnQ6IDBweDtcblx0cGFkZGluZy10b3A6IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0cGFkZGluZy1ib3R0b206IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0Zm9udC1zaXplOiBpbmhlcml0O1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLXRleHQtY29sb3VyKTtcblx0Zm9udC13ZWlnaHQ6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci10aXRsZS10ZXh0LWJvbGQsIG5vcm1hbCk7XG5cdGZvbnQtc3R5bGU6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci10aXRsZS10ZXh0LWl0YWxpYywgbm9ybWFsKTtcblx0dHJhbnNpdGlvbjogcGFkZGluZyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxuYm9keTpub3QoW2NsYXNzKj0nY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMnXSkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWMgW2NsYXNzXj1cImNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSxcbmJvZHkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWM6bm90KDpoYXMoIGRpdiA+IGltZy5jb2RlLXN0eWxlci1pY29uKSkgW2NsYXNzXj1cImNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0geyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50O1xufVxuYm9keTpub3QoW2NsYXNzKj0nY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMnXSk6bm90KFtjbGFzcyo9J2NvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzJ10pIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCxcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCxcbmJvZHkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWM6bm90KDpoYXMoIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLVwiXSkpIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1oZWFkZXItc3BhY2luZyk7XG59XG5kaXY6aGFzKD4gaW1nLmNvZGUtc3R5bGVyLWljb24pIHtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRhbGlnbi1jb250ZW50OiBjZW50ZXI7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdHBhZGRpbmctdG9wOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdHBhZGRpbmctYm90dG9tOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0taGVhZGVyLXNwYWNpbmcpO1xuXHRwYWRkaW5nLXJpZ2h0OiB2YXIoLS1oZWFkZXItc3BhY2luZyk7XG5cdHRyYW5zaXRpb246IHBhZGRpbmcgZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcbn1cbi5jb2RlLXN0eWxlci1pY29uIHtcblx0d2lkdGg6IHZhcigtLWxhbmd1YWdlLWljb24tc2l6ZSk7XG5cdGhlaWdodDogdmFyKC0tbGFuZ3VhZ2UtaWNvbi1zaXplKTtcblx0ZmlsdGVyOiB2YXIoLS1sYW5ndWFnZS1pY29uLWZpbHRlcik7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyoqIExpbmVzICovXG5wcmUuY29kZS1zdHlsZXItcHJlIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtaGlnaGxpZ2h0ZWQnXSA+IC5jb2RlLXN0eWxlci1saW5lLXRleHQge1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWdyYWRpZW50LWJhY2tncm91bmQtY29sb3VyKSAwJSB2YXIoLS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAxMDAlKTtcbn1cbi5jb2RlLXN0eWxlci1saW5lLWhpZ2hsaWdodGVkIHtcblx0LS1ncmFkaWVudC1iYWNrZ3JvdW5kLWNvbG91cjogdmFyKC0tY29kZS1zdHlsZXItZGVmYXVsdC1oaWdobGlnaHQtY29sb3VyKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodCAuY20tYWN0aXZlLFxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1lZGl0b3IgLmNtLWFjdGl2ZSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tY29kZS1zdHlsZXItYWN0aXZlLWVkaXRvci1saW5lLWNvbG91ciksIHZhcigtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3ApLCB0cmFuc3BhcmVudCkgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLmNtLWFjdGl2ZSxcbi5jb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQtY29kZWJsb2NrIC5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2tbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXS5jbS1hY3RpdmUge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHZhcigtLWNvZGUtc3R5bGVyLWFjdGl2ZS1jb2RlYmxvY2stbGluZS1jb2xvdXIpLCB2YXIoLS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSkgIWltcG9ydGFudDtcbn1cblxuLyoqIExpbmUgbnVtYmVycyAqL1xuLmNvZGUtc3R5bGVyOm5vdCguY29kZS1zdHlsZXItc2hvdy1saW5lLW51bWJlcnMpIC5jb2RlLXN0eWxlci1saW5lLW51bWJlcixcbi5jb2RlLXN0eWxlci1saW5lLW51bWJlci1oaWRlIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5jb2RlLXN0eWxlciBjb2RlID4gZGl2OmZpcnN0LWNoaWxkID4gW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7IC8qPyBNYWludGFpbiBndXR0ZXIgY29sb3VyIHdoZW4gcGFkZGVkICovXG5cdGJveC1zaGFkb3c6IDBweCBjYWxjKC0xICogdmFyKC0tY29kZS1wYWRkaW5nKSkgdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcblx0dHJhbnNpdGlvbjogYm94LXNoYWRvdyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxuLmNvZGUtc3R5bGVyIC5jb2RlLXN0eWxlci1jb2xsYXBzZWQgPiBjb2RlID4gZGl2OmZpcnN0LWNoaWxkID4gW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7IC8qPyBNYWludGFpbiBndXR0ZXIgY29sb3VyIHdoZW4gcGFkZGVkICovXG5cdGJveC1zaGFkb3c6IDBweCAwcHggdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcbn1cbi5jb2RlLXN0eWxlciBjb2RlID4gZGl2Omxhc3QtY2hpbGQgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHsgLyo/IE1haW50YWluIGd1dHRlciBjb2xvdXIgd2hlbiBwYWRkZWQgKi9cblx0Ym94LXNoYWRvdzogMHB4IHZhcigtLWNvZGUtcGFkZGluZykgdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcbn1cbi5jb2RlLXN0eWxlciBjb2RlID4gZGl2Om9ubHktY2hpbGQgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHsgLyo/IE1haW50YWluIGd1dHRlciBjb2xvdXIgd2hlbiBwYWRkZWQgKi9cblx0Ym94LXNoYWRvdzogMHB4IGNhbGMoLTEgKiB2YXIoLS1jb2RlLXBhZGRpbmcpKSB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItYmFja2dyb3VuZC1jb2xvdXIpLDBweCB2YXIoLS1jb2RlLXBhZGRpbmcpIHZhcigtLWNvZGUtc3R5bGVyLWd1dHRlci1iYWNrZ3JvdW5kLWNvbG91cik7XG59XG5bY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0cGFkZGluZy1sZWZ0OiBjYWxjKDRweCArIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCkpO1xuXHRwYWRkaW5nLXJpZ2h0OiA4cHg7XG5cdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRtaW4td2lkdGg6IHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1taW4td2lkdGgpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItYmFja2dyb3VuZC1jb2xvdXIpO1xuXHRmb250LXNpemU6IHZhcigtLWNvZGUtc2l6ZSk7XG5cdGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9zcGFjZSk7XG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItdGV4dC1jb2xvdXIpO1xuXHR1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2sgLmNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyLFxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jayAuY29kZS1zdHlsZXItbGluZS1udW1iZXItc3BlY2lmaWMge1xuXHRwYWRkaW5nLXRvcDogdmFyKC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb24pO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGhlaWdodDogMTAwJTtcblx0bWluLXdpZHRoOiBjYWxjKHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1taW4td2lkdGgpIC0gMTJweCk7XG5cdG92ZXJmbG93LXg6IGF1dG87XG5cdGRpcmVjdGlvbjogcnRsO1xuXHRsZWZ0OiAwO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiAuY29kZS1zdHlsZXItbGluZS1udW1iZXIsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luIC5jb2RlLXN0eWxlci1saW5lLW51bWJlci1zcGVjaWZpYyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2stZW5kIC5jb2RlLXN0eWxlci1saW5lLW51bWJlcixcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2stZW5kIC5jb2RlLXN0eWxlci1saW5lLW51bWJlci1zcGVjaWZpYyB7XG5cdHdpZHRoOiB2YXIoLS1saW5lLW51bWJlci1ndXR0ZXItd2lkdGgpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0Z3JpZC1jb2x1bW46IDE7XG5cdHBvc2l0aW9uOiBzdGlja3k7XG5cdHRvcDogLTFweDtcblx0bGVmdDogMDtcblx0Ym9yZGVyLXRvcDogdmFyKC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb24pIHNvbGlkIHRyYW5zcGFyZW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBkaXY6bGFzdC1jaGlsZCA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHR3aWR0aDogdW5zZXQ7XG59XG4uY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCBwcmUuY29kZS1zdHlsZXItcHJlIFtjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lLWhpZ2hsaWdodGVkXCJdIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ncmFkaWVudC1iYWNrZ3JvdW5kLWNvbG91cik7XG59XG4uY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LmNvZGUtc3R5bGVyLWd1dHRlci1oaWdobGlnaHQgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLmNtLWFjdGl2ZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddLFxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1jb2RlYmxvY2suY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uY20tYWN0aXZlIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10sXG4uY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZS1oaWdobGlnaHRlZFwiXSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwKTtcbn1cbi5jb2RlLXN0eWxlci1ndXR0ZXItYWN0aXZlLWxpbmUgLmNtLWFjdGl2ZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlcidde1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWFjdGl2ZS10ZXh0LWNvbG91cik7XG59XG4uY29kZS1zdHlsZXIuY29kZS1zdHlsZXItc2hvdy1saW5lLW51bWJlcnMgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jazpoYXMoLmNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyKSxcbi5jb2RlLXN0eWxlci5jb2RlLXN0eWxlci1zaG93LWxpbmUtbnVtYmVycyAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrOmhhcyguY29kZS1zdHlsZXItbGluZS1udW1iZXItc3BlY2lmaWMpIHtcblx0cGFkZGluZy1sZWZ0OiBjYWxjKDEycHggKyB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpICsgdmFyKC0tbGluZS1udW1iZXItZ3V0dGVyLXdpZHRoKSArIHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1wYWRkaW5nKSkgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrW2NsYXNzKj0nY29kZS1zdHlsZXItbGluZSddOjpiZWZvcmUge1xuXHRjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qKiBMaW5lIHRleHQgKi9cbnByZS5jb2RlLXN0eWxlci1wcmUgPiBjb2RlID4gZGl2W2NsYXNzKj0nY29kZS1zdHlsZXItbGluZSddIHtcblx0ZGlzcGxheTogY29udGVudHMgIWltcG9ydGFudDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgLmNvZGUtc3R5bGVyLWxpbmUtdGV4dCB7XG5cdGZsZXgtYmFzaXM6IDEwMCU7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tbGluZS1udW1iZXItZ3V0dGVyLXBhZGRpbmcpO1xuXHRncmlkLWNvbHVtbjogMjtcbn1cbi5IeXBlck1ELWNvZGVibG9jazpoYXMoPiAuY20td2lkZ2V0QnVmZmVyKSB7IC8qPyBQcmV2ZW50IExpbmUgV3JhcHMgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5IeXBlck1ELWNvZGVibG9jazpoYXMoPiAuY20td2lkZ2V0QnVmZmVyKSA+IC5jbS1obWQtY29kZWJsb2NrIHsgLyo/IFByZXZlbnQgTGluZSBXcmFwcyAqL1xuXHR3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzO1xufVxuXG4vKiogU2Nyb2xsIEJhciAqL1xucHJlLmNvZGUtc3R5bGVyLXByZTo6LXdlYmtpdC1zY3JvbGxiYXIsXG5wcmUuY29kZS1zdHlsZXItcHJlID4gY29kZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xuXHR3aWR0aDogdmFyKC0tY29kZS1wYWRkaW5nKSAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IHZhcigtLWNvZGUtcGFkZGluZykgIWltcG9ydGFudDtcbn1cblxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyLFxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgY29kZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4vKiogQnV0dG9ucyAqL1xuQGtleWZyYW1lcyBvdXRkZW50IHtcblx0ZnJvbSB7XG5cdFx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKSAtIHZhcigtLWRlbnQtZGlmZmVyZW5jZSkpO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1pbik7XG5cdH1cblx0dG8ge1xuXHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG59XG5Aa2V5ZnJhbWVzIGluZGVudCB7XG5cdGZyb20ge1xuXHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG5cdHRvIHtcblx0XHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pIC0gdmFyKC0tZGVudC1kaWZmZXJlbmNlKSk7XG5cdFx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcblx0fVxufVxuQGtleWZyYW1lcyByZXZlcnNlLW91dGRlbnQge1xuXHRmcm9tIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xuXHR9XG5cdHRvIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcblx0fVxufVxuQGtleWZyYW1lcyByZXZlcnNlLWluZGVudCB7XG5cdGZyb20ge1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG5cdHRvIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xuXHR9XG59XG4ubWFya2Rvd24tcmVuZGVyZWQgcHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24ge1xuICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSwgb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRvcGFjaXR5OiAxO1xuXHRkaXNwbGF5OiB1bnNldCAhaW1wb3J0YW50O1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cikgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0Ym94LXNoYWRvdzogbm9uZTtcblx0Zm9udC1mYW1pbHk6IHZhcigtLWZvbnQtaW50ZXJmYWNlKTtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXVpLXNtYWxsZXIpO1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcblx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcblx0bWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZTpub3QoLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCk6bm90KDpob3ZlcikgYnV0dG9uLFxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgYnV0dG9uLFxucHJlLmNvZGUtc3R5bGVyLXByZTpub3QoLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCk6bm90KDpob3ZlcikgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddOjphZnRlciB7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0b3BhY2l0eTogMFxufVxuW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddOjphZnRlciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0dG9wOiAwO1xuXHRib3R0b206IDA7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xuXHRtYXJnaW46IGF1dG87XG5cdG1hcmdpbi1yaWdodDogdmFyKC0taGVhZGVyLWJ1dHRvbi1zcGFjaW5nKTtcblx0Y29udGVudDogXCJcXDIwMGJcIjtcblx0d2lkdGg6IDIwcHg7XG5cdGhlaWdodDogMjBweDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG5cdC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMicgeG1sOnNwYWNlPSdwcmVzZXJ2ZSclM0UlM0NwYXRoIGQ9J00xNiAyMiA2IDEybDEuNC0xLjQgOC42IDguNiA4LjYtOC42TDI2IDEyeicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHQtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInIGZpbGw9J25vbmUnIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgJTNFJTNDcG9seWxpbmUgcG9pbnRzPSc2IDkgMTIgMTUgMTggOScvJTNFJTNDL3N2ZyUzRVwiKTtcblx0bWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTtcblx0b3BhY2l0eTogMTtcblx0c2NhbGU6IDAuODtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tYnV0dG9uKSBlYXNlLW91dCwgdmlzaWJpbGl0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLWJ1dHRvbiksIHNjYWxlIHZhcigtLWR1cmF0aW9uLWJ1dHRvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4xNCwgMC4zLCAxKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTo6YWZ0ZXIsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTpub3QoOmhhcygrIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbikpOjphZnRlciB7XG5cdHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG59XG5bY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ106aG92ZXI6OmFmdGVyIHtcblx0c2NhbGU6IDE7XG59XG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgcHJlLmNvZGUtc3R5bGVyLXByZTpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyKSBidXR0b24uY29weS1jb2RlLWJ1dHRvbixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIHByZS5jb2RlLXN0eWxlci1wcmU6bm90KDpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljKSk6bm90KDpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIGltZy5jb2RlLXN0eWxlci1pY29uKSkgYnV0dG9uLmNvcHktY29kZS1idXR0b24sXG5ib2R5IHByZS5jb2RlLXN0eWxlci1wcmU6bm90KFtjbGFzcyo9J2xhbmd1YWdlLSddKTpoYXMoLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIpIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uIHsgLyo/IERlcGVuZGluZyBvbiBoZWFkZXIgdmlzaWJpbGl0eSAqL1xuXHR0b3A6IGNhbGMoMC41ICogdmFyKC0tZm9udC10ZXh0LXNpemUpICogMC44NzUgKiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpKSAhaW1wb3J0YW50O1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiAxMnB4O1xufVxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cyk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKCBpbWcuY29kZS1zdHlsZXItaWNvbikpICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKFtjbGFzcyo9J2NvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctJ10pKSArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luIHNwYW4uY29kZS1ibG9jay1mbGFpcixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoIGltZy5jb2RlLXN0eWxlci1pY29uKSkgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4gc3Bhbi5jb2RlLWJsb2NrLWZsYWlyLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKFtjbGFzcyo9J2NvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctJ10pKSArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiBzcGFuLmNvZGUtYmxvY2stZmxhaXIgeyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdHRvcDogY2FsYygwLjUgKiB2YXIoLS1mb250LXRleHQtc2l6ZSkgKiAwLjg3NSAqIHZhcigtLWxpbmUtaGVpZ2h0LW5vcm1hbCkpICFpbXBvcnRhbnQ7XG5cdC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW46IDEycHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHR0b3A6IG1heChjYWxjKDAuNSAqIHZhcigtLWNvbnRhaW5lci1oZWlnaHQpICogMSksY2FsYygwLjUgKiB2YXIoLS1jb250YWluZXItbWluLWhlaWdodCkgKiAxKSkgIWltcG9ydGFudDtcblx0Ym90dG9tOiB1bnNldCAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbixcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbiwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyIHtcblx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKSAtIHZhcigtLWRlbnQtZGlmZmVyZW5jZSkpO1xuXHR3aWxsLWNoYW5nZTogbWFyZ2luLXJpZ2h0LCBjbGlwLXBhdGg7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1pbik7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOm5vdCg6YWN0aXZlKSxcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbjpub3QoOmFjdGl2ZSksIC8qPyBFeGVjdXRlIENvZGUgUGx1Z2luIENvbXBhdGliaWxpdHkgKi9cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpcjpub3QoOmFjdGl2ZSkge1xuXHRhbmltYXRpb246IGluZGVudCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbjpob3ZlcixcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbjpob3ZlciwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOmhvdmVye1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0YW5pbWF0aW9uOiBvdXRkZW50IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNvcHktY29kZS1idXR0b246YWN0aXZlLFxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24ucnVuLWNvZGUtYnV0dG9uOmFjdGl2ZSwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOmFjdGl2ZSB7XG5cdHNjYWxlOiAwLjk1O1xuXHR0cmFuc2l0aW9uOiBzY2FsZSB2YXIoLS1kdXJhdGlvbi1idXR0b24pIGN1YmljLWJlemllcigwLjQsIDAuMTQsIDAuMywgMSk7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOjpiZWZvcmUsXG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuSHlwZXJNRC1jb2RlYmxvY2suY29kZS1zdHlsZXItbGluZSBzcGFuLmNvZGUtYmxvY2stZmxhaXI6OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFwyMDBiXCI7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6IDE0cHg7XG5cdGhlaWdodDogMTRweDtcblx0cGFkZGluZy1yaWdodDogNHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1idXR0b24tY29sb3VyKTtcblx0LXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTI4IDEwdjE4SDEwVjEwaDE4bTAtMkgxMGEyIDIgMCAwIDAtMiAydjE4YTIgMiAwIDAgMCAyIDJoMThhMiAyIDAgMCAwIDItMlYxMGEyIDIgMCAwIDAtMi0yWicvJTNFJTNDcGF0aCBkPSdNNCAxOEgyVjRhMiAyIDAgMCAxIDItMmgxNHYySDRaJy8lM0UlM0NwYXRoIGZpbGw9J25vbmUnIGQ9J00wIDBoMzJ2MzJIMHonIGRhdGEtbmFtZT0nJmx0O1RyYW5zcGFyZW50IFJlY3RhbmdsZSZndDsnLyUzRSUzQy9zdmclM0VcIik7XG5cdC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0bWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMiclM0UlM0NwYXRoIGQ9J00yOCAxMHYxOEgxMFYxMGgxOG0wLTJIMTBhMiAyIDAgMCAwLTIgMnYxOGEyIDIgMCAwIDAgMiAyaDE4YTIgMiAwIDAgMCAyLTJWMTBhMiAyIDAgMCAwLTItMlonLyUzRSUzQ3BhdGggZD0nTTQgMThIMlY0YTIgMiAwIDAgMSAyLTJoMTR2Mkg0WicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6JyBkYXRhLW5hbWU9JyZsdDtUcmFuc3BhcmVudCBSZWN0YW5nbGUmZ3Q7Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHRtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogMXB4O1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRmb250LXNpemU6IDA7XG5cdHRvcDogbWluKGNhbGMoLTAuNSAqIHZhcigtLWNvbnRhaW5lci1oZWlnaHQpICogMS4xIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLGNhbGMoLTAuNSAqIHZhcigtLWNvbnRhaW5lci1taW4taGVpZ2h0KSAqIDEuMSAtIHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpKSkgIWltcG9ydGFudDtcblx0cmlnaHQ6IDA7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsaW5lLWhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpciA+ICoge1xuXHR3aWR0aDogMHB4O1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOjpiZWZvcmUge1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRvcGFjaXR5OiAxO1xuXHR2ZXJ0aWNhbC1hbGlnbjogLTFweDtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXVpLXNtYWxsZXIpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOjphZnRlciB7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdG9wYWNpdHk6IDE7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZm9udC11aS1zbWFsbGVyKTtcblx0Y29udGVudDogJ0NvcHknO1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4uY29kZS1zdHlsZXItbGluZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuIiwgIi8qKiBJbmxpbmUgQ29kZSAqL1xuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20taW5saW5lLWNvZGUsXG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXJlbmRlcmVkIDpub3QocHJlKSA+IGNvZGUge1xuXHRmb250LXdlaWdodDogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWZvbnQtd2VpZ2h0KTtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXIpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYmFja2dyb3VuZC1jb2xvdXIpICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy12ZXJ0aWNhbCkgdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctaG9yaXpvbnRhbCkgIWltcG9ydGFudDtcblx0bWFyZ2luOiAwcHggdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLW1hcmdpbi1ob3Jpem9udGFsKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20tZm9ybWF0dGluZy1jb2RlIHsgLyo/IFN0YW5kYWxvbmUgYmFja3RpY2tzICovXG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtY29sb3VyLWFjdGl2ZSk7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY29kZS1zdHlsZXItaW5saW5lLW9wZW5lciB+IHNwYW4uY20taW5saW5lLWNvZGU6bm90KC5jbS1mb3JtYXR0aW5nLWNvZGUpIHtcblx0bWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItcmFkaXVzOiAwcHggdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpIHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzKSAwcHggIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciAuY20tcy1vYnNpZGlhbiBzcGFuLmNvZGUtc3R5bGVyLWlubGluZS1vcGVuZXIsXG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1mb3JtYXR0aW5nLWNvZGU6aGFzKCsgc3Bhbi5jbS1pbmxpbmUtY29kZTpub3QoLmNtLWZvcm1hdHRpbmctY29kZSkpIHsvKj8gRmlyc3QgYmFja3RpY2sgKi9cblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlKTtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpIDBweCAwcHggdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctaG9yaXpvbnRhbCkgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtbWFyZ2luLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1mb3JtYXR0aW5nLWNvZGUgKyBzcGFuLmNtLWlubGluZS1jb2RlOm5vdCguY20tZm9ybWF0dGluZy1jb2RlKSB7IC8qPyBJbm5lciBjb2RlIHdpdGggYmFja3RpY2tzICovXG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtY29sb3VyLWFjdGl2ZSk7XG5cdGJvcmRlci1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwcHggIWltcG9ydGFudDtcblx0bWFyZ2luOiAwcHggMHB4ICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1pbmxpbmUtY29kZTpub3QoLmNtLWZvcm1hdHRpbmctY29kZSkgKyBzcGFuLmNtLWZvcm1hdHRpbmctY29kZSB7Lyo/IExhc3QgYmFja3RpY2sgKi9cblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlKTtcblx0Ym9yZGVyLXJhZGl1czogMHB4IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzKSB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYm9yZGVyLXJhZGl1cykgMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1wYWRkaW5nLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtbWFyZ2luLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG59XG5ib2R5LmNvZGUtc3R5bGVyIHNwYW4uY29kZS1zdHlsZXItaW5saW5lLW9wZW5lciA+IHNwYW4gPiBpbWcuY29kZS1zdHlsZXItaW5saW5lLWljb246bm90KFtjbGFzcyo9XCJlbW9qaVwiXSkge1xuXHRoZWlnaHQ6IGNhbGModmFyKC0tY29kZS1zaXplKSAqIDEuMik7XG5cdG1hcmdpbi1ib3R0b206IDJweCAhaW1wb3J0YW50O1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciBzcGFuLmNvZGUtc3R5bGVyLWlubGluZS1vcGVuZXIgLmNvZGUtc3R5bGVyLWlubGluZS10aXRsZSB7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGUtZm9udC13ZWlnaHQpO1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXRpdGxlLWNvbG91cik7XG59XG4uY29kZS1zdHlsZXIgc3Bhbi5jb2RlLXN0eWxlci1pbmxpbmUtb3BlbmVyIC5jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGU6OmFmdGVyIHtcblx0Y29udGVudDogJ1xcRkY1Qyc7XG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGUtY29sb3IpO1xufVxuLmNvZGUtc3R5bGVyIHNwYW4uY29kZS1zdHlsZXItaW5saW5lLW9wZW5lciBzcGFuOmhhcyggPiBpbWcuY29kZS1zdHlsZXItaW5saW5lLWljb24pIHtcblx0cGFkZGluZy1yaWdodDogOHB4O1xufVxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20taW5saW5lLWNvZGUgLmNvZGUtc3R5bGVyLWlubGluZS1wYXJhbWV0ZXJzIHtcblx0Y29sb3I6IHZhcigtLWNvZGUtY29tbWVudCk7XG59XG4iLCAiZGl2LnByaW50IHtcblx0LS1saW5lLXdyYXBwaW5nOiBwcmUtd3JhcCAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIGRpdi5wcmludCBwcmUuY29kZS1zdHlsZXItcHJlIGNvZGUge1xuXHRtYXgtaGVpZ2h0OiB1bnNldDtcbn1cbi5jb2RlLXN0eWxlciBkaXYucHJpbnQgcHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgY29kZSB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbiIsICIvKiogUGlja3IgMS44LjIgTUlUIHwgaHR0cHM6Ly9naXRodWIuY29tL1NpbW9ud2VwL3BpY2tyICovXG4ucGlja3Ige3Bvc2l0aW9uOiByZWxhdGl2ZTtvdmVyZmxvdzogdmlzaWJsZTt0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCl9ICAucGlja3IgKiB7Ym94LXNpemluZzogYm9yZGVyLWJveDtvdXRsaW5lOiBub25lO2JvcmRlcjogbm9uZTthcHBlYXJhbmNlOiBub25lOy13ZWJraXQtYXBwZWFyYW5jZTogbm9uZX0gIC5waWNrciAucGNyLWJ1dHRvbiB7cG9zaXRpb246IHJlbGF0aXZlO2hlaWdodDogMmVtO3dpZHRoOiAyZW07cGFkZGluZzogMC41ZW07Y3Vyc29yOiBwb2ludGVyO2ZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtib3JkZXItcmFkaXVzOiAuMTVlbTtiYWNrZ3JvdW5kOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUwIDUwXCIgc3Ryb2tlPVwiJTIzNDI0NDVBXCIgc3Ryb2tlLXdpZHRoPVwiNXB4XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjxwYXRoIGQ9XCJNNDUsNDVMNSw1XCI+PC9wYXRoPjxwYXRoIGQ9XCJNNDUsNUw1LDQ1XCI+PC9wYXRoPjwvc3ZnPicpIG5vLXJlcGVhdCBjZW50ZXI7YmFja2dyb3VuZC1zaXplOiAwO3RyYW5zaXRpb246IGFsbCAwLjNzfSAgLnBpY2tyIC5wY3ItYnV0dG9uOjpiZWZvcmUge3Bvc2l0aW9uOiBhYnNvbHV0ZTtjb250ZW50OiAnJzt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyIDJcIj48cGF0aCBmaWxsPVwid2hpdGVcIiBkPVwiTTEsMEgyVjFIMVYwWk0wLDFIMVYySDBWMVpcIi8+PHBhdGggZmlsbD1cImdyYXlcIiBkPVwiTTAsMEgxVjFIMFYwWk0xLDFIMlYySDFWMVpcIi8+PC9zdmc+Jyk7YmFja2dyb3VuZC1zaXplOiAuNWVtO2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBpY2tyIC5wY3ItYnV0dG9uOjpiZWZvcmUge3otaW5kZXg6IGluaXRpYWx9ICAucGlja3IgLnBjci1idXR0b246OmFmdGVyIHtwb3NpdGlvbjogYWJzb2x1dGU7Y29udGVudDogJyc7dG9wOiAwO2xlZnQ6IDA7aGVpZ2h0OiAxMDAlO3dpZHRoOiAxMDAlO3RyYW5zaXRpb246IGJhY2tncm91bmQgMC4zcztiYWNrZ3JvdW5kOiB2YXIoLS1wY3ItY29sb3IpO2JvcmRlci1yYWRpdXM6IC4xNWVtfSAgLnBpY2tyIC5wY3ItYnV0dG9uLmNsZWFyIHtiYWNrZ3JvdW5kLXNpemU6IDcwJX0gIC5waWNrciAucGNyLWJ1dHRvbi5jbGVhcjo6YmVmb3JlIHtvcGFjaXR5OiAwfSAgLnBpY2tyIC5wY3ItYnV0dG9uLmNsZWFyOmZvY3VzIHtib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSwgMCAwIDAgM3B4IHZhcigtLXBjci1jb2xvcil9ICAucGlja3IgLnBjci1idXR0b24uZGlzYWJsZWQge2N1cnNvcjogbm90LWFsbG93ZWR9ICAucGlja3IgKiwgLnBjci1hcHAgKiB7Ym94LXNpemluZzogYm9yZGVyLWJveDtvdXRsaW5lOiBub25lO2JvcmRlcjogbm9uZTthcHBlYXJhbmNlOiBub25lOy13ZWJraXQtYXBwZWFyYW5jZTogbm9uZX0gIC5waWNrciBpbnB1dDpmb2N1cywgLnBpY2tyIGlucHV0LnBjci1hY3RpdmUsIC5waWNrciBidXR0b246Zm9jdXMsIC5waWNrciBidXR0b24ucGNyLWFjdGl2ZSwgLnBjci1hcHAgaW5wdXQ6Zm9jdXMsIC5wY3ItYXBwIGlucHV0LnBjci1hY3RpdmUsIC5wY3ItYXBwIGJ1dHRvbjpmb2N1cywgLnBjci1hcHAgYnV0dG9uLnBjci1hY3RpdmUge2JveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpLCAwIDAgMCAzcHggdmFyKC0tcGNyLWNvbG9yKX0gIC5waWNrciAucGNyLXBhbGV0dGUsIC5waWNrciAucGNyLXNsaWRlciwgLnBjci1hcHAgLnBjci1wYWxldHRlLCAucGNyLWFwcCAucGNyLXNsaWRlciB7dHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjNzfSAgLnBpY2tyIC5wY3ItcGFsZXR0ZTpmb2N1cywgLnBpY2tyIC5wY3Itc2xpZGVyOmZvY3VzLCAucGNyLWFwcCAucGNyLXBhbGV0dGU6Zm9jdXMsIC5wY3ItYXBwIC5wY3Itc2xpZGVyOmZvY3VzIHtib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSwgMCAwIDAgM3B4IHJnYmEoMCwgMCwgMCwgMC4yNSl9ICAucGNyLWFwcCB7cG9zaXRpb246IGZpeGVkO2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjt6LWluZGV4OiAxMDAwMDtib3JkZXItcmFkaXVzOiAwLjFlbTtiYWNrZ3JvdW5kOiAjZmZmO29wYWNpdHk6IDA7dmlzaWJpbGl0eTogaGlkZGVuO3RyYW5zaXRpb246IG9wYWNpdHkgMC4zcywgdmlzaWJpbGl0eSAwcyAwLjNzO2ZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtib3gtc2hhZG93OiAwIDAuMTVlbSAxLjVlbSAwIHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwIDFlbSAwIHJnYmEoMCwgMCwgMCwgMC4wMyk7bGVmdDogMDt0b3A6IDB9ICAucGNyLWFwcC52aXNpYmxlIHt0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7dmlzaWJpbGl0eTogdmlzaWJsZTtvcGFjaXR5OiAxfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyB7ZGlzcGxheTogZmxleDtmbGV4LXdyYXA6IHdyYXA7bWFyZ2luLXRvcDogMC43NWVtfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcy5wY3ItbGFzdCB7bWFyZ2luOiAwfSAgQHN1cHBvcnRzIChkaXNwbGF5OiBncmlkKSB7ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzIHtkaXNwbGF5OiBncmlkO2FsaWduLWl0ZW1zOiBjZW50ZXI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIDEuNzVlbSl9ICB9ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzID4gYnV0dG9uIHtmb250LXNpemU6IDFlbTtwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IGNhbGMoMS43NWVtIC0gMTBweCk7aGVpZ2h0OiBjYWxjKDEuNzVlbSAtIDEwcHgpO2JvcmRlci1yYWRpdXM6IDAuMTVlbTtjdXJzb3I6IHBvaW50ZXI7bWFyZ2luOiAyLjVweDtmbGV4LXNocmluazogMDtqdXN0aWZ5LXNlbGY6IGNlbnRlcjt0cmFuc2l0aW9uOiBhbGwgMC4xNXM7b3ZlcmZsb3c6IGhpZGRlbjtiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDt6LWluZGV4OiAxfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjo6YmVmb3JlIHtwb3NpdGlvbjogYWJzb2x1dGU7Y29udGVudDogJyc7dG9wOiAwO2xlZnQ6IDA7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO2JhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMiAyXCI+PHBhdGggZmlsbD1cIndoaXRlXCIgZD1cIk0xLDBIMlYxSDFWMFpNMCwxSDFWMkgwVjFaXCIvPjxwYXRoIGZpbGw9XCJncmF5XCIgZD1cIk0wLDBIMVYxSDBWMFpNMSwxSDJWMkgxVjFaXCIvPjwvc3ZnPicpO2JhY2tncm91bmQtc2l6ZTogNnB4O2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjo6YWZ0ZXIge2NvbnRlbnQ6ICcnO3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdmFyKC0tcGNyLWNvbG9yKTtib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDUpO2JvcmRlci1yYWRpdXM6IDAuMTVlbTtib3gtc2l6aW5nOiBib3JkZXItYm94fSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjpob3ZlciB7ZmlsdGVyOiBicmlnaHRuZXNzKDEuMDUpfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjpub3QoLnBjci1hY3RpdmUpIHtib3gtc2hhZG93OiBub25lfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiB7ZGlzcGxheTogZmxleDtmbGV4LXdyYXA6IHdyYXA7YWxpZ24taXRlbXM6IGNlbnRlcjttYXJnaW46IDAgLTAuMmVtIDAgLTAuMmVtfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiA+ICoge21hcmdpbjogMCAwLjJlbX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gaW5wdXQge2xldHRlci1zcGFjaW5nOiAwLjA3ZW07Zm9udC1zaXplOiAwLjc1ZW07dGV4dC1hbGlnbjogY2VudGVyO2N1cnNvcjogcG9pbnRlcjtjb2xvcjogIzc1Nzk3ZTtiYWNrZ3JvdW5kOiAjZjFmM2Y0O2JvcmRlci1yYWRpdXM6IC4xNWVtO3RyYW5zaXRpb246IGFsbCAwLjE1cztwYWRkaW5nOiAwLjQ1ZW0gMC41ZW07bWFyZ2luLXRvcDogMC43NWVtfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiBpbnB1dDpob3ZlciB7ZmlsdGVyOiBicmlnaHRuZXNzKDAuOTc1KX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gaW5wdXQ6Zm9jdXMge2JveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpLCAwIDAgMCAzcHggcmdiYSg2NiwgMTMzLCAyNDQsIDAuNzUpfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXJlc3VsdCB7Y29sb3I6ICM3NTc5N2U7dGV4dC1hbGlnbjogbGVmdDtmbGV4OiAxIDEgOGVtO21pbi13aWR0aDogOGVtO3RyYW5zaXRpb246IGFsbCAwLjJzO2JvcmRlci1yYWRpdXM6IC4xNWVtO2JhY2tncm91bmQ6ICNmMWYzZjQ7Y3Vyc29yOiB0ZXh0fSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXJlc3VsdDo6LW1vei1zZWxlY3Rpb24ge2JhY2tncm91bmQ6ICM0Mjg1ZjQ7Y29sb3I6ICNmZmZ9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItcmVzdWx0OjpzZWxlY3Rpb24ge2JhY2tncm91bmQ6ICM0Mjg1ZjQ7Y29sb3I6ICNmZmZ9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItdHlwZS5hY3RpdmUge2NvbG9yOiAjZmZmO2JhY2tncm91bmQ6ICM0Mjg1ZjR9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3Itc2F2ZSwgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNhbmNlbCwgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNsZWFyIHtjb2xvcjogI2ZmZjt3aWR0aDogYXV0b30gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1zYXZlLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2FuY2VsLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2xlYXIge2NvbG9yOiAjZmZmfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXNhdmU6aG92ZXIsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jYW5jZWw6aG92ZXIsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jbGVhcjpob3ZlciB7ZmlsdGVyOiBicmlnaHRuZXNzKDAuOTI1KX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1zYXZlIHtiYWNrZ3JvdW5kOiAjNDI4NWY0fSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNsZWFyLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2FuY2VsIHtiYWNrZ3JvdW5kOiAjZjQ0MjUwfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNsZWFyOmZvY3VzLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2FuY2VsOmZvY3VzIHtib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSwgMCAwIDAgM3B4IHJnYmEoMjQ0LCA2NiwgODAsIDAuNzUpfSAgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1waWNrZXIge3Bvc2l0aW9uOiBhYnNvbHV0ZTtoZWlnaHQ6IDE4cHg7d2lkdGg6IDE4cHg7Ym9yZGVyOiAycHggc29saWQgI2ZmZjtib3JkZXItcmFkaXVzOiAxMDAlOy13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7LW1vei11c2VyLXNlbGVjdDogbm9uZTstbXMtdXNlci1zZWxlY3Q6IG5vbmU7dXNlci1zZWxlY3Q6IG5vbmV9ICAucGNyLWFwcCAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXBhbGV0dGUsIC5wY3ItYXBwIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciwgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5IHtwb3NpdGlvbjogcmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTstbW96LXVzZXItc2VsZWN0OiBub25lOy1tcy11c2VyLXNlbGVjdDogbm9uZTt1c2VyLXNlbGVjdDogbm9uZTtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Y3Vyc29yOiBncmFiO2N1cnNvcjogLXdlYmtpdC1ncmFifSAgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wYWxldHRlOmFjdGl2ZSwgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1jaG9vc2VyOmFjdGl2ZSwgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5OmFjdGl2ZSB7Y3Vyc29yOiBncmFiYmluZztjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmd9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10ge3dpZHRoOiAxNC4yNWVtO21heC13aWR0aDogOTV2d30gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXN3YXRjaGVzIHttYXJnaW4tdG9wOiAuNmVtO3BhZGRpbmc6IDAgLjZlbX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLWludGVyYWN0aW9uIHtwYWRkaW5nOiAwIC42ZW0gLjZlbSAuNmVtfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIHtkaXNwbGF5OiBncmlkO2dyaWQtZ2FwOiAuNmVtO2dyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDRmcjtncmlkLXRlbXBsYXRlLXJvd3M6IDVmciBhdXRvIGF1dG87YWxpZ24taXRlbXM6IGNlbnRlcjtoZWlnaHQ6IDEwLjVlbTt3aWR0aDogMTAwJTthbGlnbi1zZWxmOiBmbGV4LXN0YXJ0fSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcHJldmlldyB7Z3JpZC1hcmVhOiAyIC8gMSAvIDQgLyAxO2hlaWdodDogMTAwJTt3aWR0aDogMTAwJTtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7bWFyZ2luLWxlZnQ6IC42ZW19ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wcmV2aWV3IC5wY3ItbGFzdC1jb2xvciB7ZGlzcGxheTogbm9uZX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXByZXZpZXcgLnBjci1jdXJyZW50LWNvbG9yIHtwb3NpdGlvbjogcmVsYXRpdmU7YmFja2dyb3VuZDogdmFyKC0tcGNyLWNvbG9yKTt3aWR0aDogMmVtO2hlaWdodDogMmVtO2JvcmRlci1yYWRpdXM6IDUwZW07b3ZlcmZsb3c6IGhpZGRlbn0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXByZXZpZXcgLnBjci1jdXJyZW50LWNvbG9yOjpiZWZvcmUge3Bvc2l0aW9uOiBhYnNvbHV0ZTtjb250ZW50OiAnJzt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyIDJcIj48cGF0aCBmaWxsPVwid2hpdGVcIiBkPVwiTTEsMEgyVjFIMVYwWk0wLDFIMVYySDBWMVpcIi8+PHBhdGggZmlsbD1cImdyYXlcIiBkPVwiTTAsMEgxVjFIMFYwWk0xLDFIMlYySDFWMVpcIi8+PC9zdmc+Jyk7YmFja2dyb3VuZC1zaXplOiAuNWVtO2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcGFsZXR0ZSB7Z3JpZC1hcmVhOiAxIC8gMSAvIDIgLyAzO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTt6LWluZGV4OiAxfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcGFsZXR0ZSAucGNyLXBhbGV0dGUge2JvcmRlci1yYWRpdXM6IC4xNWVtO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXBhbGV0dGUgLnBjci1wYWxldHRlOjpiZWZvcmUge3Bvc2l0aW9uOiBhYnNvbHV0ZTtjb250ZW50OiAnJzt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyIDJcIj48cGF0aCBmaWxsPVwid2hpdGVcIiBkPVwiTTEsMEgyVjFIMVYwWk0wLDFIMVYySDBWMVpcIi8+PHBhdGggZmlsbD1cImdyYXlcIiBkPVwiTTAsMEgxVjFIMFYwWk0xLDFIMlYySDFWMVpcIi8+PC9zdmc+Jyk7YmFja2dyb3VuZC1zaXplOiAuNWVtO2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciB7Z3JpZC1hcmVhOiAyIC8gMiAvIDIgLyAyfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3Itb3BhY2l0eSB7Z3JpZC1hcmVhOiAzIC8gMiAvIDMgLyAyfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciwgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3Itb3BhY2l0eSB7aGVpZ2h0OiAwLjVlbTttYXJnaW46IDAgLjZlbX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLWNob29zZXIgLnBjci1waWNrZXIsIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLW9wYWNpdHkgLnBjci1waWNrZXIge3RvcDogNTAlO3RyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLWNob29zZXIgLnBjci1zbGlkZXIsIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLW9wYWNpdHkgLnBjci1zbGlkZXIge2ZsZXgtZ3JvdzogMTtib3JkZXItcmFkaXVzOiA1MGVtfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciAucGNyLXNsaWRlciB7YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZWQsICNmZjAsIGxpbWUsIGN5YW4sIGJsdWUsICNmMGYsIHJlZCl9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5IC5wY3Itc2xpZGVyIHtiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50LCBibGFjayksIHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMiAyXCI+PHBhdGggZmlsbD1cIndoaXRlXCIgZD1cIk0xLDBIMlYxSDFWMFpNMCwxSDFWMkgwVjFaXCIvPjxwYXRoIGZpbGw9XCJncmF5XCIgZD1cIk0wLDBIMVYxSDBWMFpNMSwxSDJWMkgxVjFaXCIvPjwvc3ZnPicpO2JhY2tncm91bmQtc2l6ZTogMTAwJSwgMC4yNWVtfVxuLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbiB7XG5cdHBhZGRpbmc6IDA7XG59XG4iLCAiLyoqIEV4ZWN1dGUgQ29kZSBQbHVnaW4gKi9cbnByZS5jb2RlLXN0eWxlci1wcmUgY29kZSB+IGNvZGUubGFuZ3VhZ2Utb3V0cHV0IHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG1hcmdpbi1ib3R0b206IDA7XG5cdHBhZGRpbmctYm90dG9tOiBjYWxjKDIuNSAqIHZhcigtLWNvZGUtcGFkZGluZykpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1saW5lLW51bWJlci1ndXR0ZXItcGFkZGluZykpICFpbXBvcnRhbnQ7XG5cdGJvcmRlci10b3A6IHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpIHNvbGlkIHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1zZXBhcmF0b3ItY29sb3VyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIGNvZGUgfiBjb2RlLmxhbmd1YWdlLW91dHB1dCB7XG5cdGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRib3JkZXItdG9wLXdpZHRoOiAwO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZTpob3ZlciBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQge1xuXHRtYXJnaW4tYm90dG9tOiAwO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQgaW5wdXQuaW50ZXJhY3RpdmUtc3RkaW4ge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW5vcm1hbCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKTtcbiAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29kZS1jb21tZW50KTtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRib3JkZXItd2lkdGg6IDFweDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgY29kZSB+IGNvZGUubGFuZ3VhZ2Utb3V0cHV0IGhyIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbiB7XG5cdC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW46IDEycHg7XG5cdC0tZGVudC1kaWZmZXJlbmNlOiAyNHB4O1xuXHRoZWlnaHQ6IDE0cHg7XG5cdG1hcmdpbi1ib3R0b206IDZweCAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbiB7XG5cdHRvcDogNTAwcHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5ydW4tY29kZS1idXR0b246OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFwyMDBiXCI7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6IDE0cHg7XG5cdGhlaWdodDogMTRweDtcblx0cGFkZGluZy1yaWdodDogNHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1idXR0b24tY29sb3VyKTtcblx0LXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTcgMjhhMSAxIDAgMCAxLTEtMVY1YTEgMSAwIDAgMSAxLjQ4Mi0uODc2bDIwIDExYTEgMSAwIDAgMSAwIDEuNzUybC0yMCAxMUExIDEgMCAwIDEgNyAyOFonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicgZGF0YS1uYW1lPScmbHQ7VHJhbnNwYXJlbnQgUmVjdGFuZ2xlJmd0OycvJTNFJTNDL3N2ZyUzRVwiKTtcblx0LXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTcgMjhhMSAxIDAgMCAxLTEtMVY1YTEgMSAwIDAgMSAxLjQ4Mi0uODc2bDIwIDExYTEgMSAwIDAgMSAwIDEuNzUybC0yMCAxMUExIDEgMCAwIDEgNyAyOFonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicgZGF0YS1uYW1lPScmbHQ7VHJhbnNwYXJlbnQgUmVjdGFuZ2xlJmd0OycvJTNFJTNDL3N2ZyUzRVwiKTtcblx0bWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0dmVydGljYWwtYWxpZ246IDBweDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNsZWFyLWJ1dHRvbi1kaXNhYmxlZCxcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1idXR0b24tZGlzYWJsZWQge1xuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jbGVhci1idXR0b24ge1xuXHRoZWlnaHQ6IDE0cHg7XG5cdG1hcmdpbi1ib3R0b206IDZweCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpICsgMTJweCk7XG5cdHdpbGwtY2hhbmdlOiBtYXJnaW4tcmlnaHQsIGNsaXAtcGF0aDtcblx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNsZWFyLWJ1dHRvbjo6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXDIwMGJcIjtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxNHB4O1xuXHRwYWRkaW5nLXJpZ2h0OiA0cHg7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1jb2xvdXIpO1xuXHQtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInJTNFJTNDcGF0aCBkPSdNMTYgNCA2IDE0bDEuNDEgMS40MUwxNSA3LjgzVjI4aDJWNy44M2w3LjU5IDcuNThMMjYgMTQgMTYgNHonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicgZGF0YS1uYW1lPScmbHQ7VHJhbnNwYXJlbnQgUmVjdGFuZ2xlJmd0OycvJTNFJTNDL3N2ZyUzRVwiKTtcblx0LXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTE2IDQgNiAxNGwxLjQxIDEuNDFMMTUgNy44M1YyOGgyVjcuODNsNy41OSA3LjU4TDI2IDE0IDE2IDR6Jy8lM0UlM0NwYXRoIGZpbGw9J25vbmUnIGQ9J00wIDBoMzJ2MzJIMHonIGRhdGEtbmFtZT0nJmx0O1RyYW5zcGFyZW50IFJlY3RhbmdsZSZndDsnLyUzRSUzQy9zdmclM0VcIik7XG5cdG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdHZlcnRpY2FsLWFsaWduOiAwcHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jbGVhci1idXR0b246bm90KDphY3RpdmUpIHtcblx0YW5pbWF0aW9uOiByZXZlcnNlLWluZGVudCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY2xlYXItYnV0dG9uOmhvdmVye1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0YW5pbWF0aW9uOiByZXZlcnNlLW91dGRlbnQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbik7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY2xlYXItYnV0dG9uOmFjdGl2ZSB7XG5cdHNjYWxlOiAwLjk1O1xuXHR0cmFuc2l0aW9uOiBzY2FsZSB2YXIoLS1kdXJhdGlvbi1idXR0b24pIGN1YmljLWJlemllcigwLjQsIDAuMTQsIDAuMywgMSk7XG59XG4uY29kZS1zdHlsZXItcHJlLXBhcmVudC5oYXMtcnVuLWNvZGUtYnV0dG9uIC5sb2FkLXN0YXRlLWluZGljYXRvciB7XG5cdGNvbG9yOiBub25lO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xuXHR6LWluZGV4OiAxMDtcbn1cbi5jb2RlLXN0eWxlci1wcmUtcGFyZW50Lmhhcy1ydW4tY29kZS1idXR0b24gLmxvYWQtc3RhdGUtaW5kaWNhdG9yOjpiZWZvcmUge1xuXHRib3gtc2hhZG93OiBub25lO1xufVxuLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQuaGFzLXJ1bi1jb2RlLWJ1dHRvbiAubG9hZC1zdGF0ZS1pbmRpY2F0b3Igc3ZnIHtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1jb2xvdXIpO1xufVxuLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQuaGFzLXJ1bi1jb2RlLWJ1dHRvbiAubG9hZC1zdGF0ZS1pbmRpY2F0b3Igc3ZnOmhvdmVyIHtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1hY3RpdmUtY29sb3VyKTtcbn1cbi5jb2RlLXN0eWxlci1wcmUtcGFyZW50Lmhhcy1ydW4tY29kZS1idXR0b24gLmxvYWQtc3RhdGUtaW5kaWNhdG9yLnZpc2libGUge1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG5cbi8qKiBFbWJlZCBDb2RlIFBsdWdpbiAqL1xuLmJsb2NrLWxhbmd1YWdlLXByZXZpZXcgcHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlIHtcblx0d2hpdGUtc3BhY2U6IHVuc2V0O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBzcGFuLmNvZGUtYmxvY2stbGluZV9udW0td3JhcCxcbnByZS5jb2RlLXN0eWxlci1wcmUgZGl2LmNvZGUtYmxvY2staGlnaGxpZ2h0LXdyYXAge1xuXHRkaXNwbGF5OiBub25lO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLmNtLWVtYmVkLWJsb2NrIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50ICsgLmVkaXQtYmxvY2stYnV0dG9uOjphZnRlciB7XG5cdGNvbnRlbnQ6ICdFZGl0IEJsb2NrJztcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXVpLXNtYWxsZXIpO1xuXHRwYWRkaW5nLWxlZnQ6IDRweDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5jbS1lbWJlZC1ibG9jazpub3QoOmhvdmVyKSAuY29kZS1zdHlsZXItcHJlLXBhcmVudCArIC5lZGl0LWJsb2NrLWJ1dHRvbiB7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0b3BhY2l0eTogMFxufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLmNtLWVtYmVkLWJsb2NrIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50ICsgLmVkaXQtYmxvY2stYnV0dG9uIHtcblx0LS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbjogY2FsYygyLjIgKiB2YXIoLS1oZWFkZXItYnV0dG9uLXNwYWNpbmcpKTtcblx0LS1kZW50LWRpZmZlcmVuY2U6IDBweDtcblx0LS1wb2x5Z29uLWluOiBwb2x5Z29uKDAgMCwgMThweCAwLCAxOHB4IDM2cHgsIDAgMzZweCk7XG4gICAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdG9wYWNpdHk6IDE7XG5cdHotaW5kZXg6IDEwO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdHRvcDogbWF4KGNhbGMoMC41ICogdmFyKC0tY29udGFpbmVyLWhlaWdodCkgKiAxKSxjYWxjKDAuNSAqIHZhcigtLWNvbnRhaW5lci1taW4taGVpZ2h0KSAqIDEpKTtcblx0bWFyZ2luOiAwO1xuXHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pIC0gdmFyKC0tZGVudC1kaWZmZXJlbmNlKSk7XG5cdHdpbGwtY2hhbmdlOiBtYXJnaW4tcmlnaHQsIGNsaXAtcGF0aDtcblx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcblx0cGFkZGluZzogMDtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAuY20tZW1iZWQtYmxvY2sgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQ6aGFzKCBwcmUuY29kZS1zdHlsZXItcHJlIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyKSArIC5lZGl0LWJsb2NrLWJ1dHRvbixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jbS1lbWJlZC1ibG9jayAuY29kZS1zdHlsZXItcHJlLXBhcmVudDpub3QoOmhhcyggcHJlLmNvZGUtc3R5bGVyLXByZSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYykpOm5vdCg6aGFzKCBwcmUuY29kZS1zdHlsZXItcHJlIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIGltZy5jb2RlLXN0eWxlci1pY29uKSkgKyAuZWRpdC1ibG9jay1idXR0b24sXG5ib2R5IC5jbS1lbWJlZC1ibG9jayAuY29kZS1zdHlsZXItcHJlLXBhcmVudDpoYXMoIHByZS5jb2RlLXN0eWxlci1wcmU6bm90KFtjbGFzcyo9J2xhbmd1YWdlLSddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcikgKyAuZWRpdC1ibG9jay1idXR0b24geyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW46IDRweDtcblx0dG9wOiBjYWxjKDAuNSAqIHZhcigtLWZvbnQtdGV4dC1zaXplKSAqIDAuODc1ICogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKSk7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuY20tZW1iZWQtYmxvY2s6aG92ZXIgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQgKyAuZWRpdC1ibG9jay1idXR0b246aG92ZXIge1xuXHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0YW5pbWF0aW9uOiByZXZlcnNlLW91dGRlbnQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbik7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLmNtLWVtYmVkLWJsb2NrOmhvdmVyIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50ICsgLmVkaXQtYmxvY2stYnV0dG9uOmFjdGl2ZSB7XG5cdHNjYWxlOiAwLjk1O1xuXHR0cmFuc2l0aW9uOiBzY2FsZSB2YXIoLS1kdXJhdGlvbi1idXR0b24pIGN1YmljLWJlemllcigwLjQsIDAuMTQsIDAuMywgMSk7XG59XG5cbi8qKiBGaWxlIEluY2x1ZGUgUGx1Z2luICovXG5kaXYuYmxvY2stbGFuZ3VhZ2UtaW5jbHVkZSBwcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uIHtcblx0bWFyZ2luOiAwO1xuXHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pIC0gdmFyKC0tZGVudC1kaWZmZXJlbmNlKSk7XG59XG5kaXYuYmxvY2stbGFuZ3VhZ2UtaW5jbHVkZSBwcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOmhvdmVyIHtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbik7XG59XG4iLCAiLyoqIERlZmluZSBDU1MgdmFyaWFibGVzICovXG5AaW1wb3J0IFwiLi9jc3MvY29kZWJsb2Nrcy5jc3NcIjtcbkBpbXBvcnQgXCIuL2Nzcy9pbmxpbmVDb2RlLmNzc1wiO1xuQGltcG9ydCBcIi4vY3NzL3BkZkV4cG9ydC5jc3NcIjtcbkBpbXBvcnQgXCIuL2Nzcy9waWNrci5jc3NcIjtcbkBpbXBvcnQgXCIuL2Nzcy9wbHVnaW5Db21wYXRpYmlsaXR5LmNzc1wiO1xuXG5ib2R5IHtcblx0LyogQ29kZWJsb2NrIEJvZHkgKi9cblx0LS1ib3JkZXItcmFkaXVzOiAxMHB4O1xuXHQtLWdyYWRpZW50LWJhY2tncm91bmQtY29sb3VyOiB0cmFuc3BhcmVudDtcblx0LS1jb2RlLXBhZGRpbmc6IDhweDtcblx0LS1jb250YWluZXItaGVpZ2h0OiBjYWxjKHZhcigtLWxhbmd1YWdlLWljb24tc2l6ZSkgKyAyICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpICogdmFyKC0taGVhZGVyLWZvbnQtc2l6ZSkpO1xuXHQtLWNvbnRhaW5lci1taW4taGVpZ2h0OiBjYWxjKCh2YXIoLS1oZWFkZXItZm9udC1zaXplKSArIDIgKiB2YXIoLS1oZWFkZXItaW5uZXItdmVydGljYWwtcGFkZGluZykgKiB2YXIoLS1oZWFkZXItZm9udC1zaXplKSkgKiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpKTtcblx0LS1sYW5ndWFnZS1ib3JkZXItY29sb3VyOiB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpO1xuXHQtLWxhbmd1YWdlLWJvcmRlci13aWR0aDogMHB4O1xuXG5cdC8qIEhlYWRlciAqL1xuXHQtLWhlYWRlci1mb250LXNpemU6IHZhcigtLWNvZGUtc2l6ZSk7XG5cdC0taGVhZGVyLXBhZGRpbmc6IDBweDtcblx0LS1oZWFkZXItaW5uZXItdmVydGljYWwtcGFkZGluZzogMC4zO1xuXHQtLWhlYWRlci1zcGFjaW5nOiAxNXB4O1xuXHQtLWhlYWRlci1idXR0b24tc3BhY2luZzogMTRweDtcblx0LS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoOiAycHg7XG5cdC0taGVhZGVyLXNlcGFyYXRvci13aWR0aC1wYWRkaW5nOiB2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKTtcblx0LS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyOiBub25lO1xuXHQtLWNvbGxhcHNlZC1ib3R0b20tYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXHQtLWxhbmd1YWdlLWljb24tc2l6ZTogMjhweDtcblx0LS1sYW5ndWFnZS1pY29uLWZpbHRlcjogbm9uZTtcblxuXHQvKiBMaW5lcyAqL1xuXHQtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3A6IDEwMCU7XG5cblx0LyogTGluZSBOdW1iZXJzICovXG5cdC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb246IDJweDtcblx0LS1saW5lLW51bWJlci1ndXR0ZXItcGFkZGluZzogMTZweDtcblx0LS1saW5lLW51bWJlci1ndXR0ZXItbWluLXdpZHRoOiAzMi42N3B4O1xuXG5cdC8qIExpbmUgVGV4dCAqL1xuXHQtLWxpbmUtd3JhcHBpbmc6IHByZS13cmFwO1xuXHQtLWxpbmUtYWN0aXZlLXdyYXBwaW5nOiB2YXIoLS1saW5lLXdyYXBwaW5nKTtcblxuXHQvKiBCdXR0b25zICovXG5cdC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cjogdmFyKC0tdGV4dC1tdXRlZCk7XG5cdC0tY29kZS1zdHlsZXItYnV0dG9uLWFjdGl2ZS1jb2xvdXI6IHdoaXRlO1xuXHQtLWR1cmF0aW9uLWJ1dHRvbjogMjQwbXM7XG5cdC0tZGVudC1kaWZmZXJlbmNlOiAzMHB4O1xuXHQtLXBvbHlnb24taW46IHBvbHlnb24oMCAwLCAxNnB4IDAsIDE2cHggMzZweCwgMCAzNnB4KTtcblx0LS1wb2x5Z29uLW91dDogcG9seWdvbigwIDAsIDEwMCUgMCwgMTAwJSAxMDAlLCAwIDEwMCUpO1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiBjYWxjKDMgKiB2YXIoLS1oZWFkZXItYnV0dG9uLXNwYWNpbmcpKTtcblxuXHQvKiBJbmxpbmUgQ29kZSAqL1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1mb250LXdlaWdodDogNDAwO1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzOiA2cHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctdmVydGljYWw6IDVweDtcblx0LS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy1ob3Jpem9udGFsOiA1cHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLW1hcmdpbi1ob3Jpem9udGFsOiAwcHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLWNvbG91cjogdmFyKC0tY29kZS1ub3JtYWwpO1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlOiB2YXIoLS1jb2RlLW5vcm1hbCk7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLWJhY2tncm91bmQtY29sb3VyOiB2YXIoLS1jb2RlLWJhY2tncm91bmQpO1xufVxuXG4vKiogU2V0dGluZ3MgKi9cbi5zZXR0aW5nLWl0ZW0uY29kZS1zdHlsZXItc3BhY2VkIC5jaGVja2JveC1jb250YWluZXIgKyAucGlja3Ige1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG4uY29kZS1zdHlsZXItZG9uYXRpb24ge1xuXHR3aWR0aDogNzAlO1xuXHRtYXJnaW46IDAgYXV0bztcblx0dGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmNvZGUtc3R5bGVyLXNldHRpbmctdGV4dC1hcmVhIHRleHRhcmVhIHtcblx0d2lkdGg6IDQwMHB4O1xuXHRoZWlnaHQ6IDIyMHB4O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFJRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBSUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUlEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBQUE7QUFJQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUlEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFJRDtBQUFBO0FBRUM7QUFDQTtBQUFBO0FBR0Q7QUFBQTtBQUVDO0FBQUE7QUFJRDtBQUFBO0FBRUU7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUdGO0FBQUE7QUFFRTtBQUNBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBR0Y7QUFBQTtBQUVFO0FBQUE7QUFBQTtBQUdBO0FBQUE7QUFBQTtBQUdGO0FBQUE7QUFFRTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFHRjtBQUNJO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0c7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUo7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7OztBQ3ZmRDtBQUFBO0FBRUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFDQTtBQUNBO0FBQ0E7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RUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUlEO0FBQ0M7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUlEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBOzs7QUN6SkQ7QUFFQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUlEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTsiLAogICJuYW1lcyI6IFtdCn0K */
+/*# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjL2Nzcy9jb2RlYmxvY2tzLmNzcyIsICJzcmMvY3NzL2lubGluZUNvZGUuY3NzIiwgInNyYy9jc3MvcGRmRXhwb3J0LmNzcyIsICJzcmMvY3NzL3BpY2tyLmNzcyIsICJzcmMvY3NzL3BsdWdpbkNvbXBhdGliaWxpdHkuY3NzIiwgInNyYy9zdHlsZXMuY3NzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKiogUHJlIGVsZW1lbnRzICovXG4uY29kZS1zdHlsZXItcHJlLXBhcmVudHtcblx0bWFyZ2luLWJvdHRvbTogMTZweDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlIHtcblx0YmFja2dyb3VuZDogdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAhaW1wb3J0YW50O1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKSAhaW1wb3J0YW50O1xuXHRtaW4taGVpZ2h0OiB1bnNldDtcblx0cGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7XG5cdG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlW2NsYXNzKj0nbGFuZ3VhZ2UtJ10ge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWxhbmd1YWdlLWJvcmRlci1jb2xvdXIpLCB2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpLCB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCksIHZhcigtLWNvZGUtc3R5bGVyLWNvZGVibG9jay1iYWNrZ3JvdW5kLWNvbG91cikgMTAwJSkgIWltcG9ydGFudDtcblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgY29kZSB7XG5cdHBhZGRpbmctdG9wOiB2YXIoLS1jb2RlLXBhZGRpbmcpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctYm90dG9tOiB2YXIoLS1jb2RlLXBhZGRpbmcpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgcHJlLmNvZGUtc3R5bGVyLXByZSA+IGNvZGUge1xuXHRkaXNwbGF5OiBncmlkO1xuXHRncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IGF1dG87XG5cdGdyaWQtdGVtcGxhdGUtcm93czogYXV0bztcblx0cGFkZGluZy10b3A6IHZhcigtLWNvZGUtcGFkZGluZykgIWltcG9ydGFudDtcblx0cGFkZGluZy1ib3R0b206IHZhcigtLWNvZGUtcGFkZGluZykgIWltcG9ydGFudDtcblx0cGFkZGluZy1sZWZ0OiAwcHggIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuXHRiYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7XG5cdHRyYW5zaXRpb24tcHJvcGVydHk6IG1heC1oZWlnaHQsIHBhZGRpbmcsIGJvcmRlci10b3A7XG5cdHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluLW91dDtcblx0bWF4LWhlaWdodDogdW5zZXQ7XG5cdG92ZXJmbG93LXg6IG92ZXJsYXk7XG5cdHdoaXRlLXNwYWNlOiB2YXIoLS1saW5lLXdyYXBwaW5nKTtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlLndyYXBwZWQgPiBjb2RlIHtcblx0LS1saW5lLXdyYXBwaW5nOiBwcmUtd3JhcDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlLnVud3JhcHBlZCA+IGNvZGUge1xuXHQtLWxpbmUtd3JhcHBpbmc6IHByZTtcblx0LS1saW5lLWFjdGl2ZS13cmFwcGluZzogcHJlO1xufVxuLmNvZGUtc3R5bGVyIHByZS5jb2RlLXN0eWxlci1wcmUudW53cmFwcGVkLWluYWN0aXZlID4gY29kZSB7XG5cdC0tbGluZS13cmFwcGluZzogcHJlO1xuXHQtLWxpbmUtYWN0aXZlLXdyYXBwaW5nOiBwcmUtd3JhcDtcbn1cbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlIGNvZGU6bm90KDpoYXMoID4gaW5wdXRbc3R5bGUqPVwiZGlzcGxheTogaW5saW5lO1wiXSkpOmFjdGl2ZSB7XG5cdC0tbGluZS13cmFwcGluZzogdmFyKC0tbGluZS1hY3RpdmUtd3JhcHBpbmcpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgcHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgPiBjb2RlIHtcblx0cGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcblx0cGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcblx0bWF4LWhlaWdodDogMCAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIHByZS5jb2RlLXN0eWxlci1wcmU6OmJlZm9yZSxcbi5jb2RlLXN0eWxlciBwcmUuY29kZS1zdHlsZXItcHJlOjphZnRlciB7XG5cdGNvbnRlbnQ6IG5vbmUgIWltcG9ydGFudDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5jbS1lbWJlZC1ibG9jayBwcmUuY29kZS1zdHlsZXItcHJlIHtcblx0bWFyZ2luOiAxZW0gMHB4O1xufVxuXG4vKiogRWRpdGluZyBNb2RlIEJvZHkgKi9cbi5jb2RlLXN0eWxlciAubWFya2Rvd24tc291cmNlLXZpZXcgW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4ge1xuXHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwcHggIWltcG9ydGFudDtcblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IFtjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLkh5cGVyTUQtY29kZWJsb2NrLWVuZCB7XG5cdGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG59XG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoIGltZy5jb2RlLXN0eWxlci1pY29uKSkgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5IC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoW2NsYXNzKj0nY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy0nXSkpICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ10pICsgW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5IC5tYXJrZG93bi1zb3VyY2UtdmlldyBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXS5IeXBlck1ELWNvZGVibG9jay1iZWdpbjpudGgtb2YtdHlwZSgxKSB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cykgIWltcG9ydGFudDtcblx0Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tZ3JhZGllbnQtYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3ApLCB0cmFuc3BhcmVudCAxMDAlKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAhaW1wb3J0YW50O1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tc2l6ZS00LTQpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXVtjbGFzcyo9J2xhbmd1YWdlLSddIHtcblx0YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSwgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLWNvbG91cikgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSwgdmFyKC0tZ3JhZGllbnQtYmFja2dyb3VuZC1jb2xvdXIpIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCkgdmFyKC0tZ3JhZGllbnQtaGlnaGxpZ2h0cy1jb2xvdXItc3RvcCksIHRyYW5zcGFyZW50IDEwMCUpLCB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9J2NvZGUtc3R5bGVyLWxpbmUnXVtjbGFzcyo9J2xhbmd1YWdlLSddIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHRtYXJnaW4tbGVmdDogdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKTtcbn1cblxuLyoqIEhlYWRlciBzdHlsaW5nICovXG5ib2R5Om5vdChbY2xhc3MqPSdjb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucyddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYyBkaXY6aGFzKD4gaW1nLmNvZGUtc3R5bGVyLWljb24pLFxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cykgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIgZGl2Omhhcyg+IGltZy5jb2RlLXN0eWxlci1pY29uKSB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG5ib2R5Om5vdChbY2xhc3MqPSdjb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcyddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYyBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSxcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKCBpbWcuY29kZS1zdHlsZXItaWNvbikpIHtcblx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdChbY2xhc3MqPSdsYW5ndWFnZS0nXSksXG5ib2R5IHByZS5jb2RlLXN0eWxlci1wcmU6bm90KFtjbGFzcyo9J2xhbmd1YWdlLSddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbltjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdGZvbnQtc2l6ZTogdmFyKC0taGVhZGVyLWZvbnQtc2l6ZSk7XG5cdHVzZXItc2VsZWN0OiBub25lO1xuXHRoZWlnaHQ6IHZhcigtLWNvbnRhaW5lci1oZWlnaHQpO1xuXHRtaW4taGVpZ2h0OiB2YXIoLS1jb250YWluZXItbWluLWhlaWdodCk7XG5cdHBhZGRpbmctdG9wOiB2YXIoLS1oZWFkZXItcGFkZGluZyk7XG5cdG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyAgXG5cdGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcblx0b3ZlcmZsb3c6IHZpc2libGU7XG5cdHRyYW5zaXRpb246IGJvcmRlci1ib3R0b20gZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0Ym94LXNpemluZzogY29udGVudC1ib3g7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYmFja2dyb3VuZC1jb2xvdXIpIDAlLHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG91cikgY2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLCB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItc2VwYXJhdG9yLWNvbG91cikgY2FsYygxMDAlIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLCB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItc2VwYXJhdG9yLWNvbG91cikgMTAwJSkgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSBib3R0b20vMTAwJSBib3JkZXItYm94IG5vLXJlcGVhdCx2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCk7XG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG5cdHBhZGRpbmctYm90dG9tOiB2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKTtcblx0Ym9yZGVyLXRvcDogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJvcmRlcik7XG5cdGJvcmRlci1sZWZ0OiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcblx0Ym9yZGVyLXJpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIHtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWJhY2tncm91bmQtY29sb3VyKTtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkgc29saWQgdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLXNlcGFyYXRvci1jb2xvdXIpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IDpub3QocHJlLmNvZGUtc3R5bGVyLXByZSkgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ106bm90KDpoYXMoKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4pKSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYmFja2dyb3VuZC1jb2xvdXIpIDAlLHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1iYWNrZ3JvdW5kLWNvbG91cikgMTAwJSkgdmFyKC0tbGFuZ3VhZ2UtYm9yZGVyLXdpZHRoKSBib3R0b20vMTAwJSBib3JkZXItYm94IG5vLXJlcGVhdCx2YXIoLS1sYW5ndWFnZS1ib3JkZXItY29sb3VyKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWJvdHRvbTogdmFyKC0taGVhZGVyLXBhZGRpbmcpO1xuXHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcblx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpO1xuXHRib3JkZXItYm90dG9tOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyKTtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0tY29sbGFwc2VkLWJvdHRvbS1ib3JkZXIpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIHtcblx0Ym9yZGVyLWJvdHRvbTogdmFyKC0tY29sbGFwc2VkLWJvdHRvbS1ib3JkZXIpO1xufVxuW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0ZGlzcGxheTogZmxleDtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5cdGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcblx0aGVpZ2h0OiAxMDAlO1xuXHRwYWRkaW5nLWxlZnQ6IHZhcigtLWhlYWRlci1zcGFjaW5nKTtcblx0cGFkZGluZy1yaWdodDogdmFyKC0taGVhZGVyLXNwYWNpbmcpO1xuXHRtYXJnaW4tcmlnaHQ6IHZhcigtLWhlYWRlci1zcGFjaW5nKTtcblx0cGFkZGluZy10b3A6IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0cGFkZGluZy1ib3R0b206IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0Zm9udC1zaXplOiBpbmhlcml0O1xuXHRib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKSB2YXIoLS1ib3JkZXItcmFkaXVzKSAwcHggMHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLWJhY2tncm91bmQtY29sb3VyKTtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctdGV4dC1jb2xvdXIpO1xuXHRmb250LXdlaWdodDogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZy10ZXh0LWJvbGQsIG5vcm1hbCk7XG5cdGZvbnQtc3R5bGU6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctdGV4dC1pdGFsaWMsIG5vcm1hbCk7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0dHJhbnNpdGlvbjogYm9yZGVyLXJhZGl1cyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBwYWRkaW5nIGVhc2UtaW4tb3V0IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTpub3QoOmhhcygrIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbikpIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdLFxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnXCJdIHtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG59XG4uY29kZS1zdHlsZXItaGVhZGVyLXRleHQge1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0YWxpZ24tY29udGVudDogY2VudGVyO1xuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXHRwYWRkaW5nLWxlZnQ6IDBweDtcblx0cGFkZGluZy10b3A6IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0cGFkZGluZy1ib3R0b206IGNhbGMoMWVtICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpKTtcblx0Zm9udC1zaXplOiBpbmhlcml0O1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaGVhZGVyLXRleHQtY29sb3VyKTtcblx0Zm9udC13ZWlnaHQ6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci10aXRsZS10ZXh0LWJvbGQsIG5vcm1hbCk7XG5cdGZvbnQtc3R5bGU6IHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci10aXRsZS10ZXh0LWl0YWxpYywgbm9ybWFsKTtcblx0dHJhbnNpdGlvbjogcGFkZGluZyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxuYm9keTpub3QoW2NsYXNzKj0nY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMnXSkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWMgW2NsYXNzXj1cImNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciBbY2xhc3NePVwiY29kZS1zdHlsZXItaGVhZGVyLWxhbmd1YWdlLXRhZ1wiXSxcbmJvZHkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWM6bm90KDpoYXMoIGRpdiA+IGltZy5jb2RlLXN0eWxlci1pY29uKSkgW2NsYXNzXj1cImNvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWdcIl0geyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDtcblx0Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMCAhaW1wb3J0YW50O1xufVxuYm9keTpub3QoW2NsYXNzKj0nY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMnXSk6bm90KFtjbGFzcyo9J2NvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzJ10pIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCxcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMpIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCxcbmJvZHkgLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXItc3BlY2lmaWM6bm90KDpoYXMoIFtjbGFzc149XCJjb2RlLXN0eWxlci1oZWFkZXItbGFuZ3VhZ2UtdGFnLVwiXSkpIC5jb2RlLXN0eWxlci1oZWFkZXItdGV4dCB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0cGFkZGluZy1sZWZ0OiB2YXIoLS1oZWFkZXItc3BhY2luZyk7XG59XG5kaXY6aGFzKD4gaW1nLmNvZGUtc3R5bGVyLWljb24pIHtcblx0ZGlzcGxheTogaW5saW5lLWZsZXg7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRhbGlnbi1jb250ZW50OiBjZW50ZXI7XG5cdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cdHBhZGRpbmctdG9wOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdHBhZGRpbmctYm90dG9tOiBjYWxjKDFlbSAqIHZhcigtLWhlYWRlci1pbm5lci12ZXJ0aWNhbC1wYWRkaW5nKSk7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0taGVhZGVyLXNwYWNpbmcpO1xuXHRwYWRkaW5nLXJpZ2h0OiB2YXIoLS1oZWFkZXItc3BhY2luZyk7XG5cdHRyYW5zaXRpb246IHBhZGRpbmcgZWFzZS1pbi1vdXQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcbn1cbi5jb2RlLXN0eWxlci1pY29uIHtcblx0d2lkdGg6IHZhcigtLWxhbmd1YWdlLWljb24tc2l6ZSk7XG5cdGhlaWdodDogdmFyKC0tbGFuZ3VhZ2UtaWNvbi1zaXplKTtcblx0ZmlsdGVyOiB2YXIoLS1sYW5ndWFnZS1pY29uLWZpbHRlcik7XG5cdG1hcmdpbjogMCAhaW1wb3J0YW50O1xuXHRib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyoqIExpbmVzICovXG5wcmUuY29kZS1zdHlsZXItcHJlIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtaGlnaGxpZ2h0ZWQnXSA+IC5jb2RlLXN0eWxlci1saW5lLXRleHQge1xuXHRiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLWdyYWRpZW50LWJhY2tncm91bmQtY29sb3VyKSAwJSB2YXIoLS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSAxMDAlKTtcbn1cbi5jb2RlLXN0eWxlci1saW5lLWhpZ2hsaWdodGVkIHtcblx0LS1ncmFkaWVudC1iYWNrZ3JvdW5kLWNvbG91cjogdmFyKC0tY29kZS1zdHlsZXItZGVmYXVsdC1oaWdobGlnaHQtY29sb3VyKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodCAuY20tYWN0aXZlLFxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1lZGl0b3IgLmNtLWFjdGl2ZSB7XG5cdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tY29kZS1zdHlsZXItYWN0aXZlLWVkaXRvci1saW5lLWNvbG91ciksIHZhcigtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3ApLCB0cmFuc3BhcmVudCkgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLmNtLWFjdGl2ZSxcbi5jb2RlLXN0eWxlci1hY3RpdmUtbGluZS1oaWdobGlnaHQtY29kZWJsb2NrIC5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2tbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZVwiXS5jbS1hY3RpdmUge1xuXHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHZhcigtLWNvZGUtc3R5bGVyLWFjdGl2ZS1jb2RlYmxvY2stbGluZS1jb2xvdXIpLCB2YXIoLS1ncmFkaWVudC1oaWdobGlnaHRzLWNvbG91ci1zdG9wKSwgdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKSkgIWltcG9ydGFudDtcbn1cblxuLyoqIExpbmUgbnVtYmVycyAqL1xuLmNvZGUtc3R5bGVyOm5vdCguY29kZS1zdHlsZXItc2hvdy1saW5lLW51bWJlcnMpIC5jb2RlLXN0eWxlci1saW5lLW51bWJlcixcbi5jb2RlLXN0eWxlci1saW5lLW51bWJlci1oaWRlIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5jb2RlLXN0eWxlciBjb2RlID4gZGl2OmZpcnN0LWNoaWxkID4gW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7IC8qPyBNYWludGFpbiBndXR0ZXIgY29sb3VyIHdoZW4gcGFkZGVkICovXG5cdGJveC1zaGFkb3c6IDBweCBjYWxjKC0xICogdmFyKC0tY29kZS1wYWRkaW5nKSkgdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcblx0dHJhbnNpdGlvbjogYm94LXNoYWRvdyBlYXNlLWluLW91dCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxuLmNvZGUtc3R5bGVyIC5jb2RlLXN0eWxlci1jb2xsYXBzZWQgPiBjb2RlID4gZGl2OmZpcnN0LWNoaWxkID4gW2NsYXNzXj0nY29kZS1zdHlsZXItbGluZS1udW1iZXInXSB7IC8qPyBNYWludGFpbiBndXR0ZXIgY29sb3VyIHdoZW4gcGFkZGVkICovXG5cdGJveC1zaGFkb3c6IDBweCAwcHggdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcbn1cbi5jb2RlLXN0eWxlciBjb2RlID4gZGl2Omxhc3QtY2hpbGQgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHsgLyo/IE1haW50YWluIGd1dHRlciBjb2xvdXIgd2hlbiBwYWRkZWQgKi9cblx0Ym94LXNoYWRvdzogMHB4IHZhcigtLWNvZGUtcGFkZGluZykgdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWJhY2tncm91bmQtY29sb3VyKTtcbn1cbi5jb2RlLXN0eWxlciBjb2RlID4gZGl2Om9ubHktY2hpbGQgPiBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHsgLyo/IE1haW50YWluIGd1dHRlciBjb2xvdXIgd2hlbiBwYWRkZWQgKi9cblx0Ym94LXNoYWRvdzogMHB4IGNhbGMoLTEgKiB2YXIoLS1jb2RlLXBhZGRpbmcpKSB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItYmFja2dyb3VuZC1jb2xvdXIpLDBweCB2YXIoLS1jb2RlLXBhZGRpbmcpIHZhcigtLWNvZGUtc3R5bGVyLWd1dHRlci1iYWNrZ3JvdW5kLWNvbG91cik7XG59XG5bY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0cGFkZGluZy1sZWZ0OiBjYWxjKDRweCArIHZhcigtLWxhbmd1YWdlLWJvcmRlci13aWR0aCkpO1xuXHRwYWRkaW5nLXJpZ2h0OiA4cHg7XG5cdHRleHQtYWxpZ246IHJpZ2h0O1xuXHRtaW4td2lkdGg6IHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1taW4td2lkdGgpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItYmFja2dyb3VuZC1jb2xvdXIpO1xuXHRmb250LXNpemU6IHZhcigtLWNvZGUtc2l6ZSk7XG5cdGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm9zcGFjZSk7XG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1ndXR0ZXItdGV4dC1jb2xvdXIpO1xuXHR1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2sgLmNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyLFxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jayAuY29kZS1zdHlsZXItbGluZS1udW1iZXItc3BlY2lmaWMge1xuXHRwYWRkaW5nLXRvcDogdmFyKC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb24pO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdGhlaWdodDogMTAwJTtcblx0bWluLXdpZHRoOiBjYWxjKHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1taW4td2lkdGgpIC0gMTJweCk7XG5cdG92ZXJmbG93LXg6IGF1dG87XG5cdGRpcmVjdGlvbjogcnRsO1xuXHRsZWZ0OiAwO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiAuY29kZS1zdHlsZXItbGluZS1udW1iZXIsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luIC5jb2RlLXN0eWxlci1saW5lLW51bWJlci1zcGVjaWZpYyxcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2stZW5kIC5jb2RlLXN0eWxlci1saW5lLW51bWJlcixcbi5tYXJrZG93bi1zb3VyY2UtdmlldyAuSHlwZXJNRC1jb2RlYmxvY2stZW5kIC5jb2RlLXN0eWxlci1saW5lLW51bWJlci1zcGVjaWZpYyB7XG5cdHdpZHRoOiB2YXIoLS1saW5lLW51bWJlci1ndXR0ZXItd2lkdGgpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0Z3JpZC1jb2x1bW46IDE7XG5cdHBvc2l0aW9uOiBzdGlja3k7XG5cdHRvcDogLTFweDtcblx0bGVmdDogMDtcblx0Ym9yZGVyLXRvcDogdmFyKC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb24pIHNvbGlkIHRyYW5zcGFyZW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBkaXY6bGFzdC1jaGlsZCA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHR3aWR0aDogdW5zZXQ7XG59XG4uY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCBwcmUuY29kZS1zdHlsZXItcHJlIFtjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lLWhpZ2hsaWdodGVkXCJdIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ncmFkaWVudC1iYWNrZ3JvdW5kLWNvbG91cik7XG59XG4uY29kZS1zdHlsZXItYWN0aXZlLWxpbmUtaGlnaGxpZ2h0LmNvZGUtc3R5bGVyLWd1dHRlci1oaWdobGlnaHQgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9ja1tjbGFzcyo9XCJjb2RlLXN0eWxlci1saW5lXCJdLmNtLWFjdGl2ZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddLFxuLmNvZGUtc3R5bGVyLWFjdGl2ZS1saW5lLWhpZ2hsaWdodC1jb2RlYmxvY2suY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrW2NsYXNzKj1cImNvZGUtc3R5bGVyLWxpbmVcIl0uY20tYWN0aXZlIFtjbGFzc149J2NvZGUtc3R5bGVyLWxpbmUtbnVtYmVyJ10sXG4uY29kZS1zdHlsZXItZ3V0dGVyLWhpZ2hsaWdodCBbY2xhc3MqPVwiY29kZS1zdHlsZXItbGluZS1oaWdobGlnaHRlZFwiXSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlciddIHtcblx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwwKTtcbn1cbi5jb2RlLXN0eWxlci1ndXR0ZXItYWN0aXZlLWxpbmUgLmNtLWFjdGl2ZSBbY2xhc3NePSdjb2RlLXN0eWxlci1saW5lLW51bWJlcidde1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItZ3V0dGVyLWFjdGl2ZS10ZXh0LWNvbG91cik7XG59XG4uY29kZS1zdHlsZXIuY29kZS1zdHlsZXItc2hvdy1saW5lLW51bWJlcnMgLm1hcmtkb3duLXNvdXJjZS12aWV3IC5IeXBlck1ELWNvZGVibG9jazpoYXMoLmNvZGUtc3R5bGVyLWxpbmUtbnVtYmVyKSxcbi5jb2RlLXN0eWxlci5jb2RlLXN0eWxlci1zaG93LWxpbmUtbnVtYmVycyAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrOmhhcyguY29kZS1zdHlsZXItbGluZS1udW1iZXItc3BlY2lmaWMpIHtcblx0cGFkZGluZy1sZWZ0OiBjYWxjKDEycHggKyB2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpICsgdmFyKC0tbGluZS1udW1iZXItZ3V0dGVyLXdpZHRoKSArIHZhcigtLWxpbmUtbnVtYmVyLWd1dHRlci1wYWRkaW5nKSkgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciAubWFya2Rvd24tc291cmNlLXZpZXcgLkh5cGVyTUQtY29kZWJsb2NrW2NsYXNzKj0nY29kZS1zdHlsZXItbGluZSddOjpiZWZvcmUge1xuXHRjb250ZW50OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qKiBMaW5lIHRleHQgKi9cbnByZS5jb2RlLXN0eWxlci1wcmUgPiBjb2RlID4gZGl2W2NsYXNzKj0nY29kZS1zdHlsZXItbGluZSddIHtcblx0ZGlzcGxheTogY29udGVudHMgIWltcG9ydGFudDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgLmNvZGUtc3R5bGVyLWxpbmUtdGV4dCB7XG5cdGZsZXgtYmFzaXM6IDEwMCU7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tbGluZS1udW1iZXItZ3V0dGVyLXBhZGRpbmcpO1xuXHRncmlkLWNvbHVtbjogMjtcbn1cbi5IeXBlck1ELWNvZGVibG9jazpoYXMoPiAuY20td2lkZ2V0QnVmZmVyKSB7IC8qPyBQcmV2ZW50IExpbmUgV3JhcHMgKi9cblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5IeXBlck1ELWNvZGVibG9jazpoYXMoPiAuY20td2lkZ2V0QnVmZmVyKSA+IC5jbS1obWQtY29kZWJsb2NrIHsgLyo/IFByZXZlbnQgTGluZSBXcmFwcyAqL1xuXHR3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzO1xufVxuXG4vKiogU2Nyb2xsIEJhciAqL1xucHJlLmNvZGUtc3R5bGVyLXByZTo6LXdlYmtpdC1zY3JvbGxiYXIsXG5wcmUuY29kZS1zdHlsZXItcHJlID4gY29kZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xuXHR3aWR0aDogdmFyKC0tY29kZS1wYWRkaW5nKSAhaW1wb3J0YW50O1xuXHRoZWlnaHQ6IHZhcigtLWNvZGUtcGFkZGluZykgIWltcG9ydGFudDtcbn1cblxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyLFxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgY29kZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4vKiogQnV0dG9ucyAqL1xuQGtleWZyYW1lcyBvdXRkZW50IHtcblx0ZnJvbSB7XG5cdFx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKSAtIHZhcigtLWRlbnQtZGlmZmVyZW5jZSkpO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1pbik7XG5cdH1cblx0dG8ge1xuXHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG59XG5Aa2V5ZnJhbWVzIGluZGVudCB7XG5cdGZyb20ge1xuXHRcdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG5cdHRvIHtcblx0XHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pIC0gdmFyKC0tZGVudC1kaWZmZXJlbmNlKSk7XG5cdFx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcblx0fVxufVxuQGtleWZyYW1lcyByZXZlcnNlLW91dGRlbnQge1xuXHRmcm9tIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xuXHR9XG5cdHRvIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcblx0fVxufVxuQGtleWZyYW1lcyByZXZlcnNlLWluZGVudCB7XG5cdGZyb20ge1xuXHRcdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xuXHR9XG5cdHRvIHtcblx0XHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24taW4pO1xuXHR9XG59XG4ubWFya2Rvd24tcmVuZGVyZWQgcHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24ge1xuICAgIHRyYW5zaXRpb246IHZpc2liaWxpdHkgdmFyKC0tZHVyYXRpb24tYnV0dG9uKSwgb3BhY2l0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRvcGFjaXR5OiAxO1xuXHRkaXNwbGF5OiB1bnNldCAhaW1wb3J0YW50O1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cikgIWltcG9ydGFudDtcblx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0Ym94LXNoYWRvdzogbm9uZTtcblx0Zm9udC1mYW1pbHk6IHZhcigtLWZvbnQtaW50ZXJmYWNlKTtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXVpLXNtYWxsZXIpO1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcblx0Ym9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcblx0bWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZTpub3QoLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCk6bm90KDpob3ZlcikgYnV0dG9uLFxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgYnV0dG9uLFxucHJlLmNvZGUtc3R5bGVyLXByZTpub3QoLmNvZGUtc3R5bGVyLWNvbGxhcHNlZCk6bm90KDpob3ZlcikgW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddOjphZnRlciB7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0b3BhY2l0eTogMFxufVxuW2NsYXNzXj0nY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lciddOjphZnRlciB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0dG9wOiAwO1xuXHRib3R0b206IDA7XG5cdGxlZnQ6IDA7XG5cdHJpZ2h0OiAwO1xuXHRtYXJnaW46IGF1dG87XG5cdG1hcmdpbi1yaWdodDogdmFyKC0taGVhZGVyLWJ1dHRvbi1zcGFjaW5nKTtcblx0Y29udGVudDogXCJcXDIwMGJcIjtcblx0d2lkdGg6IDIwcHg7XG5cdGhlaWdodDogMjBweDtcblx0YmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG5cdC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMicgeG1sOnNwYWNlPSdwcmVzZXJ2ZSclM0UlM0NwYXRoIGQ9J00xNiAyMiA2IDEybDEuNC0xLjQgOC42IDguNiA4LjYtOC42TDI2IDEyeicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHQtd2Via2l0LW1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInIGZpbGw9J25vbmUnIHN0cm9rZT0nY3VycmVudENvbG9yJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCcgJTNFJTNDcG9seWxpbmUgcG9pbnRzPSc2IDkgMTIgMTUgMTggOScvJTNFJTNDL3N2ZyUzRVwiKTtcblx0bWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0dmlzaWJpbGl0eTogdmlzaWJsZTtcblx0b3BhY2l0eTogMTtcblx0c2NhbGU6IDAuODtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gdmFyKC0tZHVyYXRpb24tYnV0dG9uKSBlYXNlLW91dCwgdmlzaWJpbGl0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLWJ1dHRvbiksIHNjYWxlIHZhcigtLWR1cmF0aW9uLWJ1dHRvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4xNCwgMC4zLCAxKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTo6YWZ0ZXIsXG4ubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IFtjbGFzc149J2NvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXInXTpub3QoOmhhcygrIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbikpOjphZnRlciB7XG5cdHRyYW5zZm9ybTogcm90YXRlKC05MGRlZyk7XG59XG5bY2xhc3NePSdjb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyJ106aG92ZXI6OmFmdGVyIHtcblx0c2NhbGU6IDE7XG59XG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5naWNvbnMtYWx3YXlzKTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ25hbWVzLWFsd2F5cykgcHJlLmNvZGUtc3R5bGVyLXByZTpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyKSBidXR0b24uY29weS1jb2RlLWJ1dHRvbixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIHByZS5jb2RlLXN0eWxlci1wcmU6bm90KDpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyLXNwZWNpZmljKSk6bm90KDpoYXMoIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIGltZy5jb2RlLXN0eWxlci1pY29uKSkgYnV0dG9uLmNvcHktY29kZS1idXR0b24sXG5ib2R5IHByZS5jb2RlLXN0eWxlci1wcmU6bm90KFtjbGFzcyo9J2xhbmd1YWdlLSddKTpoYXMoLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIpIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uIHsgLyo/IERlcGVuZGluZyBvbiBoZWFkZXIgdmlzaWJpbGl0eSAqL1xuXHR0b3A6IGNhbGMoMC41ICogdmFyKC0tZm9udC10ZXh0LXNpemUpICogMC44NzUgKiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpKSAhaW1wb3J0YW50O1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiAxMnB4O1xufVxuYm9keTpub3QoLmNvZGUtc3R5bGVyLXNob3ctbGFuZ2ljb25zLWFsd2F5cyk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXIgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4sXG5ib2R5Om5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKCBpbWcuY29kZS1zdHlsZXItaWNvbikpICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKFtjbGFzcyo9J2NvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctJ10pKSArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiB7IC8qPyBEZXBlbmRpbmcgb24gaGVhZGVyIHZpc2liaWxpdHkgKi9cblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyICsgLkh5cGVyTUQtY29kZWJsb2NrLWJlZ2luIHNwYW4uY29kZS1ibG9jay1mbGFpcixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5tYXJrZG93bi1zb3VyY2UtdmlldyA6bm90KHByZS5jb2RlLXN0eWxlci1wcmUpID4gLmNvZGUtc3R5bGVyLWhlYWRlci1jb250YWluZXI6bm90KDpoYXMoIGltZy5jb2RlLXN0eWxlci1pY29uKSkgKyAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4gc3Bhbi5jb2RlLWJsb2NrLWZsYWlyLFxuYm9keSAubWFya2Rvd24tc291cmNlLXZpZXcgOm5vdChwcmUuY29kZS1zdHlsZXItcHJlKSA+IC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyOm5vdCg6aGFzKFtjbGFzcyo9J2NvZGUtc3R5bGVyLWhlYWRlci1sYW5ndWFnZS10YWctJ10pKSArIC5IeXBlck1ELWNvZGVibG9jay1iZWdpbiBzcGFuLmNvZGUtYmxvY2stZmxhaXIgeyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdHRvcDogY2FsYygwLjUgKiB2YXIoLS1mb250LXRleHQtc2l6ZSkgKiAwLjg3NSAqIHZhcigtLWxpbmUtaGVpZ2h0LW5vcm1hbCkpICFpbXBvcnRhbnQ7XG5cdC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW46IDEycHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHR0b3A6IG1heChjYWxjKDAuNSAqIHZhcigtLWNvbnRhaW5lci1oZWlnaHQpICogMSksY2FsYygwLjUgKiB2YXIoLS1jb250YWluZXItbWluLWhlaWdodCkgKiAxKSkgIWltcG9ydGFudDtcblx0Ym90dG9tOiB1bnNldCAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbixcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbiwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyIHtcblx0bWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luKSAtIHZhcigtLWRlbnQtZGlmZmVyZW5jZSkpO1xuXHR3aWxsLWNoYW5nZTogbWFyZ2luLXJpZ2h0LCBjbGlwLXBhdGg7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1pbik7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOm5vdCg6YWN0aXZlKSxcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbjpub3QoOmFjdGl2ZSksIC8qPyBFeGVjdXRlIENvZGUgUGx1Z2luIENvbXBhdGliaWxpdHkgKi9cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpcjpub3QoOmFjdGl2ZSkge1xuXHRhbmltYXRpb246IGluZGVudCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY29weS1jb2RlLWJ1dHRvbjpob3ZlcixcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbjpob3ZlciwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOmhvdmVye1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0YW5pbWF0aW9uOiBvdXRkZW50IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdG1hcmdpbi1yaWdodDogdmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pO1xuXHRjbGlwLXBhdGg6IHZhcigtLXBvbHlnb24tb3V0KTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNvcHktY29kZS1idXR0b246YWN0aXZlLFxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24ucnVuLWNvZGUtYnV0dG9uOmFjdGl2ZSwgLyo/IEV4ZWN1dGUgQ29kZSBQbHVnaW4gQ29tcGF0aWJpbGl0eSAqL1xuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOmFjdGl2ZSB7XG5cdHNjYWxlOiAwLjk1O1xuXHR0cmFuc2l0aW9uOiBzY2FsZSB2YXIoLS1kdXJhdGlvbi1idXR0b24pIGN1YmljLWJlemllcigwLjQsIDAuMTQsIDAuMywgMSk7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOjpiZWZvcmUsXG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuSHlwZXJNRC1jb2RlYmxvY2suY29kZS1zdHlsZXItbGluZSBzcGFuLmNvZGUtYmxvY2stZmxhaXI6OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFwyMDBiXCI7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6IDE0cHg7XG5cdGhlaWdodDogMTRweDtcblx0cGFkZGluZy1yaWdodDogNHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1idXR0b24tY29sb3VyKTtcblx0LXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTI4IDEwdjE4SDEwVjEwaDE4bTAtMkgxMGEyIDIgMCAwIDAtMiAydjE4YTIgMiAwIDAgMCAyIDJoMThhMiAyIDAgMCAwIDItMlYxMGEyIDIgMCAwIDAtMi0yWicvJTNFJTNDcGF0aCBkPSdNNCAxOEgyVjRhMiAyIDAgMCAxIDItMmgxNHYySDRaJy8lM0UlM0NwYXRoIGZpbGw9J25vbmUnIGQ9J00wIDBoMzJ2MzJIMHonIGRhdGEtbmFtZT0nJmx0O1RyYW5zcGFyZW50IFJlY3RhbmdsZSZndDsnLyUzRSUzQy9zdmclM0VcIik7XG5cdC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0bWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAzMiAzMiclM0UlM0NwYXRoIGQ9J00yOCAxMHYxOEgxMFYxMGgxOG0wLTJIMTBhMiAyIDAgMCAwLTIgMnYxOGEyIDIgMCAwIDAgMiAyaDE4YTIgMiAwIDAgMCAyLTJWMTBhMiAyIDAgMCAwLTItMlonLyUzRSUzQ3BhdGggZD0nTTQgMThIMlY0YTIgMiAwIDAgMSAyLTJoMTR2Mkg0WicvJTNFJTNDcGF0aCBmaWxsPSdub25lJyBkPSdNMCAwaDMydjMySDB6JyBkYXRhLW5hbWU9JyZsdDtUcmFuc3BhcmVudCBSZWN0YW5nbGUmZ3Q7Jy8lM0UlM0Mvc3ZnJTNFXCIpO1xuXHRtYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHR2ZXJ0aWNhbC1hbGlnbjogMXB4O1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyIHtcblx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRmb250LXNpemU6IDA7XG5cdHRvcDogbWluKGNhbGMoLTAuNSAqIHZhcigtLWNvbnRhaW5lci1oZWlnaHQpICogMS4xIC0gdmFyKC0taGVhZGVyLXNlcGFyYXRvci13aWR0aCkpLGNhbGMoLTAuNSAqIHZhcigtLWNvbnRhaW5lci1taW4taGVpZ2h0KSAqIDEuMSAtIHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpKSkgIWltcG9ydGFudDtcblx0cmlnaHQ6IDA7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0cGFkZGluZzogMDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRsaW5lLWhlaWdodDogaW5pdGlhbCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5IeXBlck1ELWNvZGVibG9jay5jb2RlLXN0eWxlci1saW5lIHNwYW4uY29kZS1ibG9jay1mbGFpciA+ICoge1xuXHR3aWR0aDogMHB4O1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOjpiZWZvcmUge1xuXHR2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXHRvcGFjaXR5OiAxO1xuXHR2ZXJ0aWNhbC1hbGlnbjogLTFweDtcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXVpLXNtYWxsZXIpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLkh5cGVyTUQtY29kZWJsb2NrLmNvZGUtc3R5bGVyLWxpbmUgc3Bhbi5jb2RlLWJsb2NrLWZsYWlyOjphZnRlciB7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdG9wYWNpdHk6IDE7XG5cdGZvbnQtc2l6ZTogdmFyKC0tZm9udC11aS1zbWFsbGVyKTtcblx0Y29udGVudDogJ0NvcHknO1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cik7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuSHlwZXJNRC1jb2RlYmxvY2stYmVnaW4uY29kZS1zdHlsZXItbGluZSB7XG5cdG92ZXJmbG93OiB2aXNpYmxlO1xufVxuIiwgIi8qKiBJbmxpbmUgQ29kZSAqL1xuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20taW5saW5lLWNvZGUsXG4uY29kZS1zdHlsZXIgLm1hcmtkb3duLXJlbmRlcmVkIDpub3QocHJlKSA+IGNvZGUge1xuXHRmb250LXdlaWdodDogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWZvbnQtd2VpZ2h0KTtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXIpO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYmFja2dyb3VuZC1jb2xvdXIpICFpbXBvcnRhbnQ7XG5cdGJvcmRlci1yYWRpdXM6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzKSAhaW1wb3J0YW50O1xuXHRwYWRkaW5nOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy12ZXJ0aWNhbCkgdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctaG9yaXpvbnRhbCkgIWltcG9ydGFudDtcblx0bWFyZ2luOiAwcHggdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLW1hcmdpbi1ob3Jpem9udGFsKSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20tZm9ybWF0dGluZy1jb2RlIHsgLyo/IFN0YW5kYWxvbmUgYmFja3RpY2tzICovXG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtY29sb3VyLWFjdGl2ZSk7XG5cdGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY29kZS1zdHlsZXItaW5saW5lLW9wZW5lciB+IHNwYW4uY20taW5saW5lLWNvZGU6bm90KC5jbS1mb3JtYXR0aW5nLWNvZGUpIHtcblx0bWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRib3JkZXItcmFkaXVzOiAwcHggdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpIHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzKSAwcHggIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciAuY20tcy1vYnNpZGlhbiBzcGFuLmNvZGUtc3R5bGVyLWlubGluZS1vcGVuZXIsXG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1mb3JtYXR0aW5nLWNvZGU6aGFzKCsgc3Bhbi5jbS1pbmxpbmUtY29kZTpub3QoLmNtLWZvcm1hdHRpbmctY29kZSkpIHsvKj8gRmlyc3QgYmFja3RpY2sgKi9cblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlKTtcblx0Ym9yZGVyLXJhZGl1czogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpIDBweCAwcHggdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLWJvcmRlci1yYWRpdXMpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctaG9yaXpvbnRhbCkgIWltcG9ydGFudDtcblx0cGFkZGluZy1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtbWFyZ2luLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1yaWdodDogMHB4ICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1mb3JtYXR0aW5nLWNvZGUgKyBzcGFuLmNtLWlubGluZS1jb2RlOm5vdCguY20tZm9ybWF0dGluZy1jb2RlKSB7IC8qPyBJbm5lciBjb2RlIHdpdGggYmFja3RpY2tzICovXG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtY29sb3VyLWFjdGl2ZSk7XG5cdGJvcmRlci1yYWRpdXM6IDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xuXHRwYWRkaW5nLXJpZ2h0OiAwcHggIWltcG9ydGFudDtcblx0bWFyZ2luOiAwcHggMHB4ICFpbXBvcnRhbnQ7XG59XG4uY29kZS1zdHlsZXIgLmNtLXMtb2JzaWRpYW4gc3Bhbi5jbS1pbmxpbmUtY29kZTpub3QoLmNtLWZvcm1hdHRpbmctY29kZSkgKyBzcGFuLmNtLWZvcm1hdHRpbmctY29kZSB7Lyo/IExhc3QgYmFja3RpY2sgKi9cblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlKTtcblx0Ym9yZGVyLXJhZGl1czogMHB4IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzKSB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtYm9yZGVyLXJhZGl1cykgMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogMHB4ICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctcmlnaHQ6IHZhcigtLWNvZGUtc3R5bGVyLWlubGluZS1wYWRkaW5nLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG5cdG1hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtbWFyZ2luLWhvcml6b250YWwpICFpbXBvcnRhbnQ7XG59XG5ib2R5LmNvZGUtc3R5bGVyIHNwYW4uY29kZS1zdHlsZXItaW5saW5lLW9wZW5lciA+IHNwYW4gPiBpbWcuY29kZS1zdHlsZXItaW5saW5lLWljb246bm90KFtjbGFzcyo9XCJlbW9qaVwiXSkge1xuXHRoZWlnaHQ6IGNhbGModmFyKC0tY29kZS1zaXplKSAqIDEuMik7XG5cdG1hcmdpbi1ib3R0b206IDJweCAhaW1wb3J0YW50O1xuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcbn1cbi5jb2RlLXN0eWxlciBzcGFuLmNvZGUtc3R5bGVyLWlubGluZS1vcGVuZXIgLmNvZGUtc3R5bGVyLWlubGluZS10aXRsZSB7XG5cdGZvbnQtd2VpZ2h0OiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGUtZm9udC13ZWlnaHQpO1xuXHRjb2xvcjogdmFyKC0tY29kZS1zdHlsZXItaW5saW5lLXRpdGxlLWNvbG91cik7XG59XG4uY29kZS1zdHlsZXIgc3Bhbi5jb2RlLXN0eWxlci1pbmxpbmUtb3BlbmVyIC5jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGU6OmFmdGVyIHtcblx0Y29udGVudDogJ1xcRkY1Qyc7XG5cdGNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1pbmxpbmUtdGl0bGUtY29sb3IpO1xufVxuLmNvZGUtc3R5bGVyIHNwYW4uY29kZS1zdHlsZXItaW5saW5lLW9wZW5lciBzcGFuOmhhcyggPiBpbWcuY29kZS1zdHlsZXItaW5saW5lLWljb24pIHtcblx0cGFkZGluZy1yaWdodDogOHB4O1xufVxuLmNvZGUtc3R5bGVyIC5jbS1zLW9ic2lkaWFuIHNwYW4uY20taW5saW5lLWNvZGUgLmNvZGUtc3R5bGVyLWlubGluZS1wYXJhbWV0ZXJzIHtcblx0Y29sb3I6IHZhcigtLWNvZGUtY29tbWVudCk7XG59XG4iLCAiZGl2LnByaW50IHtcblx0LS1saW5lLXdyYXBwaW5nOiBwcmUtd3JhcCAhaW1wb3J0YW50O1xufVxuLmNvZGUtc3R5bGVyIGRpdi5wcmludCBwcmUuY29kZS1zdHlsZXItcHJlIGNvZGUge1xuXHRtYXgtaGVpZ2h0OiB1bnNldDtcbn1cbi5jb2RlLXN0eWxlciBkaXYucHJpbnQgcHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgY29kZSB7XG5cdGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cbiIsICIvKiogUGlja3IgMS44LjIgTUlUIHwgaHR0cHM6Ly9naXRodWIuY29tL1NpbW9ud2VwL3BpY2tyICovXG4ucGlja3Ige3Bvc2l0aW9uOiByZWxhdGl2ZTtvdmVyZmxvdzogdmlzaWJsZTt0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCl9ICAucGlja3IgKiB7Ym94LXNpemluZzogYm9yZGVyLWJveDtvdXRsaW5lOiBub25lO2JvcmRlcjogbm9uZTthcHBlYXJhbmNlOiBub25lOy13ZWJraXQtYXBwZWFyYW5jZTogbm9uZX0gIC5waWNrciAucGNyLWJ1dHRvbiB7cG9zaXRpb246IHJlbGF0aXZlO2hlaWdodDogMmVtO3dpZHRoOiAyZW07cGFkZGluZzogMC41ZW07Y3Vyc29yOiBwb2ludGVyO2ZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtib3JkZXItcmFkaXVzOiAuMTVlbTtiYWNrZ3JvdW5kOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUwIDUwXCIgc3Ryb2tlPVwiJTIzNDI0NDVBXCIgc3Ryb2tlLXdpZHRoPVwiNXB4XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiPjxwYXRoIGQ9XCJNNDUsNDVMNSw1XCI+PC9wYXRoPjxwYXRoIGQ9XCJNNDUsNUw1LDQ1XCI+PC9wYXRoPjwvc3ZnPicpIG5vLXJlcGVhdCBjZW50ZXI7YmFja2dyb3VuZC1zaXplOiAwO3RyYW5zaXRpb246IGFsbCAwLjNzfSAgLnBpY2tyIC5wY3ItYnV0dG9uOjpiZWZvcmUge3Bvc2l0aW9uOiBhYnNvbHV0ZTtjb250ZW50OiAnJzt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyIDJcIj48cGF0aCBmaWxsPVwid2hpdGVcIiBkPVwiTTEsMEgyVjFIMVYwWk0wLDFIMVYySDBWMVpcIi8+PHBhdGggZmlsbD1cImdyYXlcIiBkPVwiTTAsMEgxVjFIMFYwWk0xLDFIMlYySDFWMVpcIi8+PC9zdmc+Jyk7YmFja2dyb3VuZC1zaXplOiAuNWVtO2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBpY2tyIC5wY3ItYnV0dG9uOjpiZWZvcmUge3otaW5kZXg6IGluaXRpYWx9ICAucGlja3IgLnBjci1idXR0b246OmFmdGVyIHtwb3NpdGlvbjogYWJzb2x1dGU7Y29udGVudDogJyc7dG9wOiAwO2xlZnQ6IDA7aGVpZ2h0OiAxMDAlO3dpZHRoOiAxMDAlO3RyYW5zaXRpb246IGJhY2tncm91bmQgMC4zcztiYWNrZ3JvdW5kOiB2YXIoLS1wY3ItY29sb3IpO2JvcmRlci1yYWRpdXM6IC4xNWVtfSAgLnBpY2tyIC5wY3ItYnV0dG9uLmNsZWFyIHtiYWNrZ3JvdW5kLXNpemU6IDcwJX0gIC5waWNrciAucGNyLWJ1dHRvbi5jbGVhcjo6YmVmb3JlIHtvcGFjaXR5OiAwfSAgLnBpY2tyIC5wY3ItYnV0dG9uLmNsZWFyOmZvY3VzIHtib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSwgMCAwIDAgM3B4IHZhcigtLXBjci1jb2xvcil9ICAucGlja3IgLnBjci1idXR0b24uZGlzYWJsZWQge2N1cnNvcjogbm90LWFsbG93ZWR9ICAucGlja3IgKiwgLnBjci1hcHAgKiB7Ym94LXNpemluZzogYm9yZGVyLWJveDtvdXRsaW5lOiBub25lO2JvcmRlcjogbm9uZTthcHBlYXJhbmNlOiBub25lOy13ZWJraXQtYXBwZWFyYW5jZTogbm9uZX0gIC5waWNrciBpbnB1dDpmb2N1cywgLnBpY2tyIGlucHV0LnBjci1hY3RpdmUsIC5waWNrciBidXR0b246Zm9jdXMsIC5waWNrciBidXR0b24ucGNyLWFjdGl2ZSwgLnBjci1hcHAgaW5wdXQ6Zm9jdXMsIC5wY3ItYXBwIGlucHV0LnBjci1hY3RpdmUsIC5wY3ItYXBwIGJ1dHRvbjpmb2N1cywgLnBjci1hcHAgYnV0dG9uLnBjci1hY3RpdmUge2JveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpLCAwIDAgMCAzcHggdmFyKC0tcGNyLWNvbG9yKX0gIC5waWNrciAucGNyLXBhbGV0dGUsIC5waWNrciAucGNyLXNsaWRlciwgLnBjci1hcHAgLnBjci1wYWxldHRlLCAucGNyLWFwcCAucGNyLXNsaWRlciB7dHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjNzfSAgLnBpY2tyIC5wY3ItcGFsZXR0ZTpmb2N1cywgLnBpY2tyIC5wY3Itc2xpZGVyOmZvY3VzLCAucGNyLWFwcCAucGNyLXBhbGV0dGU6Zm9jdXMsIC5wY3ItYXBwIC5wY3Itc2xpZGVyOmZvY3VzIHtib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSwgMCAwIDAgM3B4IHJnYmEoMCwgMCwgMCwgMC4yNSl9ICAucGNyLWFwcCB7cG9zaXRpb246IGZpeGVkO2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjt6LWluZGV4OiAxMDAwMDtib3JkZXItcmFkaXVzOiAwLjFlbTtiYWNrZ3JvdW5kOiAjZmZmO29wYWNpdHk6IDA7dmlzaWJpbGl0eTogaGlkZGVuO3RyYW5zaXRpb246IG9wYWNpdHkgMC4zcywgdmlzaWJpbGl0eSAwcyAwLjNzO2ZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2EgTmV1ZVwiLCBBcmlhbCwgc2Fucy1zZXJpZjtib3gtc2hhZG93OiAwIDAuMTVlbSAxLjVlbSAwIHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwIDFlbSAwIHJnYmEoMCwgMCwgMCwgMC4wMyk7bGVmdDogMDt0b3A6IDB9ICAucGNyLWFwcC52aXNpYmxlIHt0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7dmlzaWJpbGl0eTogdmlzaWJsZTtvcGFjaXR5OiAxfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyB7ZGlzcGxheTogZmxleDtmbGV4LXdyYXA6IHdyYXA7bWFyZ2luLXRvcDogMC43NWVtfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcy5wY3ItbGFzdCB7bWFyZ2luOiAwfSAgQHN1cHBvcnRzIChkaXNwbGF5OiBncmlkKSB7ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzIHtkaXNwbGF5OiBncmlkO2FsaWduLWl0ZW1zOiBjZW50ZXI7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIDEuNzVlbSl9ICB9ICAucGNyLWFwcCAucGNyLXN3YXRjaGVzID4gYnV0dG9uIHtmb250LXNpemU6IDFlbTtwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IGNhbGMoMS43NWVtIC0gMTBweCk7aGVpZ2h0OiBjYWxjKDEuNzVlbSAtIDEwcHgpO2JvcmRlci1yYWRpdXM6IDAuMTVlbTtjdXJzb3I6IHBvaW50ZXI7bWFyZ2luOiAyLjVweDtmbGV4LXNocmluazogMDtqdXN0aWZ5LXNlbGY6IGNlbnRlcjt0cmFuc2l0aW9uOiBhbGwgMC4xNXM7b3ZlcmZsb3c6IGhpZGRlbjtiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDt6LWluZGV4OiAxfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjo6YmVmb3JlIHtwb3NpdGlvbjogYWJzb2x1dGU7Y29udGVudDogJyc7dG9wOiAwO2xlZnQ6IDA7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO2JhY2tncm91bmQ6IHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMiAyXCI+PHBhdGggZmlsbD1cIndoaXRlXCIgZD1cIk0xLDBIMlYxSDFWMFpNMCwxSDFWMkgwVjFaXCIvPjxwYXRoIGZpbGw9XCJncmF5XCIgZD1cIk0wLDBIMVYxSDBWMFpNMSwxSDJWMkgxVjFaXCIvPjwvc3ZnPicpO2JhY2tncm91bmQtc2l6ZTogNnB4O2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjo6YWZ0ZXIge2NvbnRlbnQ6ICcnO3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdmFyKC0tcGNyLWNvbG9yKTtib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDUpO2JvcmRlci1yYWRpdXM6IDAuMTVlbTtib3gtc2l6aW5nOiBib3JkZXItYm94fSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjpob3ZlciB7ZmlsdGVyOiBicmlnaHRuZXNzKDEuMDUpfSAgLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbjpub3QoLnBjci1hY3RpdmUpIHtib3gtc2hhZG93OiBub25lfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiB7ZGlzcGxheTogZmxleDtmbGV4LXdyYXA6IHdyYXA7YWxpZ24taXRlbXM6IGNlbnRlcjttYXJnaW46IDAgLTAuMmVtIDAgLTAuMmVtfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiA+ICoge21hcmdpbjogMCAwLjJlbX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gaW5wdXQge2xldHRlci1zcGFjaW5nOiAwLjA3ZW07Zm9udC1zaXplOiAwLjc1ZW07dGV4dC1hbGlnbjogY2VudGVyO2N1cnNvcjogcG9pbnRlcjtjb2xvcjogIzc1Nzk3ZTtiYWNrZ3JvdW5kOiAjZjFmM2Y0O2JvcmRlci1yYWRpdXM6IC4xNWVtO3RyYW5zaXRpb246IGFsbCAwLjE1cztwYWRkaW5nOiAwLjQ1ZW0gMC41ZW07bWFyZ2luLXRvcDogMC43NWVtfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiBpbnB1dDpob3ZlciB7ZmlsdGVyOiBicmlnaHRuZXNzKDAuOTc1KX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gaW5wdXQ6Zm9jdXMge2JveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpLCAwIDAgMCAzcHggcmdiYSg2NiwgMTMzLCAyNDQsIDAuNzUpfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXJlc3VsdCB7Y29sb3I6ICM3NTc5N2U7dGV4dC1hbGlnbjogbGVmdDtmbGV4OiAxIDEgOGVtO21pbi13aWR0aDogOGVtO3RyYW5zaXRpb246IGFsbCAwLjJzO2JvcmRlci1yYWRpdXM6IC4xNWVtO2JhY2tncm91bmQ6ICNmMWYzZjQ7Y3Vyc29yOiB0ZXh0fSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXJlc3VsdDo6LW1vei1zZWxlY3Rpb24ge2JhY2tncm91bmQ6ICM0Mjg1ZjQ7Y29sb3I6ICNmZmZ9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItcmVzdWx0OjpzZWxlY3Rpb24ge2JhY2tncm91bmQ6ICM0Mjg1ZjQ7Y29sb3I6ICNmZmZ9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItdHlwZS5hY3RpdmUge2NvbG9yOiAjZmZmO2JhY2tncm91bmQ6ICM0Mjg1ZjR9ICAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3Itc2F2ZSwgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNhbmNlbCwgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNsZWFyIHtjb2xvcjogI2ZmZjt3aWR0aDogYXV0b30gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1zYXZlLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2FuY2VsLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2xlYXIge2NvbG9yOiAjZmZmfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLXNhdmU6aG92ZXIsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jYW5jZWw6aG92ZXIsIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1jbGVhcjpob3ZlciB7ZmlsdGVyOiBicmlnaHRuZXNzKDAuOTI1KX0gIC5wY3ItYXBwIC5wY3ItaW50ZXJhY3Rpb24gLnBjci1zYXZlIHtiYWNrZ3JvdW5kOiAjNDI4NWY0fSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNsZWFyLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2FuY2VsIHtiYWNrZ3JvdW5kOiAjZjQ0MjUwfSAgLnBjci1hcHAgLnBjci1pbnRlcmFjdGlvbiAucGNyLWNsZWFyOmZvY3VzLCAucGNyLWFwcCAucGNyLWludGVyYWN0aW9uIC5wY3ItY2FuY2VsOmZvY3VzIHtib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg1KSwgMCAwIDAgM3B4IHJnYmEoMjQ0LCA2NiwgODAsIDAuNzUpfSAgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1waWNrZXIge3Bvc2l0aW9uOiBhYnNvbHV0ZTtoZWlnaHQ6IDE4cHg7d2lkdGg6IDE4cHg7Ym9yZGVyOiAycHggc29saWQgI2ZmZjtib3JkZXItcmFkaXVzOiAxMDAlOy13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7LW1vei11c2VyLXNlbGVjdDogbm9uZTstbXMtdXNlci1zZWxlY3Q6IG5vbmU7dXNlci1zZWxlY3Q6IG5vbmV9ICAucGNyLWFwcCAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXBhbGV0dGUsIC5wY3ItYXBwIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciwgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5IHtwb3NpdGlvbjogcmVsYXRpdmU7LXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTstbW96LXVzZXItc2VsZWN0OiBub25lOy1tcy11c2VyLXNlbGVjdDogbm9uZTt1c2VyLXNlbGVjdDogbm9uZTtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Y3Vyc29yOiBncmFiO2N1cnNvcjogLXdlYmtpdC1ncmFifSAgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wYWxldHRlOmFjdGl2ZSwgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1jaG9vc2VyOmFjdGl2ZSwgLnBjci1hcHAgLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5OmFjdGl2ZSB7Y3Vyc29yOiBncmFiYmluZztjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmd9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10ge3dpZHRoOiAxNC4yNWVtO21heC13aWR0aDogOTV2d30gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXN3YXRjaGVzIHttYXJnaW4tdG9wOiAuNmVtO3BhZGRpbmc6IDAgLjZlbX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLWludGVyYWN0aW9uIHtwYWRkaW5nOiAwIC42ZW0gLjZlbSAuNmVtfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIHtkaXNwbGF5OiBncmlkO2dyaWQtZ2FwOiAuNmVtO2dyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDRmcjtncmlkLXRlbXBsYXRlLXJvd3M6IDVmciBhdXRvIGF1dG87YWxpZ24taXRlbXM6IGNlbnRlcjtoZWlnaHQ6IDEwLjVlbTt3aWR0aDogMTAwJTthbGlnbi1zZWxmOiBmbGV4LXN0YXJ0fSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcHJldmlldyB7Z3JpZC1hcmVhOiAyIC8gMSAvIDQgLyAxO2hlaWdodDogMTAwJTt3aWR0aDogMTAwJTtkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7bWFyZ2luLWxlZnQ6IC42ZW19ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1wcmV2aWV3IC5wY3ItbGFzdC1jb2xvciB7ZGlzcGxheTogbm9uZX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXByZXZpZXcgLnBjci1jdXJyZW50LWNvbG9yIHtwb3NpdGlvbjogcmVsYXRpdmU7YmFja2dyb3VuZDogdmFyKC0tcGNyLWNvbG9yKTt3aWR0aDogMmVtO2hlaWdodDogMmVtO2JvcmRlci1yYWRpdXM6IDUwZW07b3ZlcmZsb3c6IGhpZGRlbn0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXByZXZpZXcgLnBjci1jdXJyZW50LWNvbG9yOjpiZWZvcmUge3Bvc2l0aW9uOiBhYnNvbHV0ZTtjb250ZW50OiAnJzt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyIDJcIj48cGF0aCBmaWxsPVwid2hpdGVcIiBkPVwiTTEsMEgyVjFIMVYwWk0wLDFIMVYySDBWMVpcIi8+PHBhdGggZmlsbD1cImdyYXlcIiBkPVwiTTAsMEgxVjFIMFYwWk0xLDFIMlYySDFWMVpcIi8+PC9zdmc+Jyk7YmFja2dyb3VuZC1zaXplOiAuNWVtO2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcGFsZXR0ZSB7Z3JpZC1hcmVhOiAxIC8gMSAvIDIgLyAzO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTt6LWluZGV4OiAxfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItcGFsZXR0ZSAucGNyLXBhbGV0dGUge2JvcmRlci1yYWRpdXM6IC4xNWVtO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLXBhbGV0dGUgLnBjci1wYWxldHRlOjpiZWZvcmUge3Bvc2l0aW9uOiBhYnNvbHV0ZTtjb250ZW50OiAnJzt0b3A6IDA7bGVmdDogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7YmFja2dyb3VuZDogdXJsKCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyIDJcIj48cGF0aCBmaWxsPVwid2hpdGVcIiBkPVwiTTEsMEgyVjFIMVYwWk0wLDFIMVYySDBWMVpcIi8+PHBhdGggZmlsbD1cImdyYXlcIiBkPVwiTTAsMEgxVjFIMFYwWk0xLDFIMlYySDFWMVpcIi8+PC9zdmc+Jyk7YmFja2dyb3VuZC1zaXplOiAuNWVtO2JvcmRlci1yYWRpdXM6IC4xNWVtO3otaW5kZXg6IC0xfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciB7Z3JpZC1hcmVhOiAyIC8gMiAvIDIgLyAyfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3Itb3BhY2l0eSB7Z3JpZC1hcmVhOiAzIC8gMiAvIDMgLyAyfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciwgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3Itb3BhY2l0eSB7aGVpZ2h0OiAwLjVlbTttYXJnaW46IDAgLjZlbX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLWNob29zZXIgLnBjci1waWNrZXIsIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLW9wYWNpdHkgLnBjci1waWNrZXIge3RvcDogNTAlO3RyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKX0gIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLWNob29zZXIgLnBjci1zbGlkZXIsIC5wY3ItYXBwW2RhdGEtdGhlbWU9J25hbm8nXSAucGNyLXNlbGVjdGlvbiAucGNyLWNvbG9yLW9wYWNpdHkgLnBjci1zbGlkZXIge2ZsZXgtZ3JvdzogMTtib3JkZXItcmFkaXVzOiA1MGVtfSAgLnBjci1hcHBbZGF0YS10aGVtZT0nbmFubyddIC5wY3Itc2VsZWN0aW9uIC5wY3ItY29sb3ItY2hvb3NlciAucGNyLXNsaWRlciB7YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZWQsICNmZjAsIGxpbWUsIGN5YW4sIGJsdWUsICNmMGYsIHJlZCl9ICAucGNyLWFwcFtkYXRhLXRoZW1lPSduYW5vJ10gLnBjci1zZWxlY3Rpb24gLnBjci1jb2xvci1vcGFjaXR5IC5wY3Itc2xpZGVyIHtiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHRyYW5zcGFyZW50LCBibGFjayksIHVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMiAyXCI+PHBhdGggZmlsbD1cIndoaXRlXCIgZD1cIk0xLDBIMlYxSDFWMFpNMCwxSDFWMkgwVjFaXCIvPjxwYXRoIGZpbGw9XCJncmF5XCIgZD1cIk0wLDBIMVYxSDBWMFpNMSwxSDJWMkgxVjFaXCIvPjwvc3ZnPicpO2JhY2tncm91bmQtc2l6ZTogMTAwJSwgMC4yNWVtfVxuLnBjci1hcHAgLnBjci1zd2F0Y2hlcyA+IGJ1dHRvbiB7XG5cdHBhZGRpbmc6IDA7XG59XG4iLCAiLyoqIEV4ZWN1dGUgQ29kZSBQbHVnaW4gKi9cbnByZS5jb2RlLXN0eWxlci1wcmUgY29kZSB+IGNvZGUubGFuZ3VhZ2Utb3V0cHV0IHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdG1hcmdpbi1ib3R0b206IDA7XG5cdHBhZGRpbmctYm90dG9tOiBjYWxjKDIuNSAqIHZhcigtLWNvZGUtcGFkZGluZykpICFpbXBvcnRhbnQ7XG5cdHBhZGRpbmctbGVmdDogY2FsYyh2YXIoLS1saW5lLW51bWJlci1ndXR0ZXItcGFkZGluZykpICFpbXBvcnRhbnQ7XG5cdGJvcmRlci10b3A6IHZhcigtLWhlYWRlci1zZXBhcmF0b3Itd2lkdGgpIHNvbGlkIHZhcigtLWNvZGUtc3R5bGVyLWhlYWRlci1zZXBhcmF0b3ItY29sb3VyKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUuY29kZS1zdHlsZXItY29sbGFwc2VkIGNvZGUgfiBjb2RlLmxhbmd1YWdlLW91dHB1dCB7XG5cdGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRib3JkZXItdG9wLXdpZHRoOiAwO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZTpob3ZlciBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQge1xuXHRtYXJnaW4tYm90dG9tOiAwO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlIH4gY29kZS5sYW5ndWFnZS1vdXRwdXQgaW5wdXQuaW50ZXJhY3RpdmUtc3RkaW4ge1xuICAgIGNvbG9yOiB2YXIoLS10ZXh0LW5vcm1hbCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29kZS1zdHlsZXItY29kZWJsb2NrLWJhY2tncm91bmQtY29sb3VyKTtcbiAgICBwYWRkaW5nOiAycHggOHB4O1xuICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY29kZS1jb21tZW50KTtcblx0Ym9yZGVyLXN0eWxlOiBzb2xpZDtcblx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHRib3JkZXItd2lkdGg6IDFweDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgY29kZSB+IGNvZGUubGFuZ3VhZ2Utb3V0cHV0IGhyIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbiB7XG5cdC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW46IDEycHg7XG5cdC0tZGVudC1kaWZmZXJlbmNlOiAyNHB4O1xuXHRoZWlnaHQ6IDE0cHg7XG5cdG1hcmdpbi1ib3R0b206IDZweCAhaW1wb3J0YW50O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZS5jb2RlLXN0eWxlci1jb2xsYXBzZWQgYnV0dG9uLnJ1bi1jb2RlLWJ1dHRvbiB7XG5cdHRvcDogNTAwcHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5ydW4tY29kZS1idXR0b246OmJlZm9yZSB7XG5cdGNvbnRlbnQ6IFwiXFwyMDBiXCI7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6IDE0cHg7XG5cdGhlaWdodDogMTRweDtcblx0cGFkZGluZy1yaWdodDogNHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2RlLXN0eWxlci1idXR0b24tY29sb3VyKTtcblx0LXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTcgMjhhMSAxIDAgMCAxLTEtMVY1YTEgMSAwIDAgMSAxLjQ4Mi0uODc2bDIwIDExYTEgMSAwIDAgMSAwIDEuNzUybC0yMCAxMUExIDEgMCAwIDEgNyAyOFonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicgZGF0YS1uYW1lPScmbHQ7VHJhbnNwYXJlbnQgUmVjdGFuZ2xlJmd0OycvJTNFJTNDL3N2ZyUzRVwiKTtcblx0LXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTcgMjhhMSAxIDAgMCAxLTEtMVY1YTEgMSAwIDAgMSAxLjQ4Mi0uODc2bDIwIDExYTEgMSAwIDAgMSAwIDEuNzUybC0yMCAxMUExIDEgMCAwIDEgNyAyOFonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicgZGF0YS1uYW1lPScmbHQ7VHJhbnNwYXJlbnQgUmVjdGFuZ2xlJmd0OycvJTNFJTNDL3N2ZyUzRVwiKTtcblx0bWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0dmVydGljYWwtYWxpZ246IDBweDtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNsZWFyLWJ1dHRvbi1kaXNhYmxlZCxcbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLnJ1bi1idXR0b24tZGlzYWJsZWQge1xuXHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jbGVhci1idXR0b24ge1xuXHRoZWlnaHQ6IDE0cHg7XG5cdG1hcmdpbi1ib3R0b206IDZweCAhaW1wb3J0YW50O1xuXHRtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1sYW5ndWFnZS1ib3JkZXItd2lkdGgpICsgMTJweCk7XG5cdHdpbGwtY2hhbmdlOiBtYXJnaW4tcmlnaHQsIGNsaXAtcGF0aDtcblx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcbn1cbnByZS5jb2RlLXN0eWxlci1wcmUgYnV0dG9uLmNsZWFyLWJ1dHRvbjo6YmVmb3JlIHtcblx0Y29udGVudDogXCJcXDIwMGJcIjtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogMTRweDtcblx0aGVpZ2h0OiAxNHB4O1xuXHRwYWRkaW5nLXJpZ2h0OiA0cHg7XG5cdGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1jb2xvdXIpO1xuXHQtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgMzIgMzInJTNFJTNDcGF0aCBkPSdNMTYgNCA2IDE0bDEuNDEgMS40MUwxNSA3LjgzVjI4aDJWNy44M2w3LjU5IDcuNThMMjYgMTQgMTYgNHonLyUzRSUzQ3BhdGggZmlsbD0nbm9uZScgZD0nTTAgMGgzMnYzMkgweicgZGF0YS1uYW1lPScmbHQ7VHJhbnNwYXJlbnQgUmVjdGFuZ2xlJmd0OycvJTNFJTNDL3N2ZyUzRVwiKTtcblx0LXdlYmtpdC1tYXNrLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDMyIDMyJyUzRSUzQ3BhdGggZD0nTTE2IDQgNiAxNGwxLjQxIDEuNDFMMTUgNy44M1YyOGgyVjcuODNsNy41OSA3LjU4TDI2IDE0IDE2IDR6Jy8lM0UlM0NwYXRoIGZpbGw9J25vbmUnIGQ9J00wIDBoMzJ2MzJIMHonIGRhdGEtbmFtZT0nJmx0O1RyYW5zcGFyZW50IFJlY3RhbmdsZSZndDsnLyUzRSUzQy9zdmclM0VcIik7XG5cdG1hc2stcmVwZWF0OiBuby1yZXBlYXQ7XG5cdHZlcnRpY2FsLWFsaWduOiAwcHg7XG59XG5wcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jbGVhci1idXR0b246bm90KDphY3RpdmUpIHtcblx0YW5pbWF0aW9uOiByZXZlcnNlLWluZGVudCB2YXIoLS1kdXJhdGlvbi1idXR0b24pO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY2xlYXItYnV0dG9uOmhvdmVye1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblx0YW5pbWF0aW9uOiByZXZlcnNlLW91dGRlbnQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbik7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBidXR0b24uY2xlYXItYnV0dG9uOmFjdGl2ZSB7XG5cdHNjYWxlOiAwLjk1O1xuXHR0cmFuc2l0aW9uOiBzY2FsZSB2YXIoLS1kdXJhdGlvbi1idXR0b24pIGN1YmljLWJlemllcigwLjQsIDAuMTQsIDAuMywgMSk7XG59XG4uY29kZS1zdHlsZXItcHJlLXBhcmVudC5oYXMtcnVuLWNvZGUtYnV0dG9uIC5sb2FkLXN0YXRlLWluZGljYXRvciB7XG5cdGNvbG9yOiBub25lO1xuXHRiYWNrZ3JvdW5kOiBub25lO1xuXHR6LWluZGV4OiAxMDtcbn1cbi5jb2RlLXN0eWxlci1wcmUtcGFyZW50Lmhhcy1ydW4tY29kZS1idXR0b24gLmxvYWQtc3RhdGUtaW5kaWNhdG9yOjpiZWZvcmUge1xuXHRib3gtc2hhZG93OiBub25lO1xufVxuLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQuaGFzLXJ1bi1jb2RlLWJ1dHRvbiAubG9hZC1zdGF0ZS1pbmRpY2F0b3Igc3ZnIHtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1jb2xvdXIpO1xufVxuLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQuaGFzLXJ1bi1jb2RlLWJ1dHRvbiAubG9hZC1zdGF0ZS1pbmRpY2F0b3Igc3ZnOmhvdmVyIHtcblx0Y29sb3I6IHZhcigtLWNvZGUtc3R5bGVyLWJ1dHRvbi1hY3RpdmUtY29sb3VyKTtcbn1cbi5jb2RlLXN0eWxlci1wcmUtcGFyZW50Lmhhcy1ydW4tY29kZS1idXR0b24gLmxvYWQtc3RhdGUtaW5kaWNhdG9yLnZpc2libGUge1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG59XG5cbi8qKiBFbWJlZCBDb2RlIFBsdWdpbiAqL1xuLmJsb2NrLWxhbmd1YWdlLXByZXZpZXcgcHJlLmNvZGUtc3R5bGVyLXByZSBjb2RlIHtcblx0d2hpdGUtc3BhY2U6IHVuc2V0O1xufVxucHJlLmNvZGUtc3R5bGVyLXByZSBzcGFuLmNvZGUtYmxvY2stbGluZV9udW0td3JhcCxcbnByZS5jb2RlLXN0eWxlci1wcmUgZGl2LmNvZGUtYmxvY2staGlnaGxpZ2h0LXdyYXAge1xuXHRkaXNwbGF5OiBub25lO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLmNtLWVtYmVkLWJsb2NrIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50ICsgLmVkaXQtYmxvY2stYnV0dG9uOjphZnRlciB7XG5cdGNvbnRlbnQ6ICdFZGl0IEJsb2NrJztcblx0Zm9udC1zaXplOiB2YXIoLS1mb250LXVpLXNtYWxsZXIpO1xuXHRwYWRkaW5nLWxlZnQ6IDRweDtcbn1cbi5tYXJrZG93bi1zb3VyY2Utdmlldy5tb2QtY202IC5jbS1lbWJlZC1ibG9jazpub3QoOmhvdmVyKSAuY29kZS1zdHlsZXItcHJlLXBhcmVudCArIC5lZGl0LWJsb2NrLWJ1dHRvbiB7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcblx0b3BhY2l0eTogMFxufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLmNtLWVtYmVkLWJsb2NrIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50ICsgLmVkaXQtYmxvY2stYnV0dG9uIHtcblx0LS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbjogY2FsYygyLjIgKiB2YXIoLS1oZWFkZXItYnV0dG9uLXNwYWNpbmcpKTtcblx0LS1kZW50LWRpZmZlcmVuY2U6IDBweDtcblx0LS1wb2x5Z29uLWluOiBwb2x5Z29uKDAgMCwgMThweCAwLCAxOHB4IDM2cHgsIDAgMzZweCk7XG4gICAgdHJhbnNpdGlvbjogdmlzaWJpbGl0eSB2YXIoLS1kdXJhdGlvbi1idXR0b24pLCBvcGFjaXR5IHZhcigtLWR1cmF0aW9uLWJ1dHRvbik7XG5cdHZpc2liaWxpdHk6IHZpc2libGU7XG5cdG9wYWNpdHk6IDE7XG5cdHotaW5kZXg6IDEwO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cdHRvcDogbWF4KGNhbGMoMC41ICogdmFyKC0tY29udGFpbmVyLWhlaWdodCkgKiAxKSxjYWxjKDAuNSAqIHZhcigtLWNvbnRhaW5lci1taW4taGVpZ2h0KSAqIDEpKTtcblx0bWFyZ2luOiAwO1xuXHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pIC0gdmFyKC0tZGVudC1kaWZmZXJlbmNlKSk7XG5cdHdpbGwtY2hhbmdlOiBtYXJnaW4tcmlnaHQsIGNsaXAtcGF0aDtcblx0Y2xpcC1wYXRoOiB2YXIoLS1wb2x5Z29uLWluKTtcblx0cGFkZGluZzogMDtcbn1cbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmdpY29ucy1hbHdheXMpOm5vdCguY29kZS1zdHlsZXItc2hvdy1sYW5nbmFtZXMtYWx3YXlzKSAuY20tZW1iZWQtYmxvY2sgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQ6aGFzKCBwcmUuY29kZS1zdHlsZXItcHJlIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyKSArIC5lZGl0LWJsb2NrLWJ1dHRvbixcbmJvZHk6bm90KC5jb2RlLXN0eWxlci1zaG93LWxhbmduYW1lcy1hbHdheXMpIC5jbS1lbWJlZC1ibG9jayAuY29kZS1zdHlsZXItcHJlLXBhcmVudDpub3QoOmhhcyggcHJlLmNvZGUtc3R5bGVyLXByZSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lci1zcGVjaWZpYykpOm5vdCg6aGFzKCBwcmUuY29kZS1zdHlsZXItcHJlIC5jb2RlLXN0eWxlci1oZWFkZXItY29udGFpbmVyIGltZy5jb2RlLXN0eWxlci1pY29uKSkgKyAuZWRpdC1ibG9jay1idXR0b24sXG5ib2R5IC5jbS1lbWJlZC1ibG9jayAuY29kZS1zdHlsZXItcHJlLXBhcmVudDpoYXMoIHByZS5jb2RlLXN0eWxlci1wcmU6bm90KFtjbGFzcyo9J2xhbmd1YWdlLSddKSAuY29kZS1zdHlsZXItaGVhZGVyLWNvbnRhaW5lcikgKyAuZWRpdC1ibG9jay1idXR0b24geyAvKj8gRGVwZW5kaW5nIG9uIGhlYWRlciB2aXNpYmlsaXR5ICovXG5cdC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW46IDRweDtcblx0dG9wOiBjYWxjKDAuNSAqIHZhcigtLWZvbnQtdGV4dC1zaXplKSAqIDAuODc1ICogdmFyKC0tbGluZS1oZWlnaHQtbm9ybWFsKSk7XG59XG4ubWFya2Rvd24tc291cmNlLXZpZXcubW9kLWNtNiAuY20tZW1iZWQtYmxvY2s6aG92ZXIgLmNvZGUtc3R5bGVyLXByZS1wYXJlbnQgKyAuZWRpdC1ibG9jay1idXR0b246aG92ZXIge1xuXHRiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcblx0YW5pbWF0aW9uOiByZXZlcnNlLW91dGRlbnQgdmFyKC0tZHVyYXRpb24tYnV0dG9uKTtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbik7XG5cdGNsaXAtcGF0aDogdmFyKC0tcG9seWdvbi1vdXQpO1xufVxuLm1hcmtkb3duLXNvdXJjZS12aWV3Lm1vZC1jbTYgLmNtLWVtYmVkLWJsb2NrOmhvdmVyIC5jb2RlLXN0eWxlci1wcmUtcGFyZW50ICsgLmVkaXQtYmxvY2stYnV0dG9uOmFjdGl2ZSB7XG5cdHNjYWxlOiAwLjk1O1xuXHR0cmFuc2l0aW9uOiBzY2FsZSB2YXIoLS1kdXJhdGlvbi1idXR0b24pIGN1YmljLWJlemllcigwLjQsIDAuMTQsIDAuMywgMSk7XG59XG5cbi8qKiBGaWxlIEluY2x1ZGUgUGx1Z2luICovXG5kaXYuYmxvY2stbGFuZ3VhZ2UtaW5jbHVkZSBwcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uIHtcblx0bWFyZ2luOiAwO1xuXHRtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tY29weS1jb2RlLWhlYWRlci1yaWdodC1tYXJnaW4pIC0gdmFyKC0tZGVudC1kaWZmZXJlbmNlKSk7XG59XG5kaXYuYmxvY2stbGFuZ3VhZ2UtaW5jbHVkZSBwcmUuY29kZS1zdHlsZXItcHJlIGJ1dHRvbi5jb3B5LWNvZGUtYnV0dG9uOmhvdmVyIHtcblx0bWFyZ2luLXJpZ2h0OiB2YXIoLS1jb3B5LWNvZGUtaGVhZGVyLXJpZ2h0LW1hcmdpbik7XG59XG4iLCAiLyoqIERlZmluZSBDU1MgdmFyaWFibGVzICovXG5AaW1wb3J0IFwiLi9jc3MvY29kZWJsb2Nrcy5jc3NcIjtcbkBpbXBvcnQgXCIuL2Nzcy9pbmxpbmVDb2RlLmNzc1wiO1xuQGltcG9ydCBcIi4vY3NzL3BkZkV4cG9ydC5jc3NcIjtcbkBpbXBvcnQgXCIuL2Nzcy9waWNrci5jc3NcIjtcbkBpbXBvcnQgXCIuL2Nzcy9wbHVnaW5Db21wYXRpYmlsaXR5LmNzc1wiO1xuXG5ib2R5IHtcblx0LyogQ29kZWJsb2NrIEJvZHkgKi9cblx0LS1ib3JkZXItcmFkaXVzOiAxMHB4O1xuXHQtLWdyYWRpZW50LWJhY2tncm91bmQtY29sb3VyOiB0cmFuc3BhcmVudDtcblx0LS1jb2RlLXBhZGRpbmc6IDhweDtcblx0LS1jb250YWluZXItaGVpZ2h0OiBjYWxjKHZhcigtLWxhbmd1YWdlLWljb24tc2l6ZSkgKyAyICogdmFyKC0taGVhZGVyLWlubmVyLXZlcnRpY2FsLXBhZGRpbmcpICogdmFyKC0taGVhZGVyLWZvbnQtc2l6ZSkpO1xuXHQtLWNvbnRhaW5lci1taW4taGVpZ2h0OiBjYWxjKCh2YXIoLS1oZWFkZXItZm9udC1zaXplKSArIDIgKiB2YXIoLS1oZWFkZXItaW5uZXItdmVydGljYWwtcGFkZGluZykgKiB2YXIoLS1oZWFkZXItZm9udC1zaXplKSkgKiB2YXIoLS1saW5lLWhlaWdodC1ub3JtYWwpKTtcblx0LS1sYW5ndWFnZS1ib3JkZXItY29sb3VyOiB2YXIoLS1jb2RlLXN0eWxlci1jb2RlYmxvY2stYmFja2dyb3VuZC1jb2xvdXIpO1xuXHQtLWxhbmd1YWdlLWJvcmRlci13aWR0aDogMHB4O1xuXG5cdC8qIEhlYWRlciAqL1xuXHQtLWhlYWRlci1mb250LXNpemU6IHZhcigtLWNvZGUtc2l6ZSk7XG5cdC0taGVhZGVyLXBhZGRpbmc6IDBweDtcblx0LS1oZWFkZXItaW5uZXItdmVydGljYWwtcGFkZGluZzogMC4zO1xuXHQtLWhlYWRlci1zcGFjaW5nOiAxNXB4O1xuXHQtLWhlYWRlci1idXR0b24tc3BhY2luZzogMTRweDtcblx0LS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoOiAycHg7XG5cdC0taGVhZGVyLXNlcGFyYXRvci13aWR0aC1wYWRkaW5nOiB2YXIoLS1oZWFkZXItc2VwYXJhdG9yLXdpZHRoKTtcblx0LS1jb2RlLXN0eWxlci1oZWFkZXItYm9yZGVyOiBub25lO1xuXHQtLWNvbGxhcHNlZC1ib3R0b20tYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXHQtLWxhbmd1YWdlLWljb24tc2l6ZTogMjhweDtcblx0LS1sYW5ndWFnZS1pY29uLWZpbHRlcjogbm9uZTtcblxuXHQvKiBMaW5lcyAqL1xuXHQtLWdyYWRpZW50LWhpZ2hsaWdodHMtY29sb3VyLXN0b3A6IDEwMCU7XG5cblx0LyogTGluZSBOdW1iZXJzICovXG5cdC0tbGluZS1udW1iZXItaGVpZ2h0LWNvcnJlY3Rpb246IDJweDtcblx0LS1saW5lLW51bWJlci1ndXR0ZXItcGFkZGluZzogMTZweDtcblx0LS1saW5lLW51bWJlci1ndXR0ZXItbWluLXdpZHRoOiAzMi42N3B4O1xuXG5cdC8qIExpbmUgVGV4dCAqL1xuXHQtLWxpbmUtd3JhcHBpbmc6IHByZS13cmFwO1xuXHQtLWxpbmUtYWN0aXZlLXdyYXBwaW5nOiB2YXIoLS1saW5lLXdyYXBwaW5nKTtcblxuXHQvKiBCdXR0b25zICovXG5cdC0tY29kZS1zdHlsZXItYnV0dG9uLWNvbG91cjogdmFyKC0tdGV4dC1tdXRlZCk7XG5cdC0tY29kZS1zdHlsZXItYnV0dG9uLWFjdGl2ZS1jb2xvdXI6IHdoaXRlO1xuXHQtLWR1cmF0aW9uLWJ1dHRvbjogMjQwbXM7XG5cdC0tZGVudC1kaWZmZXJlbmNlOiAzMHB4O1xuXHQtLXBvbHlnb24taW46IHBvbHlnb24oMCAwLCAxNnB4IDAsIDE2cHggMzZweCwgMCAzNnB4KTtcblx0LS1wb2x5Z29uLW91dDogcG9seWdvbigwIDAsIDEwMCUgMCwgMTAwJSAxMDAlLCAwIDEwMCUpO1xuXHQtLWNvcHktY29kZS1oZWFkZXItcmlnaHQtbWFyZ2luOiBjYWxjKDMgKiB2YXIoLS1oZWFkZXItYnV0dG9uLXNwYWNpbmcpKTtcblxuXHQvKiBJbmxpbmUgQ29kZSAqL1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1mb250LXdlaWdodDogNDAwO1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1ib3JkZXItcmFkaXVzOiA2cHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLXBhZGRpbmctdmVydGljYWw6IDVweDtcblx0LS1jb2RlLXN0eWxlci1pbmxpbmUtcGFkZGluZy1ob3Jpem9udGFsOiA1cHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLW1hcmdpbi1ob3Jpem9udGFsOiAwcHg7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLWNvbG91cjogdmFyKC0tY29kZS1ub3JtYWwpO1xuXHQtLWNvZGUtc3R5bGVyLWlubGluZS1jb2xvdXItYWN0aXZlOiB2YXIoLS1jb2RlLW5vcm1hbCk7XG5cdC0tY29kZS1zdHlsZXItaW5saW5lLWJhY2tncm91bmQtY29sb3VyOiB2YXIoLS1jb2RlLWJhY2tncm91bmQpO1xufVxuXG4vKiogU2V0dGluZ3MgKi9cbi5zZXR0aW5nLWl0ZW0uY29kZS1zdHlsZXItc3BhY2VkIC5jaGVja2JveC1jb250YWluZXIgKyAucGlja3Ige1xuXHRwYWRkaW5nLWxlZnQ6IDEwcHg7XG59XG4uY29kZS1zdHlsZXItZG9uYXRpb24ge1xuXHR3aWR0aDogNzAlO1xuXHRtYXJnaW46IDAgYXV0bztcblx0dGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmNvZGUtc3R5bGVyLXNldHRpbmctdGV4dC1hcmVhIHRleHRhcmVhIHtcblx0d2lkdGg6IDQwMHB4O1xuXHRoZWlnaHQ6IDIyMHB4O1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUNBO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBSUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUlEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUlEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFJRDtBQUFBO0FBRUM7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFFQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUFBO0FBSUM7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQUE7QUFJRDtBQUNDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBSUQ7QUFBQTtBQUVDO0FBQ0E7QUFBQTtBQUdEO0FBQUE7QUFFQztBQUFBO0FBSUQ7QUFBQTtBQUVFO0FBQ0E7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFHRjtBQUFBO0FBRUU7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUdGO0FBQUE7QUFFRTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFHRjtBQUFBO0FBRUU7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUFBO0FBR0Y7QUFDSTtBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNHO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVKO0FBQUE7QUFFQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUFBO0FBR0M7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQUE7QUFFRDtBQUFBO0FBQUE7QUFHQztBQUNBO0FBQ0E7QUFDQTtBQUFB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QUFBQTtBQUFpQjtBQUFBO0FBQXNKO0FBQVM7QUFBQTtBQUE4QjtBQUFBO0FBQXNKO0FBQWE7QUFBQTtBQUFzQjtBQUEyRTtBQUFBO0FBQWdGO0FBQTJFO0FBQWlRO0FBQUE7QUFDbDhTO0FBQ0M7QUFBQTs7O0FDRkQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0k7QUFDQTtBQUNBO0FBQ0E7QUFDSDtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUFBO0FBSUQ7QUFDQztBQUFBO0FBRUQ7QUFBQTtBQUVDO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQ0E7QUFDQTtBQUNHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQUE7QUFBQTtBQUdDO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBO0FBSUQ7QUFDQztBQUNBO0FBQUE7QUFFRDtBQUNDO0FBQUE7OztBQ3pKRDtBQUVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUQ7QUFDQztBQUFBO0FBRUQ7QUFDQztBQUNBO0FBQ0E7QUFBQTtBQUVEO0FBQ0M7QUFDQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo= */